Introduction to Programming with Scientific Applications

Aarhus University, Department of Computer Science

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
5Monday January 30
Semester starts
Introduction to Python
Slidesintroduction.pdf | pptx
Literature[G] 1, 2.1
Exerciseslecture 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()
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
Friday February 3
Exercise classes start
6Monday February 6
Basic operations
None, bool, basic operations, strings
Slidesoperations.pdf | pptx
Videos Operations 1:02:04
Literature[G] 2.4, 5.5
Exerciseslecture 3
Wednesday February 8
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 13
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 15
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 20
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 22
Recursion
symbol table, stack frames
Slidesrecursion.pdf | pptx
Videos Recursion 46:29
Literature[G] 6.1, 6.2
Exerciseslecture 8
handin 4
9Monday February 27
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 March 1
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 6
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 8
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 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
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 15
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 20
Decorators
@, @property, @functools.total_ordering, dataclasses
Slidesdecorators.pdf | pptx
Videos Decorators 54:37
Exerciseslecture 15
Wednesday March 22
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 27
Visualization and optimization
Matplotlib, Jupyter, scipy.optimize.minimize
Slidesoptimization.pdf | pptx
Videos Matplotlib 1:03:40
 Jupyter 26:35
 SciPy minimize 29:47
Literature[G] 13
Exerciseslecture 17
Wednesday March 29
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
14Monday April 3 - Monday April 10
Easter break - no teaching
15Tuesday April 11
No exercise classes
Wednesday April 12
Linear programming
scipy.optimize.linprog
pagerank.ipynb
max-flow.ipynb
No exercise classes
Slideslinear_programming.pdf | pptx
Videos Linprog 6:19
 Maxflow 10:05
 Pagerank 22:17
Exerciseslecture 19
handin 9
16Monday April 17
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 19
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 24
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 26
Relational data
SQL, SQLite, pandas
pandas.ipynb
Slidespandas.pdf | pptx
Videos SQLite 29:23
 Pandas 34:23
Literature[G] 23
Exerciseslecture 23
Friday April 28
Kapsejladsen - no exercise classes
18Monday May 1
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 3
Graphical user interfaces (GUI)
Tkinter, qt
Slidesgui.pdf | pptx
Videos Tkinter 50:37
Exerciseslecture 25
Friday May 5
Holiday (General Prayer Day) - no teaching
19Monday May 8
Java vs Python
Slidesjava.pdf | pptx
Videos Java 1:03:03
Exerciseslecture 26
Wednesday May 10
No lecture
20Monday May 15
Follow up on course evaluation, discussion of exam
Slidesexam.pdf | pptx
Exerciseslecture 27
Wednesday May 17
No lecture
Thursday May 18
Holiday (Ascension Day) - no teaching
Friday May 19
Last day of semester
22Wednesday May 31
Project deadline 23:59
June
Q & A sessions (TAs and Lecturer)
June
Exam