Skip to content
Abstract dark green obsidian wave coiling into two smooth loops with a thin brass rim light
Open now

Python

Start with print() and finish writing typed, tested, async Python. One project grows with you the whole way.

  • 20 modules
  • 133 lessons
  • Shallows to Landfall
  • Video + reading

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. Free lessons open in full; the rest show what they will teach.

The Shallows

From zero to writing real little programs. No experience needed.

  1. 0Getting startedWhat Python is, setting up, and your first programs.Free
    1. 0.1What is Python?Free
    2. 0.2Installing Python and VS CodeFree
    3. 0.3Your first program: print()Free
    4. 0.4Two ways to run PythonFree
    5. 0.5Comments and readable codeFree
    6. 0.6Checkpoint: Getting startedCheckpointFree
  2. 1Values and variablesStoring, combining, and formatting data.
    1. 1.1VariablesSoon
    2. 1.2Numbers and arithmeticSoon
    3. 1.3StringsSoon
    4. 1.4Formatting with f-stringsSoon
    5. 1.5Asking the user: input()Soon
    6. 1.6Types and conversionSoon
    7. 1.7Project: Bill splitterProjectSoon
  3. 2Making decisionsPrograms that choose what to do.
    1. 2.1True, False, and comparisonsSoon
    2. 2.2if, elif, elseSoon
    3. 2.3and, or, notSoon
    4. 2.4Truthy and falsySoon
    5. 2.5match statementsSoon
    6. 2.6Project: Grade calculatorProjectSoon
  4. 3LoopsRepeating work without repeating code.
    1. 3.1while loopsSoon
    2. 3.2for loops and range()Soon
    3. 3.3break, continue, and loop elseSoon
    4. 3.4Nested loopsSoon
    5. 3.5Project: Number guessing gameProjectSoon
  5. 4CollectionsLists, tuples, dictionaries, and sets — and how Python names really work.
    1. 4.1ListsSoon
    2. 4.2List methods and sortingSoon
    3. 4.3Tuples and unpackingSoon
    4. 4.4DictionariesSoon
    5. 4.5SetsSoon
    6. 4.6Looping patternsSoon
    7. 4.7ComprehensionsSoon
    8. 4.8Mutability and referencesSoon
    9. 4.9Project: Contact bookProjectSoon
  6. 5FunctionsBreaking programs into named, reusable pieces.
    1. 5.1Defining functionsSoon
    2. 5.2Arguments in depthSoon
    3. 5.3ScopeSoon
    4. 5.4*args and **kwargsSoon
    5. 5.5Functions are valuesSoon
    6. 5.6Docstrings and a first look at type hintsSoon
    7. 5.7RecursionSoon
    8. 5.8Project: Refactor with functionsProjectSoon
  7. 6Working with textStrings in depth, Unicode (including Amharic), and regular expressions.
    1. 6.1String methodsSoon
    2. 6.2Slicing stringsSoon
    3. 6.3Unicode and Amharic textSoon
    4. 6.4Regular expressionsSoon
    5. 6.5Project: Text analyzerProjectSoon
  8. 7Errors and debuggingReading, handling, and raising errors — and finding bugs fast.
    1. 7.1Reading a tracebackSoon
    2. 7.2try, except, else, finallySoon
    3. 7.3Raising your own errorsSoon
    4. 7.4Debugging like a proSoon
  9. 8Files, modules, and your environmentSaving data, organizing code, and using other people's code.
    1. 8.1Reading and writing filesSoon
    2. 8.2Paths with pathlibSoon
    3. 8.3CSV filesSoon
    4. 8.4JSONSoon
    5. 8.5Modules and importsSoon
    6. 8.6A tour of the standard librarySoon
    7. 8.7Command-line programsSoon
    8. 8.8Packages and virtual environmentsSoon
    9. 8.9Project: Birr Ledger v1ProjectSoon
  10. 9TestingProving your code works, automatically.
    1. 9.1Why test?Soon
    2. 9.2pytest basicsSoon
    3. 9.3Fixtures and parametrizeSoon
    4. 9.4Thinking in edge casesSoon
    5. 9.5Project: Test Birr LedgerProjectSoon

