CSC 301 Grinnell College Fall, 2013
 
Analysis of Algorithms
 

Tentative Class Schedule

Class sessions will follow several formats, reflect student preferences.

Monday, August 26
New Student Days
Wednesday, August 28
Registration Day
Friday, August 30
Course Introduction
Possible Class Formats
Examining algorithm efficiency

Read: CLR&S, Chapters 1, 2
Monday, September 2
Growth of functions
  • Asymptotic notation
  • List of examples from CSC 207
Read: CLR&S, Chapter 3
Problems for Chapter 3 (Due, Friday, September 6)
Wednesday, September 4
Divide and conquer
  • Tree examples from CSC 207
  • Substitution method for solving recurrences
Read: CLR&S, Section 4.3
Program for class discussion: simple-loop-analysis
Problems for Chapter 3, Part 2 (Due, Monday, September 9)
Friday, September 6
Divide and conquer
  • Recursion-tree method for solving recurrences
  • Master theorem for solving recurrences
Read: CLR&S, Sections 4.4-4.5
Monday, September 9
Writing Proofs
  • Purpose of proofs
  • common approaches
  • Common difficulties
Wednesday, September 11
Divide and conquer
  • Proof of the master theorem
Read: CLR&S, Section 4.6
Problems for Chapter 3. Part 3 (Due, Monday, September 16)
Revision of the first code analysis exercise also due Monday, September 16
Friday, September 13
Divide and conquer
  • More discussion of the master theorem
Read: CLR&S, Section 4.6
Problems for the Master Theorem Due Wednesday, September 18)
Monday, September 16
Probabilistic analysis and randomized algorithms
  • Hiring problem
  • Indicator random variables
  • Randomized algorithms
Read: CLR&S, Chapter 5
Revision of CLS&R, Problem 3-4, Due Friday, September 20
Wednesday, September 18
Heap sort (Student Group E-A)
  • Heaps and their properties
  • Heap sort algorithm
  • Analysis
  • Priority queues
Read: CLR&S, Chapter 6
Friday, September 20
Quicksort (Student Group 1-A)
  • Description
  • Analysis
  • A randomized version
Read: CLR&S, Chapter 7
Monday, September 23
Sorting in Linear and in O(n log n) Time
  • Lower bounds for sorting
  • Counting sort
  • Radix sort
  • Bucket sort
Read: CLR&S, Chapter 8
Wednesday, September 25
Pause for Breath
Review for Test 1
Friday, September 27

