Skip to main content
🎨

Creative Challenges

L3PRO· 104 lessons

10 unique formats nobody else teaches

0 / 104 · 0%

104 lessons across 10 themed modules: Code Detective (broken-codebase mysteries), AI Pair-Reversed (catch Claude's deliberate bugs), Time-Travel Refactor (Python 2.4 → modern), Bug Bounty, Code Golf (shortest wins), Refactor Master (legacy → idiomatic), Whodunit Mysteries, plus more unique formats no other site teaches.

Who this is for

  • ·You finished Foundations (or know Python at that level) and want play, not more theory
  • ·Open to weird formats: Code Detective, Time-Travel Refactor, AI Pair-Reversed
  • ·You learn by breaking things and reading other people's mess — perfect, that's the entire track

After you finish

0/312 stars· 0% complete

Resume →

🕵️ Case 01: The Off-By-One Killer

🕵️ Case 02: The Mutable Default Argument

🕵️ Case 03: The Floating-Point Money Heist

🕵️ Case 04: The Integer Division Trap

🕵️ Case 05: The Shadowed Built-in

🕵️ Case 06: The Closure Conspiracy

🕵️ Case 07: The Encoding Mystery

🕵️ Case 08: The Dict Mutation Heist

🕵️ Case 09: The Silent Exception Swallower

🏆 Case 10 — Capstone: The Race-Condition Counter

🤖 Spot Claude's mistake: flatten a nested list

🤖 Spot Claude's mistake: email validator is too permissive

🤖 Spot Claude's mistake: pagination off-by-one

🤖 Spot Claude's mistake: dedup lost the order

🤖 Spot Claude's mistake: Fibonacci that never finishes

🤖 Spot Claude's mistake: CSV reader ate the header

🤖 Spot Claude's mistake: sorting mixed-type values crashes

🤖 Spot Claude's mistake: LRU cache that never evicts

🤖 Spot Claude's mistake: counting words ignores case

🏆 Capstone: Claude's retry decorator swallows everything

🎯 Review: Creative module 2 recap

⏰ 1998 → 2026: %-formatting → f-strings

⏰ 2002 → 2026: dict() constructor → dict literal

⏰ Python 2.7 → 3.12: print statement → print function

⏰ 2008 → 2026: open/read/close → pathlib.read_text

⏰ 2010 → 2026: filter+map+lambda → list comprehension

⏰ 2015 → 2026: verbose class → @dataclass

⏰ 2018 → 2026: try/except dict lookup → .get()

⏰ 2018 → 2026: typing.List[int] → list[int]

⏰ 2019 → 2026: callbacks → async/await

🏆 Time-Travel Capstone: 2005 module → 2026 rewrite

🐛 Bug Bounty #01: The Phantom Date

🐛 Bug Bounty #02: CSV escaping nightmare

🐛 Bug Bounty #03: The shopping cart that won't empty

🐛 Bug Bounty #04: String concat in a hot loop

🐛 Bug Bounty #05: Average of an empty list

🐛 Bug Bounty #06: The password check that always passes

🐛 Bug Bounty #07: Query-string parsing rolls its own

🐛 Bug Bounty #08: Celsius → Fahrenheit off by a hair

🐛 Bug Bounty #09: Inventory drops below zero

🏆 Bug Bounty Capstone: Production rate-limiter

🎯 Review: Creative module 4 recap

⛳ Golf #01: FizzBuzz in under 80 chars

⛳ Golf #02: Reverse the words (not the chars)

⛳ Golf #03: Palindrome check

⛳ Golf #04: Sum of squares 1..10

⛳ Golf #05: Count the vowels

⛳ Golf #06: Anagram check

⛳ Golf #07: Flatten a list of lists (one level)

⛳ Golf #08: Caesar cipher (+3 shift)

⛳ Golf #09: Find duplicates in a list

🏆 ⛳ Golf Capstone: Mini JSON formatter

🔧 Refactor #01: Flatten the if-pyramid

🔧 Refactor #02: Name the magic numbers

🔧 Refactor #03: Loop → comprehension

🔧 Refactor #04: Boolean-parameter trap → @dataclass config

🔧 Refactor #05: God-function → small helpers

🔧 Refactor #06: Mutating a global → pure function

🔧 Refactor #07: String `+=` → `join`

🔧 Refactor #08: isinstance ladder → dispatch dict

🔧 Refactor #09: Manual counter → collections.Counter

🏆 Refactor Capstone: 10 sins, one module

🎯 Review: Creative module 6 recap

🔮 Whodunit #01: The vanishing logs

🔮 Whodunit #02: Late-binding closure

🔮 Whodunit #03: The Schrödinger dictionary

🔮 Whodunit #04: The hash that won't

🔮 Whodunit #05: Generator exhaustion

🔮 Whodunit #06: The frozen import

🔮 Whodunit #07: Truthy zero

🔮 Whodunit #08: The disappearing return

🔮 Whodunit #09: Equality vs identity

🏆 Whodunit Capstone: the heisenbug

🎯 Showdown #01: Membership test list vs set

🎯 Showdown #02: Sum with for-loop vs sum()

🎯 Showdown #03: f-string vs .format() vs %

🎯 Showdown #04: dict.get vs try/except

🎯 Showdown #05: list.append loop vs comprehension

🎯 Showdown #06: bytes.join vs string concat

🎯 Showdown #07: deque vs list.pop(0)

🎯 Showdown #08: in for str vs set for str-of-chars

🎯 Showdown #09: math.fsum vs sum for floats

🏆 Showdown Capstone: counting words

🎯 Review: Creative module 8 recap

🔬 Edge Case #01: Empty input

🔬 Edge Case #02: Single-element input

🔬 Edge Case #03: Negative numbers

🔬 Edge Case #04: Unicode strings

🔬 Edge Case #05: Duplicate keys

🔬 Edge Case #06: Very large numbers

🔬 Edge Case #07: None vs missing

🔬 Edge Case #08: Empty list multiplied

🔬 Edge Case #09: Whitespace-only strings

🏆 Edge Case Capstone: bulletproof tax calculator

✨ Magic #01: Dunder __add__

✨ Magic #02: __iter__ + __next__

✨ Magic #03: __enter__ / __exit__

✨ Magic #04: @property

✨ Magic #05: @dataclass

✨ Magic #06: Descriptors

✨ Magic #07: Metaclass basics

✨ Magic #08: __slots__

✨ Magic #09: contextlib decorators

🏆 Magic Capstone: tiny ORM with descriptors + metaclass

Tip: click any lesson to revisit it. After your first attempt, the “Show example” button reveals the full solution.