Currents

Writing Python the way experienced developers do: objects, iteration, decorators, context managers, and types.

  1. 10Object-oriented PythonModeling things with classes, and making your objects feel built-in.
    1. 10.1Classes and objectsSoon
    2. 10.2__init__ and attributesSoon
    3. 10.3MethodsSoon
    4. 10.4PropertiesSoon
    5. 10.5Inheritance and super()Soon
    6. 10.6Composition over inheritanceSoon
    7. 10.7The Python data modelSoon
    8. 10.8Interfaces with ABCsSoon
    9. 10.9Project: Birr Ledger v2ProjectSoon
  2. 11Iterators and generatorsWhat for really does, and producing values lazily.
    1. 11.1Iterables and iteratorsSoon
    2. 11.2Writing an iterator classSoon
    3. 11.3Generators and yieldSoon
    4. 11.4Generator expressionsSoon
    5. 11.5yield from and pipelinesSoon
    6. 11.6itertools essentialsSoon
    7. 11.7Project: Stream a huge CSVProjectSoon
  3. 12Closures and decoratorsFunctions that wrap functions — the idea behind @app.get in FastAPI.
    1. 12.1ClosuresSoon
    2. 12.2Decorators from scratchSoon
    3. 12.3Doing it right with functools.wrapsSoon
    4. 12.4Decorators with argumentsSoon
    5. 12.5Decorators on classes and methodsSoon
    6. 12.6The functools toolkitSoon
    7. 12.7Project: Timing, logging, and retryProjectSoon
  4. 13Context managersGuaranteed setup and cleanup with with.
    1. 13.1What with really doesSoon
    2. 13.2Writing a context manager classSoon
    3. 13.3contextlib shortcutsSoon
    4. 13.4Project: A timer and safe savingProjectSoon
  5. 14Type hints and data modelingTypes that tools can check, and data models that validate themselves.
    1. 14.1Why type hints?Soon
    2. 14.2Annotating variables and functionsSoon
    3. 14.3None, unions, and OptionalSoon
    4. 14.4Literal, Enum, and TypedDictSoon
    5. 14.5GenericsSoon
    6. 14.6Protocols and duck typingSoon
    7. 14.7Running a type checkerSoon
    8. 14.8DataclassesSoon
    9. 14.9Validation with PydanticSoon
    10. 14.10Project: Birr Ledger v3ProjectSoon

Landfall

Crossing from Python to the web. Ends where the FastAPI course begins.

  1. 19Python meets the webHTTP, JSON, and APIs — the last step before FastAPI.
    1. 19.1How HTTP worksSoon
    2. 19.2JSON and REST APIsSoon
    3. 19.3Calling APIs from PythonSoon
    4. 19.4Your first API with FastAPISoon
    5. 19.5Capstone: Birr Ledger, completeProjectSoon

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.

  1. Module 8v1. CLI script storing expenses in JSON
  2. Module 9Tested. Automated pytest test suite
  3. Module 10v2. Object-oriented design with Expense and Ledger classes
  4. Module 12Decorated. Timing and retry decorators
  5. Module 13Context. Atomic saves and safe file handling
  6. Module 14v3. Fully typed with dataclasses and Pydantic models
  7. Module 16Async. Concurrent live exchange rates fetching
  8. Module 18Package. Installable, linted, logged CLI package
  9. 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

The full Python course

You enroll in Telegram. Pay with Telebirr or CBE, and the bot adds you to the course within minutes.

What's included

  • Every video lesson with detailed step-by-step walkthroughs
  • All projects with complete, documented reference solutions
  • Private Telegram community group with direct peer discussions
  • Direct Q&A help and code reviews from the instructor

Questions

All questions
Can 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.

How does payment and enrollment work?

You enroll through our Telegram bot using Telebirr or CBE bank transfer. Verification is automated, giving you access to the private Telegram channel and group.