My Review of (INFO 3600) Data Structures and Algorithms with C
Grade: A
Difficulty: 7/10
Rating: 8/10
Time commitment: 12 hours/week
-------------------------------
A decent course on data structures & algorithms. Lots of well designed coding assignments. They are time-consuming but rewarding. The lecture extensively covers data structures (stacks, queues, arrays, linear linked lists, trees, graphs, hashing, heaps), and algorithms for manipulating these structures (various sort, search/traversal techniques with complexity analysis)
Overview
-
Fundamentals
- C structs, arrays, linear/double linked lists
-
Stack
- Implementation abstraction
-
Queue
- Priority queue, abstraction
-
Hash
- Collision avoidance, linear probing, clustering, chaining
-
Tree
- Binary search trees (BST), Self balancing trees (AVL trees, Red Black trees, B trees), A Trie
-
Graph
- Representations (adjacency matrix/list)
- Traversal: depth first search vs breadth first search (DFS vs BFS)
- Topological sort
- Dijkstra's algo, Bellman Ford, Minimum spanning tree (Prim's algo, Kruskal's algo)
-
Sort
- Bubble, insertion, shell, selection, radix, merge, heap, quick sort
-
Complexity analysis
- Run time vs space complexity on various operations, big O notations
Assignments
- 9 homework assignments (60%): Heavy coding homework where you usually implement data structures and algorithms from scratch in C with a bit of complexity analysis such asymptotic versus amortized speed with big O notation like O(n*log(n)). It's overall fun but a lot of work. Each homework took me at least several hours, sometimes an entire weekend. You compile and submit a report that contains the code and your explanation of the experiment & results.
- Exams: One midterm (20%) and one final (20%). Closed book, timed, multiple choice format. Moderate difficulty. As long as you review the lecture notes, you will be fine.
Thoughts
The content is great. It's exactly as you expect from a data structures and algo course.They provide a nice PDF lecture note on each topic. I still go back to them from time to time whenever I need to review.
One negative aspect is the instructor (Thomas Kostizak) is extremely picky about the format of both code & reports for the homework. He has a mammoth spec doc about where to insert page break, blank page, what kind of test case, with specific types of annotation in specific font style/size, etc etc. So you end up submitting 20+ pages of PDF every week in which probably only 7 pages are code.