Saint Louis University

Computer Science 3100

Michael Goldwasser

Fall 2016

Dept. of Computer Science


Please note that the schedule for future classes is tentative.

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
Fundamental data structures, asymptotic notation, sorting algorithms, binary search trees Ch. 1, 2, 3, 6, 7, 10, 12
Aug 22-26 Mon Introduction, Course Administration
Bounding comparison-based algorithms: max, min+max
Ch. 9.1
Wed More bounding comparison-based algorithms
lower bound for min+max
finding the second greatest element
Ch. 9.1, Exercises 9.1-1, 9.1.2
Fri Solution to second greatest problem
Comparison-based sorting lower-bound
Sorting in linear time (counting sort, radix sort)
proof soln
Ch. 8
Aug 29-Sep 2 Mon Review of asymptotic notation
Divide-and-conquer algorithms
Recurrence relations
Ch. 3
Ch. 2 (especially 2.3)
Ch. 4.3
Wed Solving recurrence relations; master theorem Ch. 4.3-4.6
hands-on activities
Fri Divide-and-conquer: closest pair of points Ch. 33.4
Sep 5-9 Mon No Class: Labor Day
Wed Linear-time Selection Algorithms Ch. 9.2, 9.3
Fri Introduction to Dynamic Programming
Rod cutting problem, Memoization,
Top-down and Bottom-up Dynamic Programming
notes, Ch. 15.1
Sep 12-16 Mon Reconstructing rod-cutting solution
General Principles of Dynamic Programming
Variant of rod-cutting with limit on total number of pieces sold
Ch. 15.1, 15.3
Wed Longest-Common 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
Sep 19-23 Mon Programming Contest Problems (continued) spoilers
Wed Greedy Algorithms
Activity-Selection Problem
(unweighted and weighted variants)
Ch. 16.1,
Exercise 16.1-5
Fri Greedy: Activity Partitioning, Huffman Codes Exercise 16.1-4, Ch. 16.3, (demo)
Sep 26-30 Mon Introduction to Graphs and Graph Algorithms
Terminology, Graph Representations
pp.587-588, Ch. 22.1
Wed Graph Traversals: Breadth-First Search (BFS), Ch. 22.2
Fri Graph Traversals: Depth-First Search (DFS) Ch. 22.3
Oct 3-7 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 10-14 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 17-21 Mon No Class: Fall Break
Wed Introduction to Shortest Paths
Preview of Bellman-Ford Algorithm
Intro to Ch. 24
Ch. 24.1, 24.5
Fri Bellman-Ford Algorithm
Shortest Path in a DAG
Ch. 24.1, 24.2
Oct 24-28 Mon Dijkstra's algorithm (with non-negative weights) Ch. 24.3
Wed All-Pairs Shortest Paths:
Repeated Squaring DP
Floyd-Warshall algorithm
Ch. 25.1, 25.2
Fri All-Pairs Shortest Paths:
Johnson's reweighting algorithm
Ch. 25.3
Oct 31-Nov 4 Mon Introduction to Network Flow Ch. 26.1
Wed Ford-Fulkerson Algorithm
Max-Flow, Min-Cut Theorem
Ch. 26.2
Fri Edmonds-Karp Algorithm for Efficient Maximum Flow Ch. 26.2
Nov 7-11 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
Nov 14-18 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
Ch. 34.5.1 - 34.5.4
Fri NP class and polynomial-time verification
Circuit Satisfiability
Ch. 34.2, 34.3, 34.4
Nov 21-25 Mon Subset Sum Problem
Weakly NP-Complete Problems
Pseudo-Polynomial Time Algorithms
Ch. 34.5.5
Wed No Class: Thanksgiving
Nov 28-Dec 2 Mon Coping with NP-Complete 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
Fri Fully Polynomial-Time Approximation Scheme
Ch. 35.5
my notes
Dec 5 Mon Review for Exam

Dec 12 Mon Final Exam
(12:00-1:50) -- info

Michael Goldwasser ©2016
CSCI 3100, Fall 2016
Last modified: Thursday, 08 December 2016