432
Lessons written
10
Levels
48
Lessons planned
124
Projects & games
🎮 Game🧩 Challenge🛠️ Project📝 Exam prep
| Code | Lesson | Type | Milestone |
|---|---|---|---|
| 01 | Welcome to Python: What Is Code?Install Thonny / IDLE and run your very first program. | ||
| 02 | Talking to the Computerprint() and writing comments. | ||
| 03 | Boxes for Data: Variables & NamesNaming rules and storing values. | ||
| 04 | Numbers, Math & Calculator MagicIntegers, floats, % and **. | ||
| 05 | Words & Letters: Strings 101Quotes, joining and length. | ||
| 06 | Mad Libs: Build Your First Word GameUse variables and strings to make a silly story generator. | 🎮 Game | |
| 07 | Listening to the User: input()Read text, convert to numbers. | ||
| 08 | Making Choices: if / else / elifIndentation and branches. | ||
| 09 | True or False? Booleans & Comparisons==, !=, <, >. | ||
| 10 | Combining ChoicesThe logical operators and, or, not. | ||
| 11 | Mini-Game: Rock, Paper, ScissorsCombine input, if and random to beat the computer. | 🎮 Game | |
| 12 | Doing Things Again: while LoopsCounters and stop conditions. | ||
| 13 | Counting Loops: for & range()Iteration and step values. | ||
| 14 | Loop Challenges: Patterns & PicturesDraw triangles, squares and stars in ASCII art. | 🧩 Challenge | |
| 15 | Treasure Chests: Lists IntroductionIndexing, append, len. | ||
| 16 | List Iteration: for item in listWalk through every item without an index counter. | ||
| 17 | List Toolbox: append, pop, remove, sortFive list methods you'll use every day. | ||
| 18 | List Slicing & Negative Indiceslist[1:3], list[-1], list[:] — picking a range. | ||
| 19 | Random Deep Dive: choice & shufflePick one item or reshuffle a whole list with random. | ||
| 20 | Game: Magic 8-BallA random answer-picker built from a list and random.choice(). | 🎮 Game | |
| 21 | Game: Lucky Draw PickerSpin a hawker-stall menu and pick tonight's makan. | 🎮 Game | |
| 22 | Challenge: List LabFind the max, total, count and duplicates in a list — without using max() at first. | 🧩 Challenge | |
| 23 | Strings Toolbox: upper, lower, replace, countFour string methods that unlock most word-game logic. | ||
| 24 | String Indexing & SlicingStrings behave like lists of letters — word[0], word[-1], word[::-1]. | ||
| 25 | Game: Anagram DetectiveSort the letters of two words and check if they match. | 🎮 Game | |
| 26 | Functions 101: def & CallingWrap reusable steps in a named recipe. | ||
| 27 | Function Parameters: Passing Data InSend values to a function so it can do its job. | ||
| 28 | Multiple Parameters & Default ValuesFunctions with two or more inputs, plus the name="…" default trick. | ||
| 29 | Function Returns: Sending Data BackUse return to hand a value back to the caller. | ||
| 30 | Functions Practice: Math ToolboxBuild square, cube, average and is_even together. | ||
| 31 | Functions + Lists TogetherPass a list to a function and have it report back. | ||
| 32 | Game: Quiz Engine — Part 1Build a function that asks a question and checks the answer. | 🎮 Game | |
| 33 | Game: Quiz Engine — Part 2 (Score & Feedback)Add a running score, encouragement messages and a final report. | 🎮 Game | |
| 34 | Challenge: Functions DecathlonTen timed mini-functions to write from scratch in 60 minutes. | 🧩 Challenge | |
| 35 | Game: Hangman Lite — Part 1 (Pick & Reveal)Pick a secret word and show dashes for the unknown letters. | 🎮 Game | |
| 36 | Game: Hangman Lite — Part 2 (Lives & Win)Track remaining lives and decide who wins. | 🎮 Game | |
| 37 | Game: Hangman Lite — Part 3 (ASCII Polish)Draw the gallows step-by-step with multi-line strings. | 🎮 Game | |
| 38 | Project: ASCII Banner GeneratorUser types a name and the program prints it as big block letters. | 🛠️ Project | |
| 39 | Game: Text Adventure — Part 1 (Map & Choices)Branching scenes with nested ifs — leave the village or stay? | 🎮 Game | |
| 40 | Game: Text Adventure — Part 2 (Inventory Lists)Pick up items, drop them, check the bag — lists drive the inventory. | 🎮 Game | |
| 41 | Game: Text Adventure — Part 3 (Boss Fight)HP, attacks and a while battle loop with random damage. | 🎮 Game | |
| 42 | Challenge: Code Wars — Bug HuntFive broken scripts. Find each bug and patch it. | 🧩 Challenge | |
| 43 | Challenge: Code Wars — Predict the OutputRead tricky snippets and write down what they'll print before you run them. | 🧩 Challenge | |
| 44 | Challenge: Code Wars — Speed RoundTen micro-problems against the clock. | 🧩 Challenge | |
| 45 | Game: Number Guesser — Part 1 (Core Loop)Pick a secret 1–100, loop until the user guesses it. | 🎮 Game | |
| 46 | Game: Number Guesser — Part 2 (Difficulty Levels)Easy / Medium / Hard change the range and the number of tries. | 🎮 Game | |
| 47 | Game: Number Guesser — Part 3 (Hi-Score Table)Store the best three scores in a list and print the leaderboard. | 🎮 Game | |
| 48 | Capstone: Number Guessing Game Deluxe + L1 RecapBring every Level-1 skill into one polished game and review the level's headline ideas. | 🛠️ Project |
| Code | Lesson | Type | Milestone |
|---|---|---|---|
| 01 | Lists Deep Dive: Methods Recapappend, insert, remove, sort, reverse — the L1 list toolkit, used in anger. | ||
| 02 | List Comprehensions TeaserA 1-line preview of [x*2 for x in nums]. Full deep-dive in L3. | ||
| 03 | Locked Boxes: TuplesImmutable ordered collections — and when to prefer them over lists. | ||
| 04 | Tuple Unpacking & Multiple Return Valuesa, b = (1, 2) and functions that return more than one thing. | ||
| 05 | Labelled Storage: DictionariesKeys, values, lookups by name instead of by index. | ||
| 06 | Dictionary Methods: keys, values, itemsIterate a dict three different ways. | ||
| 07 | Game: Secret Code TranslatorEncode and decode messages with a key-value cipher. | 🎮 Game | |
| 08 | No Duplicates Allowed: SetsUnique items, fast membership checks. | ||
| 09 | Set Operations: union, intersection, differenceThe maths-class operators, in code. | ||
| 10 | Game: Word Bingo with SetsMark called words off a bingo card built from a set. | 🎮 Game | |
| 11 | Nested Worlds: Lists of DictsThe shape every real dataset takes — students, products, scores. | ||
| 12 | Nested Worlds: Dicts of ListsGroup items by category — drinks by stall, songs by genre. | ||
| 13 | Challenge: Inventory InspectorQuery a nested data structure five different ways. | 🧩 Challenge | |
| 14 | String Superpowerssplit, join, strip, find — the four most-used string methods. | ||
| 15 | f-strings: Modern String FormattingEmbed values cleanly: f"Hi {name}!". | ||
| 16 | f-string Specifiers: Width, Decimals, Padding{price:.2f}, {name:>10} — receipts and tables. | ||
| 17 | Game: Mad Libs 2.0 with f-stringsRebuild the L1 Mad Libs game with cleaner formatting. | 🎮 Game | |
| 18 | Random Module: Dice, Cards & Coinsrandint, choice, shuffle, sample. | ||
| 19 | Game: Higher-or-Lower (Cards)Deal from a shuffled deck and guess. | 🎮 Game | |
| 20 | Reading Files: open() and withRead text from a file the safe way. | ||
| 21 | Writing Files: Saving Text to DiskAppend vs overwrite — "a" vs "w". | ||
| 22 | Game: High-Score Keeper (File-Backed)Scores survive between runs. | 🎮 Game | |
| 23 | Game: Wordle-Lite — Part 1 (Load Word Bank)Read 100 5-letter words from a file and pick a secret one. | 🎮 Game | |
| 24 | Game: Wordle-Lite — Part 2 (Feedback Logic)Right letter right place, right letter wrong place, missing. | 🎮 Game | |
| 25 | Game: Wordle-Lite — Part 3 (Polish & Stats)Six tries, ASCII colour codes, a final stats line. | 🎮 Game | |
| 26 | Error Handling: try / exceptCatch crashes before they end the program. | ||
| 27 | Specific Exceptions & Multiple except BlocksCatch ValueError separately from FileNotFoundError. | ||
| 28 | finally & else: The Full Error FlowAlways-run cleanup and the happy-path block. | ||
| 29 | Challenge: Error-Proof CalculatorBuild a calculator that survives every weird user input you can think of. | 🧩 Challenge | |
| 30 | Importing from the Standard Libraryimport math, import statistics, from random import choice. | ||
| 31 | Build Your Own ModuleSave a function in one file, import it from another. | ||
| 32 | Datetime Basics: Dates, Times, DeltasToday's date, time differences, formatting with strftime. | ||
| 33 | Turtle Graphics: Drawing with CodeYour first visual program — forward, right, left, penup. | ||
| 34 | Turtle: Loops & PatternsSquares, stars, spirals — turtle + for loops. | ||
| 35 | Turtle: Colours & Pen ControlRGB, fillcolor, begin_fill / end_fill. | ||
| 36 | Game: Turtle RaceFour turtles, randomness and a finish line. | 🎮 Game | |
| 37 | Game: Turtle Maze WalkerArrow-key control to walk a turtle out of a maze. | 🎮 Game | |
| 38 | Project: Turtle Mandala GeneratorUser picks a number and gets a one-of-a-kind geometric pattern. | 🛠️ Project | |
| 39 | Game: Tic-Tac-Toe — Part 1 (Board & Display)A 3×3 nested-list board, printed cleanly each turn. | 🎮 Game | |
| 40 | Game: Tic-Tac-Toe — Part 2 (Win Detection)Check rows, columns and the two diagonals. | 🎮 Game | |
| 41 | Game: Tic-Tac-Toe — Part 3 (Polish & Easy AI)Random-move computer opponent and a play-again loop. | 🎮 Game | |
| 42 | Regex 101: re.findall and re.searchFind every phone number in a wall of text. | ||
| 43 | Regex Patterns: Character Classes & Quantifiers\d, \w, +, *, ? — the regex alphabet. | ||
| 44 | Regex Project: Validators (email, IC, phone)Build three validators that accept the real format and reject the fakes. | 🛠️ Project | |
| 45 | JSON Files: dump & loadSave and reload nested Python data as text. | ||
| 46 | JSON Project: Quiz from a JSON FileLoad questions from JSON, score answers, save high scores. | 🛠️ Project | |
| 47 | Challenge: Code Olympics — Mixed SkillsEight timed problems mixing every Level-2 skill. | 🧩 Challenge | |
| 48 | Capstone: Personal Notes & Tasks ManagerBuild a CLI app that adds, lists, searches (regex) and saves (JSON) — your Level-2 toolkit, end-to-end. | 🛠️ Project |
| Code | Lesson | Type | Milestone |
|---|---|---|---|
| 01 | Classes 101: Blueprints for ObjectsWhat a class is, what an instance is, and how they differ. | ||
| 02 | Attributes: Data Stored on an ObjectSetting and reading instance attributes. | ||
| 03 | Methods: Functions Attached to a ClassDefining a method, self, and calling it. | ||
| 04 | The __init__ ConstructorBorn ready: initialise an object's data when it's created. | ||
| 05 | Many Objects from One ClassBuild five heroes from one Hero class and store them in a list. | ||
| 06 | Game: Dungeon Hero ClassA Hero with HP, attack and inventory — the L3 mascot is born. | 🎮 Game | |
| 07 | Inheritance: Child ClassesReuse the parent class, extend the child. | ||
| 08 | Method Overriding & super()Customise inherited behaviour while still calling the parent's version. | ||
| 09 | Game: Monster Family TreeGoblin, Orc and Boss all inherit from Monster. | 🎮 Game | |
| 10 | Encapsulation & Private-ish AttributesThe _underscore convention and why "private" in Python is a polite request. | ||
| 11 | Polymorphism BasicsSame method name on different classes — write code that doesn't care which. | ||
| 12 | Polymorphism Practice: A Shared InterfaceLoop a list of mixed shapes and call .area() on each. | ||
| 13 | Game: Monsters with Different AttacksEach monster overrides .attack() — polymorphism in action. | 🎮 Game | |
| 14 | Dunder Methods Part 1: __str__ & __repr__Make print(obj) show something useful. | ||
| 15 | Dunder Methods Part 2: __eq__ & __lt__Compare and sort your own objects. | ||
| 16 | Dunder Methods Part 3: __add__ & __len__Make a + b and len(obj) work for your class. | ||
| 17 | Project: Pet Shop InventoryClass Pet + list of pets + price lookup + total stock value. | 🛠️ Project | |
| 18 | @property: Computed AttributesLooks like an attribute, runs like a method — read-only derived values. | ||
| 19 | @staticmethod & @classmethodWhen the method doesn't need self — and when it needs the class itself. | ||
| 20 | Lambda FunctionsTiny anonymous helpers — lambda x: x * 2. | ||
| 21 | List ComprehensionsOne-line lists — the most beloved Pythonic syntax. | ||
| 22 | Dict & Set ComprehensionsThe same trick, applied to dicts and sets. | ||
| 23 | Filtering Inside a Comprehension[x for x in nums if x > 0] — the if-clause. | ||
| 24 | Challenge: Score LeaderboardsComprehensions + sorted + lambda to rank players. | 🧩 Challenge | |
| 25 | map() & filter() Built-insThe original functional tools — and why comprehensions usually win. | ||
| 26 | Iterators: __iter__ & __next__What a for-loop actually does behind the scenes. | ||
| 27 | Generators with yieldFunctions that pause, return a value, and pick up where they left off. | ||
| 28 | Generators in Practice: Infinite SequencesAn infinite Fibonacci generator that doesn't blow up memory. | ||
| 29 | Game: Lazy Enemy SpawnerA generator drips enemies into a battle one at a time. | 🎮 Game | |
| 30 | Challenge: Functional OlympicsSix problems solved with comprehensions, lambda and generators — no loops allowed. | 🧩 Challenge | |
| 31 | Recursion 101: Base & Recursive CasesFunctions that call themselves — and how to stop them. | ||
| 32 | Recursion Practice: Factorial, Fibonacci, PowersThree classic recursive functions, side by side with their iterative versions. | ||
| 33 | Game: Recursive Art — Trees with TurtleA self-similar tree that branches forever. | 🎮 Game | |
| 34 | Game: Recursive Art — Koch SnowflakeAdd a bump to every line, repeat. A perfect snowflake emerges. | 🎮 Game | |
| 35 | Game: Recursive Art — Sierpinski TriangleA triangle of triangles of triangles. | 🎮 Game | |
| 36 | Challenge: Recursion LabFive recursive problems — palindrome check, list flatten, directory walk and more. | 🧩 Challenge | |
| 37 | Searching: Linear SearchThe simplest search — walk the list until you find it. | ||
| 38 | Searching: Binary SearchHalve the list each guess — find an item in a million in twenty steps. | ||
| 39 | Sorting: Bubble SortSwap neighbours until the list is in order. | ||
| 40 | Sorting: Insertion SortBuild the sorted list one card at a time, like a hand of cards. | ||
| 41 | Sorting: Python's sorted() with keyWhy you'll almost never write your own sort in real code. | ||
| 42 | Algorithm Complexity: Big-O IntuitionWhy O(log n) beats O(n) beats O(n²), in human terms. | ||
| 43 | Data Structures: Stacks (LIFO)Push, pop — undo buttons, browser history, function call stacks. | ||
| 44 | Data Structures: Queues (FIFO)Enqueue, dequeue — print queues, task lists, breadth-first searches. | ||
| 45 | Linked Lists Part 1: Node Class & TraversalBuild your own list out of nodes — see what Python's list hides. | ||
| 46 | Linked Lists Part 2: Insert & DeleteModify the chain without breaking it. | ||
| 47 | Capstone: Dungeon Quest — OOP RPGHero, monsters, inventory, battle loop and a recursive maze — every L3 idea in one game. | 🛠️ Project | |
| 48 | PCEP Exam Prep: Mock Exam & ReviewFormat walk-through, 10-question mock, weak-area review and a study plan. | 📝 Exam prep |
| Code | Lesson | Type | Milestone |
|---|---|---|---|
| 01 | JSON Files: Read & Writejson.load, json.dump and pretty-printing. | ||
| 02 | JSON: Nested Data & Pretty OutputIndented JSON, traversing lists-of-dicts, the indent= kwarg. | ||
| 03 | CSV Files: The Spreadsheet of CodeRead every row, every column, with the csv module. | ||
| 04 | CSV Files: Writing & Updating RowsBuild a spreadsheet from Python data. | ||
| 05 | Project: CSV ↔ JSON ConverterPick a direction, transform the file, prove the round-trip works. | 🛠️ Project | |
| 06 | Working with Dates & Timesdatetime, strptime, deltas — real-world data is full of dates. | ||
| 07 | Cleaning Messy Text DataStrip whitespace, normalise case, handle missing fields. | ||
| 08 | Challenge: Data JanitorTake a deliberately broken CSV and ship it clean. | 🧩 Challenge | |
| 09 | APIs & the requests LibrarySend your first HTTP GET, read the JSON response. | ||
| 10 | REST APIs: GET Requests Deep DiveQuery parameters, status codes, response headers. | ||
| 11 | REST APIs: POST, Headers & AuthSend data to a server; authenticate with an API key. | ||
| 12 | Project: Trivia Quiz from a Real APILive questions from Open Trivia DB. | 🛠️ Project | |
| 13 | Project: Weather App for Malaysian CitiesPull live forecasts and print a friendly summary. | 🛠️ Project | |
| 14 | Web Scraping: HTML Basics for ScrapersTags, attributes, the DOM tree — what BeautifulSoup walks. | ||
| 15 | BeautifulSoup: Selecting Elementsfind, find_all, CSS selectors. | ||
| 16 | Project: Shop Price TrackerScrape a price page daily, log changes to a CSV. | 🛠️ Project | |
| 17 | SQL Foundations: SELECT, WHEREPick rows and columns from a sample DB. | ||
| 18 | SQL: ORDER BY & LIMITSort the answers, take only the top few. | ||
| 19 | SQL: GROUP BY & AggregatesCOUNT, SUM, AVG — summarise across rows. | ||
| 20 | SQL: INNER JOINCombine matched rows from two tables. | ||
| 21 | SQL: LEFT JOINKeep everything on one side, even when the other has nothing. | ||
| 22 | SQLite with Python: the sqlite3 ModuleFrom the SQL shell into a Python script. | ||
| 23 | SQLite CRUD: Create, Read, Update, DeleteThe four verbs of every database app. | ||
| 24 | Project: Library Management SystemBooks, members and loans across three tables. | 🛠️ Project | |
| 25 | Pandas: Loading & Exploring DataFramesread_csv, head, describe, info. | ||
| 26 | Pandas: Selecting Rows & Columnsdf['col'], df.loc, df.iloc. | ||
| 27 | Pandas: Filtering with Boolean Masksdf[df['price'] > 10] and chained conditions. | ||
| 28 | Pandas: Grouping & Aggregatinggroupby + agg — pivot tables, in code. | ||
| 29 | Pandas: Cleaning (NaN, dtypes, duplicates)Most data is dirty. Most data work is cleaning. | ||
| 30 | Pandas: Merging DataFramesmerge on common keys — pandas's JOIN. | ||
| 31 | Pandas: Sorting & Top-N AnalysisWho are the top 5? Which day was the worst? | ||
| 32 | Challenge: Investigate a Real DatasetFive questions you must answer from a real Malaysian CSV. | 🧩 Challenge | |
| 33 | Matplotlib: Bar ChartsThe chart you'll draw most often. | ||
| 34 | Matplotlib: Line Charts & Time SeriesTrends over weeks, months, years. | ||
| 35 | Matplotlib: Pie & ScatterShowing proportions; spotting correlations. | ||
| 36 | Matplotlib: Subplots & DashboardsMultiple charts in one figure — a one-page report. | ||
| 37 | Project: Data Story — A 3-Chart ReportPick a dataset, ask a question, answer it with three charts. | 🛠️ Project | |
| 38 | Flask 101: Routes & ResponsesYour first web app — @app.route("/"). | ||
| 39 | Flask: HTML Templates with JinjaPass data from Python into HTML. | ||
| 40 | Flask: Forms & POST HandlingRead what the user submitted. | ||
| 41 | Flask + SQLite: Database-Backed BlogPosts saved to disk, listed on the home page. | ||
| 42 | Flask: User Sign-Up & LoginPassword hashing with bcrypt, session cookies. | ||
| 43 | Flask: Sessions & LogoutKeep someone logged in across requests. | ||
| 44 | Flask: Deployment Walk-ThroughPick a host, push the code, get a public URL. | ||
| 45 | Data Ethics & StorytellingBias in data; honest charts; what NOT to show. | ||
| 46 | Statistics & Datetime Deep Dive (PCED-aligned)mean, median, stdev, time-series — the maths PCED asks about. | ||
| 47 | Capstone: Full-Stack Data Web AppFlask + SQLite + auth + a live dataset — your portfolio's first real project. | 🛠️ Project | |
| 48 | PCED Exam Prep: Mock Exam & ReviewData-analysis exam orientation, 10-question mock, study plan. | 📝 Exam prep |
| Code | Lesson | Type | Milestone |
|---|---|---|---|
| 01 | Welcome to AI: What Can Computers Learn?The big ideas behind machine learning, in plain English. | ||
| 02 | AI vs ML vs Deep Learning: A Plain-English TourHow the buzzwords actually fit together. | ||
| 03 | The Data Mindset: Features & LabelsThe two columns every ML problem starts with. | ||
| 04 | NumPy Basics: Arrays & VectorisationWhy ML runs on arrays, not Python lists. | ||
| 05 | NumPy in Practice: An Image is an ArrayLoad a picture and treat its pixels as numbers. | ||
| 06 | Pandas for AI: Preparing DataFrom raw CSV to a model-ready DataFrame. | ||
| 07 | Seaborn 101: Pretty Plots FastSpot patterns before you train. | ||
| 08 | Seaborn Deep Dive: pairplot, heatmap, distributionsThe three plots you'll lean on for every dataset. | ||
| 09 | ML 101: Train, Test, PredictThe universal machine-learning recipe. | ||
| 10 | Train-Test Split & Cross-ValidationWhy you never test on the data you trained on. | ||
| 11 | Accuracy, Precision, RecallReading a model's scorecard properly. | ||
| 12 | Your First Classifier: K-Nearest NeighboursAsk your 5 closest friends what to choose. | ||
| 13 | Decision Trees: AI That Asks QuestionsIf-else, but learned from data. | ||
| 14 | Random Forests: Many Trees, One VoteBagging in one paragraph; sklearn in two lines. | ||
| 15 | Linear Regression: Predicting a NumberFit a line, forecast a value. | ||
| 16 | Logistic Regression: Predicting Yes/NoSame shape, classification output. | ||
| 17 | Clustering: K-Means (Unsupervised)Let the model find groups in your data. | ||
| 18 | Feature Engineering: Making Data UsableEncoding, scaling, dropping — the boring part nobody can skip. | ||
| 19 | Project: Predict Titanic SurvivalYour first complete ML pipeline. | 🛠️ Project | |
| 20 | Project: Malaysian Property Price PredictorReal local data; fit, validate, present. | 🛠️ Project | |
| 21 | Neural Networks 101: Neurons & LayersFrom one perceptron to a multi-layer net. | ||
| 22 | Activation Functions: ReLU, Sigmoid, SoftmaxWhat makes a neural net actually learn. | ||
| 23 | Build a Tiny Neural Net with KerasThree layers, one prediction. | ||
| 24 | Training a Neural Net: Loss & OptimisersGradient descent in pictures, not equations. | ||
| 25 | Overfitting: When AI MemorisesHow to spot it and how to fix it. | ||
| 26 | Dropout & RegularisationTwo tricks that keep neural nets honest. | ||
| 27 | Project: Handwritten Digit Recogniser (MNIST)The classic neural-net hello-world. | 🛠️ Project | |
| 28 | Project: Fashion Item ClassifierTrain a model on 10 clothing categories. | 🛠️ Project | |
| 29 | Image Classification with Pre-Trained ModelsUse ResNet / MobileNet without training from scratch. | ||
| 30 | OpenCV Basics: Load, Display, Resize, FilterThe four image operations you'll use most. | ||
| 31 | Face Detection with Haar CascadesFind faces in a photo with one library call. | ||
| 32 | Webcam Streams with OpenCVRead frames live and process them in a loop. | ||
| 33 | Project: Smile Detector AppSmile at the camera; the app responds. | 🛠️ Project | |
| 34 | NLP 101: Tokens, Stop-Words, StemmingTeaching a computer what a 'word' is. | ||
| 35 | Bag-of-Words & TF-IDFTurn text into numbers the model can read. | ||
| 36 | Sentiment AnalysisIs this review happy, sad or angry? | ||
| 37 | Pattern-Matching Chatbot (No API Needed)Rules, keywords, scripted replies — the chatbot of the 90s, today. | ||
| 38 | Project: Cyberbullying Comment FilterTrain a classifier to flag harmful messages. | 🛠️ Project | |
| 39 | LLM APIs: First Call to Claude / GPTSend a prompt, parse the streaming response. | ||
| 40 | Prompt Engineering: System vs User PromptsWhy the same question gives different answers. | ||
| 41 | Few-Shot Prompting: Teach by ExampleHand the model 3 examples; it generalises from there. | ||
| 42 | Tool Use: Letting the LLM Call a FunctionThe LLM picks the tool, your code runs it. | ||
| 43 | Streaming LLM ResponsesPrint tokens as they arrive — feels alive. | ||
| 44 | Project: Flask + LLM Chat AppConnect a real website to a real language model. | 🛠️ Project | |
| 45 | RAG Lite: Search Your Notes with an LLMEmbed your text, retrieve the right chunk, ground the answer. | ||
| 46 | AI Ethics: Bias, Fairness & ResponsibilityThe questions every AI builder must ask before shipping. | ||
| 47 | Capstone: Your AI-Powered ApplicationPick a real problem you care about; build the model + the UI. | 🛠️ Project | |
| 48 | PCEI Exam Prep: Mock Exam & ReviewAI-exam orientation, 10-question mock, study plan. | 📝 Exam prep |
| Code | Lesson | Type | Milestone |
|---|---|---|---|
| 01 | Why We Test: Real Bug StoriesFrom small typo to global outage — the cost of skipping tests. | ||
| 02 | Testing VocabularyStatic vs dynamic, black-box vs white-box, smoke vs regression. | ||
| 03 | Testing LevelsUnit → integration → system → acceptance. | ||
| 04 | Manual Testing & Test CasesDesigning thoughtful test cases on paper, before any code. | ||
| 05 | Assertions in Python: assertThe simplest test possible — a statement that must be true. | ||
| 06 | Writing Your First Test Without a FrameworkJust a plain script that crashes on failure. | ||
| 07 | unittest: Python's Built-in FrameworkTestCase classes and your first green tick. | ||
| 08 | unittest: assertEqual, assertRaises & FriendsThe dozen assertions you'll actually use. | ||
| 09 | unittest: setUp & tearDownLifecycle hooks — set up once, run many. | ||
| 10 | unittest: Test Suites & DiscoveryRun all your tests with one command. | ||
| 11 | pytest Intro: Less BoilerplatePlain functions, plain asserts — why the industry loves it. | ||
| 12 | pytest: Naming Rules & Discoverytest_*.py, test_* functions — the conventions matter. | ||
| 13 | pytest: Smart Assert IntrospectionWhen a plain assert fails, pytest tells you why. | ||
| 14 | pytest Fixtures Part 1: Reuse Setup@pytest.fixture — your test data, ready to inject. | ||
| 15 | pytest Fixtures Part 2: Scope & Cleanupscope="module", yield for teardown. | ||
| 16 | pytest: Parametrize One Test, Many Cases@pytest.mark.parametrize — table-driven testing. | ||
| 17 | pytest Markers: skip, xfail, customSkip slow tests; mark known failures; group tests by tag. | ||
| 18 | Project: Test the L2 Tic-Tac-Toe EngineA full pytest suite for the game you wrote in Level 2. | 🛠️ Project | |
| 19 | Project: Test the L3 Dungeon QuestCover Hero, Monster, Battle and Inventory classes. | 🛠️ Project | |
| 20 | Challenge: Find the Hidden BugsFive working-but-subtly-broken functions; write tests that catch every bug. | 🧩 Challenge | |
| 21 | Mocking 101: Why & WhenReplace the slow / external bit with a stand-in. | ||
| 22 | unittest.mock.Mock & MagicMockObjects that record everything done to them. | ||
| 23 | Patching: the @patch DecoratorSwap a real function for a fake one, for the test only. | ||
| 24 | Mocking a DatabaseTest your CRUD code without touching SQLite. | ||
| 25 | Mocking an HTTP APIPatch requests.get so tests work offline. | ||
| 26 | Challenge: Mock OlympicsFour tricky cases where mocks save the day. | 🧩 Challenge | |
| 27 | Coverage 101: What Lines Got Hit?Track which lines your tests executed. | ||
| 28 | pytest-cov: Measure & Visualise CoveragePer-file percentages and an HTML report you can browse. | ||
| 29 | Coverage Targets: How Much Is Enough?Why 100% is a trap, and what to aim for instead. | ||
| 30 | TDD 101: Red → Green → RefactorThe three-step rhythm that changes how you write code. | ||
| 31 | TDD Walk-Through: Build a Calculator Test-FirstWatch a real test-driven build, step by step. | ||
| 32 | TDD Project Part 1: Library CatalogueWrite the failing tests; make them pass. | 🛠️ Project | |
| 33 | TDD Project Part 2: Library Catalogue PolishRefactor under green tests; add search, filter, sort. | 🛠️ Project | |
| 34 | Challenge: TDD a Mini-AppA 20-line spec; everyone TDDs it from scratch. | 🧩 Challenge | |
| 35 | Integration Testing ConceptsWhen unit tests aren't enough — testing how the parts talk. | ||
| 36 | Testing a Flask App: The Test ClientHit routes, assert on responses, no browser needed. | ||
| 37 | Testing Database Code: Real DB vs MockThe eternal trade-off — speed vs realism. | ||
| 38 | Testing AI / ML CodeDeterminism, seeds, what 'passing' even means for an ML model. | ||
| 39 | End-to-End Testing IntroDrive the real browser, click the real buttons. | ||
| 40 | Project: E2E Test a Real Web Appplaywright + pytest, the modern stack. | 🛠️ Project | |
| 41 | Static Analysis: ruffThe fastest linter in the Python world — install, run, fix. | ||
| 42 | Static Analysis: pylintDeeper, slower, opinionated — when you want the extra eyes. | ||
| 43 | Code Formatting: black & isortStop arguing about spaces; let the tool decide. | ||
| 44 | Type Checking with mypyCatch type bugs without running the code. | ||
| 45 | Pre-commit Hooks: Stop Bad Code Before CommitRun ruff, mypy and your tests automatically on every git commit. | ||
| 46 | CI Basics: GitHub Actions for pytestPush the branch; the cloud runs your tests; you get a tick or a cross. | ||
| 47 | Capstone: Bring a Real App to 90% CoverageTake an existing repo (yours or a teammate's) and ship it with a real test suite. | 🛠️ Project | |
| 48 | PCET Exam Prep: Mock Exam & ReviewTester-exam orientation, 10-question mock, study plan. | 📝 Exam prep |
| Code | Lesson | Type | Milestone |
|---|---|---|---|
| 01 | Why Automate? ROI & Boring TasksSpotting the tasks worth automating — and the ones that aren't. | ||
| 02 | Command-Line 101: sys.argvThe simplest way to read arguments from the terminal. | ||
| 03 | argparse Part 1: Positional & Optional ArgsReal CLI tools with -h help text for free. | ||
| 04 | argparse Part 2: Subcommands & Defaultstool add, tool remove, tool list — git-style CLIs. | ||
| 05 | pathlib: The Modern File-Path APIPath objects beat string concatenation every time. | ||
| 06 | pathlib in Practice: Find, Walk, GlobPath.rglob("*.csv") and friends. | ||
| 07 | shutil: Copy, Move, Delete, ArchiveHigh-level file operations for whole folders. | ||
| 08 | os Module: Environment & Working Directoryos.environ, os.getcwd and friends. | ||
| 09 | subprocess Part 1: Run a Commandsubprocess.run() — the safe modern way. | ||
| 10 | subprocess Part 2: Capture Output & Pipe Inputcapture_output=True and stdin piping. | ||
| 11 | Datetime Deep Dive: Parse, Format, Arithmeticstrptime, strftime, timedelta. | ||
| 12 | Timezone-Aware Datetime: zoneinfoWhy MYT/UTC matters when your bot runs at midnight. | ||
| 13 | Logging Part 1: Levels, Formatters, HandlersReplace print forever. | ||
| 14 | Logging Part 2: File Logs & RotationKeep logs forever without filling the disk. | ||
| 15 | CSV Automation: Merge & De-DupeCombine five files; drop duplicates by key column. | ||
| 16 | Challenge: CSV OlympicsSix file-wrangling problems against the clock. | 🧩 Challenge | |
| 17 | JSON Automation: Validate & TransformWalk nested JSON; check schemas; rewrite shapes. | ||
| 18 | Excel Automation: openpyxl ReadOpen an .xlsx, read cells, traverse sheets. | ||
| 19 | Excel Automation: openpyxl Write & StyleGenerate styled reports with borders, colours and formulas. | ||
| 20 | PDF Automation: pypdf Read & Extract TextPull text out of an invoice PDF. | ||
| 21 | PDF Automation: Merge, Split, WatermarkCut a 200-page PDF into chapters; stamp a footer on every page. | ||
| 22 | Project: Multi-Format Report GeneratorTake a CSV; output an Excel report, a PDF cover sheet and a JSON manifest. | 🛠️ Project | |
| 23 | Web Scraping for Automation: Robust SelectorsSelectors that survive minor HTML changes. | ||
| 24 | API Automation: Retries & Rate LimitsBack off and try again — the pipeline survives. | ||
| 25 | API Automation: OAuth & TokensAuthenticate to real-world APIs without leaking keys. | ||
| 26 | Web Automation: Selenium BasicsDrive a real Chrome browser from Python. | ||
| 27 | Web Automation: Playwright (Modern Alternative)Async, faster, batteries-included. | ||
| 28 | Project: Auto-Fill Form BotA bot that submits a daily form for you. | 🛠️ Project | |
| 29 | Email Automation: smtplib & MIMESend programmatic emails — politely. | ||
| 30 | Email Automation: Attachments & HTMLPDF reports attached, styled message body. | ||
| 31 | Notifications: Slack WebhooksPost a message to a channel in three lines. | ||
| 32 | Notifications: Discord WebhooksSame idea, different platform — bridge them both. | ||
| 33 | SMS Notifications via API (Twilio teaser)When email isn't urgent enough. | ||
| 34 | Project: Multi-Channel Alert SystemTrigger → format → fan out to email + Slack + SMS. | 🛠️ Project | |
| 35 | Scheduling: the schedule LibraryPure-Python "every day at 8am" — no cron needed. | ||
| 36 | Scheduling: cron & Task SchedulerNative OS schedulers — Linux/macOS cron and Windows Task Scheduler. | ||
| 37 | File Watching: watchdogReact to a file appearing in a folder, instantly. | ||
| 38 | Backup & Sync AutomationBuild your own mini Time Machine for one folder. | ||
| 39 | Database Backup AutomationDump SQLite / Postgres on a schedule; rotate old dumps. | ||
| 40 | Project: Daily Report BotScrape → transform → email at 8 a.m. every morning. | 🛠️ Project | |
| 41 | SSH with paramiko Part 1: Connect & RunRun a command on a remote server from your laptop. | ||
| 42 | SSH with paramiko Part 2: SFTP File TransferPush and pull files over SSH. | ||
| 43 | Server Health ChecksPing, disk-usage, CPU, memory — automate the basics with psutil. | ||
| 44 | Project: Server Maintenance ToolkitA CLI that backs up, restarts, and reports on a remote box. | 🛠️ Project | |
| 45 | Error Recovery in Long-Running ScriptsRetry, resume, skip — never crash a 4-hour pipeline an hour from done. | ||
| 46 | DevOps Mindset: Idempotence, Logging, AlertsThe three habits that separate scripts from systems. | ||
| 47 | Capstone: Workflow OrchestratorA multi-step automation with logging, retries, reports and a Slack alert. | 🛠️ Project | |
| 48 | PCEA Exam Prep: Mock Exam & ReviewAutomation-exam orientation, 10-question mock, study plan. | 📝 Exam prep |
| Code | Lesson | Type | Milestone |
|---|---|---|---|
| 01 | Welcome to Security: CIA Triad & EthicsConfidentiality, Integrity, Availability — plus rules of engagement. | ||
| 02 | Threat Modelling: Think Like an AttackerSTRIDE in plain English; spot weak spots before they're exploited. | ||
| 03 | Network Basics: TCP/IP, Ports, ProtocolsHow a packet travels from your laptop to a server. | ||
| 04 | The OSI Model in One HourSeven layers, every one mapped to something a Python script touches. | ||
| 05 | DNS & How URLs ResolveFrom `google.com` to an IP address, step by step. | ||
| 06 | Project: Passive Reconnaissance ToolkitWHOIS, DNS lookups, public-record gathering — non-intrusive recon. | 🛠️ Project | |
| 07 | Sockets in Python: TCP ClientThe socket module — your own networking from scratch. | ||
| 08 | Sockets in Python: TCP ServerAccept connections, echo back, handle multiple clients. | ||
| 09 | SSL/TLS: Secure Connections in PythonHow HTTPS actually works under the hood. | ||
| 10 | Project: Encrypted Chat ServerClient + server + TLS — a 50-line private chat. | 🛠️ Project | |
| 11 | Hashing 101: hashlibMD5, SHA-256 — one-way functions and why they matter. | ||
| 12 | Why Hashing Matters: Password StorageNever store passwords in plain text. Ever. | ||
| 13 | Salting & bcrypt Deep DiveWhy "just hashing" isn't enough, and what bcrypt adds. | ||
| 14 | Symmetric Encryption: Fernetcryptography.fernet — one key encrypts and decrypts. | ||
| 15 | Symmetric Encryption: AES Mode ComparisonECB vs CBC vs GCM — why some modes are wrong. | ||
| 16 | Asymmetric Encryption: Public & Private KeysThe maths behind every HTTPS handshake. | ||
| 17 | Asymmetric in Practice: RSA Sign & VerifyProve a message came from you without revealing the key. | ||
| 18 | Project: Encrypted Message VaultSave secrets to disk; decrypt only with the right password. | 🛠️ Project | |
| 19 | Port Scanning: Concepts & EthicsWhat scanning reveals and the laws around it. | ||
| 20 | Project: Build a Port ScannerScan a host on YOUR network, report open ports — ethically. | 🛠️ Project | |
| 21 | File Integrity Monitoring with ChecksumsDetect when a file has been tampered with — even by one byte. | ||
| 22 | System Monitoring with psutilWatch processes, memory and disks live. | ||
| 23 | Process Inspection & Anomaly DetectionSpot a process that shouldn't be there. | ||
| 24 | Network Sniffing Basics (scapy teaser)What goes across a wire — and why HTTPS exists. | ||
| 25 | Log Analysis for SecurityFind the needle (one suspicious login) in the haystack (10 000 lines). | ||
| 26 | Challenge: Intrusion DetectiveGiven three log files, identify the attack and the affected accounts. | 🧩 Challenge | |
| 27 | OWASP Top 10 TourThe classic web-app vulnerabilities — at a glance. | ||
| 28 | A01 — Broken Access ControlWhen the wrong user reaches the wrong endpoint. | ||
| 29 | A02 — Cryptographic FailuresWeak algorithms, default keys, leaked tokens. | ||
| 30 | A03 — SQL Injection: The AttackShow the exploit on a deliberately broken demo app. | ||
| 31 | A03 — SQL Injection: The DefenceParameterised queries — the only correct fix. | ||
| 32 | A07 — XSS: Cross-Site Scripting AttackHow a comment field can take over a page. | ||
| 33 | A07 — XSS: Defence (Sanitisation & CSP)Output encoding and Content Security Policy. | ||
| 34 | A05 — Security MisconfigurationDefault credentials, exposed admin panels, debug pages in prod. | ||
| 35 | A08 — Software & Data Integrity FailuresSupply-chain attacks; what pinned dependencies actually buy you. | ||
| 36 | Challenge: OWASP Bug HuntA deliberately vulnerable Flask app — find and patch four bugs. | 🧩 Challenge | |
| 37 | Authentication Basics: Sessions vs TokensHow the web remembers who you are. | ||
| 38 | JWT: Structure, Signing, ValidationThe three dots; why never trust a JWT you didn't validate. | ||
| 39 | OAuth 2.0: The Authorisation Code Flow"Sign in with Google" demystified. | ||
| 40 | Access Control: RBAC PatternsRoles, permissions, and how to wire them up in Flask. | ||
| 41 | Project: Add Auth + RBAC to a Flask AppTake the L4 blog and add admin / editor / reader roles. | 🛠️ Project | |
| 42 | Secure API Design ChecklistTen things every public API must get right. | ||
| 43 | Subprocess Safely: Avoiding Command InjectionWhy shell=True is almost always wrong. | ||
| 44 | Secrets Management: .env, Vaults, Key RotationWhere keys go — and where they never should. | ||
| 45 | Logging & Audit Trails for ForensicsLogs that hold up in an investigation — and the ones that don't. | ||
| 46 | Security Reports: PDF, CSV, JSON EvidenceGenerate handover documents your client can act on. | ||
| 47 | Capstone: Vulnerability ScannerCombine scanning, hashing, reporting and ethics into a deliverable tool. | 🛠️ Project | |
| 48 | PCES Exam Prep: Mock Exam & ReviewSecurity-exam orientation, 10-question mock, study plan. | 📝 Exam prep |
| Code | Lesson | Type | Milestone |
|---|---|---|---|
| 01 | What Is Pygame Zero? Install & First WindowInstall pgzero, run an empty window, save the file. | ||
| 02 | The Game Loop: draw() & update()How a game ticks — 60 times per second. | ||
| 03 | Coordinates: Screen Origin & y-Axisx, y and why y goes downwards in graphics. | ||
| 04 | Drawing Shapes: Rect, Circle, LineFilled and outlined primitives. | ||
| 05 | Colours & BackgroundsRGB tuples, named colours, gradient hacks. | ||
| 06 | Mini-Game: Doodle PadDraw with the mouse, clear with space. | 🎮 Game | |
| 07 | Actors: Your First SpriteLoad an image, place it on the canvas. | ||
| 08 | Moving Actors: actor.x += 1The simplest way to push a sprite around. | ||
| 09 | Velocity & Time-Based MovementWhy frame-rate-independent movement matters. | ||
| 10 | Multiple Actors: Lists of SpritesSpawn many; update them all in a loop. | ||
| 11 | Mini-Game: Cat ParadeTen cats walking in a line, each at its own speed. | 🎮 Game | |
| 12 | Challenge: 100 Sprites at 60 FPSSpawn 100 actors and keep the frame rate locked. | 🧩 Challenge | |
| 13 | Keyboard Input: Arrow KeysThe keyboard object — held vs pressed. | ||
| 14 | Keyboard Input: Multiple Keys at OnceDiagonal movement, run + jump combos. | ||
| 15 | Mouse Input: Click & Dragon_mouse_down, on_mouse_move, on_mouse_up. | ||
| 16 | Mini-Game: Sky PainterPaint trails on the screen with the arrow keys. | 🎮 Game | |
| 17 | Mini-Game: Bug SquasherClick moving bugs before they escape. | 🎮 Game | |
| 18 | Mini-Game: Cat & Mouse ChaseWASD to dodge, score for survival time. | 🎮 Game | |
| 19 | Collision Detection: colliderectHave two rectangles overlapped this frame? | ||
| 20 | Collision: collidepoint (Mouse on Actor)Did the user click on the right sprite? | ||
| 21 | Collision Reactions: Bounce, Destroy, ScoreWhat to do when things touch. | ||
| 22 | Mini-Game: Pong LiteTwo paddles, one ball, infinite rally. | 🎮 Game | |
| 23 | Mini-Game: Brick BreakerSmash a wall of bricks with a bouncing ball. | 🎮 Game | |
| 24 | Sprite Animation: Cycle FramesSwap costumes every few frames — a walking animation. | ||
| 25 | Sprite Animation: Direction-Based FramesFace left, face right, face up — without flipping by hand. | ||
| 26 | Sound Effects: sounds.boom.play()One-shot sounds that fire on event. | ||
| 27 | Background Music with music.playLoop a track; fade in / fade out. | ||
| 28 | Mini-Game: Falling Stars with SoundCatch the stars; chime on hit, thud on miss. | 🎮 Game | |
| 29 | Mini-Game: Drum MachineClick pads, schedule beats, play a loop. | 🎮 Game | |
| 30 | Score, Lives & Health BarsThe numbers every arcade game shows. | ||
| 31 | Game States: Start → Play → Game OverA single state variable, branching draw and update. | ||
| 32 | Saving High Scores to a FileTop 5 scores survive between sessions. | ||
| 33 | Mini-Game: Asteroids Lite — Part 1 (Movement)Rotate, thrust, wrap around the screen. | 🎮 Game | |
| 34 | Mini-Game: Asteroids Lite — Part 2 (Game States)Start screen, play, game-over — and a hi-score table. | 🎮 Game | |
| 35 | Simple Physics: Gravity & JumpConstant downward acceleration; an impulse up. | ||
| 36 | Bouncing & FrictionEnergy loss on each bounce; sliding to a stop. | ||
| 37 | Mini-Game: Gravity CatcherCatch falling objects in a basket. | 🎮 Game | |
| 38 | Mini-Game: Endless Runner — Part 1 (Movement)Player runs; world scrolls; jump on spacebar. | 🎮 Game | |
| 39 | Mini-Game: Endless Runner — Part 2 (Obstacles)Procedurally spawn rocks and pits; score for distance. | 🎮 Game | |
| 40 | Tile-Based BackgroundsBuild a level out of 16×16 tiles. | ||
| 41 | Scrolling BackgroundsParallax layers — clouds, hills, foreground. | ||
| 42 | Multiple Levels & Difficulty CurvesProgressive challenge — speed and spawn rates. | ||
| 43 | Particles: Explosions & TrailsSmall sprites with short lives — fireworks made of code. | ||
| 44 | Screen Shake & Hit FlashesThe two tricks that make every hit feel solid. | ||
| 45 | Title, Pause & Game Over ScreensThree more states; clean transitions; clear instructions. | ||
| 46 | Challenge: Make Your Game Feel "Juicy"Take a working game; add shake, particles, sound polish. | 🧩 Challenge | |
| 47 | Capstone Part 1: Plan & Build Your Arcade GameChoose a genre, sketch the design, build the prototype. | 🛠️ Project | |
| 48 | Capstone Part 2: Polish & ShareAdd sound, score, juicy polish, and show it to your class. | 🛠️ Project |
| Code | Lesson | Type | Milestone |
|---|---|---|---|
| 01 | Pygame vs Pygame ZeroWhy go deeper, and what Pygame Zero hid from you. | ⏳ Planned | |
| 02 | Setting Up: pygame.init() & the Main LoopThe classic while running: pattern. | ⏳ Planned | |
| 03 | The Event System: Queue & PollingKeyboard, mouse, quit — all through one queue. | ⏳ Planned | |
| 04 | Display Surface & Drawing PrimitivesSurfaces, blits, and what actually gets drawn. | ⏳ Planned | |
| 05 | Coordinates & the Rect ObjectThe Swiss-army knife of Pygame geometry. | ⏳ Planned | |
| 06 | Loading & Drawing Imagesconvert_alpha, blit and image performance. | ⏳ Planned | |
| 07 | Sprites as Classes: Your First PlayerOOP applied — every entity is a class. | ⏳ Planned | |
| 08 | Sprite Class: Image, Rect & update()The three things every sprite must have. | ⏳ Planned | |
| 09 | Movement & Velocity VectorsSmooth movement using x/y velocity components. | ⏳ Planned | |
| 10 | Diagonal Speed NormalisationWhy diagonal moves shouldn't feel faster. | ⏳ Planned | |
| 11 | Sprite Groups: Many Objects, One UpdateGroup.update() and Group.draw(). | ⏳ Planned | |
| 12 | Sprite Group Performance: Why Groups MatterSpawn 1,000 sprites; keep 60 FPS. | ⏳ Planned | |
| 13 | Collision: colliderectRectangle-vs-rectangle, the fast default. | ⏳ Planned | |
| 14 | Collision: spritecollide & groupcollideOne sprite vs a group; group vs group. | ⏳ Planned | |
| 15 | Collision: Pixel-Perfect MasksWhen rectangles aren't accurate enough. | ⏳ Planned | |
| 16 | Mini-Game: Top-Down Shooter — Part 1 (Player)Player class, movement, shooting bullets. | ⏳ Planned | 🎮 Game |
| 17 | Mini-Game: Top-Down Shooter — Part 2 (Enemies & Bullets)Enemy spawner, sprite groups, collision resolution. | ⏳ Planned | 🎮 Game |
| 18 | Mini-Game: Top-Down Shooter — Part 3 (Score & Game Over)HUD, hi-score table, restart loop. | ⏳ Planned | 🎮 Game |
| 19 | Sprite Sheets: Slicing FramesOne PNG, many frames — load once, blit cheap. | ⏳ Planned | |
| 20 | Animation: Frame Timing with Delta-TimeAnimations that run at the same speed on every machine. | ⏳ Planned | |
| 21 | Animation: State Machine (Idle, Run, Attack)Pick the right animation for the current action. | ⏳ Planned | |
| 22 | Mini-Game: Animated Boss FightMulti-phase boss with sprite-sheet animations. | ⏳ Planned | 🎮 Game |
| 23 | Tile Maps: Loading Levels from CSVA 2D grid of numbers → a 2D world of tiles. | ⏳ Planned | |
| 24 | Tile Maps: Loading from Tiled .tmxUse the Tiled editor; load the file in Python. | ⏳ Planned | |
| 25 | Camera & Scrolling: Follow the PlayerWhen the world is bigger than the window. | ⏳ Planned | |
| 26 | Camera: Smooth Lerp & Dead ZonesCameras that don't snap or jitter. | ⏳ Planned | |
| 27 | Parallax BackgroundsLayers that scroll at different speeds — instant depth. | ⏳ Planned | |
| 28 | Mini-Game: Side-Scroller — Part 1 (Movement & Camera)Player + tile map + smooth-follow camera. | ⏳ Planned | 🎮 Game |
| 29 | 2D Physics: Gravity, Walking, JumpingVelocity, gravity, ground detection. | ⏳ Planned | |
| 30 | 2D Physics: Platform Collision ResolutionHow to stop the player from falling through floors. | ⏳ Planned | |
| 31 | 2D Physics: Wall Slides & Coyote JumpTwo tricks that make platformers feel right. | ⏳ Planned | |
| 32 | Mini-Game: Side-Scroller — Part 2 (Physics & Polish)Add gravity, jumps, collectibles and a goal. | ⏳ Planned | 🎮 Game |
| 33 | Particle Systems: Basic Particle ClassA short-lived sprite with velocity and a fade-out. | ⏳ Planned | |
| 34 | Particle Systems: Emitters & Object PoolsSpawn thousands without allocating thousands. | ⏳ Planned | |
| 35 | Mini-Game: Particle Showcase (Fireworks)Click to launch; explode in colour. | ⏳ Planned | 🎮 Game |
| 36 | Scene Management: Stack-Based State MachinePush a pause scene; pop it back to the game. | ⏳ Planned | |
| 37 | HUD: Score, Health, Mini-MapDrawing on top of the world. | ⏳ Planned | |
| 38 | UI: Buttons & Menus from ScratchClick areas, hover states, keyboard navigation. | ⏳ Planned | |
| 39 | Title → Game → Pause → Game Over FlowFour scenes, clean transitions, no leaks. | ⏳ Planned | |
| 40 | Settings Screen: Volume & ControlsKeybinds the player can change at runtime. | ⏳ Planned | |
| 41 | Sound Mixer: Music + SFX ChannelsBackground music, layered effects, master volume. | ⏳ Planned | |
| 42 | Sound Mixer: Channel ManagementReserve channels so important sounds aren't cut off. | ⏳ Planned | |
| 43 | Saving Progress: JSON + PygameHigh scores, settings, and a continue button. | ⏳ Planned | |
| 44 | Save Slots: Multiple Save FilesThree saves; load, overwrite, delete. | ⏳ Planned | |
| 45 | Performance: FPS Counter & ProfilingMeasure before you optimise; show FPS in the HUD. | ⏳ Planned | |
| 46 | Performance: Dirty-Rect Drawing & Surface Re-UseTwo tricks that double the frame rate on slow machines. | ⏳ Planned | |
| 47 | Capstone Part 1: Design & BuildChoose a genre, plan the game, ship a playable prototype. | ⏳ Planned | 🛠️ Project |
| 48 | Capstone Part 2: Polish, Test & ShipParticles, sound, save system, and a public release. | ⏳ Planned | 🛠️ Project |
No lessons match your search.