This repository contains slide decks for Clean Code conversations and classes.
Install Node.js 24 or later, Pandoc, and LaTeX. Then install the development dependencies and run the validation and rendering steps:
npm ci --ignore-scripts
make check
make -jEverything under _site is generated. Each deck renders to a PDF, and the published index page is
built from the Curriculum section below via index.template.html and index.lua, so the tables
here are the only place the curriculum is edited.
| # | Session Type | Name |
|---|---|---|
| 1 | Discussion | Introduction |
| 2 | Discussion | Names++ |
| 3 | Coding Dojo | "Change" Refactoring Kata (Python, C++) |
| 4 | Discussion | Functions |
| 5 | Coding Dojo | FizzBuzz Kata (Python, C++) |
| 6 | Discussion | Function Structure |
| 7 | Coding Dojo | Tennis Kata (Python, C++) |
| 8 | Discussion | Form |
| 9 | Coding Dojo | Bowling Kata (Python, C++) |
| 10 | Discussion | TDD |
| 11 | Coding Dojo | Repeat after Uncle Bob |
| 12 | Discussion | "Polly want a message" |
| 13 | Coding Dojo | Participant choice |
| # | Session Type | Name |
|---|---|---|
| 1 | Discussion | Foundations of the SOLID principles |
| 2 | Discussion | The Single Responsibility Principle |
| 3 | Coding Dojo | Gilded Rose Refactoring Kata (Python, C++) |
| 4 | Discussion | The Dependency Inversion Principle |
| 5 | Coding Dojo | Smart Home Refactoring Kata (Python, C++) |
| 6 | Discussion | The Interface Segregation Principle |
| 7 | Coding Dojo | Media Player Refactoring Kata (Python, C++) |
| 8 | Discussion | The Open-Closed Principle |
| 9 | Coding Dojo | Expense Report Refactoring Kata (Python, C++) |
| 10 | Discussion | The Liskov Substitution Principle |
| 11 | Coding Dojo | Game of Life Refactoring Kata (Python, C++) |
| # | Session Type | Name |
|---|---|---|
| 1 | Discussion | Advanced TDD |
| 2 | Coding Dojo | Roman Numerals Kata (Python, C++) |
| 3 | Discussion | Clean Tests |
| 4 | Coding Dojo | Mars Rover Kata (Python, C++) |
| 5 | Coding Mob | Mars Rover Kata (Python, C++) |
| 6 | Discussion | Test Design / Test Process |
| 7 | Coding Dojo | Hyper-optimized Telemetry Kata (Python, C++) |
| 8 | Discussion | Student Code Demo |
| 9 | Discussion | Mocking |
| 10 | Coding Dojo | Tire Pressure Monitoring Kata (Python, C++) |
| 11 | Discussion | Transformation Priority Premise |
| 12 | Coding Dojo | "99 Bottles of Beer" Kata (Python, C++) |
| 13 | Discussion | Student Code Demo 2 |
| # | Session Type | Name |
|---|---|---|
| 1 | Discussion | Understanding Legacy Code |
| 2 | Kata | Identifying Legacy Code Kata |
| 3 | Discussion | Building a Safety Net |
| 4 | Kata | Characterization Testing Kata |
| 5 | Discussion | Safe, Non-Invasive Changes |
| 6 | Kata | Sprouting & Wrapping Kata |
| 7 | Discussion | Core Dependency Breaking Techniques |
| 8 | Kata | Dependency Breaking Kata |
| 9 | Discussion | Advanced Topics & Large-Scale Strategy |
| 10 | Kata | Large-Scale Refactoring Kata |