A series of educational exercises, applying programming to medical problems.
Each exercise is designed to function as a standalone exercise.
If you are a learner, select an exercise below based on your interests and experience level. The quickest way to get started is click on the link below, then on 'Open in Colab'.
If you are an educator, feel free to adopt and adapt these exercises based on your requirements.
Exercise | Difficulty | Concepts | Accompanying material | Created by |
---|---|---|---|---|
Setting up Jupyter Notebook | Introductory | Jupyter Notebook, Google Colab, importing modules | Official Tutorial for Google Colab | Dr Chris Lovejoy |
Python Principles | Beginner | Variables, functions, loops, conditionals, data structures | ||
Coding a medical calculator | Beginner | basic Python (input, try/except, if/else/while, print) | YouTube tutorial | Dr Chris Lovejoy |
Predicting hospital non-attendance | Intermediate | cleaning data, feature engineering, simple classification model | YouTube tutorial, blog post | Dr Chris Lovejoy |
Diagnosing breast cancer | Intermediate | model training, performance metrics, confusion matrix | YouTube tutorial | Dr Chris Lovejoy |
Predicting stroke | Intermediate | dealing with class imbalance, F1 score, underfitting and overfitting, | Dr Lawrence Adams | |
Predicting length of stay | Intermediate | logistic regression, odds and odds ratios, dummy variables, confidence intervals | Dr Jess Caterson | |
Diagnosing chest X-rays | Advanced | CNNs (TODO) | ||
(NLP exercise - TBD) | Advanced | NLP | ||
(bioinformatic exercise - TBD) | Advanced | |||
(public health exercise - TBD) | Intermediate |
If you would like to contribute an exercise to this repository, please either (A) submit an Issue or (B) submit a Pull Request of the modifed README, with your exercise added to the table.
The core principles are that all exercises should be:
- Highly descriptive. All code should be explained, with minimal amounts of assumed knowledge. It should be easy to understand and complete the notebook with no reference to external material.
- Interactive. Users should be prompted to modify and complete code, or experiment on their own. These are not purely 'demo' notebooks. Aspirationally, users should not be able to run front-to-back before any user modification (although not essential).
- Easy to run. It should be easy and intuitive to run the notebooks both on Google Colab or on local Jupyter Notebooks.
Here is a simple template notebook and here is an example of a well-designed exercise.
If there are significant amounts of code for the user to write, then template 'solution' code can be provided in the 'template_code' folder.