Projects
Static optical flow detection as a classification problem
[ Deep Learning, Keras, OpenCV, Computer Vision ]
- Problem deals with detecting the optical flow from a static image.
- Modelled this regression problem as a classification problem by clustering the training data's outputs, helping us train it with less data
Raft Consensus Algorithm
[ Distributed Systems, Consensus Algorithm, Protobuf, Socket, C++ ]
- Implemented a fault-tolerant and performant consensus algorithm to sync state machines across multiple servers
- Implemented in C++ using Protobuf for serialization and C++11 standard library for threading
Printed equation to LaTeX
[ Digital Image Processing, Matlab, SVM ]
- Used classic image processing techniques like morphology to segment out the characters
- Used a basic SVM+HoG classifier for recognizing the characters
Linux Shell
[ C, UNIX System Calls ]
- Bash-like shell which interacted with the kernel using syscalls. Supported user-defined and built-in commands.
- Also supported piping and input-output redirection along with foreground-background jobs
Games - BrickBreaker, Blockorz & a WebGL Aquarium
[ C++, OpenGL, Javascript, WebGL ]
- BrickBreaker and Blockorz are 2D and 3D games respectively coded from scratch in OpenGL and C++ without using any physics/game engine
- WebGL Aquarium is a 3D aquarium with lighting, bubbles, reflective glass and multiple kinds of fish
Ultimate Tic-Tac-Toe Bot
[ Artificial Intelligence, Heuristics, Python ]
- AI bot which plays a competitive 2-player game called Ultimate Tic Tac Toe
- Uses Min-Max algorithm with Alpha-Beta pruning to evaluate the best move among the numerous possible outcomes
Face-recognition based authentication app
[ Computer Vision, Deep Learning, Python ]
- Allows authentication to a web portal via face recognition. Uses DLib for detecting faces and a ResNet feature extractor
- A SVM is used as classifier trained on the small set of images we get for the person
Mini-SQL engine
[ SQL, Database Systems, Python ]
- Implemented a small SQL engine with support for basic queries, joins and aggregate functions
Mini-Dropbox: P2P File Sharing System
[ Sockets, Networks, P2P, TCP, UDP ]
- Implement a peer-to-peer dropbox which keeps two directories in sync and could work on both TCP & UDP sockets