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