Saint Louis University 
Computer Science 3100

Dept. of Computer Science 
Also note: For each lecture, we denote both a topic as well as the associated reading in the textbook. The live link on the 'topic' leads to a page of my personal notes for that lecture. Those personal notes are not nearly as complete or polished as the associated readings from the text. In truth, they exist mostly to provide a brief outline of the day's lecture. Students are expected to read the associated sections of the text. In cases where my notes include material which is not explicitly in the text, I will add the word "notes" to the explicit reading list.
We consider most of Chapters 1, 2, 3, 6, 7, 10, and 12 to be prerequisite knowledge entering this course (although you may still wish to review).
Week  Day  Topic  Reading 

Prerequisite Knowledge 
Fundamental data structures, asymptotic notation, sorting algorithms, binary search trees  Ch. 1, 2, 3, 6, 7, 10, 12  
Aug 2226  Mon 
Introduction, Course Administration
Bounding comparisonbased algorithms: max, min+max 
Ch. 9.1 
Wed 
More bounding comparisonbased algorithms
lower bound for min+max finding the second greatest element 
Ch. 9.1, Exercises 9.11, 9.1.2  
Fri 
Solution to second greatest problem
Comparisonbased sorting lowerbound Sorting in linear time (counting sort, radix sort) 
proof soln
Ch. 8 

Aug 29Sep 2  Mon 
Review of asymptotic notation
Divideandconquer algorithms Recurrence relations 
Ch. 3
Ch. 2 (especially 2.3) Ch. 4.3 
Wed  Solving recurrence relations; master theorem 
Ch. 4.34.6
handson activities 

Fri  Divideandconquer: closest pair of points  Ch. 33.4  
Sep 59  Mon  No Class: Labor Day  
Wed  Lineartime Selection Algorithms  Ch. 9.2, 9.3  
Fri 
Introduction to Dynamic Programming Rod cutting problem, Memoization, Topdown and Bottomup Dynamic Programming 
notes, Ch. 15.1  
Sep 1216  Mon 
Reconstructing rodcutting solution General Principles of Dynamic Programming Variant of rodcutting with limit on total number of pieces sold 
Ch. 15.1, 15.3 
Wed 
LongestCommon Subsequence problem
Reconstructing solution using O(m + n) memory 
Ch. 15.4
(bonus material akin to Kleinberg/Tardos presentation) 

Fri 
More Dynamic Programming examples:
Programming Contest Problems 
problems  
Sep 1923  Mon  Programming Contest Problems (continued)  spoilers 
Wed 
Greedy Algorithms
ActivitySelection Problem (unweighted and weighted variants) 
Ch. 16.1,
Exercise 16.15 

Fri  Greedy: Activity Partitioning, Huffman Codes  Exercise 16.14, Ch. 16.3, (demo)  
Sep 2630  Mon 
Introduction to Graphs and Graph Algorithms
Terminology, Graph Representations 
pp.587588, Ch. 22.1 
Wed  Graph Traversals: BreadthFirst Search (BFS),  Ch. 22.2  
Fri  Graph Traversals: DepthFirst Search (DFS)  Ch. 22.3  
Oct 37  Mon 
Topological Sorting
Connected Components Intro to Strongly Connected Components 
Ch. 22.4, 22.5 
Wed  Strongly Connected Components  Ch. 22.5  
Fri 
Minimum Spanning Trees
Introduction; generic algorithms 
Ch. 23  
Oct 1014  Mon 
MST Algorithms, and supporting data structures
Prim's, Kruskal's, priority queues, disjoint sets 
Ch. 23
Ch. 21 
Wed  Review of HW3  
Fri  Midterm Exam  info  
Oct 1721  Mon  No Class: Fall Break  
Wed 
Introduction to Shortest Paths Preview of BellmanFord Algorithm 
Intro to Ch. 24
Ch. 24.1, 24.5 

Fri 
BellmanFord Algorithm
Shortest Path in a DAG 
Ch. 24.1, 24.2  
Oct 2428  Mon  Dijkstra's algorithm (with nonnegative weights)  Ch. 24.3 
Wed 
AllPairs Shortest Paths:
Repeated Squaring DP FloydWarshall algorithm 
Ch. 25.1, 25.2  
Fri 
AllPairs Shortest Paths:
Johnson's reweighting algorithm 
Ch. 25.3  
Oct 31Nov 4  Mon  Introduction to Network Flow 
Ch. 26.1
(examples) 
Wed 
FordFulkerson Algorithm
MaxFlow, MinCut Theorem 
Ch. 26.2  
Fri  EdmondsKarp Algorithm for Efficient Maximum Flow  Ch. 26.2  
Nov 711  Mon  Variants/Applications of Maximum Flow  Ch. 26.3, additional notes 
Wed  Variants/Applications of Maximum Flow (continued)  
Fri 
Overview of hw5
König's Theorem relating minimum vertex cover in bipartite graphs to maximum matching 
wikipedia  
Nov 1418  Mon 
Introduction to Complexity Theory
Polynomial Reducability 
portions of intro to Ch. 34
Ch. 34.1 (skimming some technical content) 
Wed 
Examples of polynomial reductions
SAT ≤_{P} 3 CNF SAT ≤_{P} CLIQUE ≤_{P} VC ≤_{P} HAM ≤_{P} TSP 
Ch. 34.5.1  34.5.4  
Fri 
NP class and polynomialtime verification
NPCompleteness Circuit Satisfiability 
Ch. 34.2, 34.3, 34.4  
Nov 2125  Mon 
Subset Sum Problem
Weakly NPComplete Problems PseudoPolynomial Time Algorithms 
Ch. 34.5.5 
Wed  No Class: Thanksgiving  
Fri  
Nov 28Dec 2  Mon 
Coping with NPComplete problems
Case Study: TSP dynamic programming, heuristics, approximation algorithms 
Intro to Ch. 35
Ch. 35.2 additional notes 
Wed  Approximation Algorithms: Vertex Cover, Set Cover 
Ch. 35.1, 35.3
(examples) 

Fri 
Fully PolynomialTime Approximation Scheme
SubsetSum 
Ch. 35.5
my notes 

Dec 5  Mon  Review for Exam  
Dec 12  Mon 
Final Exam
(12:001:50)  info 