Operating Systems: User Program

Designed and built a project entirely in C, that implemented multiprocessing, process controls, file operations, and floating point operations in PintOS with three other group members.

Operating Systems: Threading

Fully designed and built a program that allowed multiple users to switch between threads, with maintaining a priority scheduler logic. Implemented user threading, strict priority scheduler, and user threading. 

Completed in PintOS with three group members.

Operating Systems: File System

Designed and implemented a file system, also in PintOS, entirely in C. Implemented a buffer cache, subdirectories, and extensible files. 

Also completed with three other group members. 

Database Systems: Joins and Query Optimizing

Implemented SQL-like join algorithms, including nested loop joins, hash joins, and sort merge joins. Also implemented query optimization, including single table access selection, join selection, and optimal plan selection. 

Completed individually entirely in Java.

Database Systems: Concurrency

Implemented all queuing logic for an SQL-like system, with a primary focus on table access logic. Built upon locking logic with multi-granularity, allowing efficient access of large databases without losing table access protection in a multithreaded system. 

Completed individually entirely in Java. 

Database Systems: Recovery

Implemented write-ahead logging and support for save-points, rollbacks, and ACID compliant restart recovery when flushing to the disk or upon system failure. 

Completed individually entirely in Java. 

Artificial Intelligence: Multi-Agent Search

Designing agents for a classic version of Pacman, in which both the player and the ghost pick the most intelligent search path forward. Specifically implement the minimax algorithm, alpha-beta pruning, the expectimax algorithm, and an overall evaluation function that decides the most optimal algorithm.

Implemented with a partner entirely in Python.

Artificial Intelligence: Logic and Classical Planning

Using an SAT solver, pycosat, implemented the solution to solve the logical inference tasks associated with planning (generating action sequences to reach goal locations and eat all the dots), localization (finding oneself in a map, given a local sensor model), mapping (building the map from scratch), and SLAM (simultaneous localization and mapping).

Implemented with a partner entirely in Python.

Artificial Intelligence: Machine Learning

Implemented a neural network to classify handwritten digits and alphanumerical characters, primarily using  numpy functions. Neural network also classified the language written in.

Implemented with a partner entirely in Python.

Computer Security: Exploiting Memory Vulnerabilities

Given sets of code, calculated the area where the vulnerability is based upon stack and heap locations, then placed an exploitation at that location using machine code script. 

Executed with a partner.

Computer Security: An End-to-end encrypted file sharing system

Designed and implemented completely from scratch. Allowed a user to: (1) Authenticate with a username and password (2) Save files to the server (3) Load saved files from the server (4) Overwrite saved files on the server (5) Append to saved files on the server (6) Share saved files with other users (7) Revoke access to previously shared files. 

Designed the system using several encrypted layers in a linked-list like nodes.

Computer Security: Breaching a Vulnerable Web Server

Exploiting a poorly designed website using SQL injection attacks without seeing the query nor the response.

Executed with a partner.

Machine Structures: Classify

Created a neural network in RISC-V Assembly that classifies hand-written digits and outputs the correct digits. Implemented functions to handle ReLU, Dot Product, ArgMax, Matrix Multiplication, and reading and writing image pixel matrices into binary.

Machine Structures: CPU

Built a CPU that implemented all the functions of RISC-V in Logisim. Wrote up the ALU and RegFile for a basic RISC-V CPU, as well as the CPU datapath for executing all the basic add, multiply, subtract, etc.

Machine Structures: NumC 

Built & optimized a program that replaced the existing NumPy module with Numc, a set of matrix functions implemented in C. Optimized using SIMD & OpenMP. Achieved up to a 90x speedup.

Data Structures: Deques

Build implementations of a “Double Ended Queue” using both linked lists and arrays.

Coded entirely in Java.

Data Structures: Gitlet

Built a GitHub-like system completely from ground up, with the same merge, branch, commit functionalities, with a cohesive back-end design.

Data Structures: BearMaps

Yes, we have Google Maps, but who doesn't want one only for the city they live in? 

A stream-lined back & front-end design, with the use of efficiency algorithms, that mimics online navigation systems for the city of Berkeley.