Dynamic programming; Memoization, Tabulation. Examples such as Fibonacci sequence, longest common subsequence, etc.
Topic 6 (if time permits)
NP-Completeness and Approximation algorithms
Course Info
Topic
This course covers the basics of the design and analysis of algorithms. We will study general algorithmic techniques such
as divide and conquer, greedy algorithms and dynamic programming. We will also discuss
some important graph algorithms as well as NP-completeness and techniques for dealing
with it. In the process of doing so, we will investigate several important algorithms such as
sorting, shortest paths and longest common substrings.
We will closely follow Dasgupta/Papadimitriou/Vazirani's textbook "Algorithms". You may find the book useful but there is no requirement to purchase the book.
Expected Background
Programming Basics, Datastructures, Discrete Math
Homeworks
Homeworks will be given periodically but are completely optional to do and will not count towards your grade. Students are encouraged to do the homeworks for additional practice and get feedback that can help them for their exams.
Policies
Academic rules of conduct
Students are expected to adhere to the Academic Honesty policy of the Computer Science Department, this policy can be found in full here.
Violations
Violation of any portion of these policies will result in a penalty to be assessed at the instructor's discretion. This may include receiving a zero grade for the assignment in question and a failing grade for the whole course, even for the first infraction.