---
tags: research-computing
---
# High Performance Python design notes
Reverse instructional design/ backwards design
https://arc.leeds.ac.uk/training/courses/swd6/
## Objectives
```
* What do we want our learners to know at the end of our workshop?
* What skills do we want our learners to be able to apply at the end of our workshop?
```
At the end of this workshop, learners will be able to:
* understand how to use cProfile and line_profiler to profile Python code and identify bottlenecks
* understand how to ensure they are using the most appropriate algorithm and package to solve a particular problem
* improve the execution time of selected Python code using:
* numba
* GPU offloading techniques
* parallelisation and vectorisation approaches
* understand when to use each technique
## How do we know the learning has been successful (assessment)?
```
* M/C tests really good for rapid feedback
* Much of this involves setting some learning exercices alongside the content (eg. being able to identify problems in a profiling exercise)
```
Assessment at three levels:
* A v. quick m/c check after each new concept (evey 10 mins or so )
* a 10 min activity once or twice an hour (solving a single task problem) eg. a profiling exercise
* a couple of 'capststone' exercises- applying a few techiques
## Learning activities
* Exercises that you get students to do inbetween your talking
* Talk for < 50% of the time!
* Learning activities and assessments should take up the remainder of the time
## Learning content (lesson notes/ content)
* Very important
* Factual content that forms the backbone of knowledge
* It's not necessarily "what" you teach.