top of page

Academic Projects

MASSACHUSETTS INSTITUTE OF TECHNOLOGY

Data Science and Machine Learning: Making Data-Driven Decisions

Projects

Case Studies

PENNSYLVANIA STATE UNIVERSITY

1_1kjLMDQMufaQoS-nNJfg1Q.png
PARAMETER TUNING

Tuned Several Parameters for Boosted Decision Trees and Support Vector Machines (XGBoost and LibSVM) using hold-out validation and/or K-fold cross validation. I used K-fold cross-validation to adjust at least some of the parameters to get good performance on the entire data. Then I computed the test error rates after I settled on hyperparameter settings and trained two final classifiers.

Picture3.jpg
PREFIX SUMS (CUDA)

Re-created the Down-Sweep and the Up-Sweep Phase of a Work-Efficient Parallel Sum Scan Algorithm using CUDA for Arbitrary Array Size in C++. Parallel prefix sum, also known as parallel Scan, is a useful building block for many parallel algorithms including sorting and building data structures. We divide the large array into blocks that each can be scanned by a single thread block, scan the blocks, and write the total sum of each block to another array of block sums. We then scan the block sums, generating an array of block increments that are added to all elements in their respective blocks. 

Picture1.jpg
GAME OF LIFE (MPI)

Successfully implemented linear and cartesian decomposition of Conway’s Game of Life using MPI with 100 nodes on a cluster in C++. The main concept behind parallel implementation is splitting the N x M board into equally sized blocks. Each process is then assigned a single block to work on. Blocks might slightly differ in size in case an exact division of the board is not possible. Each process should be able to compute the inner part of the assigned block straight away. However computing the new generation values (0,1) for the 4 sides of the block cannot be done very easily. That is because, the border cells have neighbors residing in another block. Consequently, inter-process communication (i.e: message passing) is required in order for the current process to fetch the values of those neighbors .

Capston pOSTER - Siemens-1.jpg
SIEMENS CAPSTONE

During 7th Semester of Penn State, I worked on my Capstone project in collaboration with Siemens USA,  Penn State University and UI Labs USA. The objective of this project was to display real time data from the 3D Printers on an interactive application  so that the facility managers  are able to use. The goal was to display vibration detection data from the machines on a digital interface from the Penn State Learning Factory which involved creation of an interface to display and analyze the data gathered from the Penn State’s Learning Factory. Project also involved the dashboard designing which is capable of digital performance management, real-time sensing and data analytics. Click on the image to find out more. 

1_7s7iqD7E87wFLqzGAAvKiA.png
MALLOC IMPLEMENTATION

Wrote a dynamic storage allocator for C programs, i.e., my own version of the malloc, free and realloc routines using my own version of heap checker. I was able to achieve 90% efficiency maximizing throughput as well as memory utilization compared to the real-world C malloc library.

Multithreading models, many to many mode
THREAD LIBRARY

Implemented the concurrency primitives, a set of synchronization primitives including mutexes, condition variables, semaphores, and readers/writers locks. This was based on a combination of the syscalls and atomic operations. I also implemented a thread library that creates and manages threads. This was based on the thread fork system call.

Screenshot (110).png
CPU IMPLEMENTATION

Implemented a pipelining technique for building a fast CPU. I worked on design implementation and testing of all the five stages (Instruction Fetch, Instruction Decode, Instruction Execute, Memory, Write Back) stage pipelined CPU using the Xilinx design package for FPGAs.

Graphics Projects

Graphics Projects

Animation0437[6481].jpg
MOTION CAPTURE

The goal of this project was to take the cleaned, motion capture data and do a high-quality, realistic rendering of the motion-capture data. The image is an output of one of the frames. The video of the output is at the end of the page. 

icosahedron.png
RAY TRACING

Implemented a program that  generates an image by tracing the path of light through pixels, simulating the effects of its encounters with virtual objects using Whitted algorithm. The image on the right is the output of one of the scenes which I designed.

Project 2.png
ROLLER COASTER SIMULATION

Designed and developed a simulation of a roller coaster in openGL using techniques like Catmull Rom spline Interpolation and coordinate transformation. The image on the right is the output of the roller coaster world which I designed and created.

bottom of page