Projects Archive


design / web
11/2023

Built a landing-page and documentation website for my Computer Science senior design challenge project.

10/2023

Designed my presentation platform website for my dev work and related stuff. Built with

and deployed on .

10/2023

Rust API


It is straightforward to build a REST API in

using . As a proof-of-concept for an upcoming project, I tried out building a REST API in using . Rust is advantageous since it offers C-like performance without the associated memory safety issues. The API has a database backend using .

This project is part of a bigger personal project that's in the works — stay tuned!

8/2023

New blog website design and, along with it, a new domain! Built with

/ and . Deployed on .

Design inspired by

.

8/2023

New website design and, along with it, a new domain! Built with

/ and . Deployed on .

Design inspired by

.

8/2023

New website design for the Dartmouth Robotics Club. Built with

/ and . Deployed on .

6/2023

Networking and job applications management platform for college students.

Built with

, , and built with .

Collaborative project with

, , , and .

5/2023

A minimal Youtube player that lets you watch videos without distractions.
Built with

, , , and the .

5/2023

Post-it-note style platform for organizing your thoughts and ideas.

Built with

, , and .

5/2023

An API endpoint that supports the standard game of Kahoots.

Built with

, and Data stored on .

5/2023

Interactive notepad for organizing your thoughts.

Built with

, , and .

5/2023

An API endpoint that supports the standard game of Kahoots.

Built with

, and . Data stored on .

4/2023

-style quiz for movie recs!

Built with vanilla

, , and , with a lot of sprinkled in.

4/2023

-inspired timer that shows quotes from , my favorite TV show.

Built with vanilla

, , and .

4/2023

A minimal blog demo using

.

Built with

, , and .

2/2023

The first iteration of my personal blog/portfolio. Built with

/ and . Deployed on .

data mining
11/2023

Wrote a functional program in Haskell to scrape 3000+ articles from online technology websites such as

The scraper uses

and , among other functional programming patterns to ensure concurrency and efficiency. The articles were used for a subsequent study on the changing attitudes of society toward technology.

The dataset is open-source and available on

.

Collaborative project with

and .

deep learning
9/2023

Generative Pre-trained Transformer


For fun, I implemented the

(GPT) architecture in PyTorch. GPT is a language model that uses a transformer architecture to generate text. I trained the model on the and used it to generate text in the style of Shakespeare.

Transformers are a type of neural network architecture that employes techniques such as:

  • , which allows the model to learn the relationships between different parts of the input data.
  • , which allows the model to learn the relative positions of the input data.
  • , which allows the model to learn different relationships between different parts of the input data.
  • , which allows the model to learn the difference between the input data and the output data.
5/2023

Adversarial Training for Neural Networks


Experimentation with various adversarial training techniques for neural networks. Adversarial training is useful to improve the robustness of neural networks to adversarial attacks — which often happen as noise in the input data. Techniques explored include:

  • , which helps the model have more data to learn from. New samples are generated by randomly cropping and/or flipping some images. We also add , to a random subset of images, which helps the model learn to be robust to noise.
  • , which entails randomly blocking a subset of the neurons in the network from transmitting information during training. This helps huge models avoid overfitting, thus generalize better.
  • , which entails training multiple models on the same dataset and then averaging their predictions. This helps the model generalize better by mitigating the effects of a single model overfitting.
4/2023

Hyperparameter Tuning for Neural Networks


Experimentation with how variations in specific hyperparameters affect the performance of neural networks. Hyperparameters are parameters that are not learned by the model, but are instead set by the user. Usually, such hyperparameters control the learning process of the model.

3/2021

As part of a

, I implemented neural networks to demonstrate how predictions work in the context of simple classification and regression problems.

data structures and algorithms
8/2023

To keep my coding skills sharp, I solve a few Leetcode challenges every week. I also make a point to write up the solutions and explanations so a future, forgetful me can review them.

5/2021

Data Structures


Efficient implementations of various data structures in C.

  • A stores unique items without duplication.
  • A stores unique key-value pairs without duplication.
  • A mimics the set, but uses hashing with chaining for improved efficiency.
2/2021

Actor Network Semantics


The infamous Kevin Bacon game; given any two actors, find the shortest social connection path between them. We use

the strategy to find the shortest path in the of connections.

1/2021

Efficient Spatial Collision Detection


Program to efficiently detect collisions between blobs in 2D space by using

to partition the space into smaller regions and index which blobs are in which region.

1/2021

Cam Paint


Interactive program that allows the user to draw on a canvas using their webcam. The program detects the color of the paintbrush and draws the path of the brush on the canvas.

11/2020

Pathfinder


An interactive program that renders locations on a campus map and highlights the shortest path between any two points the user clicks on. We use

to find the shortest path.

systems
11/2022

NoSQL App


A blog server built with a

frontend and a backend. It supports registered users posting updates and comments, querying for posts and comments, and deleting posts and comments.

Collaborative project with

.

10/2022

Relational Database App


A

with a frontend and a backend, including various triggers and automations.

Collaborative project with

.

11/2021

Logisim Processor


A fully functional 16-bit

implemented in . All CPU components including the , , , , , , , and are implemented from basic gates.

6/2021

Nuggets Game


A multiplayer command-line game of

