Description, properties, and storage allocation functions of data structures including balanced binary trees, B-Trees, hash tables, skiplists, tries, KD-Trees and Quadtrees. Algorithms for manipulating structures. Applications from areas such as String Processing, Computer Graphics, Information Retrieval, Computer Networks, Computer Vision, and Operating Systems.
Why did I take this class??
Basically (should be) required for CS majors. Data structures are super important, or so they say. I feel like a lot of the data structures covered were super niche and probably won't see the light of day, but that isn't the point of the class.
Sure, AVL trees are well known, hash tables are fast and efficient, quadtrees, octrees, and kd-trees see some use possibly, but I think the point of the class is to get used to the algorithms used to implement them.
Most of the data structures are trees and you just need to recurse on subtrees (cleverly?) though.
Summary
The material is very fair. The 2 (two!) homework assignments were pretty straightforward. The project was pretty easy.
The exams were a challenge due to the time constraint, in addition to the fact that some problems were sort of "you see it or you don't" type of problems.
The challenge problems on the homework felt really out of place, like taking the class would not help give you intuition to solve them. However, they were ungraded which was fine.
I am personally not a big fan of Professor Mount's teaching style, but he is definitely a likeable person and seems to be loved by everyone.
With the assignments it felt like he was either spoonfeeding us or shoving it down our throats (with the challenge problems and some exam problems), which felt really weird.
He communicates the material fine and gives sufficient intuition during the lectures, but they usually seemed more like discussions than lectures.