Textbooks:
      
Other resources/recommended reading:
Other resources/recommended reading (more advanced topics):
Prerequisites: CSC162 or CSC172 or MTH172.
Problem sessions:
	  
       Aug.  27 Tue - Introduction.
       Aug.  29 Thu - When does greedy algorithm for the coin change problem work? [minor homework #1 due (released: 8/27)]
	   
       Sep.  3 Tue - Dynamic programming for the coin change problem. Knapsack (integer weights). [minor homework #2 due (released: 8/29)]
       Sep.  5 Thu - Knapsack revisited (integer values). Longest increasing subsequence. [minor homework #3 due (released: 9/3)] 
       
       Sep.  10 Tue - Edit distance. Chain matrix multiplication.
       Sep.  12 Thu - More dynamic programming problems.
	   
       Sep.  17 Tue - Review. [minor homework #4 due (released: 9/10)]
       Sep.  19 Thu - EXAM #1 (topics:  Greedy algorithms/Dynamic programming). 
Problem sessions:
	   
       Sep. 24 Tue - Undirected graphs, finding connected components, DFS. 
       Sep. 26 Thu - Directed graphs, strong connectedness, linearization (topological sorting). [minor homework #5 due (released: 9/24)]
       Oct. 1  Tue - Strongly connected components.[minor homework #6 due (released: 9/26)]
       Oct. 3  Thu - BFS, Shortest paths (Dijkstra).
       Oct. 8  Tue - Dealing with negative edge weights (Bellman Ford). Floyd-Warshal.
       Oct. 10 Thu - Matchings I. 
	   
       Oct. 15 Tue - FALL BREAK. 
       Oct. 17 Thu - Matchings II. [minor homework #7 due (released: 10/10)]
	   
       Oct. 22 Tue -  Minimum spanning trees. 
       Oct. 24 Thu - Modeling with linear programs I (classical problems).
	   
       Oct. 29 Tue - Solving systems of equations (Gaussian elimination), solving systems on inequalities (Fourier-Motzkin elimination).
	   
       Oct. 31 Thu - Duality, Modeling with linear programs II (zero-sum games). 
	   
       Nov.  5 Tue - Modeling with linear programs III. [minor homework #8 due (released: 10/24)]
	   
       Nov.  7 Thu - EXAM #2 (topics: Graph algorithms, Linear Programming)  
Problem sessions:
       Nov. 12 Tue - Fast fourier transform, convolution I. 
       Nov. 14 Thu - Fast fourier transform, convolution II. [minor homework #9 due (released: 11/12)] 
	   
       Nov. 19 Tue - NP completness, reductions I.  
 
       Nov. 21 Thu - NP completness, reductions II. 
 
       Nov.  26 Tue - NP completness, reductions III. 
       Nov.  28 Thu - THANKSGIVING (no class). 
 
       Dec. 3 Tue - Divide and conquer algorithms. [minor homework #10 due (released: 11/19)] 
       Dec. 5 Thu - EXAM #3 (topics: NP completness, divide and conquer algorithms (fast fourier transform)