| 1 | Introduction to Python | LESSON | ~10 min |
| 2 | Basic Types: int, float, str, bool, None | LESSON | ~12 min |
| 3 | Variables & Assignment | LESSON | ~10 min |
| 4 | Variables Practice | LAB | ~15 min |
| 5 | Operators: Arithmetic, Comparison, Logical | LESSON | ~12 min |
| 6 | Strings: Methods, Slicing, Indexing | LESSON | ~15 min |
| 7 | f-strings & String Formatting | WORKSHOP | ~20 min |
| 8 | String Manipulation Challenge | LAB | ~20 min |
| 9 | bytes, bytearray, and encode/decode | LESSON | ~12 min |
| 10 | if / elif / else & Ternary Expressions | LESSON | ~12 min |
| 11 | Building Decision Trees | WORKSHOP | ~20 min |
| 12 | Structural Pattern Matching (match/case) | LESSON | ~15 min |
| 13 | for, while, range(), break, continue | LESSON | ~15 min |
| 14 | Iterating with enumerate() and zip() | WORKSHOP | ~20 min |
| 15 | Loop Challenge | LAB | ~20 min |
| 16 | Lists: Indexing, Slicing, Methods | LESSON | ~15 min |
| 17 | List Manipulation & Sorting | WORKSHOP | ~20 min |
| 18 | Tuples: Immutability & Packing/Unpacking | LESSON | ~12 min |
| 19 | List Processing Lab | LAB | ~20 min |
| 20 | Dictionaries: CRUD, Iteration, Methods | LESSON | ~15 min |
| 21 | Working with Nested Dicts | WORKSHOP | ~20 min |
| 22 | Sets: Operations, Membership, Frozenset | LESSON | ~12 min |
| 23 | Dictionary Challenge | LAB | ~20 min |
| 24 | List, Dict & Set Comprehensions | LESSON | ~15 min |
| 25 | Generator Expressions & Filtering | WORKSHOP | ~20 min |
| 26 | Functions: def, return, Docstrings | LESSON | ~12 min |
| 27 | *args, **kwargs & Keyword-Only Params | WORKSHOP | ~20 min |
| 28 | Closures & nonlocal | LESSON | ~15 min |
| 29 | Building Closure-Based Utilities | WORKSHOP | ~20 min |
| 30 | Functions Lab | LAB | ~25 min |
| 31 | lambda, map(), filter(), sorted() key= | LESSON | ~15 min |
| 32 | functools: partial, reduce, lru_cache, wraps | LESSON | ~15 min |
| 33 | Caching & Partial Application | WORKSHOP | ~20 min |
| 34 | Function Decorators & @ Syntax | LESSON | ~15 min |
| 35 | Building Custom Decorators | WORKSHOP | ~20 min |
| 36 | Decorator Challenge | LAB | ~25 min |
| 37 | Classes: __init__, self, Instance Methods | LESSON | ~15 min |
| 38 | Building a Data Model with Classes | WORKSHOP | ~25 min |
| 39 | Inheritance, super(), MRO | LESSON | ~15 min |
| 40 | Extending Classes & super() | WORKSHOP | ~20 min |
| 41 | Dunder Methods: __str__, __repr__, __eq__, __len__ | LESSON | ~15 min |
| 42 | OOP Lab: Build a Mini Library | LAB | ~30 min |
| 43 | try / except / finally / else | LESSON | ~12 min |
| 44 | raise, Custom Exceptions, Exception Chaining | WORKSHOP | ~20 min |
| 45 | Robust Error Handling Lab | LAB | ~25 min |
| 46 | Iterators: __iter__, __next__, iter(), next() | LESSON | ~15 min |
| 47 | Generators: yield, yield from, send() | LESSON | ~15 min |
| 48 | Lazy Pipelines with Generators | WORKSHOP | ~20 min |
| 49 | with Statement, __enter__/__exit__, contextlib | LESSON | ~15 min |
| 50 | Building Custom Context Managers | WORKSHOP | ~20 min |
| 51 | Type Annotations: list, dict, Optional, Union, Any | LESSON | ~15 min |
| 52 | TypeVar, Generic, Protocol (structural subtyping) | WORKSHOP | ~20 min |
| 53 | ABC, @abstractmethod, Protocol | LESSON | ~15 min |
| 54 | Designing with Interfaces via Protocol | WORKSHOP | ~20 min |
| 55 | @property, @setter, @deleter, __slots__ | LESSON | ~15 min |
| 56 | Computed Properties & Validation | WORKSHOP | ~20 min |
| 57 | @dataclass: fields, frozen, __post_init__ | LESSON | ~15 min |
| 58 | Dataclass Patterns & field() | WORKSHOP | ~20 min |
| 59 | import, from, __name__, packages, __init__.py | LESSON | ~15 min |
| 60 | Creating a Package with Relative Imports | WORKSHOP | ~20 min |
| 61 | open(), read/write modes, pathlib.Path | LESSON | ~15 min |
| 62 | Reading, Writing & Appending Files | WORKSHOP | ~20 min |
| 63 | File I/O Lab: Log Parser | LAB | ~25 min |
| 64 | Counter, defaultdict, deque, namedtuple, OrderedDict | LESSON | ~15 min |
| 65 | chain, product, combinations, permutations, groupby | LESSON | ~15 min |
| 66 | Combining Itertools for Data Pipelines | WORKSHOP | ~20 min |
| 67 | json.dumps, json.loads, JSONEncoder, JSONDecoder | LESSON | ~12 min |
| 68 | Working with Nested JSON & Custom Encoding | WORKSHOP | ~20 min |
| 69 | csv.reader, csv.DictReader, csv.writer | WORKSHOP | ~20 min |
| 70 | re module: match, search, findall, groups, flags | LESSON | ~15 min |
| 71 | Capturing Groups & Named Patterns | WORKSHOP | ~20 min |
| 72 | datetime, timedelta, strftime, timezone, UTC | LESSON | ~15 min |
| 73 | Parsing, Formatting & Timezone Conversion | WORKSHOP | ~20 min |
| 74 | urllib.request, HTTP concepts, status codes | LESSON | ~15 min |
| 75 | Making Requests & Parsing JSON Responses | WORKSHOP | ~20 min |
| 76 | HTTP Lab: Public API Client | LAB | ~25 min |
| 77 | Thread, Lock, RLock, race conditions, GIL | LESSON | ~15 min |
| 78 | Thread Pools with concurrent.futures | WORKSHOP | ~20 min |
| 79 | async/await, event loop, coroutines, tasks | LESSON | ~15 min |
| 80 | asyncio.gather, create_task, timeouts | WORKSHOP | ~20 min |
| 81 | Async Lab: Concurrent Fetcher | LAB | ~25 min |
| 82 | unittest: TestCase, assertEqual, setUp, discovery | LESSON | ~15 min |
| 83 | Writing Test Suites & Using Mock | WORKSHOP | ~20 min |
| 84 | Testing Lab: TDD Challenge | LAB | ~25 min |
| 85 | logging: levels, handlers, formatters, getLogger | LESSON | ~15 min |
| 86 | Structured Logging & Multiple Handlers | WORKSHOP | ~20 min |
| 87 | argparse: add_argument, subcommands, types | LESSON | ~15 min |
| 88 | Building a Multi-Command CLI Tool | WORKSHOP | ~20 min |
| 89 | sqlite3: connect, execute, fetchall, context manager | LESSON | ~15 min |
| 90 | CRUD Operations & Parameterized Queries | WORKSHOP | ~20 min |
| 91 | SQLite3 Lab: Todo Database | LAB | ~25 min |
| 92 | sorted, key=, reverse, bisect, heapq | LESSON | ~15 min |
| 93 | Custom Sort Keys & Priority Queues | WORKSHOP | ~20 min |
| 94 | cProfile, timeit, line_profiler concepts | LESSON | ~15 min |
| 95 | Measuring Bottlenecks & Optimizing Code | WORKSHOP | ~20 min |