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