Instructor: Madhavan Mukund
Teaching Assistants: Shourjya Basu, Samiparna Biswas, Vishwa Prakash H V
Evaluation:
Quizzes, programming assignments, final exam
Weightage approximately 10%, 50%, 40%, to be confirmed
Copying is fatal
Text and reference books:
We will not be following any specific text book. There are plenty of resources online. You can find a list of books at the following link: PythonBooks
This list is approximate and subject to change.
Programming in Python
Data structures and algorithmic techniques
Python for data science
Practice Assignment 1, 9 August 2022, ( Jupyter notebook, pdf)
Practice Assignment 2, 26 August 2022 (on Swayam portal), Test data
Practice Assignment 3, 31 August 2022 (on Swayam portal), Test data
Practice Assignment 4, 31 August 2022 (on Swayam portal), Test data
Practice Assignment 5, 13 September 2022 (on Swayam portal), Test data
Practice Assignment 6, 26 September 2022 (on Swayam portal), Test data
Practice Assignment 7, 12 November 2022 (on Swayam portal), Test data
Assignment 1, 4 Sep 2022, due 11 Sep 2022 (on Swayam portal),
Assignment 2, 13 Sep 2022, due 18 Sep 2022 (on Swayam portal),
Assignment 3, 26 Sep 2022, due 3 Oct 2022 (on Swayam portal),
Assignment 4, 24 Oct 2022, due 31 Oct 2022 ( Jupyter notebook, zipped data)
Assignment 5, 8 Nov 2022, due 14 Nov 2022 ( pdf, Jupyter notebook)
Assignment 6, 12 Nov 2022, due 19 Nov 2022 (on Swayam portal),
Lecture 1: 02 Aug 2022
(Class Notes (pdf),
Lecture Notes (pdf))
Introduction to algorithms and programming
Examples: placement data – variables, iteration, lists, tuples, dictionaries
Lecture 2: 04 Aug 2022
(Lecture Notes
[Jupyter notebook],
[pdf],
with in-class modifications
[Jupyter notebook],
[pdf],
Video)
Examples from Lecture 1 worked out in Python – variable assignment, for, if, while, list, tuple, dictionary
Tutorial: 11 Aug 2022
(Lecture Notes
[Jupyter notebook],
[pdf])
Lecture 3: 16 Aug 2022
(Lecture Notes
[Jupyter notebook],
[pdf],
Video)
Python basics: names, values, types, expressions, functions
Lecture 4: 18 Aug 2022
(Lecture Notes
[Jupyter notebook],
[pdf],
Video)
Python basics: if-else, list concatenate/append, for, range(), while
Lecture 5: 23 Aug 2022
(Lecture Notes
[Jupyter notebook],
[pdf],
Video)
Python basics: iteration, nested iteration, if-elif, list slice, mutable/immutable
Lecture 6: 25 Aug 2022
(Lecture Notes
[Jupyter notebook],
[pdf],
Video)
Python basics: mutable/immutable --- updating lists, passing parameters to function; strings; tuples; basic input/output; type conversion; dictionaries
Lecture 7: 30 Aug 2022
(Lecture Notes
[Jupyter notebook],
[pdf],
Class Notes,
Video)
Python basics: working with dictionaries. Comparing arrays, lists and dictionaries.
Lecture 8: 1 Sep 2022
(Lecture Notes
[Jupyter notebook],
[pdf],
Class Notes,
Video)
Experiments with lists, arrays, dictionaries
Implementing a linked list using nested dictionaries
Lecture 9: 5 Sep 2022
(Lecture Notes
[Jupyter notebook],
[pdf],
Video)
Map, filter, list comprehension
Inductive definitions, recursive functions
Lecture 10: 7 Sep 2022
(Lecture Notes
[Jupyter notebook],
[pdf],
Class Notes,
Video)
More examples of recursive functions
Classes and objects
Lecture 11: 13 Sep 2022
(Lecture Notes
[Jupyter notebook],
[pdf],
Class Notes,
Video)
Classes and objects, linked lists
Lecture 12: 15 Sep 2022
(Lecture Notes (linked lists)
[Jupyter notebook],
[pdf],
Class Notes,
Lecture Notes (numpy)
[Jupyter notebook],
[pdf],
Video)
Linked lists
Arrays in numpy
Lecture 13: 20 Sep 2022
(Lecture Notes (numpy)
[Jupyter notebook],
[pdf],
Lecture Notes (pandas)
[Jupyter notebook],
[pdf],
Video)
Numpy: arrays
Pandas: series and data frames
Lecture 14: 22 Sep 2022
(Lecture Notes
[Jupyter notebook],
[pdf],
csv files,
Video)
Pandas: series and data frames, reading csv files, projecting columns, selecting rows, dummaries and descriptive statistics
Lecture 15: 06 Oct 2022
(
Class Notes,
Video)
Complexity of algorithms: Motivating example, asymptotic complexity, big-O notation
Lecture 16: 11 Oct 2022
(
Class Notes,
Video)
Analysis of algorithms, Searching, Sorting — selection sort, insertion sort
Lecture 17: 18 Oct 2022
(
Class Notes,
Searching/sorting experiments
[Jupyter notebook],
[pdf],
Video)
Insertion sort, Merge sort
Lecture 18: 20 Oct 2022
( Class Notes,
Lecture Notes,
Quicksort experiments
[Jupyter notebook],
[pdf],
Video)
Quicksort, stable sorting
Lecture 19: 25 Oct 2022
( Class Notes,
Video)
Stacks, queues, priority queues, heaps
Lecture 20: 27 Oct 2022
( Class Notes,
Video)
Search trees
Lecture 21: 01 Nov 2022
( Class Notes,
Video)
AVL trees, Memoization
Lecture 22: 03 Nov 2022
( Class Notes,
Video)
Dynamic Programming: Grid paths, LCW, LCS
Lecture 23: 08 Nov 2022
( Class Notes,
Video)
Dynamic Programming: Edit Distance, Matrix Multiplication Ordering
Lecture 24: 15 Nov 2022
( Class Notes,
8 Queens in Python
([Jupyter notebook],
[pdf]),
Video)
Backtracking; Global and local variables
Lecture 25: 17 Nov 2022
( Class Notes,
Video)
Reading/writing files, formatted output, passing parameters to functions