COMP-251: Data Structures and Algorithms

Fall 2007

Lecture contents and suggested readings, to be filled in as we go along:

Note that most, but not all, lecture material can be found
in the course text (CLRS). Topics not covered in the text are *italicized*.

Lecture 1 (4 Sept. 2007):

Computational models (Turing machines, RAM, quantum circuits)

Loop invariants

Best-and worst-case analysis of insertion sort

Read chapters 1, 2, 3

Lecture 2 (6 Sept. 2007):

Divide-and-conquer recurrences

Recursion trees

Read chapter 4

Lecture 3 (11 Sept. 2007):

Solving recurrences by induction

Keep reading chapter 4!

You are not responsible for the proof of the full Master Theorem

Lecture 4 (13 Sept. 2007):

The
Nerd’s Guide to Dating and *Marriage*(indicator
random variables)

Read chapters 5.1, 5.2

Lecture 5 (18 Sept. 2007):

Quicksort: correctness, worst-case and expected running time

Chapter7

If you have forgotten about heaps and heapsort, read chapter 6

Lecture 6 (20 September 2007):

Medians and order statistics

Select in worst-case linear time

Read chapter 9

Lecture 7 (25 September 2007):

Decision tree lower bounds (sorting)

*Adversary
lower bounds (maximum; max and min)*

* *Read chapter 8.1

Lecture 8 (27 September 2007):

Building a random permutation in linear time

*Counting
collisions (problem)*

Read chapters 5.3, 5.4

Lecture 9 (2 October 2007):

Sorting in linear time

Read chapter 8.2, 8.3

Data structures – intro and review

Read chapter 10

Lecture 10 (9 October 2007):

Data structures – intro and review

Hash tables: hashing with chaining

Read chapters 10, 11.1, 11.2

Lecture 11 (11 October 2007):

Choosing a hash function

Fibonacci hashing

Universal hashing

Read chapter 11.3, 11.4

Lecture 12 (16 October 2007):

Problem day

See slides on Web CT

Lecture 13 (18 October 2007):

Midterm

Lecture 14 (23 October 2007):

Balanced search trees

Binary search tree / Quicksort connection

Treaps: Problem 13-4

B-trees: Chapter 18

Lecture 15 (25 October 2007):

Data structures for disjoint sets: union-find

Read 21.1-21.3

Lecture 16 (30 October 2007):

Introduction to greedy algorithms

Making change

Fractional knapsack problem

Scheduling

I’m not super-enthusiastic about the book’s section on greedy algorithms, which doesn’t make much sense

If you don’t already understand dynamic programming. I therefore don’t recommend reading it at this point

But you’ll want to come back to it later in the semester.

Lecture 17 (1 November 2007):

Data structures for representing graphs

Minimum spanning tree (Kruskal and Prim)

Read chapters 22.1 and 23.

If graphs bewilder you, read Appendices B.4 and B.5.

Lecture 18 (6 November 2007):

Midterm plus recap on iterated logarithm

Huffman coding

Read chapter 16.3.

Lecture 18 (8 November 2007):

Breadth-first search as a shortest paths algorithm: Read 22.2

Single-source shortest paths (Dijkstra): Read 24.2-24.3

Lecture 19 (13 November 2007):

Intro to dynamic programming

*Fibonacci,
binomial coefficients, making change*

Lecture 20 (15 November 2007):

All pairs shortest paths (Floyd-Warshall algorithm) (chapter 25.2)

*Minimal
perimeter triangulation of a convex polygon*

Lecture 21 (20 November 2007):

Longest common subsequence (chapter 15.4)

Edit distance (variation on problem 15-3)

*Independent
set in trees*

Lecture 22 (23
March 2006):

Depth-first search revisited (chapter 22.3)

Topological sort of a dag (chapter 22.4)

Lecture 23 (28
March 2006):

Strongly connected components (chapter 22.5)

Lecture 24 (30
March 2006):

Fast Fourier transform (chapters 30.1 and 30.2) (Not on exam)