This is an archived version of the course. Please find the latest version of the course on the main webpage.

📌 Josiah's note

Welcome to all future MSc AI, MRes AI&ML, and AI4Health CDT students! My team is looking forward to meeting you this autumn!

To get a head start on your programming skills before you officially start your degree, please go through at least Core Lessons 1 to 5.

Each lesson may take between 2 to 4 hours. You do not have to complete a lesson in a single sitting. It might even be better to spread a lesson out over several days if you are not in a hurry!

More lessons will be posted in the coming months. Feel free to go beyond Lesson 5 if you have time. The more lessons you cover before you start, the fewer lessons you have to rush to complete in the first two weeks! You will have a very intense first few weeks otherwise! (Not to scare you, but you will be working on your first programming coursework assignment in the second week!)

Feel free to send me an email at josiah (dot) wang -[at]- if you detect any mistakes or have any feedback!


  • [27/09/2022]: Scikit-learn and PyTorch lessons released.
  • [16/08/2022]: Advanced Python and Numerical/Scientific Packages lessons released. You can go through either one first (or concurrently!)
  • [27/07/2022]: Core lesson 10 released.
  • [22/07/2022]: Core lesson 9 released.
  • [14/07/2022]: Core lessons 7 and 8 released.
  • [08/07/2022]: Core lesson 6 released.
  • [06/06/2022]: Core lessons 1-5 released.

Guided Learning Materials

These learning materials are the centrepiece of our course.

You should actively engage in the materials, and be constantly thinking, doing and applying your knowledge. As you will see, these materials are not just for passive consumption!

The materials cover a lot of breadth - more than simply Python and programming. So you should go through the materials even if you already have prior programming experience.

I have designed the materials in a way that will help you get to grips to programming in the shortest time possible. This will allow you to apply your programming skills to other courses in your degree, many of which will involve programming.

There is no set schedule for completing the materials. The course is designed to be self-paced to cater for the different prior knowledge, programming experience and needs among your cohort. The main constraint is the timings of the coursework assignments for this course and for other courses in your degree.

The rough time estimates to complete each chapter/lesson are provided merely for your convenience. DO NOT WORRY if you take much longer than the given estimate (in fact, you should take your time to digest the materials). Adjust the subsequent estimates accordingly based on your own speed (no AI to adjust this for you, unfortunately!)

📁 Core

You should start here. These core lessons introduce the fundamentals of programming, Python and software engineering. The lessons progress incrementally, so should be completed in sequence.

📁 Preparation for Advanced Topics

Please go through this lesson before working on any of the more advanced topics below! It will introduce the 'proper' way to set up your Python environment to install external packages.

📁 Advanced Python

These are more advanced programming and Python topics that I did not cover in the Core Lessons. You should have completed all Core Lessons for some of these lessons to make sense. These lessons are independent of each other and can be done in any sequence.

📁 Numerical and Scientific Packages

This group of lessons concern using various external Python packages for numeric and scientific computations. You will need to have completed at least Core Lesson 9 for some of these lessons to make sense. These lessons should be completed in sequence (since Pandas uses NumPy).

📁 Machine Learning Packages

These lessons cover some external Machine Learning packages. For some of these lessons to make sense, you will need to have completed all Core Lessons, NumPy, and optionally Pandas.

These lessons will also assume that you already have the necessary Machine Learning theoretical background. So you might want to wait until you have covered these in your Introduction to Machine Learning module before going through these materials.

📁 Other Topics

Here are some other topics that might be useful for your degree.

📁 Index

Quick links to access the materials buried within the lessons.

💡 Sample solutions for the applied exercises can be found on this gitlab repo. These are sample solutions to use as a reference. They are in no way "definitive" solutions.

In any case, I trust that you will try the exercises yourselves first, and not just read the solutions without trying!