Course plan 2025
Below is the course plan for the course. For each lecture is stated the topic, the relevant literature, the slides used, videos for watching at your own speed, the exercises connected to the lecture, and handins related to the content of the lecture. The exercises should be covered in the subsequent exercise classes. Due dates for the handins for your exercise class can be found on Brightspace.
All code used on slides and used for making the figures on the slides can be found in this zip file code.zip. All slides concatenated as a single pdf file can be found as all-slides.pdf (also available in the course menu).
Below [G] refers to optional reading in the textbook by John V. Guttag, Introduction to Computation and Programming Using Python - With Application Computational Modeling and Understanding Data, 3rd Edition. 664 pages. MIT Press, 2021. The book is not curriculum in the course.
Note: Slides and course plan will be updated as the course progresses.
Week | ||
---|---|---|
5 | Monday January 27 | |
Semester starts Introduction to Python | ||
Slides | introduction.pdf | pptx | |
Literature | [G] 1, 2.1 | |
Exercises | lecture 1 | |
Wednesday January 29 | ||
Python basics variables, int, float, str, type conversion, assignment, print(), help(), type() Control structures if-elif-else, while-break-continue, input() | ||
Slides | basics.pdf | pptx control.pdf | pptx | |
Videos | Basics 55:27 Control 32:09 | |
Literature | [G] 2.2, 2.3, 2.5, 2.6 | |
Exercises | lecture 2 handin 1 | |
6 | Monday February 3 | |
Basic operations None, bool, basic operations, strings Exercise classes start | ||
Slides | operations.pdf | pptx | |
Videos | Operations 1:02:04 | |
Literature | [G] 2.4, 5.5 | |
Exercises | lecture 3 | |
Wednesday February 5 | ||
Lists Syntax, operations, copy.deepcopy Control structures while-else, for-loops, for-break-continue-else, range | ||
Slides | lists.pdf | pptx | |
Videos | Lists 1:00:04 | |
Literature | [G] 5.2, 5.3, 5.4, 5.5 | |
Exercises | lecture 4 handin 2 | |
7 | Monday February 10 | |
Tuples and lists tuples, lists, mutability, list comprehension, for-if, for-for, list(), any(), all(), enumerate(), zip() | ||
Slides | tuple.pdf | pptx | |
Videos | Tuples 50:13 Orientation test 11:38 | |
Literature | [G] 5.1, 5.3, 5.5 | |
Exercises | lecture 5 | |
Wednesday February 12 | ||
Dictionaries and sets dict, set, frozenset, dictionary comprehension, set comprehension, collections, deque, namedtuple, Counter | ||
Slides | dictionaries.pdf | pptx | |
Videos | Dictionaries 49:51 Handins 3-4 5:11 | |
Literature | [G] 5.6, 5.7, 5.8, 12.3 | |
Exercises | lecture 6 handin 3 | |
8 | Monday February 17 | |
Functions functions, return, scoping, arguments, keyword arguments, *, **, global variables 9.15 Meeting with class representatives (D.01) | ||
Slides | functions.pdf | pptx | |
Videos | Functions 58:04 | |
Literature | [G] 4, 6.3 | |
Exercises | lecture 7 | |
Wednesday February 19 | ||
Recursion symbol table, stack frames | ||
Slides | recursion.pdf | pptx | |
Videos | Recursion 46:29 | |
Literature | [G] 6.1, 6.2 | |
Exercises | lecture 8 handin 4 | |
9 | Monday February 24 | |
Recursion and iteration algorithm examples | ||
Slides | recursion_iteration.pdf | pptx | |
Videos | Recursion and iteration 57:43 | |
Literature | [G] 3, 12.1, 12.2 | |
Exercises | lecture 9 handin 5 | |
Wednesday February 26 | ||
Functions as objects lambda, higher-order functions, map, filter, reduce | ||
Slides | lambda.pdf | pptx | |
Videos | Lambda 44:05 | |
Literature | [G] 4.4, 12.2.2 | |
Exercises | lecture 10 | |
10 | Monday March 3 | |
Object oriented programming classes, objects, self, construction, encapsulation | ||
Slides | classes.pdf | pptx | |
Videos | Classes 1:11:42 | |
Literature | [G] 10.1, 10.3.0 | |
Exercises | lecture 11 | |
Wednesday March 5 | ||
Class hierarchies inheritance, method overriding, super, multiple inheritance | ||
Slides | hierarchies.pdf | pptx | |
Videos | Class hierarchies 44:20 | |
Literature | [G] 10.2 | |
Exercises | lecture 12 handin 6 | |
11 | Monday March 10 | |
Exceptions and file input/output try-raise-except-finally, Exception, control flow, match-case, file open/read/write, sys.stdin, sys.stdout, sys.stderr, context manager | ||
Slides | exceptions.pdf | pptx | |
Videos | Exceptions 28:51 Files 20:13 Sudoku 15:45 | |
Literature | [G] 7.3, 9.1, 9.2 | |
Exercises | lecture 13 | |
Wednesday March 12 | ||
Documentation, testing and debugging docstring, defensive programming, assert, test driven developement, assertions, testing, unittest, doctest, debugger, coverage, static type checking, mypy | ||
Slides | testing.pdf | pptx | |
Videos | Testing 48:44 Mypy 13:32 | |
Literature | [G] 4.2, 8, 9.3 | |
Exercises | lecture 14 handin 7 | |
12 | Monday March 17 | |
Decorators @, @property, @functools.total_ordering, dataclasses | ||
Slides | decorators.pdf | pptx | |
Videos | Decorators 54:37 | |
Exercises | lecture 15 | |
Wednesday March 19 | ||
Dynamic programming memoization, decorator memoized/functools.cache, systematic subproblem computation | ||
Slides | dynamic_programming.pdf | pptx | |
Videos | Dynamic programming 56:46 Coding competitions 10:47 | |
Literature | [G] 14.1, 15.1, 15.2 | |
Exercises | lecture 16 handin 8 | |
13 | Monday March 24 | |
Visualization and optimization Matplotlib, Jupyter, scipy.optimize.minimize No exercise classes | ||
Slides | optimization.pdf | pptx | |
Videos | Matplotlib 1:03:40 Jupyter 26:35 SciPy minimize 29:47 | |
Literature | [G] 13 | |
Exercises | lecture 17 | |
Wednesday March 26 | ||
Multi-dimensional data NumPy, matrix multiplication, @, numpy.linalg.solve, numpy.polyfit | ||
Slides | numpy.pdf | pptx | |
Videos | Numpy 42:09 Polyfit 6:12 Numpy matplotlib 15:27 | |
Literature | [G] 13.2 | |
Exercises | lecture 18 | |
14 | Monday March 31 | |
Linear programming scipy.optimize.linprog pagerank.ipynb max-flow.ipynb | ||
Slides | linear_programming.pdf | pptx | |
Videos | Linprog 6:19 Maxflow 10:05 Pagerank 22:17 | |
Exercises | lecture 19 handin 9 | |
Wednesday April 2 | ||
Generators and iterators yield, __iter__, __next__, measuring memory usage | ||
Slides | generator.pdf | pptx | |
Videos | Iterators 38:26 Generators 30:04 Memory usage 9:27 | |
Literature | [G] 10.3.1 | |
Exercises | lecture 20 handin 10 | |
15 | Monday April 7 | |
Modules and packages from-import-as, __name__, "__main__", heapq | ||
Slides | modules.pdf | pptx | |
Videos | Modules 24:28 Heapq 8:51 | |
Literature | [G] 7.1, 7.2 | |
Exercises | lecture 21 | |
Wednesday April 9 | ||
Working with text file formats (CSV, Json, XML, Excel), regular expressions (module re), finditer | ||
Slides | text.pdf | pptx | |
Videos | File formats 39:47 Regular expressions 17:59 Lindenmeyer systems 14:10 | |
Exercises | lecture 22 | |
Saturday April 12 - Monday April 21 | ||
Easter break - no teaching | ||
17 | Tuesday April 22 - Friday April 25 | |
No lectures, exercise classes, and study cafe | ||
18 | Monday April 28 | |
Relational data SQL, SQLite, pandas pandas.ipynb No physical lecture - video only | ||
Slides | pandas.pdf | pptx | |
Videos | SQLite 29:23 Pandas 34:23 | |
Literature | [G] 23 | |
Exercises | lecture 23 | |
Wednesday April 30 | ||
Clustering k-means, scipy.cluster.vq.kmeans, DBSCAN, neural networks No physical lecture - video only | ||
Slides | clustering.pdf | pptx | |
Videos | Clustering 27:25 DBSCAN 11:11 Neural networks 15:56 | |
Literature | [G] 25 | |
Exercises | lecture 24 | |
19 | Monday May 5 | |
Graphical user interfaces (GUI) Tkinter, qt No physical lecture - video only | ||
Slides | gui.pdf | pptx | |
Videos | Tkinter 50:37 | |
Exercises | lecture 25 | |
Wednesday May 7 | ||
Java vs Python No physical lecture - video only | ||
Slides | java.pdf | pptx | |
Videos | Java 1:03:03 | |
Exercises | lecture 26 | |
20 | Monday May 12 | |
Follow up on course evaluation, discussion of exam | ||
Slides | exam.pdf | pptx | |
Exercises | lecture 27 | |
Wednesday May 14 | ||
No lecture | ||
Friday May 16 | ||
Last day of semester | ||
22 | Saturday May 31 | |
Project deadline 23:59 | ||
June | ||
Questions & answers sessions | ||
24 | Saturday June 14 | |
Exam |