Algorithm Analysis (CSC 301 2015F) : Handouts
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] [FAQ] [IRC] [Teaching & Learning]
Current: [Outline] [EBoard] [Reading] [Lab] [Assignment]
Sections: [Assignments] [EBoards] [Examples] [Handouts] [Labs] [Outlines] [Readings]
Reference: [Algorist]
Related Courses: [Walker (2014F)]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker]
This is an approximate schedule. Expect dates and topics to change. (I will try to keep due dates the same.)
| Monday | Wednesday | Friday |
|---|---|---|
| Week 00: Approaching the Course | ||
| (01) 28 August 2015 An Introduction to the Course Course Goals. Course Format. Approaching Algorithms. Problem: Getting From Here to There. Problem: Optimal Soldering Plans. Problem: Scheduling Overlapping Tasks. | ||
| Week 01: Getting Started | ||
| (02) 31 August 2015 Asymptotic Analysis | (03) 2 September 2015 Reflective Activities Dijsktra's Shortest-Path Algorithm. Algorithm design principles. Greedy algorithms. Quick review of asymptotic analysis. Additional characteristics of Big-Oh. | (04) 4 September 2015 Asymptotic Algorithm Analysis, Continued Asymptotic analysis, revisited. Other properties of Big-Oh notation. Careful loop counting. |
| Week 02: Formal Approaches | ||
| (05) 7 September 2015 Divide and Conquer Approaches Divide and Conquer Algorithms. Analyzing Divide-and-Conquer Algorithms. Estimating Recurrence Relations. Solving Recurrence Relations with Recursion Trees. Proving Recurrence Relations with the Substitution Method. Solving Recurrence Relations with the Master Theorem. | (06) 9 September 2015 Asyptotic Analysis and Recurrence Relations Recursion trees, revisited. Proving asymptotic bounds of recursive functions. The master theorem. The kth-largest problem. | (07) 11 September 2015 Pause for Breath Proving closed forms of recurrence relations. Finding the kth-largest element of an unsorted array/list. |
| Week 03: ADTs and Data Structures | ||
| (08) 14 September 2015 Roles of Data Structures and Abstract Data Types Abstract data types. Data structures. The Dictionary ADT. | (09) 16 September 2015 Hash Tables Review of hash tables. Hash functions, revisited. Other uses of hash tables and hash functions. | (10) 18 September 2015 An Introduction to Trees Hash Tables: Semi-Formal Analysis. Hash Functions and Hash Tables: Other Applications. Trees: The Basics. Balancing Trees. |
| Week 04: Binary Search Trees | ||
| (11) 21 September 2015 Binary Search Trees Trees, Formalized. Terminology. Binary Trees. Traversing Trees. Binary Search Trees. Balancing Binary Search Trees. | (12) 23 September 2015 Red-Black Trees Balancing (or at least rearranging) balanced trees. Red-black tree basics. Red-black tree examples. Insertion in red-black trees. | (13) 25 September 2015 Red-Black Trees, Continued Review. Your questions. Insertion in red-black trees. Deletion in binary-search trees. Deletion in red-black trees. |
| Week 05: Sorting | ||
| (14) 28 September 2015 Red-Black Trees, Concluded Key ideas from insertion. Deletion in binary search trees. Deletion in red-black trees. | (15) 30 September 2015 2-3 Trees 2-3 Trees. Insertion in 2-3 Trees. Deletion in 2-3 Trees. B-Trees. | (16) 2 October 2015 Sorting Comparing sorting algorithms. O(nlogn) sorting algorithms. Lower bounds on sorting algorithms. |
| Week 06: Sorting, Continued | ||
| (17) 5 October 2015 Heap Sort Background. Heaps. Inserting into Heaps. Removing from Heaps. Heap Sort. | (18) 7 October 2015 Lower Bounds Compare-and-swap algorithms. Decision trees. Analyzing the size of these decision trees. Estimating n!. | (19) 9 October 2015 O(n) Sorting Algorithms Other strategies for sorting. Bucket sort. Radix sort. |
| Week 07: Miscellaneous | ||
| (20) 12 October 2015 Radix Sort A Demo. Thinking About Radix Sort. Radix Sort and Strings. Re-Costing Radix Sort. | (21) 14 October 2015 Tries | (22) 16 October 2015 No Class |
| Fall Break | ||
| Week 08: An Introduction to Graphs | ||
| (23) 26 October 2015 Graphs Tries, Revisited. Graphs. A Graph ADT. Graph Traversal. | (24) 28 October 2015 Graph ADTs Designing a graph ADT. Different perspectives on graph ADTs. Building graphs. Accessing values. Implementing graphs (if time). | (25) 30 October 2015 Implementing the Graph ADT Traversal algorithms. Marking vertices and edges. Three graph implementations and their costs. |
| Week 09: Graph Algorithms | ||
| (26) 2 November 2015 Minimum Spanning Trees Minimum spanning trees. Two algorithms: Prim's algorithm and Kruskal's algorithm. Examples. Proofs of correctness. | (27) 4 November 2015 Minimum Spanning Trees, Continued Three approaches. Examples. Proofs of correctness. Running times. | (28) 6 November 2015 Sets and Union-Find Kruskal's algorithm, revisited. A Set ADT. The Union-Find algorithm. |
| Week 10: More Graph Algorithms | ||
| (29) 9 November 2015 Shortest Paths The Shortest-Path Problem. Dijkstra's Shortest-Path Algorithm. Analyzing Dijkstra's Shortest Path Algorithm. All Pairs Shortest Path Algorithms. The Floyd-Warshall Algorithm. | (30) 11 November 2015 Pause for Breath All-pairs shortest path, continued. The Floyd-Warshall algorithm. Looking ahead: The max-flow problem / Augmenting paths. | (31) 13 November 2015 Network Flows The max-flow problem. Augmenting paths. The Ford-Fulkerson algorithm. Bipartite matching. |
| Week 11: Dynamic Programming | ||
| (32) 16 November 2015 Pause for Breath | (33) 18 November 2015 Dynamic Programming (1) The Stamps problem. Dynamic programming. The Knapsack problem. | (34) 20 November 2015 Dynamic Programming (2) A DP Solution to the Stamps Problem. The Knapsack Problem. The String Matching Problem. |
| Week 12: Miscellaneous | ||
| (35) 23 November 2015 Dynamic Programming (3) Dynamic programming, reviewed. The Edit Distance problem. The Knapsack problem, revisited. | (36) 25 November 2015 Pause for Breath | |
| Week 13: String Matching | ||
| (37) 30 November 2015 String Matching Basics | (38) 2 December 2015 Improved String-Matching Algorithms | (39) 4 December 2015 Pause for Breath |
| Week 14: Wrapup | ||
| (40) 7 December 2015 Looking Ahead: P vs. NP | (41) 9 December 2015 Wrapup | (42) 11 December 2015 Evaluate and Debief |