Algorithms and data structures
Online materials, 2023
Overview: This course provide an introduction to algorithms and data structures. Links videos, slides and code can be found below, and on GitHub
1. Binary Search Trees
Notes: Samuel’s tutorial on binary search trees (traversals, search, insertion and deletion).
Slides: link (pdf)
Further resources and references: link
Code: link
2. Red-Black Trees
Notes: Samuel’s tutorial on red-black trees covering search, insert and delete operations.
Slides: link (pdf)
Further resources and references: link
Code: link
3. B-trees
Notes: Samuel’s tutorial on B-trees (memory hierarchy, disk accesses, search, insertion and deletion).
Slides: link (pdf)
Further resources and references: link
Code: link
4. Hash Tables
Notes: Samuel’s tutorial on hash tables (search by index, hash functions, chaining and open addressing).
Slides: link (pdf)
Further resources and references: link
5. Heapsort and binary heaps
Notes: Samuel’s tutorial on heapsort and binary heaps.
Slides: link (pdf)
Further resources and references: link
Code: link
6. Quicksort
Notes: Samuel’s tutorial on quicksort.
Slides: link (pdf)
Further resources and references: link
Code: link
7. Lower bounds for comparison sort
Notes: Samuel’s tutorial on lower bounds on the fastest possible comparison sorting algorithms.
Slides: link (pdf)
Further resources and references: link
8. Counting sort
Notes: Samuel’s tutorial on counting sort.
Slides: link (pdf)
Further resources and references: link
9. Radix sort
Notes: Samuel’s tutorial on radix sort.
Slides: link (pdf)
Further resources and references: link
10. Bucket sort
Notes: Samuel’s tutorial on bucket sort.
Slides: link (pdf)
Further resources and references: link
11. Task-parallel computing
Notes: Samuel’s tutorial on task-parallel computing.
Slides: link (pdf)
Further resources and references: link
12. NP-complete problems
Notes: Samuel’s tutorial on NP-complete problems.
Slides: link (pdf)
Further resources and references: link
Note: A portion of these materials will be used in the 4M26 course being developed jointly with Ignas Budvytis. The content below should not be considered the canonical reference for the 4M26 syllabus. If you are taking the 4M26 course, the canonical reference for the 4M26 syllabus can be found here.