Courses

If a course isn't linked, it means I haven't yet moved the content onto this site. A lot of these are still slide decks.

Want to take a course with me? Click here.

Web Development

Web Programming for Beginners (web-101)

In this course you'll learn basic HTML, CSS, and Javascript by creating several projects. We introduce HTML syntax, show you how to style a page using modern CSS techniques, and finally teach the basic tools you need for programming in JavaScript.

Using Javascript Frameworks (web-102)

In this course, you'll learn about React and associated frameworks for developing websites, such as Redux and Next.js. We introduce React, explain the advantages of using frontend frameworks, and give you the tools to create your own web apps and static web pages.

Backend Web Development (web-103)

In this course, you'll learn the skills you need to write backends (aka servers) for web applications. We cover the basics of networking and database management, and show you how to use common frameworks such as Express.js to create working APIs for the web.

Intro to DevOps (web-105)

In this course, you’ll learn about modern DevOps processes and technologies used to set up, connect, and monitor web apps at a global scale. We introduce Docker, Docker-Compose, and Kubernetes, and show you how to deploy a scaling app. We also discuss some theory and methods used for dealing with deployments.

Game Development

Learning Programming Through Games (games-101)

In this course you'll explore the basics of programming in Python by creating a series of game demos. We teach everything you need to know to create your own basic game projects and we'll finish with a simple self-guided project you'll design yourself.

2D Game Programming (games-102)

In this course we'll teach the basics of developing 2D games with PyGame, including how to handle physics, graphics, and optimisation. We'll also cover game-specific topics like different types of UI. Finally, you'll work with a group to develop a 2D game demo together.

3D Game Programming (games-103)

In this course we'll teach about the basics of using Unity3D to create 3D games and other interactive experiences, building on what you learned about 2D games. We'll cover the differences between 2D and 3D graphics, look at the mathematics involved in 3D game development, and work on a group project to extend the concepts further.

Computer Science

Data Structures & Algorithms (cs-101)

In this popular course you'll learn about and implement common data structures (like lists), algorithms (like binary search), and how to analyse the time and space complexity of both using mathematical methods. We'll also explore the use cases and trade-offs associated with each in the real world.