## General information

This course is taught by Dr. Stefan Güttel. My office hour is Wednesday 14–15 in ATB 2.114. The teaching times are as follows:- Thursday 11–12, lecture in Mansfield Cooper, G.19
- Thursday 15–16, lecture in Mansfield Cooper, G.19
- Friday 9–11, lab class A in the ATB G.105
- Friday 13–15, lab class B in the ATB G.105

## Lab classes and tests

You will only need to attend one of the two lab classes on Friday. Please check your personal timetable to find out which class you should attend. Note that the capactity of the computing cluster is limited and hence**you cannot attend another class than the indicated one.**

**Tests:**There will be 4 one-hour tests, each with 2 functions to be written (so 8 problems in total). These tests take place during the lab classes in weeks 4-8 of the semester. In week 3 we will have a mock test. The first marked test will be in week 4. The results of the 6 best problems count 30% towards the final mark. The remaining 70% are coursework.

## Coursework

During the Easter break, a coursework project will be handed out. The deadline for submission via Blackboard will be**Thursday, 10th of May 2018, at 13:00.**More details to be announced.

## Course materials

### Week 1: Introductions

- Lecture: Welcome and introduction.
- Lecture: Python basics, input/output, variables, operators [HTML] [Slides] [IPYNB]
- Lab class: Getting started with Anaconda and first assignment [PDF]

(Linux and Mac users can install Anaconda in a similar fashion) - Download and run/discuss the guessing game

### Week 2: Loops and conditionals

- Lecture: [HTML] [Slides] [IPYNB]
- Exercises (to be completed before lab): [HTML] [IPYNB] [ZIP Solutions]
- Lab class: [HTML] [IPYNB] [ZIP Solutions]

### Week 3: Functions

- Lecture: [HTML] [Slides] [IPYNB]
- Exercises (to be completed before lab): [HTML] [IPYNB] [ZIP Solutions]
- Lab class: [HTML] [IPYNB] [ZIP Solutions]
- Lab test (mock): [Problems] [Example solution]

### Week 4: Lists

- Lecture: [HTML] [Slides] [IPYNB]
- Exercises (to be completed before lab): [HTML] [IPYNB] [ZIP Solutions]
- Lab class: [HTML] [IPYNB] [ZIP Solutions] [Lab test example solution]

### Week 5: Strings

- Lecture: [HTML] [Slides] [IPYNB]
- Exercises (to be completed before lab): [HTML] [IPYNB] [ZIP Solutions]
- Lab class: [HTML] [IPYNB] [ZIP Solutions] [Lab test example solution]

### Week 6: Control flow

- Lecture: [HTML] [Slides] [IPYNB]
- Exercises (to be completed before lab): [HTML] [IPYNB] [ZIP Solutions]
- Lab class: [HTML] [IPYNB] [ZIP Solutions]

### Week 7: File I/O

- Lecture: [HTML] [Slides] [IPYNB]
- Exercises (to be completed before lab): [HTML] [IPYNB] [ZIP Solutions]
- Lab class: [HTML] [IPYNB] [ZIP Solutions]
- Lab test: [Problems] [Procedure]

### Week 8: Modules

- Lecture: [HTML] [Slides] [IPYNB]
- Exercises (to be completed before lab): [HTML] [IPYNB] [ZIP Solutions]
- Lab class: [HTML] [IPYNB] [ZIP Solutions]

## Further material

- Download Anaconda, the integrated development environment we will be using
- repl.it - an online Python interpreter which I also use during lectures
- A (Free) Primer on Scientific Programming with Python
- A Youtube tutorial on writing a simple Guess a Number game
- Why you should learn programming: TEDxSMU talk