Some of my works
for such projects, I mainly work in Python and hence most of the projects here would be python or jupyter-notebook based. On the other hand I mainly work with C++ for Competitive programming and C# for game development in Unity.
​
K-means Image Compression/Stylization
Using the Kmeans algorithm, which falls in a class of machine learning with clustering, we can compress images in a way such that the final image has only K colors, where K is a constant we can choose. More examples and the implementation of the algorithm in python can be viewed on github.
Wavefunction time-evolution
Evolves any initial wavefunction inside a 1D box with time. You can set the initial wavefunction using a python function and the boundaries and my program would show how it will evolve in time, conforming to the quantum mechanical rules. Currently, only an infinite potential well of 1D box is simulated, but planning on adding more cases of potentials as well.
more animations and detailed description can be viewed on github
String Art Calculator
Made a library that can process an image and create string art that resembles the image. It can also print a continuous list of connection points, so anyone in real life can use only one piece of long string, and make connections along nails to make the string art. I am interested in working on making it faster for now, and later creating an actual machine capable of forming physical string art from the connections calculated. More images on github
A stormtrooper helmet outline, n = 151 points.
Physics Collision Engine
A physics engine! also has additional key controls to pause time, move frame by frame, show speed by color gradient, turn gravity on or off, and even pick balls up with mouse! This is still just the initial implementation and finally I want to write it using CUDA so I can handle many more objects in the scene with high framerate. More gifs and details on
DhruvAhlawat/Physics-Simulations: Libraries for Physics simulation in python using pygame. (github.com)
Logistic Regression Library
Made a library that can do Logistic regression quickly with vectorization. the class supports both Normalized and Unnormalized Regression training, as well as adding regularization parameters. Also provides ability to graph the loss function.
Course Projects
There were some assignments that I thoroughly enjoyed making, and also helped me learn a lot. The languages used are mainly Python, C++, C, and SML​
Deep learning and ML
Table parsing using pytorch!
won high distinction for this assignment and a full bonus point. details on DhruvAhlawat/Table_Parser: Answers queries based on tables, using an extremely effecient parallel LSTM formation with attention. (github.com)
paragraph math questions solving using LSTMs
Solving math problems by converting into a mathematical language that can run the commands
DhruvAhlawat/A1.2_DeepLearning: using LSTMs for solving paragraph math questions (github.com)
Detecting languange
Resnet and batch normalization implementations
Won first place for my model that detects the language based on a sentence, without using neural networks. Used Naive bayes with multiple training using outputs for correcting incorrect labels in training set.
implemented resnet in pytorch and experimented with different normalization types for bird classification.​​
DhruvAhlawat/A1_DeepLearning: Resnet implementation for Bird classification (github.com)
Systems
xv6 operating system
built xv6 from ground up during the course COL331 (OS)
learned many things about the architecture like booting procedure, assembly language, implementing threading with multiple processes runnning, paging systems and copy-on-write mechanisms etc.
CUDA programming
Rational PL-0 Compiler
This was an assignment that I really enjoyed making. Pl-0 is a type of a programming language that is easy to parse, and has datatypes bool, int and procedures without parameters. We had to also include a datatype of "rational" (not float, it had exact representation instead of approximate, or complete precision). The language supports variable declarations, nested procedures, and recursion with static scoping, and type-checking of expressions. github link
Markdown-to-HTML converter
We had this as the second assignment in the course of programming languages at my university. It was a real challenge, and had to be done without using any automatic parsers or grammar, but solely through our intuition. This converter supports all features of markdown like bold,italic, underline, nested lists (unordered and ordered), blockquotes, codeblocks, and even some additional features that were added like Tables. complete description at the github link