The material below is provided for reference. Please use the material from more recent course when available.

The course schedule

Week Monday Wednesday Friday
00 Nov 02
No class
Nov 04
No class
Nov 06
No class
01 Nov 09
lab 
Nov 11
introduction, administrivia, recap 
[slides, handout]
Nov 13
recap 
[slides, handout]
02 Nov 16
lab 
[slides, assignment 1]
Nov 18
common algorithmic patterns 
[slides, handout]
Nov 20
common algorithmic patterns 
03 Nov 23
lab 
[slides, handout]
Nov 25
analysis of algorithms 
[slides, handout]
Nov 27
analysis of algorithms 
04 Nov 30
lab (a2) 
Dec 02
sorting 
[slides, handout]
Dec 04
sorting 
05 Dec 07
lab 
[slides]
Dec 09
trees 
[slides, handout]
Dec 11
priority queues, heaps 
[slides, handout]
06 Dec 14
lab (a3) 
[slides]
Dec 16
graphs 
[slides, handout]
Dec 18
graph traversal 
[slides, handout]
07 Dec 21
lab 
Dec 23
directed graphs 
[slides, handout]
Dec 25
Sem. break
Dec 28
Sem. break
Dec 30
Sem. break
Jan 01
Sem. break
08 Jan 04
Sem. break
Jan 06
Sem. break
Jan 08
minimum spanning trees 
[slides, handout]
09 Jan 11
lab 
Jan 13
minimum spanning trees 
Jan 15
shortest paths 
[slides, handout]
10 Jan 18
lab (a4) 
Jan 20
maps, hash tables 
[slides, handout]
Jan 22
string matching 
[slides, handout]
11 Jan 25
lab 
Jan 27
edit distance 
[slides, handout]
Jan 29
edit distance 
12 Feb 01
lab (a5) 
Feb 03
tries 
[slides, handout]
Feb 05
finite-state automata 
[slides, handout]
13 Feb 08
lab 
[slides]
Feb 10
finite-state automata (2) 
[slides, handout]
Feb 12
finite-state automata (3) 
[slides, handout]
14 Feb 15
lab (a6) 
Feb 17
finite-state automata (4) 
[slides, handout]
Feb 19
finite-state transducers 
[slides, handout]
15 Feb 22
lab 
Feb 24
summary 
Feb 26
exam