. Players join over . The maze is gradually revealed to each player as they view different sectors of it. The game ends when all the nuggets are collected, and the player with the most nuggets wins.


Collaborative project with

and .

5/2021

Tiny Search Engine


A hyper-efficient

that crawls webpages (whose domain can be restricted to a given subset) and indexes them, then handles user queries on the contents of the collection of pages, with results ranked by frequency. It also supports query modifiers such as AND, OR, and NOT.

4/2021

Command-Line Utilities


Three different command-line utilities written in C:

  • chill calculates the chill factor of a given temperature and wind speed.
  • words efficiently prints out the words in a file.
  • histo prints a histogram for a stream of numbers.
4/2021

Bash Scripting


Hacking our way out of various scenarios with bash scripting.

Includes processing streams of data using sed, matching string patters in files using grep, extracting bits of data from files using head / tail / cut / sort / uniq, and more.

3/2021

Collaborative Editor


A collaborative editor on shared canvas. Multiple users can connect, and each sees changes in real-time as they are made. We use mutexes and locks to enable concurrent access whilst avoiding data races and deadlock pitfalls such as mutual exclusion, hold-and-wait, circular wait, and no preemption.

machine learning
5/2022

Linear Regression Classifiers


Using

and models to find an optimal learning strategy for a given set of data.

4/2022

Gradient Descent


Using regression models to classify provided data. The models are not pre-trained, se we use

to find the optimal parameters for the model.

visual computing
3/2022

Position-Based Dynamics


Using a position-based system with constraints (instead of the more common mass-spring model) to simulate bodies. The method, as described in

, offers several advantages over the mass-spring model including being more generalizable to other scenarios and requiring less computation to simulate a body.

2/2022

Rigid Body Simulation


We use rotational dynamics to simulate a

, using rotor blades to generate lift and thrust. We use the to numerically integrate the equations of motion.

2/2022

Smoke Simulation


Using Physics-based simulation to simulate a fluid-flow system. We use the

method to simulate the for smoke. We also apply the method to simulate the of the fluid. To reduce the computational space,we use a to store the fluid particles.

1/2022

Particle Simulation


Using Physics-based simulation to simulate fluid and particle systems.
We use the

method to simulate the for fluids.
For particles, we use positional indexing to efficiently detect collisions and propagate forces between particles.

1/2022

Hair Strand Simulation


Using Physics-based simulation to animate a hair strand using connection and bending constraints. The simulation is implemented in C++ using the

framework.

10/2020

Astronomy Simulations


A Physics-accurate simulation of mass bodies (stars, planets, etc.) in a 2D space. The program uses the

library to display graphics and allows the user to arbitrarily add more bodies to the simulation by clicking, adding bigger bodies by holding for longer, etc.

9/2020

Pong Game


An interactive GUI game of pong that uses the

library to display graphics and handles user inputs, detects collisions (for the game), and tracks scores as well as the high score in the current streak of games.

functional programming
3/2022

Wordle, Grep


Wordle and Grep replicas implemented in Haskell, a

language.

is a program picks a random five-letter word out of a corpus then lets the user guess the word, providing feedback at every iteration. The game is won when the full word is guessed, usually in at most 5 tries although my version allows playing in infinite mode. The original game was created by .

is a program that matches a string prompt to a text-stream, e.g. from files. Basically, it's Google search for your local file contents.

artificial intelligence
11/2021

Robot Colocation


A common problem in robotics is localizing a robot in a novel environment given sensor readings. This project uses

and the and the to decipher where a robot's situation probabilities in a maze, given a sequence of sensor readings from the robot. Emissions due to sensor inaccuracies are also factored in.

10/2021

Logic Algorithms


is , meaning any algorithm that solves it takes exponential time — in fact, any polynomial solution would prove .

Still, there are several algorithms that attempt to cut down the search space in order to find a solution in a reasonable amount of time. In this project, we implement two such algorithms,

and , and use them to solve puzzles modelled as first-order logic clauses.

10/2021

Constraint Satisfaction


Using

and to solve constraint satisfaction problems such as map coloring and circuit placement. We use heuristics such as least-constraining value, most-constraining variable and minimum remaining values to intelligently narrow the search space.

10/2021

Informed Search


Using informed search techniques such as

and and heuristics such as and to navigate a robot through a maze with obstacles to a goal location.

10/2021

Intelligent Chess bot


A chess bot that uses various strategies including

, , , , , , , and to maximize outcome against an opponent in chess.

9/2021

Uninformed Search


Using uninformed search algorithms such as

and to search the solution space for elementary problems such as the 🐔 and 🐶 problem (we wish to get x chicken and y foxes across a crossway with limited carriage capacity without leaving any chicken unattended with the foxes).

3/2021

Parts-Of-Speech Tagging


A bot that uses

to tag parts of speech in a sentence. We use the to generate a sequence of tags for the sentence keeping in mind the tag probabilities for each word and the transition probabilities between tags.

information theory
3/2021

Huffman Coding


A program that encodes text using a lossless compression algorithm. A

is built from the text. Thereafter, binary codes are assigned to each character having the most frequent characters get shortest codes.

data insights
10/2020

City Demographics


An interactive program that processes provided raw data about world city populations and other important metrics and renders the cities on a map highlighting standout locations or other interesting data-points.