---
# System prepended metadata

title: High Performance Python design notes
tags: [research-computing]

---

---
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.