CSC 301 Grinnell College Fall, 2016
 
Analysis of Algorithms
 

Tentative Class Schedule

Monday Wednesday Friday
August 25
center>New
Student
Days
August 27
Grinnell
College
Registration
August 29
Course Introduction
Possible Class Formats
Examining algorithm efficiency

Read: CLR&S, Chapters 1, 2
September 1
Weekly Format A
Growth of functions
  • Asymptotic notation
  • List of examples from CSC 161/207
  • Tree examples from CSC 207

Read: CLR&S, Chapter 3
 
Problems for Week 1, Problem 1
Due Monday, September 8
September 3
Weekly Format A
Divide and conquer
  • Substitution method for solving recurrences
  • Recursion-tree method for solving recurrences
  • Master theorem for solving recurrences

Read: CLR&S, Section 4.3-4.5
Problems for Week 1, Problems 2, 3
Due Monday, September 8
September 5
Weekly Format A
Problem solving
Problems for Week 1 (composite)
Due Monday, September 8
September 8
Weekly Format B
Writing Proofs
  • Purpose of proofs
  • common approaches
  • Common difficulties

 
Problems for Week 2, Problem 1
Due Wednesday, September 17
September 10
Weekly Format B
Divide and conquer
  • Proof of the master theorem

Read: CLR&S, Section 4.6
Problems for Week 2, Problem 2
Due Wednesday, September 17
September 12
Weekly Format B
Problem solving
Problems for Week 2 (composite)
Due Wednesday, September 17
September 15
Weekly Format B
Probabilistic analysis and randomized algorithms
  • Hiring problem
  • Indicator random variables
  • Randomized algorithms

Read: CLR&S, Chapter 5
Heap Program for Week 3
Due Wednesday, September 24
September 17
Weekly Format B
Heap sort
  • Heaps and their properties
  • Heap sort algorithm
  • Analysis
  • Priority queues

Read: CLR&S, Chapter 6
Heap Program for Week 3
Due Wednesday, September 24
September 19
Weekly Format B
Pause for Breath
No class meeting
September 22
Weekly Format A
Quicksort
  • Description
  • Analysis
  • A randomized version

Read: CLR&S, Chapter 7
Sorting Program for Week 4
Due Monday, September 29
September 24
Weekly Format A
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
Sorting Program for Week 4
Due Monday, September 29
September 26
Weekly Format A
Finding roots of functions
  • log n algorithms (bisection
    method)

  • Self-correcting algorithms (Newton's
    Method)


Sorting Program for Week 4
Due Monday, September 29
September 29
Weekly Format B
Hash tables
  • Direct-address tables
  • Hash tables
  • Hash functions

Read: CLR&S, Sections 11.1-11.3
Problems for Week 5
Due Wednesday, October 8
October 1
Weekly Format B
Hash tables
  • Open addressing

Read: CLR&S, Section 11.4
Problems for Week 5
Due Wednesday, October 8
October 3
Test 1
October 6
Weekly Format A
Binary search trees
  • Definition
  • Querying
  • Insertion
  • Deletion

Read: CLR&S, Chapter 12
Problems for Week 6, Problems 1, 2, 3
Due Monday, October 13
October 8
Weekly Format A
Multi-way search trees
  • Specification
  • Insertion
  • Deletion

2-3 trees (Insertion)
Read: Dale/Walker, pp. 375-406
Problems for Week 6, Problems 4, 5
Due Monday, October 13
October 10
Weekly Format A
Problem solving
Problems for Week 6 (composite)
Due Monday, October 13
October 13
Weekly Format B
2-3 trees
  • Deletion

2-3-4 trees
Red-black trees
  • Insertion

Read: Dale/Walker, pp. 406-417, 426-434
Problems for Week 7, Problems 1, 2
Due Wednesday, October 29
October 15
Weekly Format B
Red-black trees
  • Deletion

Read: CLR&S, Sections 13.1-13.4
Problems for Week 7, Problems 3, 4, 5
Due Wednesday, October 29
October 17
Weekly Format B
Problem solving
Problems for Week 7 (composite)
Due Wednesday, October 29
October 20
Break
October 22
Break
October 24
Break
October 27
Coding and Efficiency
B Trees
Read: Dale/Walker, 417-426
October 29
Coding and Efficiency
Problems for Week 8
Due Wednesday, November 5
October 31
B Trees, Coding, and Efficiency
Problems for Week 8
Due Wednesday, November 5
November 3
Dynamic programming
  • Rod cutting
  • Elements of dynamic programming

Read: CLR&S, Section 15.1, 15.3
Problems for Week 9, Problems 1, 2
Due Friday, November 14
November 5
Dynamic programming
  • Optimal Binary Search Trees

Read: Dale/Walker, 330-342; CLR&S, Section 15.5
Problems for Week 9 (composite)
Due Friday, November 13
November 7
Greedy Algorithms
  • Activity-selection problem
  • Elements of a greedy strategy
  • Huffman codes

Read: CLR&S, Sections 16.1-16.3
Problems for Week 10, Problems 1, 2
Due Wednesday, November 19
November 10
Elementary graph algorithms
  • Representations
  • Adjacency matrices
  • Breadth-first search
  • Depth-first search

Read: CLR&S, Sections 22.1-22.4
Problems for Week 10, Problems 3, 4
Due Wednesday, November 19
November 12
Test 2
November 14
Graph algorithms
Problems for Week 10 (composite)
Due Wednesday, November 19
November 17
Graph algorithms
  • Topological sort
  • Strongly connected components

Read: CLR&S, Section 22.5
Problems for Week 11, Problems 1, 2
Due Wednesday, November 26
November 19
Minimum spanning trees
  • Growing a tree
  • Kruskal's or Prim's Algorithm

Read: CLR&S, Chapter 23.1-23.2
Problems for Week 11, Problems 3, 4
Due Wednesday, November 26
November 21
Graph algorithms
Problems for Week 11 (composite)
Due Wednesday, November 26
November 24
Single-source Shortest Paths
  • Bellman-Ford algorithm
  • Single-source shortest path in directed acyclic graphs
  • Dijkstra's algorithm
  • Difference constraints

Read: CLR&S, Section 24.1-24.4
November 26
Hash tables
  • Direct-address tables
  • Hash tables
  • Hash functions

Read: CLR&S, Sections 11.1-11.3
November 28
Thanksgiving Holiday
December 1
Hash tables
  • Open addressing

Read: CLR&S, Sections 11.4
Problems for Week 13, Problem 1
Due Wednesday, December 10
December 3
Union-find algorithm
  • Context
  • Find operation
  • Union operation
  • Analysis
Read: Dale/Walker, pp. 113-122

Disjoint sets
  • Data structures
  • Algorithms
Read: CLR&S, Sections 21.1-21.3
Problems for Week 13, Problems 2, 3
Due Wednesday, December 10
December 5
Problems for Week 13 (composite)
Due Wednesday, December 10
December 8
String Matching
  • Naive string matching
  • Rabin-Karp algorithm

Read: CLR&S, Sections 32.1-32.2
Problems for Week 14, Problems 1, 2
Due Wednesday, December 12
December 10
String Matching
  • String matching with finite automata
  • Knuth-Morris-Pratt algorithm

Read: CLR&S, Sections 32.3-32.4
Problems for Week 14 (composite)
Due Friday, December 12
December 12
Review
End-of-course evaluations
Wrap up