Python programs, usually short, of considerable difficulty, to perfect particular skills.
Jupyter Notebook
24,412
1,186 commits
updated Sep 16, 2026
"An étude (a French word meaning study) is an instrumental musical composition, usually short, of considerable difficulty, and designed to provide practice material for perfecting a particular musical skill." — Wikipedia
This project contains pytudes—Python programs, usually short, for perfecting particular programming skills.
To continue the musical analogy, some people think of programming like Spotify: they want to know how to install the app, find a good playlist, and hit the "play" button; after that they don't want to think about it. There are plenty of other tutorials that will tell you how to do the equivalent of that for various programming tasks—this one won't help. But if you think of programming like playing the piano—a craft that can take years to perfect—then I hope this collection can help.
For each notebook you can hover on the title to see a description, or click the title to view on github, or click one of the letters in the left column to open the notebook on colab or nbviewer.
| Open | Year | Programming Examples |
|---|---|---|
| co nb | 2026 | Approximating Pi with a Fraction |
| co nb | 2022 | The Babylonian Number System |
| co nb | 2018 | Beal's Conjecture Revisited |
| co nb | 2020 | Bicycling Statistics |
| co nb | 2018 | Can't Stop |
| co nb | 2019 | Chaos with Triangles |
| co nb | 2017 | Conway's Game of Life |
| co nb | 2020 | Generating and Solving Mazes |
| co nb | 2026 | Largest prime factor |
| co nb | 2021 | Mel's Konane Board |
| co nb | 2020 | Photo Focal Lengths |
| co nb | 2018 | Pickleball Tournament |
| co nb | 2022 | Selecting Names from a Menu |
| co nb | 2020 | Tracking Polls: Electoral Votes |
| Open | Year | Advent of Code |
|---|---|---|
| co nb | 2025 | Advent of Code 2025: AI LLM Edition |
| co nb | 2025 | Advent of Code 2025 |
| co nb | 2024 | Advent of Code 2024 |
| co nb | 2023 | Advent of Code 2023 |
| co nb | 2022 | Advent of Code 2022 |
| co nb | 2021 | Advent of Code 2021 |
| co nb | 2020 | Advent of Code 2020 |
| co nb | 2018 | Advent of Code 2018 |
| co nb | 2017 | Advent of Code 2017 |
| co nb | 2016 | Advent of Code 2016 |
| co nb | 2022 | Advent of Code Utilities |
| Open | Year | Logic and Number/Counting Puzzles |
|---|---|---|
| co nb | 2024 | Counting Cluster Sizes in Paint by Numbers |
| co nb | 2014 | Cryptarithmetic |
| co nb | 2018 | Euler's Sum of Powers Conjecture |
| co nb | 2020 | Four 4s, Five 5s, and Countdowns |
| co nb | 2020 | How to Count Things |
| co nb | 2024 | Number Bracelets Game |
| co nb | 2019 | Pairing Socks |
| co nb | 2018 | Sicherman Dice |
| co nb | 2014 | Sol Golomb's Rectangle Puzzle |
| co nb | 2024 | Stubborn number endings |
| co nb | 2020 | Square Sum Chain Puzzle |
| co nb | 2020 | When is Cheryl's Birthday? |
| co nb | 2015 | When Cheryl Met Eve: A Birthday Story |
| co nb | 2015 | xkcd 1313: Regex Golf |
| co nb | 2015 | xkcd 1313: Regex Golf (Part 2: Infinite Problems) |
| Open | Year | Sudoku and Similar Puzzles |
|---|---|---|
| co nb | 2006 | Sudoku |
| co nb | 2021 | Sudoku: 400,000 puzzles/second in Java |
| co nb | 2021 | KenKen (Sudoku-like Puzzle) |
| co nb | 2021 | Star Battle (Sudoku-like Puzzle) |
| Open | Year | The Riddler (from 538) |
|---|---|---|
| co nb | 2022 | Anigrams: Word Chains |
| co nb | 2017 | Battle Royale |
| co nb | 2021 | Climbing Wall |
| co nb | 2021 | CrossProduct |
| co nb | 2020 | Flipping Cards; A Guessing Game |
| co nb | 2019 | Lottery |
| co nb | 2019 | How Many Soldiers to Beat the Night King? |
| co nb | 2017 | Misanthropic Neighbors |
| co nb | 2018 | Properly Organized Card Hands |
| co nb | 2021 | Race Track |
| co nb | 2021 | Split the States |
| co nb | 2020 | Tour de 538 |
| co nb | 2020 | Weighing Twelve Balls |
| co nb | 2020 | War. What is it Good For? |
| Open | Year | Computer Science Algorithms and Concepts |
|---|---|---|
| co nb | 2017 | BASIC Interpreter |
| co nb | 2017 | Convex Hull Problem |
| co nb | 2026 | (How to Write a (Lisp) Interpreter (in Python)) |
| co nb | 2023 | Docstring Fixpoint Theory |
| co nb | 2020 | Stable Matching Problem |
| co nb | 2017 | Symbolic Algebra, Simplification, and Differentiation |
| co nb | 2017 | Snobol: Bad Grade, Good Experience |
| co nb | 2018 | Traveling Salesperson Problem |
| co nb | 2026 | Truncatable Primes |
| File | Description | Documentation |
|---|---|---|
| beal.py | Search for counterexamples to Beal's Conjecture | documentation |
| docex.py | An obsolete framework for running unit tests, similar to doctest | |
| ibol.py | An Exercise in Species Barcoding | documentation |
| lettercount.py | Convert Google Ngram Counts to Letter Counts | documentation |
| lis.py | Lisp Interpreter written in Python | documentation |
| lispy.py | Even Better Lisp Interpreter written in Python | documentation |
| lispytest.py | Tests for Lisp Interpreters | |
| pal.py | Find long palindromes | documentation |
| pal2.py | Find longer palindromes | documentation |
| pal3.py | Find even longer palindromes | documentation |
| pytudes.py | Pre-process text to generate this README.md file. | |
| py2html.py | Pretty-printer to format Python files as html | |
| SET.py | Analyze the card game SET | documentation |
| spell.py | Spelling corrector | documentation |
| sudoku.py | Program to solve sudoku puzzles | documentation |
| testaccum.py | Tests for my failed Python accumulation display proposal | documentation |
| yaptu.py | Yet Another Python Templating Utility |
I got the idea for the "etudes" part of the name from this 1978 book by Charles Wetherell that was very influential to me when I was first learning to program. I still have my copy, but it is now easier to find a pdf than a hard copy.

