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 (source)
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.
High Performance Computer Architecture
Classification and Analysis of misses using the SESC simulator (pdf)
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
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.
Software used – Java, Processing (http://processing.org)
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.