CS218: Design and Analysis of Algorithms (2024-25 Sem II)

Course Contents:

Algorithms: Basic principles like induction/recursion. Basic paradigms like Divide and Conquer, Dynamic Programming, Greedy Algorithms. Beyond the basics: Network Flow and its applications. Reductions.

Complexity: Polynomial time and the Complexity classes NP, co-NP. NP-hardness and NP-completeness.

Advanced topics: Randomized algorithms, Approximation algorithms. E.g., approximate max-cut, load balancing, min-cut, linear programming, QR codes.

References:

Lectures

Course introduction slides

Basics

Exercises (Lectures 1-7)

Slides (Lectures 1-7)

Arithmetic

Exercises (Lectures 8-11)

Slides (Lectures 8-11)

Greedy algorithms, Dynamic programming

No slides. Handwritten slides from previous offering.

Exercises (Lectures 12-21)

Programming assignment 1

Midsem solutions

Matchings and Network Flow

Exercises (Lectures 22-28)

Programming assignment 2

Quiz 2 solutions

P, NP, NP-completeness

slides

Exercises (Lectures 29-32)

Advanced algorithms

Exercises (Lectures 33-)

Endsem solutions