The following documents outline the notes for the course CS 165 Project in Algorithms and Data Structures.
Notes by Lecture Schedule
- Week 0/1:
Introduction. Algorithm Analysis.
Select Sorting Algorithms.
- Algorithm Analysis (Powerpoint)
- Selected Sorting Algorithms (Powerpoint)
- Obama's Answer to the Sorting Question
- Microbenchmarking (PDF)
- plotting.ipynb
- Shell sort example (PDF)
- Relevant articles:
- Big-Oh notation
- Insertion sort
- Shellsort
- Arxiv article about Tim-sort (see Algorithm 3)
- log-log plots (focus especially on "Relation with monomials")
- Paper on adaptive sorting (Skip sort is described in Section 2.5)
- Week 2: Random Numbers and Random Permutations.
- Random and Pseudo-Random Numbers (Powerpoint)
- Random Permutations (Powerpoint)
- Preparing a Benchmark Driver
- Collecting Timing Data
- Processing Data with Python
- Plotting Your Data
- More about plotting data (PDF)
- C++ example, timing_main.cpp
- Relevant Wikipedia articles:
- Week 3: Bin packing. Binary search trees.
- Bin Packing (Powerpoint)
- Video of Bob Tarjan speaking about zip trees
- Sorting Analysis for Project 1 (PDF), where the slides are from a previous year but the analysis techniques still apply
-
Required reading:
- Paper about zip-zip trees (PDF)
- Slides about zip-zip trees (PDF)
- Optional reading:
- Week 4: Algorithms and Architectures.
- Algorithms and Architectures (Powerpoint)
- Discussion slides on Floating Point (PDF)
- Relevant Wikipedia articles:
- Week 5: String Algorithms.
- String pattern matching (Powerpoint)
- Relevant Wikipedia articles:
- Week 6: Network structure.
- Network Structure (Powerpoint)
- Kevin Bacon Visa commercial illustrating six degrees-of-separation
- Relevant Wikipedia articles:
- Week 7: Network algorithms.
- Network Algorithms (Powerpoint)
- Relevant Wikipedia articles:
- semi-log plots, e.g., note how the log x function looks like a straight line in a lin-log plot.
- breadth-first search
- graph degeneracy
- Week 8: Network models.
- Network Models (Powerpoint)
- Required reading:
- Efficient generation of large random networks, by Batagelj and Brandes.
- Relevant Wikipedia articles:
- Week 9: Navigation and propagation in networks.
- Navigation and propagation in networks (Powerpoint)
- Relevant Wikipedia articles:
- Week 10: Wrap-up on experimental algorithms.
- Principles for Experimental Algorithmics (Powerpoint)
- Required reading:
- A Theoretician's Guide to the Experimental Analysis of Algorithms, by David Johnson
- Recommended reading:
- Towards a Discipline of Experimental Algorithmics, by Bernard Moret