Build on the intro unit
Reinforce basic programming
Think about larger codebases
Work collaboratively
Use version control (git/github)
Videos and other materials
1hr live session
Dropin session
2hr lab
| Week | Type | Activity | Topic | 
|---|---|---|---|
| 13 | Term | Welcome | Terminals | 
| 14 | Term | worksheet | Git and github | 
| 15 | Term | worksheet | |
| 16 | Term | worksheet | |
| 17 | Term | worksheet | |
| 18 | Consolidation | - | |
| 19 | Term | worksheet | |
| 20 | Term | Assignment released | |
| 21 | Term | Group meetings | |
| 22 | Term | Group meetings | |
| E1 | Easter | - | |
| E2 | Easter | - | |
| E3 | Easter | - | |
| 23 | Term | DEADLINE | |
| 24 | Term | No class | 
Single coursework
Deadline Friday week 24
Group coursework (groups of 4-5)
Different tasks within a shared codebase (using github)
Individual short report
More details later
High level language
Intends not to be hard to learn
Suitable for scientific/engineering work
Used heavily in data science etc
Right tool for the job in student projects

Created by Guido van Rossum (BDFL) in the early 90s
Derived from the C family
Entirely open source from the outset
Very popular after 30 years
See discussions
Named after Monty Python
Quick demo...
Understand the $ convention for input/output. This you should type in the terminal:
$ ls
myscript.py
$ python myscript.py
stuff These are Python commands (note >>>) and you should type them into python:
>>> x = 1 + 1
>>> x
2 CLI: Command Line Interface
GUI: Graphical User Interface
Learning terminal and CLI is not optional here!
Lower level way of interacting with computers
More efficient
Reproducible
Composable
Automatable
Longer demo...
$ wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
$ tar -xzf Python-3.8.1.tgz
$ cd Python-3.8.1
$ ./configure
$ make
$ make install We'll talk about this more later but here's CPython:
https://github.com/python/cpython
Make sure to meet your TA on Friday!