These recitation slides are courtesy of Victor Costan, one of the course TAs, and are used with permission.
REC #  TOPICS  SUPPORTING FILES 

Introduction and document distance  
R1  Document distance in Python (docdist{1,2,3,4}.py) (PDF)  
R2  Python cost model, review for asymptotic notation and mergesort (PDF) 
Zipped data (numbers) (ZIP) (This zip file includes: 2 .jpg files, 1 .gz file, 1 .tiff file, 1 .numbers file, and 1 .pkginfo file.) 
Binary search trees  
R3  Binary search trees (PDF)  Code for binary search trees augmented with subtree size (PY) 
R4  AVL Trees (balanced binary search trees) (PDF)  Code for AVL trees (uses the BST code from R3) (PY) 
Hashing  
R5  Hashing in Python, mutability (PDF)  The dangers of mutable dictionary keys (PY) 
R6  KarpRabin review, rolling hashes principles and code (PDF)  Rolling hash code (PY) 
R7 
Open addressing: theory review, Python code More rolling hashes (PDF) 
Open addressing code (PY) 
Sorting  
R8 
Overview of sorting methods Heaps as data structures: principles, sorting, priority queues (PDF) 

R9  Quiz review: interesting problems (PDF)  
R10  Counting, radix and bucket sorting, gas simulation  
Searching  
R11  Breadthfirst search and depthfirst search (PDF) 
Code for breadthfirst search (PY) Code for depthfirst search (PY) 
Shortest paths  
R12  Assistance for problem set (PDF)  
R13 
Generic shortestpath algorithm: concepts, properties BellmanFord: examples, negativecost cycles 

R14 
Handson Dijkstra: pseudocode, preconditions, examples, why it works Priority queues: review, extended Python implementation (PDF) 

R15  Array implementation of Dijkstra  
Dynamic programming  
R16  Handson dynamic programming: big ideas, memoization in Fibonacci, crazy cards, Dijkstra and BellmanFord algorithm as dynamic programming (PDF)  
R17  More dynamic programming: beating Super Mario Brothers, getting points back on tests (LCS), Crazy Eights (PDF)  
R18  Even more dynamic programming: maximumsum subarray, more Tetris (PDF)  
R19  Knapsack and its variants, structural dynamic programming: covering a tree with templates, dominating set  
Numerics  
R20  Dynamic programming practice: live Python coding, dominating sets, structural dynamic programming: covering a tree with templates 
Live Python Coding problems (problem statement, tests, and solutions are included):  Matrix chain multiplication (ZIP) (This zip file includes: 3 .py files, 1 .pyc file, 1 .rb file, and 6 data files.)  Longest zigzag subsequence (ZIP) (This zip file includes: 3 .py files, 1 .pyc file, 1 .rb file, and 4 data files.) 
R21  Divide and conquer vs. dynamic programming on problems: matrix multiplication, tower, maxsum subarray, closest pair  
R22  Numerics review, Strassen’s algorithm for matrix multiplication  Strassen’s algorithm for fast matrix multiplication is covered in CRLS, chapter 28, pp. 735742. 
Beyond 6.006  
R23  Review for the final exam (PDF) 