[news| information| lectures| problem sets| links ]

CS140 - Fall 2003
TR 1:15-2:30 in Andrew 157
Prof. Chen

1/2/2005: I've archived all of the notes and problem sets 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.


  • 031201: PS12 is due by 1:15PM on Tuesday, 12/9. (Not on 12/2 as stated in the problem sets I handed out in class on 11/25.)
  • 030930: the solution to the example in programming problem set 1 is incorrect. A corrected version of the handout has been posted.
  • 030925: the second question in PS5 should ask if you're working with anyone on the first programming problem set, not if you're working with anyone on PS6.
  • Information

    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 real-world problems (a skill that you will practice throughout the semester). CS60 and CS70 are prerequisites for CS140. Discrete mathematics is not a prerequisite for this section of CS140 (although it won't hurt if you've had it).

    Notice that there is another section of CS140 being offered this semester up at Harvey Mudd. It is taught by a different professor, meets at a different time in a different place, and has discrete mathematics as a prerequisite. However, both sections will cover essentially the same material in the sense that they should both prepare you adequately for courses with CS140 as a prerequisite.

    The lectures are on Tuesdays and Thursdays from 1:15-2:30 in Andrew 157.

  • Administrivia <ps><pdf>
  • Lectures

    Any topic that's listed for a date in the future should be taken as tentative. Any topic that's listed for a date in the past is what was actually covered in that lecture.

    Week Tuesday Thursday
    9/1 intro + background
    A, B.1-3, C.1-3 in CLRS
    basic proof techniques
    9/8 mathematical induction
    more induction, algorithm analysis
    chapter 3 in CLRS
    9/15 more on asymptotics, recurrence relations
    chapter 4 in CLRS
    greedy, divide-and-conquer strategies
    chapters 2, 16.1-2, 28.2 in CLRS
    9/22 dynamic programming
    chapter 15 in CLRS
    more dynamic programming
    chapter 15 in CLRS
    9/29 algorithm analysis, randomized algorithms
    chapter 5 in CLRS
    basic data structures
    chapters 6, 10, 11 in CLRS
    10/6 amortized analysis
    chapter 17 in CLRS
    data structures - balanced search trees
    chapter 12 in CLRS + splay trees
    10/13 data structures - binomial heaps
    chapter 19 in CLRS
    data structures - fibonacci heaps
    chapter 20 in CLRS
    10/20 *** no class - fall recess *** data structures - disjoint sets
    chapter 21 in CLRS
    10/27 graphs: intro
    B.4, chapter 22.1 in CLRS
    elementary graph algorithms
    chapter 22.1-4 in CLRS
    11/3 scc, minimum spanning trees
    chapters 22.5, 23 in CLRS
    single source shortest path
    chapter 24.1, 24.2 in CLRS
    11/10 shortest path algorithms
    chapter 24.3, 25.2 in CLRS
    all pairs shortest path, network flow
    chapter 25.3, 26.1 in CLRS
    11/17 network flows
    chapter 26 in CLRS
    linear programming
    chapter 29.1-3 in CLRS
    11/24 linear/integer programming
    chapter 29.3 in CLRS + extra material
    *** no class - Thanksgiving ***
    12/1 introduction to computational complexity
    chapter 34 in CLRS
    NP-Completeness reductions
    chapter 34 in CLRS
    12/8 approximation algorithms, summary
    *** no class - end of semester ***

    Problem Sets

  • PS1 handed out 9/2, due 1:15PM 9/4 <tex> <pdf>
  • PS2 handed out 9/4, due 1:15PM 9/11 <tex> <pdf>
  • PS3 handed out 9/11, due 1:15PM 9/18 <tex> <pdf>
  • PS4 handed out 9/16, due 1:15PM 9/25 <tex> <pdf>
  • PS5 handed out 9/25, due 1:15PM 10/2 <tex> <pdf>
  • Programming assignment 1 handed out 9/25, due 9PM 10/8 <tex> <pdf>
  • PS6 handed out 10/2, due 1:15PM 10/9 <tex> <pdf>
  • PS7 handed out 10/16, due 1:15PM 10/23 <tex> <pdf>
  • PS8 handed out 10/23, due 1:15PM 10/30 <tex> <pdf>
  • PS9 handed out 10/30, due 1:15PM 11/6 <tex> <pdf>
  • PS10 handed out 11/6, due 1:15PM 11/13 <tex> <pdf>
  • Programming assignment 2 handed out 11/11, due noon 11/26 <tex> <pdf>
  • PS11 handed out 11/13, due 1:15PM 11/20 <tex> <pdf>
  • PS12 handed out 11/25, due 1:15PM 12/9 <tex> <pdf>
  • Links

  • some pages discussing LaTeX, the best way to format anything containing mathematical equations.
  • A simple latex document that creates the file <ex1.pdf>
  • A fast introduction to LaTeX written by Tony Roberts.
  • The Not So Short Introduction to LaTeX2e, also known as LaTeX2e in 129 minutes by Oetiker, Partl, Hyna, and Schlegl. (This is an evolving document, at the moment they're on version 4.12, dated April 2003.)

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