Everything from a simple web app to a complex machine learning model, I have done it all. I have worked with a variety of technologies and frameworks, and I am always looking to learn more.
3FA is a project that I worked on with a team of 3 other students.
Aim: create a secure 3-factor authentication system using facial recognition, motion pattern and a password.
The system could be used to secure any app, but we chose to demonstrate it with a cloud storage app.
Components: desktop frontend app, cloud backend, embedded motion detection, and facial recognition ML model.
My main contribution was the facial recognition ML model, for which I collected and cleaned the data, and then trained the model.
My contribution
Researching different ways for facial recognition using machine learning.
Here one of our goal was to not require users to upload multiple photos of themselves when signing up,
hence we required a one-shot model, a model that would not train on the user's facial data, but rather match them based on facial feature similarity.
Implementing the neural network using Pytorch.
Collecting data for training and testing.
Initially, I tried to use the LFW dataset, but it was not sufficient for our needs, having only a few pictures per person.
So I created my own dataset, taking hundreds of photos of my friends and labeling them. I created a script with OpenCV which would automate this process.
Training the model.
I trained the model using the collected data, and then tested it on a separate test set, using a 80-20 split.
Chess AI is a chess engine that I created from scratch.
Rating: 1800
Motive:
Being a chess player and software engineer myself, I always wanted to create my own chess engine, especially one that could beat myself.
This is where the idea of creating a chess AI came from, apart from the fact that I wanted to apply the skills learn in my software engineering courses.
It is a UCI engine, which means it can be used with any GUI that supports the UCI protocol.
Architecture
The engine is composed of:
The UCI interface
communicates with the GUI
handles the UCI commands from GUI
sends the UCI commands from the engine to the GUI
Hari
the engine, holds the current position
Position
class that represents a chess position
this class is immutable
it contains the bitboards, the side to move, the castling rights, the en passant square, and move clocks
Move
class that represents a chess move
this class is immutable
it contains the source and destination squares (as well as optional properties such as promotion piece and en passant square)
Move generation
generates the best next move
currently uses the minimax algorithm
Evaluation
evaluates the board position statically
currently uses a simple material evaluation
Possible moves
generates all possible moves for a given board position
used to generate the moves for the minimax algorithm
Developed an autonomous entertainment robot that performed dance moves.
Implemented real-time systems and round-robin scheduler to synchronize servo movements, LCD display, and LEDs using a single thread to achieve seamless moves.
Used Wi-Fi Raspberry Pi and a Flask server to control the entertainment sequence from any device on the network.
Followed best practices for modularity and encapsulation to facilitate addition of new components and streamline future development efforts, making the codebase flexible and scalable.
Developed TODO, a full stack web application that simplifies access to course information and assignments by integrating multiple services used by university courses into a single platform.
Utilized a Python back end to interact with the Canvas & Piazza APIs, and synced data with a MongoDB database for storage and retrieval.
Implemented a React front end that communicates with a custom Flask API to display information to users.
Collaborated with a team to build “The Kamino Game” using Java, achieving the most optimal solution to win the course competition with a record-breaking score.
Designed and implemented advanced data structures and algorithms, including Graphs and Trees, achieving over 20% improvement in both time and space complexity.
Applied software best practices including unit testing, regression testing, black-boxing, and encapsulation to deliver high-quality and reliable software.
Implemented a Turing complete 16-bit RISC machine using Verilog on an FPGA board by splitting the machine into smaller modules to design, test, and debug each one individually.
Utilized pipelining techniques while mitigating hazards to achieve a 300% increase in operations per cycle.
Collaborated with a team to build a NLP model using Java to accurately predict everything from textual similarities between words to ratings of a professor given a review.
Trained a cosine similarity model using Project Gutenberg data to predict word similarities with 90% accuracy.
Applied probability and statistics techniques to predict ratings from ratemyprofessors.com given a student review.
Implemented a search term completer using n-grams to match a prefix to most likely strings.