Saint Louis University |
Computer Science 314
|
Dept. of Math & 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 25-29 | Mon | Introduction, Course Administration | |
Wed | Bounding comparison-based algorithms | Ch. 9.1 Exercises 9.1-1, 9.1.2, handout | |
Fri | Review of asymptotics; comparison-based sorting lower-bound; linear-time sorting | Ch. 8 | |
Sep 1-5 | Mon | No Class: Labor Day | |
Wed | Divide-and-conquer algorithms; linear-time selection algorithm; recurrence relations | Ch. 9.3, 4.3 | |
Fri | Continuation of linear-time selection algorithms; solving recurrences | Ch. 4.4 | |
Sep 8-12 | Mon | Solving Recurrences; Master Theorem | Ch. 4.4-4.6 |
Wed |
Introduction to Dynamic Programming Rod cutting problem, Memoization |
notes, Ch 15.1 | |
Fri | Bottom-up Dynamic Programming, Reconstructing a Solution, General Principles of Dynamic Programming | Ch 15.1, 15.3 | |
Sep 15-19 | Mon |
More Dynamic Programming examples:
Matrix Chain Multiplication Optimal Binary Search Tree |
Ch. 15.2, 15.5 |
Wed |
More Dynamic Programming examples:
Longest Common Subsequence |
Ch. 15.4 | |
Fri |
More Dynamic Programming examples:
Programming Contest Problems |
problems
spoilers |
|
Sep 22-26 | Mon |
Greedy Algorithms
Activity-Selection Problem (unweighted and weighted variants) |
Ch. 16.1,
Exercise 16.1-5 |
Wed | Greedy: Activity Partitioning, Knapsack Problem | Exercise 16.1-4, Ch. 16.2 | |
Fri | Greedy: Huffman Codes (demo), Minimum Spanning Trees | Ch. 16.3, 23.1 | |
Sep 29-Oct 3 | Mon | MST: Kruskal's Algorithm, Prim's Algorithms | Ch. 23.2 |
Wed | Data Structures for Disjoint Sets | Ch. 21 | |
Fri | No Class: Presidential Inaguration | ||
Oct 6-10 | Mon |
Amortized Analysis (e.g., multipop stack, counters, dynamic tables) |
Ch. 17.1 - 17.3 |
Wed | Dynamic tables with insertion and deletion | Ch. 17.4 | |
Fri | Priority Queues with Fibonacci Heaps: Definition and Operations | Ch. 19 | |
Oct 13-17 | Mon | Priority Queues with Fibonacci Heaps: Analysis | Ch. 19 |
Wed | Graph Representations | Ch. 22.1 | |
Fri | Graph Traversals: Breadth-First Search (BFS) | Ch. 22.2 | |
Oct 20-24 | Mon | No Class: Fall Break | |
Wed | Graph Traversals: Depth-First Search (DFS) | Ch. 22.3 | |
Fri | Strongly Connected Components | Ch. 22.5 | |
Oct 27-31 | Mon | Shortest Paths: Bellman-Ford Algorithm | Ch. 24.1 |
Wed |
DAGs: Toplogical Order,
Shortest Path in a DAG
Dijkstra's algorithm (with non-negative weights) |
Ch. 22.4, 24.2
Ch. 24.3 |
|
Fri | SSSP: Gabow's Scaling Algorithm | CLRS Problem 24-4 | |
Nov 3-7 | Mon |
All-Pairs Shortest Paths:
Floyd-Warshall algorithm Johnson's reweighting algorithm |
Ch. 25.1, 25.2, 25.3 |
Wed | Introduction to Maximum Flow |
Ch. 26.1
(examples) |
|
Fri |
Ford-Fulkerson Algorithm
Max-Flow, Min-Cut Theorem |
Ch. 26.2 | |
Nov 10-14 | Mon | Edmonds-Karp Algorithm for Efficient Maximum Flow | Ch. 26.2 |
Wed | Variants/Applications of Maximum Flow | Ch. 26.3, additional notes | |
Fri | Variants/Applications of Maximum Flow | ||
Nov 17-21 | Mon |
Introduction to Complexity Theory
Polynomial Reducability Example: Vertex Cover ≤P Hamiltonian Cycle |
intro to Ch. 34
read Ch. 34.5.3 |
Wed |
P, NP, NP-Completeness
Circuit Satisfiability |
Ch. 34.1-34.3 | |
Fri | Tour of Famous NP-Complete Problems | Ch. 34.4-34.5 | |
Nov 24-28 | Mon |
Subset Sum Problem
Weakly NP-Complete Problems Pseudo-Polynomial Time Algorithms |
|
Wed | No Class: Thanksgiving | ||
Fri | |||
Dec 1-5 | 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 | |
Dec 8 | Mon | Review for Exam | |
Dec 15 | Mon |
Final Exam
(12:00-1:50) (info) |