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 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 |
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
(examples) |
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 |
wikipedia | |
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
SAT ≤P 3 CNF SAT ≤P CLIQUE ≤P VC ≤P HAM ≤P TSP |
Ch. 34.5.1 - 34.5.4 | |
Fri |
NP class and polynomial-time verification
NP-Completeness 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 | ||
Fri | |||
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
(examples) |
|
Fri |
Fully Polynomial-Time Approximation Scheme
Subset-Sum |
Ch. 35.5
my notes |
|
Dec 5 | Mon | Review for Exam | |
Dec 12 | Mon |
Final Exam
(12:00-1:50) -- info |