Introduction to Programming with Scientific Applications

Aarhus University, Department of Computer Science

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
5Monday January 29
Semester starts
Introduction to Python
Slidesintroduction.pdf | pptx
Literature[G] 1, 2.1
Exerciseslecture 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()
Slidesbasics.pdf | pptx
control.pdf | pptx
Videos Basics 55:27
 Control 32:09
Literature[G] 2.2, 2.3, 2.5, 2.6
Exerciseslecture 2
handin 1
6Monday February 5
Basic operations
None, bool, basic operations, strings
Exercise classes start
Slidesoperations.pdf | pptx
Videos Operations 1:02:04
Literature[G] 2.4, 5.5
Exerciseslecture 3
Wednesday February 7
Lists
Syntax, operations, copy.deepcopy
Control structures
while-else, for-loops, for-break-continue-else, range
Slideslists.pdf | pptx
Videos Lists 1:00:04
Literature[G] 5.2, 5.3, 5.4, 5.5
Exerciseslecture 4
handin 2
7Monday February 12
Tuples and lists
tuples, lists, mutability, list comprehension, for-if, for-for, list(), any(), all(), enumerate(), zip()
Slidestuple.pdf | pptx
Videos Tuples 50:13
 Orientation test 11:38
Literature[G] 5.1, 5.3, 5.5
Exerciseslecture 5
Wednesday February 14
Dictionaries and sets
dict, set, frozenset, dictionary comprehension, set comprehension, collections, deque, namedtuple, Counter
Slidesdictionaries.pdf | pptx
Videos Dictionaries 49:51
 Handins 3-4 5:11
Literature[G] 5.6, 5.7, 5.8, 12.3
Exerciseslecture 6
handin 3
8Monday February 19
Functions
functions, return, scoping, arguments, keyword arguments, *, **, global variables
Slidesfunctions.pdf | pptx
Videos Functions 58:04
Literature[G] 4, 6.3
Exerciseslecture 7
Wednesday February 21
Recursion
symbol table, stack frames
Slidesrecursion.pdf | pptx
Videos Recursion 46:29
Literature[G] 6.1, 6.2
Exerciseslecture 8
handin 4
9Monday February 26
Recursion and iteration
algorithm examples
Slidesrecursion_iteration.pdf | pptx
Videos Recursion and iteration 57:43
Literature[G] 3, 12.1, 12.2
Exerciseslecture 9
handin 5
Wednesday February 28
Functions as objects
lambda, higher-order functions, map, filter, reduce
Slideslambda.pdf | pptx
Videos Lambda 44:05
Literature[G] 4.4, 12.2.2
Exerciseslecture 10
10Monday March 4
Object oriented programming
classes, objects, self, construction, encapsulation
Slidesclasses.pdf | pptx
Videos Classes 1:11:42
Literature[G] 10.1, 10.3.0
Exerciseslecture 11
Wednesday March 6
Class hierarchies
inheritance, method overriding, super, multiple inheritance
Slideshierarchies.pdf | pptx
Videos Class hierarchies 44:20
Literature[G] 10.2
Exerciseslecture 12
handin 6
11Monday 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
Slidesexceptions.pdf | pptx
Videos Exceptions 28:51
 Files 20:13
 Sudoku 15:45
Literature[G] 7.3, 9.1, 9.2
Exerciseslecture 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
Slidestesting.pdf | pptx
Videos Testing 48:44
 Mypy 13:32
Literature[G] 4.2, 8, 9.3
Exerciseslecture 14
handin 7
12Monday March 18
Decorators
@, @property, @functools.total_ordering, dataclasses
Slidesdecorators.pdf | pptx
Videos Decorators 54:37
Exerciseslecture 15
Wednesday March 20
Dynamic programming
memoization, decorator memoized/functools.cache, systematic subproblem computation
Slidesdynamic_programming.pdf | pptx
Videos Dynamic programming 56:46
 Coding competitions 10:47
Literature[G] 14.1, 15.1, 15.2
Exerciseslecture 16
handin 8
13Monday March 25 - Monday April 1
Easter break - no teaching
14Tuesday April 2
No exercise classes
Wednesday April 3
Visualization and optimization
Matplotlib, Jupyter, scipy.optimize.minimize
No exercise classes
Slidesoptimization.pdf | pptx
Videos Matplotlib 1:03:40
 Jupyter 26:35
 SciPy minimize 29:47
Literature[G] 13
Exerciseslecture 17
15Monday April 8
Multi-dimensional data
NumPy, matrix multiplication, @, numpy.linalg.solve, numpy.polyfit
Slidesnumpy.pdf | pptx
Videos Numpy 42:09
 Polyfit 6:12
 Numpy matplotlib 15:27
Literature[G] 13.2
Exerciseslecture 18
Wednesday April 10
Linear programming
scipy.optimize.linprog
pagerank.ipynb
max-flow.ipynb
Slideslinear_programming.pdf | pptx
Videos Linprog 6:19
 Maxflow 10:05
 Pagerank 22:17
Exerciseslecture 19
handin 9
16Monday April 15
Generators and iterators
yield, __iter__, __next__, measuring memory usage
Slidesgenerator.pdf | pptx
Videos Iterators 38:26
 Generators 30:04
 Memory usage 9:27
Literature[G] 10.3.1
Exerciseslecture 20
handin 10
Wednesday April 17
Modules and packages
from-import-as, __name__, "__main__", heapq
Slidesmodules.pdf | pptx
Videos Modules 24:28
 Heapq 8:51
Literature[G] 7.1, 7.2
Exerciseslecture 21
17Monday April 22
Working with text
file formats (CSV, Json, XML, Excel), regular expressions (module re), finditer
Slidestext.pdf | pptx
Videos File formats 39:47
 Regular expressions 17:59
 Lindenmeyer systems 14:10
Exerciseslecture 22
Wednesday April 24
Relational data
SQL, SQLite, pandas
pandas.ipynb
Slidespandas.pdf | pptx
Videos SQLite 29:23
 Pandas 34:23
Literature[G] 23
Exerciseslecture 23
18Monday April 29
Clustering
k-means, scipy.cluster.vq.kmeans, DBSCAN, neural networks
Slidesclustering.pdf | pptx
Videos Clustering 27:25
 DBSCAN 11:11
 Neural networks 15:56
Literature[G] 25
Exerciseslecture 24
Wednesday May 1
Graphical user interfaces (GUI)
Tkinter, qt
Slidesgui.pdf | pptx
Videos Tkinter 50:37
Exerciseslecture 25
Friday May 3
Kapsejladsen - no study café
19Monday May 6
Java vs Python
Slidesjava.pdf | pptx
Videos Java 1:03:03
Exerciseslecture 26
Wednesday May 8
No lecture
Thursday May 9
Holiday (Ascension Day) - no teaching
20Monday May 13
Follow up on course evaluation, discussion of exam
Slidesexam.pdf | pptx
Exerciseslecture 27
Wednesday May 15
No lecture
Friday May 17
Last day of semester
22Friday May 31
Project deadline 23:59
June
Questions & Answers sessions
June
Exam