Course schedule.

All projects (pi) and homeworks (hi) are assigned during class on the date marked out, and are due at 12:01 am on the date marked DUE. Refer to the syllabus for other course information.

WeekDateTopicReadingAssignments
1 1/12 Intro / Real World Software Development HT 1-2 h0 out
1/14 Software lifecycle / team programming    
2 1/19 Graphs: BFS CLRS 22.1, 22.2  
1/21 Graphs: DFS; h1 intro CLRS 22.3 h0 due ; h1 out
3 1/26 Real-world software development (2.0); p1 intro   p1 out
1/28 h1 post-mortem; p1 discussion; object-oriented programming Brooks87, Yegge06, Yegge08 h1 due
4 2/2 Regular expressions: theory & practice CLRS 32 (intro + .3), lecture notes p1 spec
2/4 More on OO design (PPT, PDF)    
5 2/9 Hash functions and advanced hashing (notes) CLRS 11.1-11.3 p1 beta
2/11 Caching and dynamic programming (notes) CLRS 23  
6 2/16 Debugging & logging HT 3,4 p1 "due"
2/18 p1 postmortem Spolsky08  
7 2/23 Compression ; p2 intro CLRS 16.2 (skim 32) p1 finale; p2 out
2/25 Testing and Ruby/Python/etc. Propaganda Yegge08b  
8 3/2 Midterm break (no class)
3/4
9 3/9 B-trees, balanced trees, etc. CLRS 13, 18 p2 spec
3/11 Concurrency 1 (PDF) HT 5  
10 3/16 Concurrency 2   p2 beta
3/18 Concurrency 3 (map-reduce)    
11 3/23 Concurrency 4 (parallel algorithms) CLRS 27.1-2 (3rd ed., only) p2 due ; h2 out
3/25 p2 postmortem    
12 3/30 Genetic Algorithms, p3 intro   h2 due ; p3 out
4/1 Spring recess (no class)
13 4/6 Human factors / HCI 1   p3 spec
4/8 Human factors / HCI 2
   
14 4/13 Introduction to Scala (guest lecture by Caleb Spare)    
4/15 Guest Lecture: Jeff Grills (Disney)   p3 beta
15 4/20 TBD    
4/22 Wrap-up; p3 postmortem   p3 due Friday evening