Instructor: Madhavan Mukund
Teaching Assistants: Sombit Mazumder, 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, 29 September 2026, due 5 October 2026 ( pdf, Python code)
Assignment 2, 19 October 2026, due 26 October 2026 ( pdf, List.py)
Lecture 1: 04 Aug 2026
(Class Notes (pdf),
Lecture Notes (pdf))
Introduction to algorithms and programming
Examples: FIFA World Cup 2026 data – variables, iteration, lists, tuples, dictionaries
Lecture 2: 6 Aug 2026
(Lecture Notes (pdf),
Python code
(
Jupyter notebook,
pdf),
FIFA World Cup 2026 spreadsheet)
Python code for questions about FIFA World Cup 2026 data
Lecture 3: 18 Aug 2026
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Basic Python – Data types: numbers (int and float) and operations, booleans, range(), iteration, math library, functions
Lecture 4: 20 Aug 2026
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Basic Python – while loops, booleans, variables/values/types, if-elif-else, lists, slices, range with step
Lecture 5: 25 Aug 2026
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Basic Python – list functions - append, insert, extend, sort, … tuples, dictionaries, hashing
Lecture 6: 27 Aug 2026
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Basic Python – lists vs dictionaries: unique elements, list intersection
Lecture 7: 1 Sep 2026
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Basic Python – nested collections, mutable and immutable values, passing mutable values to functions, None
Lecture 8: 3 Sep 2026
(Python code
(Jupyter notebook,
pdf))
Basic Python – strings, map and filter
Lecture 9: 8 Sep 2026
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Basic Python – list comprehension, local and global scope, static vs dynamic scoping
Lecture 10: 10 Sep 2026
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Arrays vs lists; experiments to understand how Python represents lists
Lecture 11: 15 Sep 2026
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Experiments to understand how Python handles keys in dictionaries
Inductive definitions and recursive functions
Lecture 12: 17 Sep 2026
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Setting the recursion limit in Python
Dictionary implementation of lists: recursive functions for append, length, sum, delete
Lecture 13: 29 Sep 2026
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Functions with default arguments.
Abstract datatypes, object-oriented programming: classes, objects, special functions
Lecture 14: 6 Oct 2026
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Object-oriented programming: special functions, changing the implementation, building a linked list
Lecture 15: 8 Oct 2026
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf))
Object-oriented programming: building a linked list
Input, output, exception handling
Lecture 16: 13 Oct 2026
(Class Notes (pdf), Python code
(Jupyter notebook,
pdf,
sample text file,
)
Exception handling, raising exceptions
String formatting
Input/output: Reading and writing files, stripping whitespace
Lecture 17: 15 Oct 2026
(Class Notes (pdf), Lecture Notes
([Jupyter notebook],
[pdf]))
Numpy: Creating arrays, stacking and splitting, axes, matrix operations, reshaping, copies and views, broadcasting
Lecture 18: 20 Oct 2026
(Class Notes (pdf), Lecture Notes
([Jupyter notebook],
[pdf],
[sample csv files])
)
Pandas: series, data frames, reading csv files, descriptive statistics