
Python
Start with print() and finish writing typed, tested, async Python. One project grows with you the whole way.
- 20 modules
- 134 lessons
- Shallows to Landfall
- Free to learn
What you'll be able to do
- Write clean programs that solve real everyday problems
- Structure code with functions, classes, and modules
- Use generators, decorators, and context managers with confidence
- Write typed, tested code that automated tools can check
- Use threads, processes, and async/await correctly
- Be fully prepared to build production APIs with FastAPI
The full syllabus
20 modules, from the Shallows down. Open any module to see its lessons. Written lessons open in full, free. The rest show what they will teach until they're written.
The Shallows
Modules 0–9, 65 lessons
From zero to writing real little programs. No experience needed.
- , 0 of 6 lessons done
0Getting startedWhat Python is, setting up, and your first programs.6 lessons
- , 0 of 7 lessons done
1Values and variablesNaming, combining, and formatting values, and asking the user for them.7 lessons
- , 0 of 6 lessons done
2Making decisionsPrograms that choose what to do.6 lessons
- , 0 of 5 lessons done
3LoopsRepeating work without repeating code.5 lessons
- , 0 of 9 lessons done
4CollectionsLists, tuples, dictionaries, and sets, and how Python names really work.9 lessons
- , 0 of 8 lessons done
5FunctionsBreaking programs into named, reusable pieces.8 lessons
- , 0 of 6 lessons done
6Working with textStrings in depth, Unicode (including Amharic), and regular expressions.6 lessons
- , 0 of 4 lessons done
7Errors and debuggingReading, handling, and raising errors, and finding bugs fast.4 lessons
- , 0 of 9 lessons done
8Files, modules, and your environmentSaving data, organizing code, and using other people's code.9 lessons
- , 0 of 5 lessons done
9TestingChecking your code automatically, with tests chosen to catch bugs.5 lessons
Currents
Modules 10–14, 37 lessons
Writing Python the way experienced developers do: objects, iteration, decorators, context managers, and types.
- , coming soon
10Object-oriented PythonModeling things with classes, and making your objects feel built-in.Coming soon
- , coming soon
11Iterators and generatorsWhat for really does, and producing values lazily.Coming soon
- , coming soon
12Closures and decoratorsFunctions that wrap other functions. It's the idea behind @app.get in FastAPI.Coming soon
- , coming soon
13Context managersGuaranteed setup and cleanup with with.Coming soon
- , coming soon
14Type hints and data modelingTypes that tools can check, and data models that validate themselves.Coming soon
Deep Water
Modules 15–18, 27 lessons
Concurrency, async, Python's object model, and professional practice.
- , coming soon
15ConcurrencyDoing several things at once, and choosing the right tool for it.Coming soon
- , coming soon
16Async Pythonasync and await from the ground up, and how FastAPI handles many requests at once.Coming soon
- , coming soon
17Python's object modelHow attributes, properties, and classes really work underneath.Coming soon
- , coming soon
18Professional PythonThe tools and habits of working Python developers.Coming soon
Landfall
Module 19, 5 lessons
Crossing from Python to the web. Ends where the FastAPI course begins.
- , coming soon
19Python meets the webHTTP, JSON, and APIs. The last step before FastAPI.Coming soon
The project that grows with you
Birr Ledger
A personal expense tracker that grows from a simple script into a typed, tested, async-capable package ready to become an API.
- Module 8v1. CLI script storing expenses in JSON
- Module 9Tested. Automated pytest test suite
- Module 10v2. Object-oriented design with Expense and Ledger classes
- Module 12Decorated. Timing and retry decorators
- Module 13Context. Atomic saves and safe file handling
- Module 14v3. Fully typed with dataclasses and Pydantic models
- Module 16Async. Concurrent live exchange rates fetching
- Module 18Package. Installable, linted, logged CLI package
- Module 19Capstone. Ready for the FastAPI course
Who it's for
- Complete beginners writing their first code
- Learners who know some Python but want to fill gaps and write idiomatic code
- Information Systems and Computer Science students preparing for backend or AI work
What you need
- A computer (Windows, macOS, or Linux) to install Python for later modules
- No prior coding experience needed; early lessons run directly in your browser
Want to go further?
The Python lessons here are free, and they stay free. If you'd like more, you can join the paid Python course in Telegram. You pay there, by Telebirr or CBE.
What the paid course adds
- The full video course, explained in more detail
- Live learning sessions
- The private community group
- Direct help from the instructor
Questions
All questionsCan I take this course on my phone?
Yes to start. The lessons and interactive code runner work directly in modern mobile browsers. For later modules with local virtual environments and testing, a laptop or desktop computer is recommended.
Do I need any previous coding experience?
No. The course starts from absolute zero in Module 0 and explains every foundational concept step by step.
Is the Python course free?
Yes. Every Python lesson on this website is free, and new ones are free when they're written. If you'd like video lessons, live sessions, and the community group, you can also join the paid Python course in Telegram.