CS 124 - Data Structures and Algorithms
Here are video materials developed for an online version CS 124 - Data Structures and Algorithms, based in part on Lisa Dion’s previous course materials.
- 00 Welcome! [video (6:49)]({{ site.url }}{{ site.baseurl }}/assets/cs124/00_Welcome_and_Syllabus/Welcome.mp4)
- 01 Modular Arithmetic: [video (10:13)]({{ site.url }}{{ site.baseurl }}/assets/cs124/01_Modular_Arithmetic/Modular_Arithmetic_R02.mp4)
- 02 Recursive Functions: [video (5:02)]({{ site.url }}{{ site.baseurl }}/assets/cs124/02_Recursive_Functions/Recursive_Functions.mp4)
- 03 Hello, World!
- Installing CLion: [video (4:29)]({{ site.url }}{{ site.baseurl }}/assets/cs124/03_Hello_World/InstallCLion.mp4)
- Hello, World!: [video (8:53)]({{ site.url }}{{ site.baseurl }}/assets/cs124/03_Hello_World/Hello_World.mp4)
- 04 Introduction to C++
- Part 1: [video (22:18)]({{ site.url }}{{ site.baseurl }}/assets/cs124/04_Intro_to_C++/Intro_to_C++_Part_1.mp4)
- Part 2: [video (41:12)]({{ site.url }}{{ site.baseurl }}/assets/cs124/04_Intro_to_C++/Intro_to_C++_Part_2.mp4)
- 05 Output Manipulation: [video (06:19)]({{ site.url }}{{ site.baseurl }}/assets/cs124/05_Output_Manipulation/Output_manipulation.mp4)
- 06 File Input: [video (09:16)]({{ site.url }}{{ site.baseurl }}/assets/cs124/06_File_Input/File_Input.mp4)
- 07 Pointers, Addresses, and References
- Pointers and Addresses: [video (09:21)]({{ site.url }}{{ site.baseurl }}/assets/cs124/07_Pointers_and_Addresses/Pointers_and_Addresses.mp4)
- Reference variables: [video (06:47)]({{ site.url }}{{ site.baseurl }}/assets/cs124/07_Pointers_and_Addresses/Reference_Variables.mp4)
- 08 C++ Templates: [video (07:16)]({{ site.url }}{{ site.baseurl }}/assets/cs124/08_C++_Templates/C++_Templates.mp4)
- 09 Overloaded Operators: [video 03:26]({{ site.url }}{{ site.baseurl }}/assets/cs124/09_Overloaded_Operators/overloaded_operators.mp4))
- 10 Memory - Stack and Heap: [video (9:30)]({{ site.url }}{{ site.baseurl }}/assets/cs124/10_Memory_Stack_and_Heap/Memory.mp4)
- 11 Node Class: [video (15:20)]({{ site.url }}{{ site.baseurl }}/assets/cs124/11_Node/Node.mp4)
- 12 (Node Class and) Stack Class: [video (25:17)]({{ site.url }}{{ site.baseurl }}/assets/cs124/12_Node_and_Stack/Stack.mp4)
- 14 Intro to Complexity
- Part 1, basics and asymptotic notation: [video (7:26)]({{ site.url }}{{ site.baseurl }}/assets/cs124/14_Intro_to_Complexity/Complexity_1.mp4)
- Part 2, examples and calculations: [video (12:59)]({{ site.url }}{{ site.baseurl }}/assets/cs124/14_Intro_to_Complexity/Complexity_2.mp4)
- C++ Supplement – random numbers, shuffling vectors, writing to file: [video (8:21)]({{ site.url }}{{ site.baseurl }}/assets/cs124/C++_Supplement/C++Supplement.mp4)
- 15 Complexity, Continued
- Part 3, more examples and practice: [video (14:02)]({{ site.url }}{{ site.baseurl }}/assets/cs124/15_Complexity_Continued/Complexity_Continued.mp4)
- 16 Trees
- Part 1, trees and their properties: [video (7:19)]({{ site.url }}{{ site.baseurl }}/assets/cs124/16_Trees/Trees_1.mp4)
- Part 2, rooted trees, binary trees: [video (7:55)]({{ site.url }}{{ site.baseurl }}/assets/cs124/16_Trees/Trees_2.mp4)
- Some applications of trees: [video (9:30)]({{ site.url }}{{ site.baseurl }}/assets/cs124/16_Trees/Some_applications_of_trees.mp4)
- 17 Tree Traversal and Search
- Representing trees: [video (8:35)]({{ site.url }}{{ site.baseurl }}/assets/cs124/17_Tree_Traversal_and_Search/Representing_Trees.mp4)
- DFS with pre-order traversal: [video (8:10)]({{ site.url }}{{ site.baseurl }}/assets/cs124/17_Tree_Traversal_and_Search/DFS-PreOT.mp4)
- DFS with post-order and in-order traversal: [video (12:27)]({{ site.url }}{{ site.baseurl }}/assets/cs124/17_Tree_Traversal_and_Search/DFS-PostOT-InOT.mp4)
- BFS: [video (03:22)]({{ site.url }}{{ site.baseurl }}/assets/cs124/17_Tree_Traversal_and_Search/BFS.mp4)
- Expression trees: [video (6:10)]({{ site.url }}{{ site.baseurl }}/assets/cs124/17_Tree_Traversal_and_Search/Expression_Trees.mp4)
- 18 Binary Search Trees: [video (16:05)]({{ site.url }}{{ site.baseurl }}/assets/cs124/18_Binary_Search_Trees/BST.mp4)
- 19 AVL Trees
- Video 1: [video (11:10)]({{ site.url }}{{ site.baseurl }}/assets/cs124/19_AVL_Trees/AVL_01.mp4)
- Video 2 (animation): [video (8:29)]({{ site.url }}{{ site.baseurl }}/assets/cs124/19_AVL_Trees/AVL_02.mp4)
- Supplement: Tree Rotation: [video (7:59)]({{ site.url }}{{ site.baseurl }}/assets/cs124/19_AVL_Trees/Tree_Rotation.mp4)
- 20 Splay Trees
- Video 1 (insert and access): [video (16:19)]({{ site.url }}{{ site.baseurl }}/assets/cs124/20_Splay_Trees/Splay_Trees_01.mp4)
- Video 2 (animation): [video (6:03)]({{ site.url }}{{ site.baseurl }}/assets/124/20_Splay_Trees/Splay_Tree_Demo.mp4)
- 21 B-trees
- Video 1: [video (12:06)]({{ site.url }}{{ site.baseurl }}/assets/cs124/21_B-trees/B-trees.mp4)
- Video 2 (animation): [video (5:19)]({{ site.url }}{{ site.baseurl }}/assets/cs124/21_B-trees/B-Tree_Demo.mp4)
- 22 Binary Heap
- Binary Heap: [video (13:08)]({{ site.url }}{{ site.baseurl }}/assets/cs124/22_Binary_Heap/Binary_Heap.mp4)
- Priority Queue: [video (7:26)]({{ site.url }}{{ site.baseurl }}/assets/cs124/22_Binary_Heap/Priority_Queue.mp4)
- d-Heap: [video (6:08)]({{ site.url }}{{ site.baseurl }}/assets/cs124/22_Binary_Heap/d-Heaps.mp4)
- 23 Intro to Sorting; Bubble Sort
- Introduction: [video (11:44)]({{ site.url }}{{ site.baseurl }}/assets/cs124/23_Intro_to_Sorting/IntroToSorting.mp4)
- Coding Bubble Sort: [video (19:34)]({{ site.url }}{{ site.baseurl }}/assets/cs124/23_Intro_to_Sorting/BubbleSortCoding.mp4)
- 24 Selection Sort
- Lecture: [video (8:48)]({{ site.url }}{{ site.baseurl }}/assets/cs124/24_Selection_Sort/SelectionSort.mp4)
- Coding Selection Sort: [video (15:32)]({{ site.url }}{{ site.baseurl }}/assets/cs124/24_Selection_Sort/SelectionSortCoding.mp4)
- 25 Insertion Sort
- Lecture: [video (9:44)]({{ site.url }}{{ site.baseurl }}/assets/cs124/25_Insertion_Sort/InsertionSort.mp4)
- Coding Insertion Sort: [video (13:03)]({{ site.url }}{{ site.baseurl }}/assets/cs124/25_Insertion_Sort/InsertionSortCoding.mp4)
- 26 Merge Sort
- Lecture: [video (12:51)]({{ site.url }}{{ site.baseurl }}/assets/cs124/26_Merge_Sort/MergeSort.mp4)
- Coding Merge Sort: [video (27:15)]({{ site.url }}{{ site.baseurl }}/assets/cs124/26_Merge_Sort/MergeSortCoding.mp4)
- 27 Quicksort
- Lecture: [video (20:55)]({{ site.url }}{{ site.baseurl }}/assets/cs124/27_Quicksort/Quicksort.mp4)
- Coding Quicksort: [video (33:48)]({{ site.url }}{{ site.baseurl }}/assets/cs124/27_Quicksort/QuicksortCoding.mp4)
- Coding Quicksort (Stable): [video (11:59)]({{ site.url }}{{ site.baseurl }}/assets/cs124/27_Quicksort/QuicksortStable.mp4)
- 28 Bucket Sort, Radix Sort
- Lecture: [video (15:08)]({{ site.url }}{{ site.baseurl }}/assets/cs124/28_Bucket_and_Radix_Sort/BucketAndRadix.mp4)
- Coding Radix Sort: [video (17:18)]({{ site.url }}{{ site.baseurl }}/assets/cs124/28_Bucket_and_Radix_Sort/RadixSortCoding.mp4)
- 29 Heap Sort
- Lecture: [video (14:03)]({{ site.url }}{{ site.baseurl }}/assets/cs124/29_Heap_Sort/HeapSort.mp4)
- Coding Heap Sort: [video (22:52)]({{ site.url }}{{ site.baseurl }}/assets/cs124/29_Heap_Sort/HeapSortCoding.mp4)
- 30 Searching: [video (13:47)]({{ site.url }}{{ site.baseurl }}/assets/cs124/30_Searching/Searching.mp4)
- 31 Intro to Hashing; Horner Hash
- Lecture: [video (15:21)]({{ site.url }}{{ site.baseurl }}/assets/cs124/31_Intro_to_Hashing/HashTables.mp4)
- Coding Hash Table
- Passing functions in C++: [video (10:10)]({{ site.url }}{{ site.baseurl }}/assets/cs124/31_Intro_to_Hashing/PassingFunctions.mp4)
- C++ Optionals: [video (14:40)]({{ site.url }}{{ site.baseurl }}/assets/cs124/31_Intro_to_Hashing/Optionals.mp4)
- Basic hash table: [video (25:43)]({{ site.url }}{{ site.baseurl }}/assets/cs124/31_Intro_to_Hashing/HashTable01Coding.mp4)
- Hash table extended to work with custom objects: [video (11:36)]({{ site.url }}{{ site.baseurl }}/assets/cs124/31_Intro_to_Hashing/HashTable02Coding.mp4)
- 32 Collisions (no video; see Blackboard if enrolled)
- 33 Separate Chaining
- Lecture: [video (7:00)]({{ site.url }}{{ site.baseurl }}/assets/cs124/33_Separate_Chaining/SeparateChaining.mp4)
- Coding: [video (13:34)]({{ site.url }}{{ site.baseurl }}/assets/cs124/33_Separate_Chaining/SeparateChainingCoding.mp4)
- 34 Linear Probing and Rehashing
- Lecture, linear probing: [video (8:32)]({{ site.url }}{{ site.baseurl }}/assets/cs124/34_Linear_Probing_and_Rehashing/LinearProbing.mp4)
- Lecture, rehashing: [video (8:57)]({{ site.url }}{{ site.baseurl }}/assets/cs124/34_Linear_Probing_and_Rehashing/Rehashing.mp4)
- Coding: [video (27:40)]({{ site.url }}{{ site.baseurl }}/assets/cs124/34_Linear_Probing_and_Rehashing/LinearProbingCoding.mp4)
- 35 Quadratic Probing
- Lecture: [video (6:55)]({{ site.url }}{{ site.baseurl }}/assets/cs124/35_Quadratic_Probing/QuadraticProbing.mp4)
- 36 Double Hashing
- Lecture: [video (11:48)]({{ site.url }}{{ site.baseurl }}/assets/cs124/36_Double_Hashing/DoubleHashing.mp4)
- 37 Relations and Equivalence Relations
- Sets - a quick review: [video (10:07)]({{ site.url }}{{ site.baseurl }}/assets/cs124/37_Relations_and_Equivalence_Relations/Sets.mp4)
- Relations and equivalence relations: [video (15:28)]({{ site.url }}{{ site.baseurl }}/assets/cs124/37_Relations_and_Equivalence_Relations/EquivalenceRelations.mp4)
- 38 Dynamic Equivalence Problem
- Overview: [video (09:26)]({{ site.url }}{{ site.baseurl }}/assets/cs124/38_Dynamic_Equivalence_Problem/DynamicEquivalenceProblem.mp4)
- 39 Disjoint Sets
- Disjoint sets, I: [video (18:12)]({{ site.url }}{{ site.baseurl }}/assets/cs124/39_Disjoint_Sets/DisjointSets1.mp4)
- Disjoint sets, II: [video (25:10)]({{ site.url }}{{ site.baseurl }}/assets/cs124/39_Disjoint_Sets/DisjointSets2.mp4)
- 40 Intro to Graphs
- Introduction to graphs: [video (28:22)]({{ site.url }}{{ site.baseurl }}/assets/cs124/40_Introduction_to_Graphs/IntroToGraphs.mp4)
- Supplement - Some topics encountered in CS 224: [video (12:32)]({{ site.url }}{{ site.baseurl }}/assets/cs124/40_Introduction_to_Graphs/SneakPreview.mp4)
- 41 Topological Sort
- Topological sort: [video (11:24)]({{ site.url }}{{ site.baseurl }}/assets/cs124/41_Topological_Sort/TopologicalSorting.mp4)
- 42 Shortest Path, Dijkstra’s Algorithm
- Dijkstra’s Algorithm: [video (29:55)]({{ site.url }}{{ site.baseurl }}/assets/cs124/42_Shortest_Path_Dijkstras_Algorithm/ShortestPath.mp4)
- Bellman-Ford Algorithm: [video (22:13)]({{ site.url }}{{ site.baseurl }}/assets/cs124/42_Shortest_Path_Dijkstras_Algorithm/BellmanFord.mp4)
- 43 Network Flows, Max Flow - Min Cut
- Network flows, part one: [video (26:25)]({{ site.url }}{{ site.baseurl }}/assets/cs124/43_Network_Flows_Max_Flow-Min_Cut/NetworkFlows1.mp4)
- Network flows, part two: [video (20:28)]({{ site.url }}{{ site.baseurl }}/assets/cs124/43_Network_Flows_Max_Flow-Min_Cut/NetworkFlows2.mp4)
- 44 Minimum Spanning Tree
- Prim’s algorithm: [video (23:10)]({{ site.url }}{{ site.baseurl }}/assets/cs124/44_Minimum_Spanning_Tree/Prims.mp4)
- Kruskal’s algorithm: [video (13:11)]({{ site.url }}{{ site.baseurl }}/assets/cs124/44_Minimum_Spanning_Tree/Kruskals.mp4)
- 45 Review