Home Academic System Administration Non-Academic Pointers
Courses Projects


B. Tech Project - Summer 2007 to Present
Mentor: M Balakrishnan, CSE, IITD
  • Instant Campus Biking Solution (ICABS) 
    Umang Mittal and I started working on this project with taking part in a B-Plan contest in March 2007 (as the Smart Cycle Vending System). The idea is to develop a prototype for an automated system for the issue and return of bicycles that can be installed in the campus. It can also be extended to a city wide system in order to solve the last mile connectivity problem. We also presented the idea at the PanIIT Global Conference 2007, held at Santa Clara, California. Click here to check out the project website.
Practical Training - Microsoft Research India - Summer 2008
Mentor: Ranjita Bhagwan, MNS Group, MSRI
  • NetPrints - Automated Diagnosis of Network Problems
    The idea is to use shared knowledge to provide instant solutions to common problems faced by users in home networks. My task was to develop tools to gather configuration information from clients and compare configuration across time and space to infer dependencies among configuration parameters and system health. Paper titled "Netprints: Diagnosing Home Network Misconfigurations Using Shared Knowledge" to appear at the Proceedings of the 6th USENIX Symposium on Networked Systems Design and Implementation, Boston, April 2009 (NSDI 2009).
    Project Webpage
CSL373 Operating Systems - Spring 2008
Mentor: Kolin Paul, CSE, IITD
  • Secure Networed File System
    Developed a multithreaded, user-level networked file system that used AES for security. Used indexed block allocation with block size 1 KB.
  • libsthread - A user level thread library
    Implemented a user level thread library for applications in C and C++. Supported semaphores, non-idle waits, and preemption.
Internship - Audio Technologies & Codecs India - Summer 2007
Mentor: Andre Partyka, ATC Labs
  • Fast File Transfer in SIP based VOIP Phones
    The project aimed at studying file transfer speeds in P2P clients, specifically, file transfer in VOIP phones like Skype, Google Talk, etc. and identifying reasons for low transfer rates. I also studied the architecture of Skype and documented the source code of EarthLink SipShare, a SIP based P2P file share program.
CSL302 Programming Languages Projects - Spring 2007
Mentor: Sanjiva Prasad, CSE, IITD
  • ImpSim - Imperative Program Execution Simulator
    Designed and built a simulator for imperative programs written in a (constrained) Pascal like language. Simulated the call stack, dynamic binding and implemented the parser for the language. Source Code
  • eXpL - Expressional Language
    Designed and implemented an ML like expressional language. It supports all basic operations for the follwing types (base types of eXpL) integers, reals, booleans, strings. The implementation has an interpreter that takes the parse tree and "interprets" it like bash and a compiler that generates java like instruction codes with VM to execute it (like Java). Source Code
CSL316 Digital Hardware Design - Spring 2007
Mentor: M Balakrishnan, CSE, IITD
  • LZW on FPGA
    Implemented the LZW ALgorithm on Xilinx FPGA in VHDL with a 10 micro-instruction micro-programmed control.
CSP301 Design Practices in Computer Science - Fall 2006
Mentor: Kolin Paul, CSE, IITD
  • Mission Impossible 4 - The Multiplayer Game
    Simulated a biochemical attack on a metropolitan mall wherein the players had to disable bombs planted in various rooms inorder to win. Each bomb has a timeout before which it must be diffused. Implemented in Java using the Java 3D graphics library.
  • Robots
    Implemented the classic BSD game Robots in C using the GTK GUI library. Source Code
System Administration - January 2008 to Present
Mentor: Subhashis Banerjee, CSE, IITD
  • cfmon - Client Configuration Monitor
    A home-made "trust" based replacement for cfengine. Like cfengine, keeps the configuration of a client (in a lab, say) up-to-date (where configuration includes files like /etc/resolv.conf and software packages. Unlike cfengine, does not use a key based authentication. There can be as many clients as possible. Does not rely on update times but on change of content (uses diff) - this is inefficient but the code can be very easily modified to use update-times if NTP is deployed. However the overhead is not visible when compared to the heavy traffic resulting due to the download and installation/upgrading of packages. The server maintains one master monfile which has the list of config files to be monitored, their permissions, etc. and a file containing the list of packages that are to be installed. It is currently written for only a Debian based OS (like Ubuntu). Source Code