Instructor: Madhavan Mukund
Teaching Assistants: Arnab Bera, Ashwin Bhaskar, Vardhan Kumar Ray
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
Assignment 1, 6 September 2025, due 12 September 2025 ( Jupyter notebook, pdf)
Assignment 3, List.py, 17 October 2025, due 24 October 2025
Lecture 1: 07 Aug 2025
(Class Notes (pdf),
Lecture Notes (pdf))
Introduction to algorithms and programming
Examples: IPL data – variables, iteration, lists, tuples, dictionaries
Lecture 2: 12 Aug 2025
(Class Notes (pdf),
Python code
(
Jupyter notebook,
pdf),
IPL 2024 spreadsheet)
Python code for questions about IPL data
Lecture 3: 14 Aug 2025
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Basic Python – Data types: numbers (int and float) and operations, booleans, range(), iteration, math library
Lecture 4: 19 Aug 2025
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Basic Python – functions, while loops, booleans, variables/values/types
Lecture 5: 21 Aug 2025
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Basic Python – if-elif-else, lists, slices, range with step, list functions - append, insert, extend, sort, …
Lecture 6: 26 Aug 2025
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Basic Python – tuples, dictionaries, hashing
Lecture 7: 28 Aug 2025
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Basic Python – lists vs dictionaries: unique elements, list intersection
Lecture 8: 2 Sep 2025
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Basic Python – nested collections, strings
Lecture 9: 4 Sep 2025
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Basic Python – map, filter, list comprehension, mutable and immutable values
Lecture 10: 9 Sep 2025
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Basic Python – mutable and immutable values, None, passing mutable values to functions, dictionary keys must be immutable
Lecture 11: 11 Sep 2025
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Scope and lifetime, local and global scope, static vs dynamic scoping, arrays vs lists
Lecture 12: 16 Sep 2025
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Arrays, lists, dictionaries; experiments to measure performance; implementing a list using nested dictionaries
Lecture 13: 18 Sep 2025
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Inductive definitions and recursive functions, recursion depth
Lecture 14: 23 Sep 2025
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Abstract datatypes, object-oriented programming: classes, objects, special functions
Lecture 15: 25 Sep 2025
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Object-oriented programming: changing the implementation, building a linked list
Lecture 16: 09 Oct 2025
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf),
Lecture recording)
)
Linked lists: recursive append and delete
Exception handling
Lecture 17: 14 Oct 2025
(Class Notes (pdf), Lecture Notes
([Jupyter notebook],
[pdf]),
Sample text file oz.txt)
)
Input/output: String formatting, modifying behaviour of print(), Reading and writing files, stripping whitespace
Lecture 18: 16 Oct 2025
(Class Notes (pdf), Lecture Notes
([Jupyter notebook],
[pdf]))
Numpy: Creating arrays, stacking and splitting, axes, matrix operations, reshaping, copies and views, broadcasting