Algorithms
This course focuses on the design and analysis of algorithms. As mathematical background, it covers inductive proof techniques, solving recurrence equations, graph theory and probability. It covers a detailed study of different techniques in designing solutions to problems including greedy algorithm, divide and conquer, dynamic programming, backtracking, and branch and bound. Some advanced data structures are introduced. There is an emphasis on the verification and analysis of time and space complexity. NP theory is introduced.
Course announcements, power point lectures, homework, demos...etc. are on Blackboard