Skip to content

jilliangoldberg/berkeley-project-journal

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 

Repository files navigation

School Projects

Here's a journal of school coding projects and assignments I have completed at UC Berkeley. Since I can't share the source code of the projects, I'll summarize the projects and what I learned from them instead. I'll also include a link to the project spec if possible. Having a journal like this helps me keep track of the most notable projects I've completed at Berkeley!

Here are all the CS courses I've completed so far, for reference:
CS 61A: The Structure and Interpretation of Computer Programs
CS 61B: Data Structures and Algorithms
EECS 16A: Designing Information Devices and Systems I
CS 188: Introduction to Artificial Intelligence
CS 61C: Great Ideas in Computer Architecture (Machine Structures)
CS 70: Discrete Mathematics and Probability Theory
CS 198: Recommendation Systems in Machine Learning
EECS 16B: Designing Information Devices and Systems II
CS 189: Introduction to Machine Learning
DATA 100: Principles and Techniques of Data Science
CS 162: Operating Systems and Systems Programming

Hog

My first CS project at UC Berkeley where I was exposed to functional programming and Python. Implemented a made up dice game of Hog. GUI was done in Tkinter.

Yelp Maps

A project where I was exposed to the list comprehensions, data structures, and data abstractions. Created a Voronoi diagram of reccomendations overlaying on the map of Berkeley campus! It used simple machine learning algorithms such as centroid method and k-means clustering algorithm to reccomend restaurants based on Yelp Academic Dataset. Overall, gave a taste of supervised/unsupervised learning and peaked my interest in AI/ML.

Ants vs. Bees

This project exercised object oriented programming with a fun little web app game inspired by the popular mobile tower defense game classic: Plants vs. Zombies. Dealt with classes, super classes, methods, attributes, and much much more to develop a fully working game!

Scheme Interpreter

Built a full interpreter in Python for Scheme. The program fully replicates the REPL environment of Scheme. This was a really cool project building a functional programming language and interpreter from scratch with an already interpreted lanugage!

NBody

Made an Nbody simulator. Using physics equations to simulate bodies in space using StdDraw, this was a small project intended to get hands dirty with Java.

ArrayDeque

junit5
Made an array deque data structure from scratch in Java. Also implemented unit tests with junit5. It was the first time using a testing framework and an introduction to TDD.

Gitlet

junit5
A Git clone made in Java using SHA-1 serialization and basic data structures. Can do basic version control system through the command line such as init, add, commit, log, find, status, branch, checkout, merge, rebase, push, pull, etc. Made unittests with junit5, as well as integration tests with Python automating shell scripts/Gitlet commands. It was a great project to understand how Git works.

BearMaps

junit5OpenStreetMap
Created a mini web map application deployed on Heroku using OpenStreetMap of Berkeley. Application uses data structures and algorithms such as tries, hashing, A* shortest path, rasterizing, and KD-trees. Integrated unittests with junit5. Website is availiable to view by clicking on the image below!

Game of Life

Implemented John Conway's Game of Life in C through bit manipulations to produce bitmap images and movies. Uses shell scripts to make movies out of image frames, as well as testing. It was also my first project in C, so I learned how to meticulously bug with gdb and check for memory leaks with Valgrind. Made some pretty cool movies with this project!

RISC-V Classify

Made an artificial neural network in RISC-V assembly. Uses Venus, a Java backend RISC-V simulator to run assembly code. Matrix and vector operations were implemented such as ReLU, argmax, and matrix multiply. Can train and classify MNIST digit dataset with greyscale images mapped with values from 0 to 255 of size 28x28 (was restircted to the integer instruction set). Uses Python unittest library to run unit and integration tests in conjucttion with the Venus simulator. Also uses bash scripts to automate development/testing workflow. It was my first project in assembly, so it was cool to see how to convert such a high level mathematical algorithm down to an option of 47 instructions that a CPU understands!

RISC-V CPU

Designed a CPU with datapath, control logic, and memory fully implemented in Logisim following the RISC-V 32-bit ISA. Design scored top 100 out of 1200+ students based on how many logic gates were efficiently used. Uses Venus, a Java backend RISC-V simulator to convert assembly code to machine code and input it into Logisim. Uses Python and bash scripts to automate assembling, execution, integration tests, and development workflow. Overall, was really cool to design an actual working (virtualized) CPU and also see it run previous projects/code in RISC-V.

Numc

