Skip to content

Python Core (Beginner to Advanced)

Master the Python language end-to-end through projects: fundamentals, idiomatic and functional Python, object-oriented design, packaging and environments, the standard library, and concurrency, perfo…

Master the Python language end-to-end through projects: fundamentals, idiomatic and functional Python, object-oriented design, packaging and environments, the standard library, and concurrency, performance, and testing. The language foundation every Python role assumes — and the base the AI/ML, Web, and Data-Automation tracks build on.

6 phases · 48 projects · v1.1.0

Target roles: Python Developer, Software Engineer, Backend Engineer (Python), ML/Data Engineer (foundation)

Stack: Python 3.12, pytest, typing, venv, Poetry

PHASE 1 · 9 projects

Language Fundamentals

Read and write clean, correct Python: types, collections, control flow, functions, and exceptions.

  1. 01 · featured

    Unit Converter CLI

    Build an interactive command-line unit converter to learn Python's core types, type conversion, functions, conditionals, loops, and exception handling.

    Python 3.12 · input/print · functions · exceptions

  2. 02

    String Toolkit

    Build a small library of text utilities (slugify, word count, title-case, reverse, palindrome check) to master Python strings, slicing, methods, and f-string formatting.

    Python 3.12 · str methods · slicing · f-strings

  3. 03

    Number Guessing Game

    Build a guess-the-number game with hints, attempt limits, and replay to master numbers, the random module, comparison operators, and while loops.

    Python 3.12 · random · while loops · int/float

  4. 04

    To-Do List (Lists & Tuples)

    Build an in-memory to-do manager with add/list/complete/remove to master Python lists, tuples, indexing, iteration, and mutation vs immutability.

    Python 3.12 · list · tuple · enumerate

  5. 05

    Contact Book (Dicts & Sets)

    Build a searchable contact book to master dictionaries (key/value lookup), sets (uniqueness and membership), and why hashing makes them fast.

    Python 3.12 · dict · set · hashing

  6. 06

    Data Cleaning with Comprehensions

    Clean a messy list of records using list, dict, and set comprehensions, learning when a comprehension improves clarity and when it hurts it.

    Python 3.12 · comprehensions · list/dict/set

  7. 07

    Control Flow Patterns

    Implement classic exercises (FizzBuzz, a multiplication table, a simple text menu with match/case, and prime detection) to master conditionals, loops, and structural pattern matching.

    Python 3.12 · match/case · for/while · boolean logic

  8. 08

    Functions Deep Dive

    Build a small statistics toolkit to master function parameters, default arguments, *args/**kwargs, multiple return values, scope, and the mutable-default-argument trap.

    Python 3.12 · functions · *args/**kwargs · scope

  9. 09

    Errors & Input Validation

    Build a reusable validation layer with custom exceptions to master try/except/else/finally, exception hierarchy, raising and chaining, and the EAFP vs LBYL styles.

    Python 3.12 · exceptions · custom errors · EAFP

PHASE 2 · 8 projects

Idiomatic & Functional Python

Write Python the way Python developers do: comprehensions, generators, decorators, typing, and the functional toolkit.

  1. 01

    Unpacking, Starred Targets & zip

    Build a CSV row transformer to master tuple/dict unpacking, starred assignment, zip, enumerate, and dict merging — the idioms that make Python code concise.

    Python 3.12 · unpacking · zip · enumerate

  2. 02

    Iterators & Generators

    Build a lazy log-file reader and number streams using the iterator protocol and generator functions with yield, learning lazy evaluation and memory efficiency.

    Python 3.12 · generators · yield · iterator protocol

  3. 03

    Decorators

    Build timing, caching, and retry decorators to learn how functions wrap other functions, why functools.wraps matters, and how decorators with arguments work.

    Python 3.12 · decorators · functools.wraps · closures

  4. 04

    Closures & Higher-Order Functions

    Build configurable function factories and pipelines to master closures, functions as values, higher-order functions, and lambda — the foundation under decorators and callbacks.

    Python 3.12 · closures · higher-order functions · lambda

  5. 05

    Functional Toolkit: map, filter, reduce, partial

    Process data with map, filter, functools.reduce, functools.partial, and the operator module — and learn when these beat a comprehension and when they don't.

    Python 3.12 · functools · operator · map/filter/reduce

  6. 06

    itertools Recipes

    Solve real problems with itertools (chain, islice, groupby, count, cycle, combinations, permutations, accumulate) to learn efficient, lazy iteration patterns.

    Python 3.12 · itertools · generators

  7. 07

    Type Hints & Static Checking with mypy

    Add complete type hints to a small module and verify them with mypy: built-in generics, Optional/Union, type aliases, Protocols, and Generics.

    Python 3.12 · typing · mypy

  8. 08

    Dataclasses, Enums & NamedTuples

    Model structured records with dataclasses (mutable, frozen, with defaults and methods), Enums for fixed choices, and NamedTuple for lightweight immutable records.

    Python 3.12 · dataclasses · enum · typing.NamedTuple

PHASE 3 · 8 projects

Object-Oriented Python & Design

Model problems with classes done well — inheritance, dunder methods, properties, ABCs, and Pythonic design.

  1. 01

    Classes & Instances

    Model a bank account with classes to learn __init__, instance vs class attributes, methods, and the role of self.

    Python 3.12 · classes · self · attributes

  2. 02

    Dunder Methods (Operator Overloading)

    Build a Vector and a Money class implementing __repr__/__str__, __eq__/__hash__, __add__, comparison, and __len__ to learn how Python's data model makes objects behave like built-ins.

    Python 3.12 · dunder methods · data model

  3. 03

    Inheritance, super() & the MRO

    Model a shape hierarchy to learn inheritance, method overriding, super(), and how Python resolves methods across multiple base classes (the MRO).

    Python 3.12 · inheritance · super · MRO

  4. 04

    Properties & Encapsulation

    Use @property, setters, and computed attributes to enforce invariants and expose a clean interface, learning Python's convention-based encapsulation.

    Python 3.12 · @property · encapsulation

  5. 05

    Abstract Base Classes & Interfaces

    Define a payment-processor interface with abc.ABC and @abstractmethod so subclasses are forced to implement required methods, learning interface-based design.

    Python 3.12 · abc · interfaces

  6. 06

    Composition over Inheritance

    Model a Car built from an Engine, Wheels, and a Logger to learn composition, delegation, and dependency injection — and when they beat inheritance.

    Python 3.12 · composition · delegation · dependency injection

  7. 07

    Class Methods & Static Methods

    Add alternative constructors and utility methods to a Date/Color class to learn @classmethod, @staticmethod, and how they differ from instance methods.

    Python 3.12 · @classmethod · @staticmethod

  8. 08

    Pythonic Design Patterns

    Implement Strategy, Factory, and a Pythonic Singleton/registry, learning how Python's first-class functions and modules simplify classic OO patterns.

    Python 3.12 · design patterns · first-class functions

PHASE 4 · 7 projects

Modules, Packaging & Environments

Turn scripts into installable, reproducible, distributable packages.

  1. 01

    Modules & the Import System

    Split a script into multiple modules and learn how Python's import system works: import vs from-import, absolute vs relative imports, __name__, and how sys.path resolves modules.

    Python 3.12 · modules · imports

  2. 02

    Packages & Project Structure

    Organize modules into an installable package with a src layout, __init__.py, and a clean public API, learning how real Python projects are structured.

    Python 3.12 · packages · __init__.py · src layout

  3. 03

    Virtual Environments & pip

    Create isolated environments with venv, install and pin dependencies with pip and requirements.txt, and learn why isolation and reproducibility matter.

    Python 3.12 · venv · pip · requirements.txt

  4. 04

    pyproject.toml & Building a Package

    Write a pyproject.toml, build a wheel and sdist, and install your package locally (editable) — the modern, standardized way to package Python.

    Python 3.12 · pyproject.toml · build · hatchling

  5. 05

    Publishing to PyPI (TestPyPI)

    Publish your package to TestPyPI with twine, then install it back with pip — the full release loop, practiced safely on the test index.

    Python 3.12 · twine · TestPyPI · build

  6. 06

    Dependency Management & Lockfiles

    Use a modern tool (uv or Poetry) to resolve, lock, and reproduce dependencies, learning version constraints, lockfiles, and how dependency resolution handles conflicts.

    Python 3.12 · uv · Poetry · lockfiles

  7. 07

    CLI Entry Points

    Turn your package into an installable command-line tool using project.scripts entry points and argparse, so users can run it by name after pip install.

    Python 3.12 · entry points · argparse

PHASE 5 · 7 projects

Standard Library & I/O

Get real work done with the batteries Python includes: files, data formats, dates, regex, logging, and processes.

  1. 01

    Files & pathlib

    Build a file-organizing tool using pathlib to read, write, move, and inspect files and directories the modern way, learning paths, encodings, and safe I/O.

    Python 3.12 · pathlib · file I/O

  2. 02

    Context Managers

    Write custom context managers with both __enter__/__exit__ and contextlib.contextmanager (a timer, a temporary-directory, a DB-like transaction) to master guaranteed setup/teardown.

    Python 3.12 · context managers · contextlib

  3. 03

    JSON & CSV Data Formats

    Read, write, and convert between JSON and CSV with the standard library, handling nested data, types, and the quirks of each format.

    Python 3.12 · json · csv

  4. 04

    Dates, Times & Time Zones

    Build a small scheduling/age calculator to master datetime, timedelta, parsing/formatting, and the critical difference between naive and timezone-aware datetimes.

    Python 3.12 · datetime · zoneinfo

  5. 05

    Regular Expressions

    Build a log/text extractor with the re module: patterns, groups, named groups, substitution, and compiled patterns, learning when regex is the right tool and when it isn't.

    Python 3.12 · re

  6. 06

    Logging Done Right

    Replace print debugging with the logging module: levels, loggers, handlers, formatters, and writing to console and file with structured output.

    Python 3.12 · logging

  7. 07

    Subprocess & OS Interaction

    Run external commands with subprocess and interact with the environment via os/shutil, learning safe argument passing, capturing output, exit codes, and avoiding shell-injection.

    Python 3.12 · subprocess · os · shutil

PHASE 6 · 9 projects

Concurrency, Performance & Testing

Make Python fast, concurrent, and trustworthy — and prove it with tests.

  1. 01

    Threading & the GIL

    Speed up I/O-bound work with threads and learn why the GIL means threads help I/O but not CPU-bound code, plus thread safety with locks.

    Python 3.12 · threading · GIL

  2. 02

    Multiprocessing

    Use multiprocessing to parallelize CPU-bound work across cores, learning processes vs threads, Pool/map, and the cost of inter-process communication.

    Python 3.12 · multiprocessing

  3. 03

    Asyncio Basics

    Learn async/await, coroutines, and the event loop by building an async program, understanding how single-threaded concurrency handles many I/O operations.

    Python 3.12 · asyncio · async/await

  4. 04

    Async Concurrency Patterns

    Build a concurrent async fetcher with tasks, gather, timeouts, semaphores for rate-limiting, and error handling — the patterns real async code uses.

    Python 3.12 · asyncio · httpx

  5. 05

    concurrent.futures

    Use ThreadPoolExecutor and ProcessPoolExecutor for a unified, high-level pool API, learning futures, executor.map, as_completed, and choosing the right pool.

    Python 3.12 · concurrent.futures

  6. 06

    Profiling & Optimization

    Measure performance with timeit and cProfile, find the real bottleneck, and optimize it with data-driven changes (better algorithms/data structures, caching), avoiding premature optimization.

    Python 3.12 · timeit · cProfile

  7. 07

    pytest Basics

    Write your first automated test suite with pytest: test functions, plain assert, testing for exceptions, and structuring tests so they run from one command.

    Python 3.12 · pytest

  8. 08

    Fixtures & Parametrization

    Use pytest fixtures for reusable setup/teardown and parametrize to run one test across many inputs, keeping tests DRY and thorough.

    Python 3.12 · pytest · fixtures

  9. 09

    Mocking & Coverage

    Isolate external dependencies with unittest.mock (patch, Mock, monkeypatch) and measure test thoroughness with coverage, learning to test code that talks to networks, time, or files.

    Python 3.12 · unittest.mock · pytest · coverage

Next step

Request Python Core (Beginner to Advanced)

An advisor reviews the fit and confirms terms in writing. A request is not an acceptance and nothing is charged until you agree.