CS 124 - Data Structures and Algorithms

0001 January 1

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