CS218M: Design and Analysis of Algorithms (Minor)

Instructor:

Paritosh K. Pandya
Room CSE 216
Phone: (022) 2576 7722
Email: pandya.paritosh@gmail.com

Venue & Time:

Wednesday 09:30 to 10:55 a.m LA002
Friday 09:30 to 10:55 a.m. LA002

First Lecture: 27 July, 2022
Term: Autumn 2022.


Algorithms occur in all walks of from finding eiffcient routes on google maps, matching students with colleges for admission, to encrypting commercial transactions on internet. This course investiagates design as well as analysis of algorithms. In algorithm analysis we consider twin goals of establishing correctness and estimating efficiency (time, memory usage). For correctness we consider logical assertion based methods of Dijkstra and Hoare. For performance analysis, we use asymptotic order of growth of time and memory with input size. We also explore design strategies and heuristics by which efficient solutions to algorithmic problems can be found. These include, divide and conquer, greedy and dynamic programming as well as randomization. A wide variety of algorithms will be designed and analysed. Finally, the course will explore the topic of inherent hardness of algorithmic problems. Complexity theory divides the problems into complexity classes by their inherent hardness and by inter-reducibility. The class of NP-Complete problems will be rigorously explored.



Textbooks

  1. T.H.Cormen, C.E.Leiserson, R.L.Rivest, C. Stein, Introduction to Algorithms, 3rd edition, Prentice-Hall India, 2001. (CLRS)

  2. J. Kleinberg and E. Tardos, Algorithm Design, Pearson International Edition, 2005. (KT)

Course TAs

Ashish Lalwaney, Akash Kumar, Vedang Asgaonkar, Pulkit Agarwal, Ankit Misra, Dhhiraj Sah, Abhishek Singh

Discussion and Q&A

Piazza Discussion Forum: piazza.com/iit_bombay/fall2022/cs218m

Evaluation Structure (Tentative)

Attendance and Tutorials: 10%
Quizzes and Assignments : 25%
Midterm Exam: 25%
Final Exam: 40%

Course Content

Models of computation, algorithm analysis, time and space complexity, average and worst case analysis, lower bounds. Algorithm design techniques: divide and conquer, greedy, dynamic programming, randomization.

Problem classes P, NP, PSPACE; reducibility, NP-hard and NPcomplete problems. Approximation algorithms for some NP-hard problems.



Lecture Material

No

Topics

Slides/Notes/Exercises

References

Additional References

Lect 1

Course overview

Lect1Annotated



Lect 2A
2B, 2C

Efficiency of algorithms 1: Growth functions and order of growth. Asymptotic Complexity: Theta,O,Omega

Lect2Annotated

CLRS Sec 2.1-2 Sec 3.1

CLRS3.2 (self study)


Lect 3-4

Correctness of Programs: Assertions and Annotated programs

Lect4Annotated
(includes Lect3 slides)

Lecture slides

Huth and Ryan, Logics in Computer Science, Ch 1-2,4.

Lect5

Discovering Sorting Methods
Divide and Conquer, Formulating recurrences

Lect5Annotated

CLRS 2.3



Lect6

Solving recurrences

Lect6Annotated

CLRS 4.3-5


Lect7

Divide and Conquer Algorithms: Integer multiplication, Strassen Matrix Multiplication, Maximum Subarray

Lect7Annotated

CLRS 4.1, 4.2
KT 5.5,

KT 5.3 (Counting inversions)

CLRS 4.2 (Strassen Matrix Multiplication)

Lect8-9-10

Greedy Algorithms
Maximal Interval Set,
Jobshop scheduling,
Huffman Codes,
Minimum Spanning Trees,
Single Source Shortest Path

Lect8Annotated

Lect9Annotated

Lect10Annotated

KT Chapter 4.1, 4.2, 4.8,
CLRS 16.3

KT4.5, 4.6
CLRS 23, 24.3


Lect11

Amortized Complexity

Lect11Annotated

CLRS Ch. 17


Lect12-13-14-15

Dynamic Programming

Lect12Annotated
Lect13Annotated
Lect14Annotated
Lect15Annotated

CLRS Ch. 15
KT Ch 6


Lect16, Lect17, Lect18,
Lect19

P versus NP , NP-completeness, PSPACE

Lect16Annotated
Lect17Annotated
Lect18Annotated
Lect19Annotated


(lecture video)
PSPACE.mp4

This video is only for info not in exam.

Lect20

Maxflow algorithm

Lect20Annotated


MAXFLOW.mp4

Lect21

Randomized algorithms

Lect21Annotated



Lect22

QUIZ




Lect23

Guest Lecture by Prof. Rohit Gurjar
Approximation Algorithms

Lect22Annotated


Scribed notes by Dhaval Singh.

Lect24
(video Lecture)

Bipartate Matching

Lect24AAnnotated
Lect24BAnnotated


(lecture video)
bipartatematching.mp4