|
Course Goals By the end of this course, you will have
developed the following knowledge and skills:
- You will know how to design and analyze
algorithms, and clearly explain the steps of your design and
analysis, justifying your claims with formal proof.
- You will learn and understand several standard algorithmic
design techniques, including greedy algorithms, divide and
conquer, and dynamic programming.
- You will be able to apply standard algorithmic design
techniques to solve computational design problems of moderate
difficulty. You will be able to describe and use these
techniques in clear write-ups.
- You will be able to identify problems that are
computationally intractable and argue why these problems might
be hard to solve efficiently.
- You will learn how to design randomized and/or approximation
algorithms, and determine when approximation and/or
randomization are useful for a problem.
Above all, the goal of this course is to instill a deep understanding
of how to think algorithmically about problems.
|