CS104 – Computer Gaming
In this course I used the ACM Java Task Force library to build games. This course covered basic Java concepts and syntax, recursion, ArrayLists, and threading. Although I came into this class already familiar with most of the concepts, it gave me a chance to experiment with programming in a classroom environment.
Labs and projects included a point-and-click game, a drag-and-shoot cannon game, a tower defence game, and a free-design game. My code for the final project, which supplied us with a list of requirements that had to be implemented into a game of our own design, can be found on my GitHub profile.
CS150 – Data Structures and Algorithms
This course introduced me to data structures including lists, binary trees, red and black trees, 2-3 trees, heaps, graphs, stacks, and queues. I was introduced to various algorithms including insertion sort, selection sort, merge sort, quick sort, and Dijkstra’s pathfinding algorithm. I learned the basics of analysing time and space complexities. This course also introduced me to abstract classes, interfaces, unit testing, bash commands, and Red Hat Enterprise Linux.
The first project for this course was a building evacuation simulator. Using queues and lists I built a program that simulated a building evacuation given a specified number of floors, number of residents on each floor, number of stairwells, distance between floors (stairwell size,) and maximum evacuation time. One of these values was to be left blank, with that value returned by the program. The finished program could calculate the missing value given the other four parameters.
The second project was a restaurant review system similar to Yelp!. I built an interface that allowed users to add new restaurants, search restaurants, write reviews, and read reviews. The search took cost, location, operating hours, and rating into account.
The third and final project for this class was a delivery system calculator. Given a text file representing nodes and edges, a graph was created. Nodes were assigned to be stores, warehouses, and towns. Given a specified number of trucks and gallons of gas, my program calculated a delivery schedule. This schedule fulfilled order requests for each of the warehouses. Each truck had limited storage space and was forbidden from making multiple trips. This project was heavily centred around Dijkstra’s pathfinding algorithm.
These projects can be found on my GitHub profile.
CS202 – Analysis of Algorithms
CS203 – Computer Organization