Made a NumPy library clone in C. Used SIMD and MIMD to accelerate matrix operations, with frameworks such as Intel AVX Intrinsics and OpenMP, as well as optimizations with caches and virtual memory. Benchmarked 110X speed up in DGEMM and 2200X in matrix exponentiation on an Intel i7-4770 processor. Scored on average top 100 out of 1200+ students out of multiple categories, scored top 10 in matrix unary/binary operations category. Uses Python C interface/API to connect C code to Python, as well as using Python unittests and CUnit testing framework to do unit and integration tests. Uses bash script to automate compilation, testing, and development workflow. This was one of the most rewarding projects, as I had to understand how the compiler works down to instuction level and got to see code drastically run faster!

Pacman AI

Encoded a series of AI functionality to the game of Pacman in Python, such as searching algorithms, gametrees, MDPs, reinforcement learning, and Bayesian networks. Scored 5th for best AI agent out of 600+ students. Overall, very fun projects, and maybe even philosophical. It was interesting to see simple algorithms map to simulating intelligence.

Neural Networks

Created neural networks from scratch to estimate sine wave, classify digits, and classify different languages. It was very hard to code, but the reward of achieving high accuracy peaked my interesting in machine learning!

Discrete Mathematics and Probability Homework

Wrote up homework solutions through LaTeX and visualized problems with Python.

Algorithms Homework

Programmed algorithms in Python and wrote homework solutions in LaTeX.

Zoom Rooms

Jupyter
Devised algorithms to solve a NP-Hard of graph parititioning problem. Uses NetworkX to generate and compute graphs. It was hard to try to generalize, but found a way to brute force small graphs to achieve first place on the leaderboard, and then devise a greedy algorithm to score on average top 50% of the leaderboard for medium and large graphs!

Kaggle InClass Prediction Competition

JupyterNumPyPandasscikit-learn
Scored on average top 5% of the class in Kaggle InClass Prediction Competitions for a machine learning course consisting of 600+ graduate and undergraduate students. Competed for the best classifiers such as SVMs, GDA, Logistic Regression, Decision Trees/Random Forests, and Neural Networks developed from scratch in Python. Trained and classified datasets like MNIST Digits, MNIST Fashion, Spam/Ham, CIFAR-10, wine, Titanic, movie datasets. Uses libraries such as NumPy, Pandas, SciPy, Matplotlib, and sklearn to help with data preprocessing and numerical computations. Wrote homework solutions in LaTeX as well as coding in Jupyter notebook environment. Overall, had fun with deriving math problems/algorihtms and implementing them in code to be rewarded with high classification accuracy!

SIXT33N Voice Activated Self-Driving Car

C++NumPyJupyter
Made a self-driving car with circuits, op-amps, filters, and sensors with a TI MSP-EXP430F5529LP microcontroller. Software is written in C++ and can recognize four voice commands corresponding to four actions. Commands are classified with unsupervised learning technique using principal components analysis.

Data Science Homework

JupyterNumPyPandas

Completed a series of homework related to data science. Involved the full data science lifecycle, from data cleaning, making visualizations, evaluating models, and reasoning the data. Got hands dirty with a variety of machine learning/data science packages such as Pandas, Numpy, Matplotlib, scikit-learn, Seaborn, Scipy, and Plotly.

Pintos

Improved upon the Pintos operating system written in C by implementing support for system calls, FPU, timers, schedulers, user threads, buffer cache, filesystem, and subdirectories.

Secure Filesystem

Implemented a filesystem in Go with secure cryptographic encryption schemes that ensure confidentiality, authenticity, and integrity of data. Wrote security attacks and tests with Ginkgo and Gomega testing frameworks. Used cryptographic functions such as public key encryption, digital signatures, hash-based message authentication code (HMAC), hash-based key derivation function (HashKDF), password-based key derivation function (PBKDF), and symmetric encryption.

Parallel Computing Homework

C++CUDAX86
Series of parallel computing homeworks written in C/C++. Used SIMD instructions to achieve near theoretical peak performance of DGEMM on a single core on Intel KNL processors. Parallelized particle simulations using OpemMP, MPI, and CUDA. Finally, used UPC++ to do genomic simulation. Ran CPU simulations and benchmarks on Cori KNL nodes (Intel Xeon Phi 7250) on the NERSC supercomputer (Top 500) and ran GPU simulations on Bridges-2 supercomputer in PSC (8 NVIDIA Tesla V100 32GB per node).

Computer Architecture Labs

C++
Series of computer achitecture labs written in C/C++/RISC-V assembly. Used Chisel to write hardware descriptive code and Chipyard framework to run variety of RISC-V simulators.

About

A summary of my Berkeley CS projects.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published