Computer Organization and Design
Digital Systems Laboratory
Making Sense of Big Data
eCrime and Internet Service Abuse
Intro to Computer Security
Digital Signal Processing
Applied Parallel Programming
Algorithms and Models of Computation
Computer Systems Engineering
Analog Signals and Systems
Probability with Engineering Applications
For the Computer Organization and Design class I had to work with two other students to design a fully functional RISC-V Processor from scratch. It included pipelining, forwarding, hazard detection, a neural based perceptron branch predictor, a branch target buffer, a two-level cache for both data and instructions, a victim cache, and a negative-edge triggered memory arbiter.
For the Computer Systems Design class I had to work with three other students to design a custom Linux kernel from scratch. It included job scheduling, paging, keyboard drivers, custom signal handling, and terminal drivers. In addition to these necessary features, we added a read-write file system, sound drivers, a sound interface for music production, heap-memory allocation, and a memory leak checker. We were runners-up in the operating system design competition. I enjoyed this class so much that I worked as a teaching assistant for for this class during my senior year.