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