Introduction to Programming with Scientific Applications (Spring 2026)

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).

[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.

WeekDayLectureLiteratureSlides & VideosSlidesExercises
5Monday
January 26
Semester starts
Introduction to Python
[G] 1, 2.1introduction.pdf | introduction.pptxlecture 1
Wednesday
January 28
Python basics
variables, int, float, str, type conversion, assignment, print(), help(), type()
Control structures
if-elif-else, while-break-continue, input()
[G] 2.2, 2.3, 2.5, 2.6 Basics 55:27
 Control 32:09
lecture 2
handin 1
6Monday
February 2
Basic operations
None, bool, basic operations, strings
Exercise classes start
[G] 2.4, 5.5operations.pdf | operations.pptx
 Operations 1:02:04
lecture 3
Wednesday
February 4
Lists
Syntax, operations, copy.deepcopy
Control structures
while-else, for-loops, for-break-continue-else, range
[G] 5.2, 5.3, 5.4, 5.5lists.pdf | lists.pptx
 Lists 1:00:04
lecture 4
handin 2
7Monday
February 9
Tuples and lists
tuples, lists, mutability, list comprehension, for-if, for-for, list(), any(), all(), enumerate(), zip()
[G] 5.1, 5.3, 5.5tuple.pdf | tuple.pptx
 Tuples 50:13
 Orientation test 11:38
lecture 5
Wednesday
February 11
Dictionaries and sets
dict, set, frozenset, dictionary comprehension, set comprehension, collections, deque, namedtuple, Counter
[G] 5.6, 5.7, 5.8, 12.3dictionaries.pdf | dictionaries.pptx
 Dictionaries 49:51
 Handins 3-4 5:11
lecture 6
handin 3
8Monday
February 16
Functions
functions, return, scoping, arguments, keyword arguments, *, **, global variables
10.15 Meeting with class representatives
[G] 4, 6.3functions.pdf | functions.pptx
 Functions 58:04
lecture 7
Wednesday
February 18
Recursion
symbol table, stack frames
[G] 6.1, 6.2recursion.pdf | recursion.pptx
 Recursion 46:29
lecture 8
handin 4
9Monday
February 23
Recursion and iteration
algorithm examples
No physical lecture - video only
[G] 3, 12.1, 12.2recursion_iteration.pdf | recursion_iteration.pptx
 Recursion and iteration 57:43
lecture 9
handin 5
Wednesday
February 25
Functions as objects
lambda, higher-order functions, map, filter, reduce
No physical lecture - video only
[G] 4.4, 12.2.2lambda.pdf | lambda.pptx
 Lambda 44:05
lecture 10
10Monday
March 2
Object oriented programming
classes, objects, self, construction, encapsulation
[G] 10.1, 10.3.0classes.pdf | classes.pptx
 Classes 1:11:42
lecture 11
Wednesday
March 4
Class hierarchies
inheritance, method overriding, super, multiple inheritance
[G] 10.2hierarchies.pdf | hierarchies.pptx
 Class hierarchies 44:20
lecture 12
handin 6
11Monday
March 9
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
[G] 7.3, 9.1, 9.2exceptions.pdf | exceptions.pptx
 Exceptions 28:51
 Files 20:13
 Sudoku 15:45
lecture 13
Wednesday
March 11
Documentation, testing and debugging
docstring, defensive programming, assert, test driven developement, assertions, testing, unittest, doctest, debugger, coverage, static type checking, mypy
[G] 4.2, 8, 9.3testing.pdf | testing.pptx
 Testing 48:44
 Mypy 13:32
lecture 14
handin 7
12Monday
March 16
Decorators
@, @property, @functools.total_ordering, dataclasses
decorators.pdf | decorators.pptx
 Decorators 54:37
lecture 15
Wednesday
March 18
Dynamic programming
memoization, decorator memoized/functools.cache, systematic subproblem computation
[G] 14.1, 15.1, 15.2dynamic_programming.pdf | dynamic_programming.pptx
 Dynamic programming 56:46
 Coding competitions 10:47
lecture 16
handin 8
13Monday
March 23
Visualization and optimization
Matplotlib, Jupyter, scipy.optimize.minimize
[G] 13optimization.pdf | optimization.pptx
 Matplotlib 1:03:40
 Jupyter 26:35
 SciPy minimize 29:47
lecture 17
Wednesday
March 25
Multi-dimensional data
NumPy, matrix multiplication, @, numpy.linalg.solve, numpy.polyfit
[G] 13.2numpy.pdf | numpy.pptx
 Numpy 42:09
 Polyfit 6:12
 Numpy matplotlib 15:27
lecture 18
14Monday
March 30 - Monday April 6
Easter break - no teaching
15Tuesday
April 7 - Wednesday April 8
No lectures and exercise classes
16Monday
April 13
Linear programming
scipy.optimize.linprog
pagerank.ipynb
max-flow.ipynb
linear_programming.pdf | linear_programming.pptx
 Linprog 6:19
 Maxflow 10:05
 Pagerank 22:17
lecture 19
handin 9
Wednesday
April 15
Generators and iterators
yield, __iter__, __next__, measuring memory usage
[G] 10.3.1generator.pdf | generator.pptx
 Iterators 38:26
 Generators 30:04
 Memory usage 9:27
lecture 20
handin 10
17Monday
April 20
Modules and packages
from-import-as, __name__, "__main__", heapq
[G] 7.1, 7.2modules.pdf | modules.pptx
 Modules 24:28
 Heapq 8:51
lecture 21
Wednesday
April 22
Working with text
file formats (CSV, Json, XML, Excel), regular expressions (module re), finditer
text.pdf | text.pptx
 File formats 39:47
 Regular expressions 17:59
 Lindenmeyer systems 14:10
lecture 22
18Monday
April 27
Relational data
SQL, SQLite, pandas
pandas.ipynb
[G] 23pandas.pdf | pandas.pptx
 SQLite 29:23
 Pandas 34:23
lecture 23
Wednesday
April 29
Clustering
k-means, scipy.cluster.vq.kmeans, DBSCAN, neural networks
[G] 25clustering.pdf | clustering.pptx
 Clustering 27:25
 DBSCAN 11:11
 Neural networks 15:56
lecture 24
19Monday
May 4
Graphical user interfaces (GUI)
Tkinter, qt
gui.pdf | gui.pptx
 Tkinter 50:37
lecture 25
Wednesday
May 6
Java vs Pythonjava.pdf | java.pptx
 Java 1:03:03
lecture 26
20Monday
May 11
Follow up on course evaluation, discussion of examexam.pdf | exam.pptxlecture 27
Wednesday
May 13
No lecture
Wednesday
May 13
Hollyday (Ascension Day) - no teaching
Friday
May 15
Last day of semester
22Sunday
May 31
Project deadline 23:59
JuneQuestions & answers sessions
25Saturday
June 20
Exam