Cormen, Leiserson and Rivest Read the book Know the algs Do the proofs

How to Write Proofs every thing you need to know, including Proof by Contradiction, If and Only If, Direct Proofs, Proof by Mathematical Induction.

Main Topics

• Induction
• Dynamic programming
• General form for dynamic programming algorithm
• Problem to recursion to dynamic programming algorithm.
• How to prove correctness, time complexity
• Dynamic programming on directed acyclic graphs Topological sort
• BFS
• How to apply BFS to a graph or digraph.
• Computing the shortest number of edges.
• BFS search, BFS trees and their properties
• DFS
• How to apply DFS to a graph or digraph
• Components in a graph
• DFS trees, DFS search, and their properties
• Start times and funish times and what they mean
• Strong components of a graph
• Condensation graphs
• Algorithm for strong components
• Dijsktra's algorithm
• Bellman Ford algorithm and detection of negative weight cycles
• Matrix multiplication solution for shortest paths
• Minimum spanning trees
• Prim's algorithm
• Kruskal's algorithm

Key Algorithms

• Generic dynamic programming (loop version and memoization version)
• DFS
• BFS
• Fast strong components algorithm
• Topological search
• Dijsktra's algorithm
• Bellman Ford algorithm
• Prim's algorithm
• Kruskal's algorithm

How to properly answer algorithm questions

• "show how..." = "Convince me that you know how to..."
• "Give pseudo code" = "Write out full pseudo code"
• "Prove that" or "Give a formal proof that" = write out a proof in detail - clearly identiy induction basis, step etc. Detail of pseudo code should be at the same level as in lectures (i.e. not assembly code).