[ news  information  lectures  problem sets  links ]
CS140  Spring 2005
TR 2:454:00 in Andrew 157
Prof. Chen
5/17/2005: I've archived all of the notes and problem sets (ie,
most of the links below don't work) and am
only leaving up the syllabus for reference. If you're looking for the
material, you may be able to find a link to a more recent offering of
the class here or
here.
Please check here regularly for assorted announcements. You are
responsible for being aware of information posted here.
CS140 is an introduction to algorithm design and analysis techniques.
The course covers basic techniques used to analyze algorithms, basic
techniques used in designing algorithms, and important classical
algorithms. The goal is to help you understand how to apply all of
the above to designing solutions for realworld problems (a skill that
you will practice throughout the semester).
The prerequisites given in the catalog are incorrect. They should have
been given as cs55/math55 and cs70 (though exceptions will be made for
students who have taken an advanced math course and cs52/cs60, but not cs70).
The lectures are on Tuesdays and Thursdays from 2:454:00 in Andrew 157.
The textbook is Introduction to Algorithms, 2nd Edition
by Cormen, Leiserson, Rivest, and Stein. (It's available at Huntley
bookstore.)
Any topic that's listed for a date in the future should be taken as
tentative. Any topic that's listed for a date at least 2 days in the
past is what was actually covered in that lecture.
Week  Date  In class  Reading  Assignment due 
1  (Tue) 1/18  introduction, administrivia, review

(Thu) 1/20  loop invariants asymptotics
 2.12 3.12  ps1a

2  (Tue) 1/25  divide & conquer technique
mergesort solving recurrences
 2.3, 4.12  ps1b

(Thu) 1/27  master method quicksort worst/average/best case analysis  4.34, 7.14  ps2a

3  (Tue) 2/1  bounds, linear time sorting
order statistics  8, 9
 ps2b

(Thu) 2/3  data structures, heaps  10, 6  ps3a

4  (Tue) 2/8  amortized analysis  17  ps3b

(Thu) 2/10  binary search trees redblack trees
 12, 13  ps4a

5  (Tue) 2/15  AVL trees, disjoint sets
 13, 21  ps4b

(Thu) 2/17  mergable heaps  21  ps5a

6  (Tue) 2/22  review, miscellaneous   ps5b

(Thu) 2/24  No class   midterm

7  (Tue) 3/1  greedy algorithms  16  ps6

(Thu) 3/3  dynamic programming  15  ps7a

8  (Tue) 3/8  dynamic programming  15  ps7b

(Thu) 3/10  intro to graphs, bfs, dfs  B.4, 22.13  block program

9  (Tue) 3/15 
No class  Spring Break

(Thu) 3/17 

10  (Tue) 3/22  strongly connected components topological sort  22.45  ps8

(Thu) 3/24  minimum spanning trees  23  ps9a

11  (Tue) 3/29  single source shortest path  24  ps9b

(Thu) 3/31  all pairs shortest path  25  ps10a

12  (Tue) 4/5  network flow  26  ps10b

(Thu) 4/7  review   ps11a

13  (Tue) 4/12  network flow  26  midterm

(Thu) 4/14  linear programming  29  ps12a

14  (Tue) 4/19  introduction to computational complexity polynomial time reductions
 34.134.3  ps12b

(Thu) 4/21  lots of reductions  34.334.5  ps13a

15  (Tue) 4/26  reductions, approximation algorithms  34, 35  ps13b

(Thu) 4/28  approximation algorithms  35  ps14a

16  (Tue) 5/3  review

"Computers do not solve problems, they execute
solutions"
Laurent Gasser