Course plan
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 in the menu under "Handins".
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 here all-slides.pdf.
Below [G] refers to the textbook by John V. Guttag, Introduction to Computation and Programming Using Python - With Application Computational Modeling and Understanding Data, 3rd Edition. 472 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 30 | |
Semester starts Introduction to Python | ||
Slides | introduction.pdf | pptx | |
Literature | [G] 1, 2.1 | |
Exercises | lecture 1 | |
Wednesday February 1 | ||
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 | |
Friday February 3 | ||
Exercise classes start | ||
6 | Monday February 6 | |
Basic operations None, bool, basic operations, strings | ||
Slides | operations.pdf | pptx | |
Videos | Operations 1:02:04 | |
Literature | [G] 2.4, 5.5 | |
Exercises | lecture 3 | |
Wednesday February 8 | ||
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 13 | |
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 15 | ||
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 20 | |
Functions functions, return, scoping, arguments, keyword arguments, *, **, global variables | ||
Slides | functions.pdf | pptx | |
Videos | Functions 58:04 | |
Literature | [G] 4, 6.3 | |
Exercises | lecture 7 | |
Wednesday February 22 | ||
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 27 | |
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 March 1 | ||
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 6 | |
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 8 | ||
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 13 | |
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 15 | ||
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 20 | |
Decorators @, @property, @functools.total_ordering, dataclasses | ||
Slides | decorators.pdf | pptx | |
Videos | Decorators 54:37 | |
Exercises | lecture 15 | |
Wednesday March 22 | ||
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 27 | |
Visualization and optimization Matplotlib, Jupyter, scipy.optimize.minimize | ||
Slides | optimization.pdf | pptx | |
Videos | Matplotlib 1:03:40 Jupyter 26:35 SciPy minimize 29:47 | |
Literature | [G] 13 | |
Exercises | lecture 17 | |
Wednesday March 29 | ||
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 April 3 - Monday April 10 | |
Easter break - no teaching | ||
15 | Tuesday April 11 | |
No exercise classes | ||
Wednesday April 12 | ||
Linear programming scipy.optimize.linprog pagerank.ipynb max-flow.ipynb No exercise classes | ||
Slides | linear_programming.pdf | pptx | |
Videos | Linprog 6:19 Maxflow 10:05 Pagerank 22:17 | |
Exercises | lecture 19 handin 9 | |
16 | Monday April 17 | |
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 | |
Wednesday April 19 | ||
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 | |
17 | Monday April 24 | |
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 | |
Wednesday April 26 | ||
Relational data SQL, SQLite, pandas pandas.ipynb | ||
Slides | pandas.pdf | pptx | |
Videos | SQLite 29:23 Pandas 34:23 | |
Literature | [G] 23 | |
Exercises | lecture 23 | |
Friday April 28 | ||
Kapsejladsen - no exercise classes | ||
18 | Monday May 1 | |
Clustering k-means, scipy.cluster.vq.kmeans, DBSCAN, neural networks | ||
Slides | clustering.pdf | pptx | |
Videos | Clustering 27:25 DBSCAN 11:11 Neural networks 15:56 | |
Literature | [G] 25 | |
Exercises | lecture 24 | |
Wednesday May 3 | ||
Graphical user interfaces (GUI) Tkinter, qt | ||
Slides | gui.pdf | pptx | |
Videos | Tkinter 50:37 | |
Exercises | lecture 25 | |
Friday May 5 | ||
Holiday (General Prayer Day) - no teaching | ||
19 | Monday May 8 | |
Java vs Python | ||
Slides | java.pdf | pptx | |
Videos | Java 1:03:03 | |
Exercises | lecture 26 | |
Wednesday May 10 | ||
No lecture | ||
20 | Monday May 15 | |
Follow up on course evaluation, discussion of exam | ||
Slides | exam.pdf | pptx | |
Exercises | lecture 27 | |
Wednesday May 17 | ||
No lecture | ||
Thursday May 18 | ||
Holiday (Ascension Day) - no teaching | ||
Friday May 19 | ||
Last day of semester | ||
22 | Wednesday May 31 | |
Project deadline 23:59 | ||
June | ||
Q & A sessions (TAs and Lecturer) | ||
June | ||
Exam |