Parallel Systems
I wrote a distributed bitcoin miner in C using CUDA and OpenMPI which I deployed to my school's compute cluster. I also wrote distributed applications in Java using UDP sockets to manage the job coordination myself and tested it using docker-compose. Other projects included a CUDA RSA cracker, a Spark app to perform statistical analysis, and a Java app to prove Lemoine's conjecture.
Deep Learning
I wrote a neural network from scratch, including the derivation of backpropagation using calculus. I also used higher level libraries like Keras to develop image classifiers, and create adversarial examples. Another project was based around solving a maze using an MDP for an introduction to reinforcement learning. I read several papers for this class which were SOTA at the time including YOLO9000, FocalLoss, and papers on semantic segmentation.
Networks
I implemented a dockerized RIPv2 router along with a TCP-like protocol that could handle a channel with no delivery guarantees. I also developed a packet analyzer. In this class I learned about standard protocols like Ethernet, IPv4/IPv6, TCP/UDP/ICMP, as well as modern protocols like BitTorrent, TOR, and Zigbee.
Web Security
I created a dockerized Twitter clone with built-in security against XSS, CSRF, click-jacking, user-enumeration, rainbow tables, and session token prediction. I wrote this application using a microservice architecture with a variety of different languages for each of the services. For storing the tweets I used ElasticSearch and used MySQL for storing users, sessions, and CSRF tokens.
Embedded Systems
I created a game on the STM32 board using the gyroscope and two servo motors. The goal of the game is for the user to match the position of the computer controlled servo motor by tilting the STM32 board to move their own servo into position. For this project I used threads in the FreeRTOS operating system, consulted the manuals for interfacing with the gyroscope, and used UART to display scoring information on a terminal.
Big Data
I worked on a group project in which I loaded 60 million records into a Postgres database, created queries on the data, and optimized the queries using indexes. For a homework, I loaded millions of records into a MongoDB instance and optimized queries on that system using indexes as well. I also performed frequent itemset mining, designed schemas, and implemented clustering algorithms.