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.