Below [G] refers to the textbook by John V. Guttag, Introduction to Computation and Programming Using Python With Application to Understanding Data, 2nd Edition. 472 pages. MIT Press, 2016.
Code used on slides and used for making the figures on the slides can be found in this folder.
Week | Date | Topic | Litterature | Slides & Video | Exercises | |
5 | Monday | 27/1 | Semester starts | |||
Wednesday | 29/1 | Introduction to Python | [G] 1 | introduction.pdf | lecture 1 | |
Friday | 31/2 |
Python basics variables, int, float, str, type conversion, assignment, print(), help(), type() Control structures if-elif-else, while-break-continue, input() |
[G] 2.1, 2.2, 2.4 |
basics.pdf control.pdf |
lecture 2 handin 1 |
|
6 | Monday | 3/2 | Exercise classes start | |||
Wednesday | 5/2 |
Basic operations None, bool, basic operations, strings |
[G] 2.3 | operations.pdf | lecture 3 | |
Friday | 7/2 |
Lists Syntax, operations, copy.deepcopy Control structures while-else, for-loops, for-break-continue-else, range |
[G] 3.2, 5.2, 5.5 | lists.pdf | lecture 4 handin 2 |
|
7 | Wednesday | 12/2 |
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 | lecture 5 |
Friday | 14/2 | Dictionaries and sets dict, set, frozenset, dictionary comprehension, set comprehension, collections, deque, namedtuple, Counter |
[G] 5.6 | dictionaries.pdf | lecture 6 handin 3 |
|
8 | Wednesday | 19/2 | Functions functions, return, scoping, arguments, keyword arguments, *, **, global variables |
[G] 4.1, 4.4 | functions.pdf | lecture 7 |
Friday | 21/2 | Recursion symbol table, stack frames |
[G] 4.3 | recursion.pdf | lecture 8 handin 4 |
|
9 | Wednesday | 26/2 | Recursion and iteration algorithm examples |
[G] 3.1, 3.3, 3.4, 3.5, 10.1 | recursion_iteration.pdf | lecture 9 handin 5 |
Friday | 28/2 | Functions as objects lambda, higher-order functions, map, filter, reduce |
[G] 5.4, 10.2 | lambda.pdf | lecture 10 | |
10 | Wednesday | 4/3 | Object oriented programming classes, objects, self, construction, encapsulation |
[G] 8.1, 8.3.0 | classes.pdf | lecture 11 |
Friday | 6/3 | Class hierarchies inheritance, method overriding, super, multiple inheritance |
[G] 8.2 | hierarchies.pdf | lecture 12 handin 6 |
|
11 | Wednesday | 11/3 | Exceptions and file input/output try-raise-except-finally, Exception, control flow, file open/read/write, sys.stdin, sys.stdout, sys.stderr, context manager |
[G] 7.1, 7.2, 4.6 | exceptions.pdf | lecture 13 |
Friday | 13/3 | Documentation, testing and debugging docstring, defensive programming, assert, test driven developement, assertions, testing, unittest, doctest, debugger, static type checking, mypy |
[G] 4.2, 7.3, 6.1, 6.2 |
testing.pdf Testing 48:44 mypy 13:32 |
lecture 14 handin 7 |
|
12 | Wednesday | 18/3 | Decorators @, @property, @functools.total_ordering, dataclasses |
decorators.pdf Peerwise 4:04 Decorators 54:37 |
lecture 15 | |
Friday | 20/3 |
Dynamic programming memoization, decorator memoized, systematic subproblem computation |
[G] 13.1, 13.2 | dynamic_programming.pdf Dynamic programming 56:46 Coding competitions 10:47 |
lecture 16 handin 8 |
|
13 | Wednesday | 25/3 | Visualization and optimization Matplotlib, Jupyter, scipy.optimize.minimize |
[G] 11 | optimization.pdf Matplotlib 1:03:40 Jupyter 26:35 SciPy minimize 29:47 |
lecture 17 |
Friday | 27/3 | Multi-dimensional data NumPy, matrix multiplication, @, numpy.linalg.solve, numpy.polyfit |
[G] 18 |
numpy.pdf numpy 42:09 polyfit 6:12 numpy matplotlib 15:27 |
lecture 18 | |
14 | Wednesday | 1/4 | Linear programming scipy.optimize.linprog |
linear_programming.pdf pagerank.ipynb max-flow.ipynb linprog 6:19 maxflow 10:05 pagerank 22:17 |
lecture 19 handin 9 |
|
Friday | 3/4 | Generators and iterators yield, __iter__, __next__, measuring memory usage |
[G] 8.3.1 | generator.pdf Iterators 38:26 Generators 30:04 Memory usage 9:27 |
lecture 20 handin 10 |
|
15 | Saturday-Monday | 4/4- 13/4 |
Easter break - no teaching | |||
16 | Tuesday | 14/4 | No exercise class | |||
Wednesday | 15/4 | Modules and packages from-import-as, __name__, "__main__", heapq No exercise class |
[G] 4.5 | modules.pdf modules 24:28 heapq 8:51 |
lecture 21 | |
Thursday | 16/4 | No exercise class | ||||
Friday | 17/4 | Working with text file formats (CSV, Json, XML, Excel), regular expressions (module re), finditer |
text.pdf File formats 39:47 Regular expressions 17:59 Lindenmeyer systems 14:10 |
lecture 22 | ||
17 | Wednesday | 22/4 | Relational data SQLite, pandas |
pandas.pdf pandas.ipypdf SQLite 29:23 Pandas 34:23 |
lecture 23 | |
Friday | 24/4 | Clustering k-means, scipy.cluster.vq.kmeans, neural networks |
[G] 23 | clustering.pdf Clustering 27:25 Neural networks 15:56 |
lecture 24 |
|
18 | Wednesday | 29/4 | Graphical user interfaces (GUI) Tkinter, qt |
gui.pdf Tkinter 50:37 |
lecture 25 |
|
Friday | 1/5 | Java vs Python | java.pdf Java 1:03:03 |
lecture 26 | ||
19 | Wednesday | 6/5 | No lecture | |||
Friday | 8/5 | Holiday (General Prayer Day) - no teaching | ||||
20 | Wednesday | 13/5 | Follow up on course evaluation, discussion of exam | final_lecture.pdf | lecture 27 | |
Friday | 15/5 | No lecture Last day of semester |
||||
21 | Sunday | 31/5 | Project deadline 23:59 | |||
22-26 | June | Q & A sessions (TAs and Lecturer) | ||||
Multiple choice exam |