My Projects

Spring 2010

Embedded Systems: Overhead of Dalvik VM in Google's Android OS (2.1)

We measure the overhead of Dalvik virtual machine in Android operating system. We measure the speed of execution of six benchmark programs from CaffeineMark Embedded benchmark suite and compare it to our own implementation of the same benchmark using Android’s JNI like feature called Android NDK. We see that the JNI implementations of the applications are about 3 to 400 times faster than the original programs. [pdf]   

Operating Systems: The Cost of Virtualization- Running Ubuntu on Ubuntu using Virtual Box

Virtualization helps- but it's not free of cost. In this project we measure the cost of virtualization by running Ubuntu 9.10 on Ubuntu 9.10 using VirtualBox. We compare the execution times of: (1) Kernel calls (getpid, getpgrp, getuid), (2) Context switch (both signals and pipes), (3) Page allocation, and (4) File operations (both read and mmap) with and without virtualization. [pdf

Wireless Communication: Understanding Burstiness in 802.15.4 

The knowledge of the reasons of link burstiness would greatly help us in the deployment phase of wireless networks to keep this unwanted phenomenon at its minimum and hence increase the overall performance of the network. We perform an empirical study on the cause of burstiness in 802.15.4 networks. Our goal is to find out a set of factors that constitute the principle cause of burst. 

Fall 2009

Communication Engineering: Unequal Splitting of Raised Cosine Shaping at Transmitting and Receiving Filters

Optimal end-to-end shaping for zero inter-symbol interference (ISI) design in baseband pulse transmission systems suggests that the transmitter and the receiver have equal splitting of the overall Nyquist shaping. But what happens if we have an unequal splitting? In this project, we experiment with raised cosine shaping at transmitter and an ideal LPF at the receiver and measure the penalty both analytically and experimentally. [pdf]    

Spring 2009

Compiler: csem- A compiler for 'brain dead C'

csem is a compiler for a subset of a C-like language often referred to as BDC (brain-dead C). csem reads a program from standard input and it writes to standard output a translation (in assembly) of the program. It is assumed that the program has been preprocessed (i.e., there are no defines). The program is translated to a tree intermediate language. The tree operators are defined in an accompanying document. It is developed in phases—gradually adding capabilities. Finally it had the features of: scalar declarations, integer arithmetic operations, calling convention, and control-flow constructs. [code]

Cyber Physical Systems: A Study on Bluetooth

A comprehensive study on bluetooth technology. An overview of the standard and comparison with other standards are presented. Study includes: concepts of piconets and scatternets, the protocol stack, user models, the radio, packet, error correction, channel control, connection, link management etc. [pdf]

Fall 2008

Theory: Multi-Tape Turing Machine Simulator 

In this project, we designed and developed a simulator for multi-tape Turing Machine. The program is written in Java. The simulator has a graphical user interface. We have provisions for single tape, double tape and three tape Turing Machines. We used a number of different types of languages for the demonstration of these machines. Our simulator shows each step of simulation step-by-step as well as by animation. [pdf] [code]

Architecture: Performance Evaluation of Application Specific Program on GPU using CUDA

In this project, we have evaluated the performance of an application specific benchmark problem on GPU, using NVIDIA's C-like CUDA language. We have compared the GPU performance with single-core CPU performance and shown that, for large datasets the performance gain is about 65 times in terms of execution time. In addition to the analysis of the performance gain, it also addresses some inefficiencies of the CUDA programming model. [pdf]