Modern Python 101 — Thinking With Types
Learning programming, not just Python syntax
A beginner-friendly path through Python that assumes no prior coding — fundamentals to OOP, with two small projects to tie it together.
Learning a language's syntax and learning to program are two different things. This free course is about the second one. It assumes no prior coding knowledge and builds a working mental model of Python — types first — rather than a pile of memorised keywords.
It moves from the type system and variables through control flow, data structures, functions, and object-oriented programming, then puts the ideas to work in a couple of small projects before opening the door to more advanced territory.
What it covers
- Introduction: why Python, install and setup
- The type system and variables
- Data types and variable rules
- Control flow: conditionals and loops
- Data structures: lists, tuples, dictionaries, sets
- Functions: scope, higher-order, lambda
- Object-oriented programming and magic methods
- Error handling and exceptions
- Packages and modules
- Advanced: files, generators, decorators, testing
Prerequisites
None — designed for complete beginners.
The project
A cash register app and the “Save Zortan” game, built to practise layered thinking.
Lessons
- Thinking In Types - Introduction01
- Thinking In Types - Welcome And Github Download02
- Thinking In Types - Tour of Python03
- Thinking In Types - Setting Up Local Python Development Machine04
- Thinking In Types -Troubleshooting Mac [Mac Users]05
- Thinking In Types - Write Our First 'Hello world' Program06
- Thinking In Types - Understanding Variables07
- Thinking In Types - Creating Variables08
- Thinking In Types - Variable Memory Allocation09
- Thinking In Types - Rules For Declaring Variables10
- Thinking In Types - Primitive Data Types11
- Thinking In Types - String Formatting12
- Thinking In Types - First Bug And Using Mypy13
- Thinking In Types - String Formatting Practice14
- Thinking In Types - If / Else Block15
- Thinking In Types - And / Or Statements16
- Thinking In Types - For Loop17
- Thinking In Types - While Loops18
- Thinking In Types - Match Statement19
- Thinking In Types - Game Save Zortan20
- Thinking In Types - Lists21
- Thinking In Types - Tuples22
- Thinking In Types - Dictionary23
- Thinking In Types - Sets24
- Thinking In Types - Game - Save Zortan25
- Thinking In Types - Enum26
- Thinking In Types - Introduction to Functions27
- Thinking In Types - Better Functions28
- Thinking In Types - Calculate your weight on Zortan29
- Thinking In Types - Flying Friends30
- Thinking In Types - args & kwargs31
- Thinking In Types - Global & Local Scope32
- Thinking In Types - Game - Save Zortan33
- Thinking In Types - Game - Higher Order Functions34
- Thinking In Types - Introduction To Classes35
- Thinking In Types - Understanding Classes36
- Thinking In Types - Class Methods37
- Thinking In Types - Class for Characters38
- Thinking In Types - Use of Classes39
- Thinking In Types - Class & Instance Members40
- Thinking In Types - Inheritance and Polymorphism41
- Thinking In Types - Class Decorators42
- Thinking In Types - Classes For Game - Save Zortan43
- Thinking In Types - Magic Methods44
- Thinking In Types - Syntax & Runtime errors45
- Thinking In Types - Try/Except46
- Thinking In Types - Try/Else/Finally47
- Thinking In Types - Assertion Error48
- Thinking In Types - Raising Errors49
- Thinking In Types - Python Modules50
- Thinking In Types - Python Packages51
- Thinking In Types - Local Package52
- Thinking In Types - __init__.py53
- Thinking In Types - VOC-DTP54
- Thinking In Types - Cash Register Part 155
- Thinking In Types - Cash Register — Part 256
- Thinking In Types - Game Save Zortan57
- Thinking In Types - Final Words58
- Workouts59