Projects

Jan '22

A very simple solver for the game Wordle.


Computer Vision

Feb '21 - March '21

Worked in a team of 3 for the project for a class on 3D reconstruction and recognition. We played around with different approaches for 3D reconstruction and depth estimation.


Noyce

Aug '20 - March '21

Worked with a friend to try and build a better tool for remote work and socialising during the pandemic. Here's a link to the website, and a link to a notion doc explaining how it works.


Ray Tracing

Jul' 20

Got excited about ray tracing and spent a portion of my 4th of July weekend building a ray tracer in Rust. I followed the Ray Tracing in One Weekend tutorial. I didn't finish it, but I intend to come back to this sometime. You can view the code here.


Natural Language Understanding

May '20 - June '20

Worked in a group of 3 on the problem of Visual Question Answering as part of the project for Stanford's NLU class. We played around with different VQA models like VisualBERT and ViLBERT.


Compilers

Apr '20 - June '20

Worked in a team of 2 to build a compiler for the COOL programming language. This includes lexing, parsing, semantic analysis, code generation, and a little bit of optimization.


Natural Language Processing

Feb'20 - March '20

Worked in a team of 2 on the problem of code autocompletion as part of the project for Stanford's NLP class. We tried to train this paper on datasets containing code snippets.


Operating Systems

Jan '20 - March '20

Worked in a team of 2 to implement core functionality for the Pintos operating system, as part of my university's infamously difficult Operating Systems class. Designed and built a virtual memory system, a file system, various system calls, and different thread scheduling algorithms.


Meta Learning

Sep '19 - Dec '19

Worked in a group of 3 to devise a modification to the MAML algorithm for multimodal task distributions. You can view the code and report here.


Programming Languages

Sep '19 - Dec '19

As part of my university's programming language class, I worked on 9 assignments through the quarter. Notable assignments included an OCaml interpreter for a typed extension of the Lambda Calculus, a simplified TCP implementation in Rust, an implementation of futures in Rust, and automated proofs for an arithmetic language in Lean. You can view all the course assignments here.


NUSclassBot

Feb '19

We built a bot for collecting students' attendance in tutorials using the telegram api, google spreadsheets api and redis. You can view the code here. A modified version of the bot is currently being used to collect attendance in all tutorials for a class with over 500 students.


Deep RL: Breakout

Oct '18

As part of a group project for a class, we explored and compared different deep reinforcement learning methods for playing the game of Breakout. I personally worked on Policy Gradient and Actor Critic approaches. We implemented our approaches in Tensorflow, and evaluated the performance of our approaches using the OpenAI Gym.


Distributed Maze Game

Sep '17

A Distributed Maze game that allows users from multiple machines to play against each other. This was built for a Distributed Systems class, and I implemented Sequential Consistency and Fault Tolerance as per the project requirements.


Labelled Faces in the Wild

Sep '17

A Convolutional Neural Network for the group project of a class, for a subset of the Labelled Faces in the Wild dataset. We applied data augmentation, automated hyperparameter tuning, and explored the use of the Facenet architecture. I personally worked on automated hyperparameter tuning, and the base CNN architecture in Keras. You can view the code here.


MIDIchlorians

April '17

An IOS App that allows you to customize musical tracks and augment them with musical effects. You can learn more about the app, and see the code here. This project was built in a group of 4 and won the Best Project Award at my University's Biannual Showcase. I personally worked on designing APIs and data models, as well as integrating cloud-backed syncing and sharing features.


Tetris AI

March '17

A Java based Tetris playing AI for the group project of a class. We used a combination of Genetic algorithm and a Particle Swarm optimisation routine along with multithreading to build an agent that cleared over 2 million lines. You can view the code here.


TweetBattle

Sep '16

A web app that takes in the Twitter handles of two people, uses the Twitter API to fetch the tweets of the people, and uses a markov model to generate new tweets, which it then places side by side in the form of a verbal battle. You can try it out here and view the code here. This was built at a hackathon in a team of four. I worked on the backend and on developing the markov model.


Tetris

March '16

An HTML5 Canvas based Tetris clone that I built personally on the side. I had immense fun coming up with the logic for the various actions in the game. You can view the code here and try it out here.


Other school projects include a simple HTTP server, a reliable file transfer protocol over UDP, a simple shell, and simple search engines based on the vector space and boolean retrieval Models

Other personal projects include an iOS app built with Firebase to connect people with similar interests together for events, a simple IMDB scraper, and a simple blog built on the LAMP stack.