Course plan 2024
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 29 | |
Semester starts Introduction to Python | ||
Slides | introduction.pdf | pptx | |
Literature | [G] 1, 2.1 | |
Exercises | lecture 1 | |
Wednesday January 31 | ||
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 | ![]() ![]() | |
Literature | [G] 2.2, 2.3, 2.5, 2.6 | |
Exercises | lecture 2 handin 1 | |
6 | Monday February 5 | |
Basic operations None, bool, basic operations, strings Exercise classes start | ||
Slides | operations.pdf | pptx | |
Videos | ![]() | |
Literature | [G] 2.4, 5.5 | |
Exercises | lecture 3 | |
Wednesday February 7 | ||
Lists Syntax, operations, copy.deepcopy Control structures while-else, for-loops, for-break-continue-else, range | ||
Slides | lists.pdf | pptx | |
Videos | ![]() | |
Literature | [G] 5.2, 5.3, 5.4, 5.5 | |
Exercises | lecture 4 handin 2 | |
7 | Monday February 12 | |
Tuples and lists tuples, lists, mutability, list comprehension, for-if, for-for, list(), any(), all(), enumerate(), zip() | ||
Slides | tuple.pdf | pptx | |
Videos | ![]() ![]() | |
Literature | [G] 5.1, 5.3, 5.5 | |
Exercises | lecture 5 | |
Wednesday February 14 | ||
Dictionaries and sets dict, set, frozenset, dictionary comprehension, set comprehension, collections, deque, namedtuple, Counter | ||
Slides | dictionaries.pdf | pptx | |
Videos | ![]() ![]() | |
Literature | [G] 5.6, 5.7, 5.8, 12.3 | |
Exercises | lecture 6 handin 3 | |
8 | Monday February 19 | |
Functions functions, return, scoping, arguments, keyword arguments, *, **, global variables | ||
Slides | functions.pdf | pptx | |
Videos | ![]() | |
Literature | [G] 4, 6.3 | |
Exercises | lecture 7 | |
Wednesday February 21 | ||
Recursion symbol table, stack frames | ||
Slides | recursion.pdf | pptx | |
Videos | ![]() | |
Literature | [G] 6.1, 6.2 | |
Exercises | lecture 8 handin 4 | |
9 | Monday February 26 | |
Recursion and iteration algorithm examples | ||
Slides | recursion_iteration.pdf | pptx | |
Videos | ![]() | |
Literature | [G] 3, 12.1, 12.2 | |
Exercises | lecture 9 handin 5 | |
Wednesday February 28 | ||
Functions as objects lambda, higher-order functions, map, filter, reduce | ||
Slides | lambda.pdf | pptx | |
Videos | ![]() | |
Literature | [G] 4.4, 12.2.2 | |
Exercises | lecture 10 | |
10 | Monday March 4 | |
Object oriented programming classes, objects, self, construction, encapsulation | ||
Slides | classes.pdf | pptx | |
Videos | ![]() | |
Literature | [G] 10.1, 10.3.0 | |
Exercises | lecture 11 | |
Wednesday March 6 | ||
Class hierarchies inheritance, method overriding, super, multiple inheritance | ||
Slides | hierarchies.pdf | pptx | |
Videos | ![]() | |
Literature | [G] 10.2 | |
Exercises | lecture 12 handin 6 | |
11 | Monday March 11 | |
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 | ![]() ![]() ![]() | |
Literature | [G] 7.3, 9.1, 9.2 | |
Exercises | lecture 13 | |
Wednesday March 13 | ||
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 | ![]() ![]() | |
Literature | [G] 4.2, 8, 9.3 | |
Exercises | lecture 14 handin 7 | |
12 | Monday March 18 | |
Decorators @, @property, @functools.total_ordering, dataclasses | ||
Slides | decorators.pdf | pptx | |
Videos | ![]() | |
Exercises | lecture 15 | |
Wednesday March 20 | ||
Dynamic programming memoization, decorator memoized/functools.cache, systematic subproblem computation | ||
Slides | dynamic_programming.pdf | pptx | |
Videos | ![]() ![]() | |
Literature | [G] 14.1, 15.1, 15.2 | |
Exercises | lecture 16 handin 8 | |
13 | Monday March 25 - Monday April 1 | |
Easter break - no teaching | ||
14 | Tuesday April 2 | |
No exercise classes | ||
Wednesday April 3 | ||
Visualization and optimization Matplotlib, Jupyter, scipy.optimize.minimize No exercise classes | ||
Slides | optimization.pdf | pptx | |
Videos | ![]() ![]() ![]() | |
Literature | [G] 13 | |
Exercises | lecture 17 | |
15 | Monday April 8 | |
Multi-dimensional data NumPy, matrix multiplication, @, numpy.linalg.solve, numpy.polyfit | ||
Slides | numpy.pdf | pptx | |
Videos | ![]() ![]() ![]() | |
Literature | [G] 13.2 | |
Exercises | lecture 18 | |
Wednesday April 10 | ||
Linear programming scipy.optimize.linprog pagerank.ipynb max-flow.ipynb | ||
Slides | linear_programming.pdf | pptx | |
Videos | ![]() ![]() ![]() | |
Exercises | lecture 19 handin 9 | |
16 | Monday April 15 | |
Generators and iterators yield, __iter__, __next__, measuring memory usage | ||
Slides | generator.pdf | pptx | |
Videos | ![]() ![]() ![]() | |
Literature | [G] 10.3.1 | |
Exercises | lecture 20 handin 10 | |
Wednesday April 17 | ||
Modules and packages from-import-as, __name__, "__main__", heapq | ||
Slides | modules.pdf | pptx | |
Videos | ![]() ![]() | |
Literature | [G] 7.1, 7.2 | |
Exercises | lecture 21 | |
17 | Monday April 22 | |
Working with text file formats (CSV, Json, XML, Excel), regular expressions (module re), finditer | ||
Slides | text.pdf | pptx | |
Videos | ![]() ![]() ![]() | |
Exercises | lecture 22 | |
Wednesday April 24 | ||
Relational data SQL, SQLite, pandas pandas.ipynb | ||
Slides | pandas.pdf | pptx | |
Videos | ![]() ![]() | |
Literature | [G] 23 | |
Exercises | lecture 23 | |
18 | Monday April 29 | |
Clustering k-means, scipy.cluster.vq.kmeans, DBSCAN, neural networks | ||
Slides | clustering.pdf | pptx | |
Videos | ![]() ![]() ![]() | |
Literature | [G] 25 | |
Exercises | lecture 24 | |
Wednesday May 1 | ||
Graphical user interfaces (GUI) Tkinter, qt | ||
Slides | gui.pdf | pptx | |
Videos | ![]() | |
Exercises | lecture 25 | |
Friday May 3 | ||
Kapsejladsen - no study café | ||
19 | Monday May 6 | |
Java vs Python | ||
Slides | java.pdf | pptx | |
Videos | ![]() | |
Exercises | lecture 26 | |
Wednesday May 8 | ||
No lecture | ||
Thursday May 9 | ||
Holiday (Ascension Day) - no teaching | ||
20 | Monday May 13 | |
Follow up on course evaluation, discussion of exam | ||
Slides | exam.pdf | pptx | |
Exercises | lecture 27 | |
Wednesday May 15 | ||
No lecture | ||
Friday May 17 | ||
Last day of semester | ||
22 | Friday May 31 | |
Project deadline 23:59 | ||
June | ||
Questions & Answers sessions | ||
June | ||
Exam |