Date Description
2022-09-01 Compilers vs. Interpreters
Great Circle Distance Calculator initial version
2022-09-06 Separate Compilation
Great Circle Distancce Calculator with functions in two separate files with makefile
2022-09-08 stdin, stdout; State Machines (and Ms. Pac-Man)
Great Circle Distance with scanf and loop
Audio file splitter (bonus: with output files ; uses strings and arrays)
2022-09-13 Arrays and Strings
residuals.c (arrays), strings.c (strings)
2022-09-15 Dynamic Memory Allocation
Code
2022-09-20 and 2022-09-22 More on memory, resizing arrays
Code
2022-09-27 and 2022-09-29 Linked lists, ADTs
Code
2022-10-04 Iterators, for each
Original list implementations Using list_get with linked list (slow) Using iterators (fast) Using list_for_each Birthday problem using list_for_each
2022-10-06 Sorting with comparison function; Generic lists
increasing-only sort sort with comparison function generic items polymorphic
  Exam #1 Practice and solutions
(see also Practice Quiz on Canvas)
2022-10-11 Map ADT; Hash tables
Unsorted Array Implementation
2022-10-13 Open addressing
2022-10-18 Chaining implementation
Chained Hash Tabble Implementation
CPython's string hash function
Java's String hash function
2022-10-27 Inserting into BST implementation
Binary Search Trees
2022-11-01 AVL Trees
2022-11-03 Red-Black Trees
Prefix Trees - Tries
2022-11-08 Priority Queues and Heaps
Heapsort
2022-11-10 k-d Trees
Building a balanced k-d Tree
2022-11-15 Sorting Algorithms
2022-11-17 Optional: Analysis of Comparison based Sorting Algorithms
Programming Techniques: Dynamic Programming
2022-11-29 Graphs
2022-12-01 Breadth-First Search, Depth-First Search, Topological Sort
2022-12-06 Dijkstra's Algorithm
2022-12-08 C++ inplementation of map as unsorted array with bike count application
with stack-allocated map
with std::unordered_map (hash-table-based map)
  Second Half Practice for the Final Exam and solutions
(see also Practice Quiz on Canvas and Exam 1 Practice material)