Here's what some people are saying about pytudes:
(top 30 of 45)
Jupyter Notebook
98.6%
Python programs, usually short, of considerable difficulty, to perfect particular skills.
Jupyter Notebook
24,412
1,186 commits
updated Sep 16, 2026
"An étude (a French word meaning study) is an instrumental musical composition, usually short, of considerable difficulty, and designed to provide practice material for perfecting a particular musical skill." — Wikipedia
This project contains pytudes—Python programs, usually short, for perfecting particular programming skills.
To continue the musical analogy, some people think of programming like Spotify: they want to know how to install the app, find a good playlist, and hit the "play" button; after that they don't want to think about it. There are plenty of other tutorials that will tell you how to do the equivalent of that for various programming tasks—this one won't help. But if you think of programming like playing the piano—a craft that can take years to perfect—then I hope this collection can help.
For each notebook you can hover on the title to see a description, or click the title to view on github, or click one of the letters in the left column to open the notebook on colab or nbviewer.
| Open | Year | Programming Examples |
|---|---|---|
| co nb | 2026 | Approximating Pi with a Fraction |
| co nb | 2022 | The Babylonian Number System |
| co nb | 2018 | Beal's Conjecture Revisited |
| co nb | 2020 | Bicycling Statistics |
| co nb | 2018 | Can't Stop |
| co nb | 2019 | Chaos with Triangles |
| co nb | 2017 | Conway's Game of Life |
| co nb | 2020 | Generating and Solving Mazes |
| co nb | 2026 | Largest prime factor |
| co nb | 2021 | Mel's Konane Board |
| co nb | 2020 | Photo Focal Lengths |
| co nb | 2018 | Pickleball Tournament |
| co nb | 2022 | Selecting Names from a Menu |
| co nb | 2020 | Tracking Polls: Electoral Votes |
| Open | Year | Advent of Code |
|---|---|---|
| co nb | 2025 | Advent of Code 2025: AI LLM Edition |
| co nb | 2025 | Advent of Code 2025 |
| co nb | 2024 | Advent of Code 2024 |
| co nb | 2023 | Advent of Code 2023 |
| co nb | 2022 | Advent of Code 2022 |
| co nb | 2021 | Advent of Code 2021 |
| co nb | 2020 | Advent of Code 2020 |
| co nb | 2018 | Advent of Code 2018 |
| co nb | 2017 | Advent of Code 2017 |
| co nb | 2016 | Advent of Code 2016 |
| co nb | 2022 | Advent of Code Utilities |
| Open | Year | Logic and Number/Counting Puzzles |
|---|---|---|
| co nb | 2024 | Counting Cluster Sizes in Paint by Numbers |
| co nb | 2014 | Cryptarithmetic |
| co nb | 2018 | Euler's Sum of Powers Conjecture |
| co nb | 2020 | Four 4s, Five 5s, and Countdowns |
| co nb | 2020 | How to Count Things |
| co nb | 2024 | Number Bracelets Game |
| co nb | 2019 | Pairing Socks |
| co nb | 2018 | Sicherman Dice |
| co nb | 2014 | Sol Golomb's Rectangle Puzzle |
| co nb | 2024 | Stubborn number endings |
| co nb | 2020 | Square Sum Chain Puzzle |
| co nb | 2020 | When is Cheryl's Birthday? |
| co nb | 2015 | When Cheryl Met Eve: A Birthday Story |
| co nb | 2015 | xkcd 1313: Regex Golf |
| co nb | 2015 | xkcd 1313: Regex Golf (Part 2: Infinite Problems) |
| Open | Year | Sudoku and Similar Puzzles |
|---|---|---|
| co nb | 2006 | Sudoku |
| co nb | 2021 | Sudoku: 400,000 puzzles/second in Java |
| co nb | 2021 | KenKen (Sudoku-like Puzzle) |
| co nb | 2021 | Star Battle (Sudoku-like Puzzle) |
| Open | Year | The Riddler (from 538) |
|---|---|---|
| co nb | 2022 | Anigrams: Word Chains |
| co nb | 2017 | Battle Royale |
| co nb | 2021 | Climbing Wall |
| co nb | 2021 | CrossProduct |
| co nb | 2020 | Flipping Cards; A Guessing Game |
| co nb | 2019 | Lottery |
| co nb | 2019 | How Many Soldiers to Beat the Night King? |
| co nb | 2017 | Misanthropic Neighbors |
| co nb | 2018 | Properly Organized Card Hands |
| co nb | 2021 | Race Track |
| co nb | 2021 | Split the States |
| co nb | 2020 | Tour de 538 |
| co nb | 2020 | Weighing Twelve Balls |
| co nb | 2020 | War. What is it Good For? |
| Open | Year | Computer Science Algorithms and Concepts |
|---|---|---|
| co nb | 2017 | BASIC Interpreter |
| co nb | 2017 | Convex Hull Problem |
| co nb | 2026 | (How to Write a (Lisp) Interpreter (in Python)) |
| co nb | 2023 | Docstring Fixpoint Theory |
| co nb | 2020 | Stable Matching Problem |
| co nb | 2017 | Symbolic Algebra, Simplification, and Differentiation |
| co nb | 2017 | Snobol: Bad Grade, Good Experience |
| co nb | 2018 | Traveling Salesperson Problem |
| co nb | 2026 | Truncatable Primes |
| File | Description | Documentation |
|---|---|---|
| beal.py | Search for counterexamples to Beal's Conjecture | documentation |
| docex.py | An obsolete framework for running unit tests, similar to doctest | |
| ibol.py | An Exercise in Species Barcoding | documentation |
| lettercount.py | Convert Google Ngram Counts to Letter Counts | documentation |
| lis.py | Lisp Interpreter written in Python | documentation |
| lispy.py | Even Better Lisp Interpreter written in Python | documentation |
| lispytest.py | Tests for Lisp Interpreters | |
| pal.py | Find long palindromes | documentation |
| pal2.py | Find longer palindromes | documentation |
| pal3.py | Find even longer palindromes | documentation |
| pytudes.py | Pre-process text to generate this README.md file. | |
| py2html.py | Pretty-printer to format Python files as html | |
| SET.py | Analyze the card game SET | documentation |
| spell.py | Spelling corrector | documentation |
| sudoku.py | Program to solve sudoku puzzles | documentation |
| testaccum.py | Tests for my failed Python accumulation display proposal | documentation |
| yaptu.py | Yet Another Python Templating Utility |
I got the idea for the "etudes" part of the name from this 1978 book by Charles Wetherell that was very influential to me when I was first learning to program. I still have my copy, but it is now easier to find a pdf than a hard copy.

Here's what some people are saying about pytudes:
(top 30 of 45)
Jupyter Notebook
98.6%