Course Work

I have a lot of small projects from the many CS courses I've taken. Here are the most interesting ones.

Machine Learning Models

Over our Introduction To Machine Learning class, we built multiple ML models from scratch, including kNN, decision trees, linear and logistic regression, neural networks, naive bayes, random forest, k-means and bag of words. This included hypertuning and analyzing our results.

For our class project, we had to implement many of these models to classify cities by their characteristics. In particular, I created a model with 90% test accuracy.

This whole course was a great foray into simple Machine Learning and provides a great foundation for future ML endeavours.

Adventure Game

Over our Introduction to Software Design course, we worked on a text-based adventure game. We built the base game in Java, then added UI via JavaFX, added more complex features and handling accessibility concerns. At the end, we customized our game while following the Agile methodology. In particular, I lead sprints and our team used UML and design patterns to streamline this process.

We turned our Adventure Game into a game role-playing a UTM student where we have to manage our health, intellect and charisma, all while trying to pass our final exams.

This project taught me how to use Java and get comfortable with the Agile methodology, UML, design patterns and working with others.

Numerical Analysis

Over our Numerical Analysis course, we had to implement many algorithms discussed in lecture. Here's a list of some of the interesting algorithms I had to write for this class:

This course combined theory with code wonderfully. Alongside my data structures and algorithms class, this made me confident in my ability to code advanced and difficult algorithms.

Uber Simulation

In this project, we were asked to create a very simple Uber simulation. There were riders and drivers who each request more drivers and riders. Our simulation takes the list of requests that happen and runs the simulation given information about these events, riders and drivers.

We had to simulate time moving, a grid system and other restrictions in addition to information about drivers and riders. For example, drivers have a max speed and riders have a max patience.

This project implements simple Object Oriented Programming in addition to ADTs such as Priority Queues.

Huffman Compression

In this project, we were asked to implement the Huffman Compression algorithm. The Huffman Compression algorithm compresses files by minimizing the amount of bits necessary to represent a commonly occuring character/byte through binary tree magic.

Given a file, we were expected to build the Huffman tree that maximizes the compression for that specific file. Then, we had to compress the file using our Huffman tree. Finally, we had to decompress a compressed file. And indeed, it works astoundingly well on text files, as expected.

This project implements more Object Oriented Programming and recursion in addition to ADTs such as binary trees.

File Visualizer

In this project, we were asked to visualize a folder on our local disk using treemaps. In addition to the original visualization, we were able to increase and decrease the size of visualized files (not changing original ones), delete, duplicate, copy and paste visualized folders and files.

Given a folder, we implemented the treemap as a tree and changed the tree as required. In this project, the problems regarding implemntation were the finer details such as selecting visualized files with our mouse, rather than the complexity of the project itself.

This project implements more Object Oriented Programming and recursion in addition to ADTs such as binary trees.

Sokoban

We used a program called Ripes that used the RISC-V32 architecture to build Sokoban. We control a character and have to push a box into a goal. While a simple concept, all the code was in assembly. I efficiently used memory registers to keep track of all the moving pieces, implement loops to keep the game running and implement a 2D array which is the game board.

Fall 2024 Courses

In my Fall 2024 semester, I am taking: