If you would like to view the code of any of these projects please email me.
MIPS Assembler
I created an assembler in C with Professor Asanovic and Professor Stojanovic in CS61C. My assembler translates a subset of of the MIPS instruction set to machine code. My assembler assembles eighteen different instructions and two pseudoinstructions.
Spec
Application
MIPS Linker
I created a linker in MIPS with Professor Asanovic and Professor Stojanovic in CS61C. My linker processes object files and generates an executable file. It has two main tasks: combining code and relocating symbols.
Spec
Application
Processor Design: ALU & RegFile
I created an ALU and Register File circuit design in Logisim with Professor Asanovic and Professor Stojanovic in CS61C. My RegFile implements four registers: $t0, $t1, $t2, and $t3, and reads and writes values to these specific registers. My ALU involves thirteen instructions including: sll, srl, sra, add, addu, sub, subu, and, or, slt, sltu, bitpal, and lfsr.
Spec
Application
Processor Design: CPU & Memory
I created a 32-bit two-cycle processor with Professor Asanovic and Professor Stojanovic in CS61C. My two-cycle pipelined CPU involves the entire datapath including my RegFile, ALU, Control Unit, Memory Unit, etc. My data memory unit is responsible for loading and storing from and to memory.
Spec
Application
Convolutional Neural Networks
I had to apply performance optimization techniques to the real-world problem of classifying images using a Convolutional Neural Network (CNN) in CS61C with Professor Asanovic and Professor Stojanovic. These techniques included vectorization with SIMD instructions, parallelism with OpenMP, speed up calculations using Amdahl's Law, etc. My program was given a large number of 32x32 images and had to determine whether or not each of them contained a cat.
Spec
Application
Deep Learning Algorithm & Spark
I had to apply performance optimization techniques with the MapReduce programming model using the Apache Spark framework to the real-world problem of classifying images using a Convolutional Neural Network (CNN) in CS61C with Professor Asanovic and Professor Stojanovic. I optimized the training (or learning) of the model in neural networks using Spark in Python.
Spec
Application
Amazon EC2
In CS61C with Professor Asanovic and Professor Stojanovic, I had to run my MapReduce and Spark code useing the power of EC2 to run image classifiers. Running the code with 5 or 10 instances, I used 5 or 10 c3.x8 large machines at a time. From the runtime results and the training performance, I had to calculate the overall speedup between instances and the total amount of money running our code costed.
Spec
Application
2048
I created a replica of 2048 in Java with Professor Hilfinger and Professor Hug in CS61B. The goal of the game is to add matching numbers until at least one tile reaches an additive sum of 2048. New tiles appear after each move and each new tile is either a 2 or a 4.
Spec
Application
DB61B System
I created a command line database system in Java with Professor Hilfinger and Professor Hug in CS61B. DB61B System is a relational database management system that stores and selects information from tables of data.
Spec
Application
Jumping Cubes
I created a replica of the game Jumping Cubes in Java with Professor Hilfinger and Professor Hug in CS61B. I built both the GUI version and the command line version of the game with both manual players and AI players. The game is over when one color completely fills the board. I learned about AI game trees and heuristics.
Spec
Application
Graph API & Clients
I created a graph package API that includes traversals, breadth first search, and depth first search in Java with Professor Hiflinger and Professor Hug in CS61B. A replica of a Makefile and a Trip application were clients created with this API. The Trip application finds the shortest path between two locations using A* search.
Spec
Application
The Game of Hog
I created The Game of Hog in Python with Professor Hilfinger in CS61A. It is a dice game between two players where the goal is to reach 100 points first. For this project I learned about conditionals and boolean logic. I also had to come up with my own overall strategy to yield a win rate of at least 59%.
Spec
Application
Twitter Trends
I created Twitter Trends in Python with Professor Hilfinger in CS61A. This project assigns sentiments to each filtered tweet that is either positive or negative based on the syntax of the tweet. It produces a map and colors each state based on the sentiment of the tweets relating to the filtered key word.
Spec
Application
Ants vs. Bees
I created the game Ants vs. Bees in Python with Professor Hilfinger in CS61A. This is a tower defense game in which the ants must protect the queen ant from the bees. For this project I learned heavily about object oriented programming.
Spec
Application
Scheme Interpreter
I created a Scheme interpreter terminal application in Python with Professor Hilfinger in CS61A. I had to learn Scheme in this project in order to be able to parse and evaluate the tokens in Python. I also had to write comprehensive programs in Scheme in order to test the functionality of my Scheme interpreter.
Spec
Application