Algorithms

Algorithms #

This included two classes, CS 1332 (Data Structures and Algorithms) and CS 3510 (Design and Analysis of Algorithms).

Data Structures and Algorithms #

This was quite an interesting class, and I learned about all the basic data structures like queues, stacks, heaps, AVLs, hash maps, and more; along with common sorting and graph algorithms.

The class centered around learning about some concept and immediately implementing it as a homework in Java. The csvistool is absolutely amazing in helping visualize the concepts we learned and contains a good summary of all that I learned in the class.

Favourite Data Structure: Hash Map
Favourite Algorithm: LSD Radix Sort

Design and Analysis of Algorithms #

Just when I thought I could not enjoy DS&A more, I was presented with this class. This course took a more abstract view on algorithms and focused on the problem solving and mathematical aspects of algorithms.

We tackled divide and conquer, greedy, and dynamic programming, and also learned about NP Completeness. The homeworks involved simply describing how one would solve a problem and perhaps writing some pseudo-code, and as such, this class really tested my communication and problem solving skills rather than rote programming.