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.

Exploring Web Technologies (web-104)

In this course, we'll explore advanced technologies and approaches to web development. We'll look at backend-first frameworks like Django, using real-time technologies like websockets, and ways we can serve rich media like video or create interactive experiences with libraries like three.js.

Intro to DevOps and Infrastructure (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 continuous integration / deployment approaches.

Game Development

Learning Programming With 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 ASCII and console-based games 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.

Other Curriculums

Python By Example

This curriculum, inspired by the popular Rust by Example book, is based on pure code and assignments to get you up to speed with Python very quickly. It's best for people who already have a working knowledge of other languages and want to move quickly.