projects
A few of my projects.
Virtual Memory
Implemented virtual memory paging for a toy x86-32 kernel; supports shared as well as process-private mmap/munmap.
Technologies: C++, x86-32 Assembly
Ext2 File System
Implemented Revision 0 of the Ext2 file system for an toy x86-32 kernel.
Technologies: C++
Preemptive Multithreading
Designed kernel-level preemptive multithreading support, allowing APIT interrupts to forcibly yield threads.
Technologies: C++, x86-32 Assembly
snack-api
🔗Built a RESTful API for finding and liking others' snack preferences.
Technologies: Go, PostgreSQL, Docker
fetch-host
🔗Built a tool for UTCS students to fetch command to SSH into the lowest-load lab machine.
Technologies: Go
rgsm
🔗Implemented assembler for custom ISA used for pipelined CPU. Breaks analysis into lexing, parsing, and translation stages. Features idiomatic macros for common higher-level programming paradigms.
Technologies: Rust
RISC Pipelined CPU
Designed and implemented a pipelined processor for a custom RISC ISA in Verilog. Fully handles instruction and memory-addressing misalignment. Utilizes optimizations such as branch prediction and data forwarding to increase efficiency.
Technologies: Verilog
C-Routines
Implemented go-style stackful coroutines.
Technologies: C, x86 Assembly
Custom Memory Allocator
Designed and implemented a custom memory allocator/deallocator based on a first-fit, linked list technique.
Technologies: C
Custom Language ARM Compiler
Designed and implemented simple compiler for custom programming language containing features such as iteration, control flow, and functions. Generates ARM-assembly instructions. Implmented optimizations such as constant folding and tail-call recursion.
Technologies: C++, ARM Assembly
AArch64 Emulator
Engineered an emulator to interpret and execute a subset of AArch64 machine-level instructions on x86 machines.
Technologies: C++, ARM Assembly
Web Crawler and Search Engine
Indexes webs of size 100k+ and performs efficient queries with full logical operator support. Idexes user's tokenized queries to provide trend visualization and generative search suggestions. Implemented Python web-generation script to create large, controllable webs for testing.
Technologies: Java, JavaScript, HTML, CSS, Python
Tetris Genetic Algorithm
Designed and implemented Tetris engine and genetic algorithm. Survives 500,000 tetrominoes consistently after 50 generations of training.
Technologies: Java