computer science
-
operating systems
computer architecture
software development
ux design
programming languages paradigms
-
data structures & algorithms
c systems & programming
java & python programming
mobile applications
-
linear algebra & probability
discrete mathematics
calculus & analytical geometry
-
java
c
digital design
arm assembly
python
html
css
racket
haskell
lambda calculus
-
Color of Light & Pollution
The purpose of this project was to visualize the color of light based on pollution levels. The project, centered around a Raspberry Pi, measures air quality with sensors that continuously collect data as the air quality changes, while cameras record the visual color of the air quality. The project intertwines the visual perspective of air quality with pollution levels, or Air Quality Index, into one visual that shows the coordinating color with the current air pollution.
Technologies Used:
Raspberry Pi
Ambient Light Sensors
Pollution Sensors
AWS RDS PostgreSQL
HTML/CSS/p5.js Website Implementation
Projects
-
Custom Allocator
Developed a custom memory allocator that uses mmap to allocate entire regions of memory at a time. The project uses free space management algorithms to split up and reuse empty regions: first, best, and worst fit.
Language: C
-
Custom Shell
Mimics the outermost part of an operating system. The shell prints a prompt and waits for a user inputs, runs commands in a current directory, and follows paths.
Language: C
-
Senior Term Project - Color of Light & Pollution
Visualizes the color of light based on pollution values and visual photographs of the sky.
Technologies: Raspberry Pi, Ambient Light Sensor, Pollution Sensor, Camera, Amazon Web Services
Languages: Python, Java, HTML, CSS, p5.js
-
Single Cycle & Pipelined Schematic Processors
Implementation of a single-cycle microarchitecture for a subset of the ARM instruction set architecture in Digital.
Pipelined processor includes a Hazard Unit and data path additions to provide support for Register Forwarding for data dependencies.
Technologies: Digital
Language: ARM Assembly
-
Inverted Index & Partial Search
Inverted Index: processes all text files in a directory and its subdirectories, cleans and parses the text into word stems, and builds an in-memory inverted index to store the mapping from word stems to the documents and position within those documents where those word stems were found.
Partial Search: Stemmed from Inverted Index to support exact search and partial search. Tracks the total number of words found in each text file, parse and stem a query file, generate a sorted list of search results from the inverted index, and support writing those results to a JSON file.
Both projects were made thread-safe and use a work queue to build and search an inverted index using multiple threads.
Language: Java
-
Miscellaneous
Additional Projects