CSC 141 -- Winter 2002

Instructor: Michalis Faloutsos

Office: 333 Surge Building

Note: You are NOT required to get both books. You can pick either. I would recommend the first one.

Recommended: Algorithms in C: Part 5 Graph Algorithms By Robert Sedgewick
Addison Wesley Longman, Inc.; 08/2001; 3RD Online Price: $34.99
The book does not cover all topics.

Alternative: Introduction to Algorithms,  by Cormen, Leiserson, Rivest
I believe either edition is fine, I have the older one (white).
This a more difficult book to read, but it covers more topics.


The exact reading material will be defined and presented in the
class and may diverge from the textbooks. Students should
pay attention to what is covered by attending the classes or
referring to the class notes of other students.  Although not apparent now,
in the long run it will make your life easier.


CSC 14, MATH-009, MATH-112.
Ability to program in C++.

Grading Scheme:

3-4 Assignments 30% (but have to have at least 75% to pass)
Midterm 30%
Final 40%

Re-evaluation of assignments/test should be done within the first
week after they are returned. Given the class size, only claims of significant
difference will be considered.

Late assighments: There will be a 15% penalty per day for late assighments and
only for the first four days.
Handouts you can consult.
Useful handouts, courtesy of E. Sekerinski, I. Parberry, and M. Ogihara: in directory in pdf format introduction, big-O, recursion
Handouts for BFS and DFS as presented in class: BFS, DFS. Kindly provided by Anil Reddy.
Handouts of the shortest paths algorithms as presented in class: the algorithms as presented in the class,
auxiliary presentations of shortest paths: Single Source SP in pdf , All Pairs SP in pdf.
See: Steiner Tree Problem handout
Maximum Flow: by Michalis, version 1.0: Maximum Flow and Cuts .
by R. Tamassia: pdf (70K) and ps (ps is 2.1M!)
NP-Completeness: See: introduction to NP-completeness

Note/Warning on plagiarism:

Assignments should reflect individual work unless otherwise stated.
All references and sources for literature or code should be cited.
Randomly selected students may be asked to explain their assignment
to TAs to ensure that they understand it after it has been handed in.
This is an attempt to protect the honest majority of students.

To facilitate grade dissemination, you can sign and return the following form that will allow
us to post your grades with the 4 digts of your SSN number. You are not required to do so, but
it will help you learn your grades faster. The alternative is to come to the lab hours and ask
your TA to bring a grade sheet with him/her. Here is the form

Material to be covered:

Overview: graph algorithms, approximation
algorithms, recursion, NP-completeness. There will also be a focus on
object-oriented programming.

The following is a rough outline. Some things may be added or omitted
depending on class interest and needs.

Intended Material Covered by week.

Note: we will not cover the whole chapter typically plus we may
talk about some things outside the book. Keep in touch with the class.
Note: [] corresponds to the Sedgwick book, and () corresponds to the Cormen book.

Week: [-] (ch. 5)
Introduction: proving techniques, recursion, complexity of algorithms
Week: [ch. 17] (ch. 23)
Trees, Graph representation, Breadth First Search Depth First Search
Week: [ch. 18] (ch. 24)
Minimum Spanning Trees
Week: [ch. 20] (ch. 25)
Single-Source Shortest Paths
Week: [ch. 20] (ch. 26)
All Pairs Shortest Paths
Week: [-] (-)
Steiner tree problem and approximation algorithms (not in the textbooks See Steiner Tree handout
[ch. 22] (ch. 27)
Maximum Flow: Ford-Fulkerson, Min-Cut-Max-Flow Theorem.
Week: [-] (ch. 36 - but very complicated)
Introduction to NP-completeness
Wrap up.

Useful Links

Example: a linked list in C++. Rough not exhaustive list from the Cormen et al book:
  •  Recursive programs and Recursion (parts of ch. 4)
  • Elementary Graph Algorithms (ch. 23)
  • Minimum Spanning Trees (ch. 24)
  • Single-Source Shortest Paths (ch. 25)
  • All-pairs Shortest Paths (ch. 26)
  • Dynamic Programming (ch. 16)
  • Maximum Flow (ch. 27)
  • NP-completeness (ch. 36)