Courses

At the University of Bristol, I lead the research software engineering training. We provide free courses to large part of the University as well as paid courses for some masters and doctoral training courses.

Python

Beginning Python
An introduction to Python for people who have never programmed before. There are no prerequisites except a laptop with Python installed.
Intermediate Python
Following on from Beginning Python, this primarily introduces functions, module and classes. The main purpose is to understand how to structure code to make it more maintainable and shareable.
Parallel Python
Starting with functional programming, it then goes on to show how Python's multiprocessing works. This course requires Intermediate Python.

Data analysis

Introduction to data analysis in Python
Introducing basic data analysis tools in Python it teaches Jupyter Notebooks, pandas and matplotlib. It only requires Beginning Python.
Applied data analysis in Python
The course will introduce some techniques for analysing data in Python. It will teach some features of scipy and scikit-learn for discovering trends and details of your data and how to display your results using Python's plotting tools.
Prerequisites: Comfortable with Pandas and numpy as taught in the Introduction to Data Analysis in Python course.
Introduction to Deep Learning
This 3 hour lecture covers the basics of neural networks up to convolutional neural nets for handwriting recognition. It does not assume much knowledge of Python

Software engineering

Best practices in software engineering
This course will introduce you to some of the more important concepts for professional software development, specifically documentation, unit testing and licensing. The Python language will be used throughout this course but the concepts apply to all languages.
Prerequisites: Comfortable with Python up to the level as taught in the Intermediate Python course, particularly confidence with writing functions.
IDEs and debugging
This course will introduce you to the tools that make developing Python code easier. With a choice of PyCharm or VS Code, you will learn about code completion, linting, debugging and running tests.
Prerequisites: Comfortable with Python up to the level as taught in the Intermediate Python course, particularly confidence with writing functions. An understanding of testing would be useful too but not a requirement.
Version control with Git
The basics of using Git

Other

There are many more courses which we also sometimes teach, written by Christopher Woods on his website

Advice for teachers

All of our training material is openly licensed (generally CC-BY) and you are more than welcome to use it in any teaching you are doing.

Each course is generally taught as a three hour workshop (with at least one 10-15 minute break in the middle). Generally we book a seminar room with a projector and ask the students to bring their own laptop with any necessary software installed.

The courses are self-paced so the students will work through the material as they see fit. The sessions always start with some introduction from the lead trainer. Then throughout the session, the trainer will go through various key points or address common questions from the room. We try to keep the time talking to the room less than a quarter of the total time of the workshop to allow the students time to go through the exercises.

There is in general more material in each course that the average student will get through in the three hours as there is always a wide spread of abilities. Make sure to point out the material will remain online and ancourage them to go through it in their own time after the session. This is another reason why we encourage bringing laptops as they can more easily carry on afterwards.

During the session while the students are working, the trainers will go around the class, answering questions and helping out. We tend to have at least one trainer for every 15 students.

Dependencies

If you're intested in a detailed view of how the courses depend on each other then take a look at the graph below. Dashed arrows represent a soft requirement, i.e. "IDEs and Debugging" covers running tests in your IDE (covered in "Best practices in software engineering") but you don't need to understand much of it to get the IDE bit. Dashed ovals represent courses that haven't been written yet.

We've never insisted that students must have been to the prerequisites, simply that it's a suggestion of what order you should do them in.