Test 1
Monday, September 30
Finding roots of functions
  • log n algorithms (bisection method)
  • Self-correcting algorithms (Newton's Method)

Supplemental Problem 1 (comparing sorting algorithms due Monday, October 14.
Wednesday, October 2
Hash tables
  • Direct-address tables
  • Hash tables
  • Hash functions
Read: CLR&S, Sections 11.1-11.3
Friday, October 4
Hash tables (Student Group 1-C)
  • Open addressing
Read: CLR&S, Section 11.4
Monday, October 7
Binary search trees
  • Definition
  • Querying
  • Insertion
  • Deletion
Read: CLR&S, Chapter 12
Wednesday, October 9
Multi-way search trees (Student Group 1-D)
  • Specification
  • Insertion
  • Deletion
Read: Dale/Walker, pp. 375-389
Friday, October 11
Multi-way search trees (Student Group 1-B)
  • 2-3 trees
Read: Dale/Walker, pp. 389-417
Problems from Dale/Walker Handout. Chapter 9, Part A (Due, Friday, October 18)
Monday, October 14
Multi-way search trees (Student Group 1-E)
  • 2-3-4 trees
Read: Dale/Walker, pp. 426-434
Due: Supplemental Problem 1 (comparing sorting algorithms
Problems from Dale/Walker Handout. Chapter 9, Part B (Due on Friday, November 1, based on 2-3-4 Trees and B Trees)
Wednesday, October 16
Red-black trees (Student Group 1-F)
  • Insertion
Read: CLR&S, Sections 13.1-13.4
Friday, October 18
Red-black (Student Group E-C)
  • Deletion
Monday, October 21

Break
Wednesday, October 23

Break
Friday, October 25

Break
Monday, October 28
B Trees (Student Group E-B)
Read: Dale/Walker, pp. 417-424
Wednesday, October 30
Dynamic programming
  • Rod cutting
  • Matrix-chain multiplication
  • Elements of dynamic programming
Read: CLR&S, Sections 15.1-15.3
Friday, November 1
Dynamic programming
  • Longest common subsequence
Read: CLR&S, Section 14.5-15.5
Problems from Dale/Walker Handout. Chapter 9, Part B (Due, based on 2-3-4 Trees and B Trees)
Procedure/program for dynamic programming (Due, based on dynamic programming)
Monday, November 4
Greedy Algorithms
  • Activity-selection problem
Read: CLR&S, Section 16.1
Wednesday, November 6
Pause for Breadth
Review for Test 1
Friday, November 8

Test 2
Monday, November 11
Greedy Algorithms
  • Elements of a greedy strategy
  • Huffman codes
Read: CLR&S, Sections 16.2-16.3
Wednesday, November 13
Elementary graph algorithms
  • Representations
  • Adjacency matrices
  • Breadth-first search
  • Depth-first search
Read: CLR&S, Sections 22.1-22.3
Friday, November 15
Graph algorithms (Student Group 2-A)
  • Topological sort
Read: CLR&S, Section 22.4
Due: Analysis and Effiency Problem
Monday, November 18
Graph algorithms (Student Group 2-B)
  • Strongly connected components
Read: CLR&S, Section 22.5
Wednesday, November 20
Union-find algorithm (Student Group 2-G)
  • Context
  • Find operation
  • Union operation
  • Analysis
Read: Dale/Walker, pp. 113-122
Friday, November 22
Minimum spanning trees
  • Growing a tree
  • Kruskal's or Prim's Algorithm
Read: CLR&S, Chapter 23.1-23.2
Due: Graphs, Part 1
Monday, November 25
Optimal Binary Search Trees (Student Group 2-C)
  • Definition, Context
  • Algorithm
Read: Dale/Walker, 330-342; CLR&S, Section 15.5
Wednesday, November 27
Single-source Shortest Paths (Student Group 2-D)
  • Bellman-Ford algorithm
  • Single-source shortest path in directed acyclic graphs
Read: CLR&S, Section 24.1-24.2
Due: Graphs, Etc. Part 2
Friday, November 29

Thanksgiving Holiday
Monday, December 2
Single-source Shortest Paths (Student Group 2-E)
  • Dijkstra's algorithm
  • Difference constraints
Read: CLR&S, Sections 24.3-24.4
Wednesday, December 4
Disjoint sets (Student Group 2-F)
  • Data structures
  • Algorithms
Read: CLR&S, Sections 21.1-21.3
Friday, December 6
Pause for breath
No class meeting
Monday, December 9
String Matching (Student Group E-C)
  • Naive string matching
  • Rabin-Karp algorithm
Read: CLR&S, Sections 32.1-32.2
Due: More Graphs
Wednesday, December 11
String Matching (Student Group E-D)
  • String matching with finite automata
  • Knuth-Morris-Pratt algorithm
Read: CLR&S, Sections 32.3-32.4
Friday, December 13
Review
End-of-course evaluations
Wrap up

Due: Sets, Strings, and Algorithm Choices

This document is available on the World Wide Web as

     http://www.cs.grinnell.edu/~walker/courses/301.fa13/semester-sched.shtml

created 1 September 2013
last revised 2 December 2013
Valid HTML 4.01! Valid CSS!
For more information, please contact Henry M. Walker at walker@cs.grinnell.edu.