Computer Animation

Collision Detection and Simulation

Software used – C++, OpenGL

The project is an interactive application demonstrating rigid body simulation. The simulator computes rigid body motion, detects and handles collisions, displays 3D motions in different camera views, and allow the user to set the initial position of the objects.

Inverse Kinematics (binary)

Software used – C++, OpenGL

In this project an unconstrained optimization was used to solve an inverse kinematics problem. The input to the system is a set of marker trajectories from a motion capture system read from a C3D file. The inverse kinematics solver will produce a set of poses (joint configurations) that match the markers.

The resulting motion sequence (poses) and markers trajectories are displayed and the error of the solution for each frame is computed and displayed.

Inverse Kinematics Model

High Performance Computer Architecture

Classification and Analysis of misses using the SESC simulator (pdf) (src)

Software used – C++, Eclipse and SESC simulator

Cache misses impose a significant performance barrier in modern day computing. The project attempted to classify the cache misses that occur in a Symmetric Multiprocessor (SMP) based system into compulsory, conflict, capacity or coherence misses. For this, the SESC simulator (Superscalar Simulator) is used to run the benchmark WATER which is a part of the SPLASH2 suite. The simulator was modified to classify the number of read and write misses into compulsory, conflict, capacity and coherence misses. The work also explains the reason for the trends observed for cache misses.


GPU and Multi-core Programming for Video Games

Simple Direct3D First Person Shooter (html)

Software used – Direct3D, Visual C++, HLSL

The game was developed as part of learning Direct3D for game programming. The game involved intensive use of 3D geometry and importing DirectX models and resources.

Multi-core XNA Game

Software used – XNA Express, HLSL

The project involved taking an existing Microsoft XNA based game and making it multithreaded and creating interesting shader code for it.

Multi-core programming using the Sony-IBM Cell processor

Software used – Cell SDK provided by IBM

Hardware used – CellBuzz computing cluster at GA Tech.

The project involved physics simulation on the Cell processor (used in Sony PlayStation3). The project involved creating multi-core code for the simulation, managing DMA transfers and using multiple cores to divide the computation.


Computer Graphics

Tool for creating 3D shapes from freehand drawing (pdf) (src)

Software used – Java, Processing (

The tool allows a user to create freehand drawings in processing. It performs processing to eliminate ugly and unneeded loops in the freehand drawing and then proceeds to render a 3D mesh for the drawing.


Software Development Process

Externalization of Program Analysis Files (TSP /PSP)

Software used – Java, Dotty graphing library, Java Bytecode Analyzer

The project involved learning and using the Team Software Process and the Personal Software Process during software development. To achieve this, apart from the Process Plan and the Requirements document, TSP and PSP scripts were followed and logs were maintained. The logs included time tracking logs, defect logs and review logs. In addition estimation was done for the time and resources required for the project.

My specific contributions were creating the process plan and actual implementation of the project.

Graphical User Interface for JABA (Unified Software Development Process)

Software used – Java, Swing

This project aimed at designing a GUI frontend for the Java Bytecode Analyzer using the Unified Software Development Process. The project went through four iterations (Inception, Elaboration, Construction, Transition).

Here, my specific contributions were acting as the project manager and also managing risk through a risk analysis and tracking document. I was also responsible for testing the application.

XP/Extreme Programming & Pair Programming

Software used – Java, Swing, Google Docs API, JUnit

This project aimed at designing an application for retrieving data from a Web-based store and displaying it using a GUI. It also involved creating task cards and test cases for the application.

Here, my specific contributions were creating Task Cards and Unit Tests for the application. I was also involved in the actual implementation and used pair programming for it.