[Bowdoin Computer Science]

Syllabus

Useful links, animations, etc:

Other undergraduate algorithm classes on the web:

(Maybe) useful lecture notes (some of the lecture notes adapted from Lars Arge): In class exercises: Slides:

Schedule

Thursday 9/5:

Introduction and mathematical review.
Reading: textbook ch 1
Tuesday 9/10:

Asymptotic notation. Sorting (bubblesort, selection sort).
Reading: textbook 2.4.2 | Prologue
Thursday 9/12:

Insertion sort, mergesort.
Reading: textbook 4.1
Tuesday 9/17:

Analyzing mergesort. Recurrence relations. Example
Thursday 9/19:


Tuesday 9/24:

Quicksort.
Reading: textbook 4.3
Thursday 9/26

Priority queues: Heaps. Heapsort.
Reading: textbook 2.4
Tuesday 10/1:

Sorting lower bound. Linear time sorting (bucket sort, radix sort).
Reading: textbook 4.4,4.5,4.6
Thursday 10/3:

Selection.
Reading: textbook 4.7
Tuesday 10/8:

Review and problems.
Thursday 10/10:

EXAM 1.
Tuesday 10/15:
FALL BREAK.
Thursday 10/17:

Divide-and-conquer (Strassen's algorithm, (large) integer multiplication).
Reading: textbook 5.2
Tuesday 10/22:

Dynamic programming (matrix multiplication, 0-1 knapsack)
Reading: textbook 5.1
Thursday 10/24:

Dynamic programming (job scheduling)
Tuesday 10/29:

Greedy algorithms (activity selection, fractional knapsack).
Reading: textbook 5.3
Thursday 10/31:

Graph basics.
Reading: textbook 6.2, 6.3
Tuesday 11/5:

Problem session.
Thursday 11/7:

EXAM 2.
Tuesday 11/12:

Graph traversals (BFS, DFS)
Reading: textbook 6.2, 6.3
Thursday 11/14:

Digraphs. Strong components. Transitive closure. Topological order.
Reading: textbook 6.4
Tuesday 11/19:

Shortest paths (SSSP).
Reading: textbook 7.1, 7.2
Thursday 11/21:

MST (Kruskal, Prim)
Reading: textbook 7.3
Tuesday 11/26:

MST
Thursday 11/28:
THANKSGIVING BREAK.
Tuesday 12/3:

NP-Completeness.
Reading: textbook 13
Thursday 12/5:

NP-Completeness.
Tuesday 12/10:

Round-up.

The third exam will be take-home, due on December 16th at 2pm.