Welcome to
CS7200 - Algorithm Design and Analysis
|
This course introduces concepts related to the design and analysis
of algorithms. Specifically, it discusses recurrence relations, and
illustrates their role in asymptotic and probabilistic analysis of
algorithms. It covers in detail greedy strategies, divide and conquer
techniques, dynamic programming and max flow - min cut theory for
designing algorithms, and illustrates them using a number of
well-known problems and applications. It also covers popular graph and
matching algorithms, and basics of randomized algorithms and
computational complexity. However, the depth of coverage of complexity
classes and intractability, approximation algorithms, and randomized
algorithms, will be as time permits. The programming assignments can
be coded in Python or Java.
The slides used during the lecture can be downloaded here: Slides for Huffman code, courtesy of Dan Melamad Slides for Recurrence Relations, courtesy of Eric Torngs Slides for Quicksort Randomization, courtesy of Norbert Zeh Slides for Quicksort, courtesy of Charles Leiserson Slides for Selection, courtesy of Daniel Gildea Slides for Probabilistic Analysis, courtesy of Keith Schwarz Interactive demo of Ford-Fulkerson algorithm Addendum: Slides for Algorithm Correctness, courtesy of Louis Noel Pouchet Slides for Algorithm Induction Proofs, courtesy of Ioana Sora
|