Build something

Projects

Lessons teach one idea at a time. Projects make you glue them together, which is where it actually sticks. No step-by-step code to copy, just a brief, a few milestones and an empty-ish editor.

Free projects

FreePython · 30 min

Number guesser

The computer picks a number, you guess, it says higher or lower. Loops, if/else and input() in one tiny game.

  1. Pick a secret number with random.randint(1, 100).
  2. Read guesses from input() in a while loop.
  3. Print "higher" or "lower" until the guess is right, then print how many tries it took.
Start in the playground
FreePython · 25 min

Grade report

Turn a pile of test scores into a tidy report: everyone's mark, the class average and who came top. Dictionaries and loops doing real work.

  1. Loop over the marks dictionary with .items() and print each name and score.
  2. Work out the class average and print it with one decimal place.
  3. Find the student with the highest mark without using max(), then try it with max() and compare.
Start in the playground
FreeWeb · 45 min

Bill splitter

Two inputs, one button, one answer. Read values from a form, do some maths, show the result on the page.

  1. Make inputs for the bill total and the number of people.
  2. On click, read both values with Number(input.value).
  3. Show each person's share with two decimals using toFixed(2).
Start in the playground
FreeWeb · 40 min

One-question quiz

A question, three buttons, and a page that tells you if you got it right. Clicks, classList and a bit of CSS so it feels like a real app.

  1. Give each answer button a data-correct attribute set to "yes" or "no".
  2. On click, add a right or wrong class to the button and show a message in the #result paragraph.
  3. Disable all the buttons after the first click so nobody can cheat.
Start in the playground
FreeSQL · 30 min

Playlist stats

Answer real questions about a playlist: top artists, total minutes, the longest song. GROUP BY gets a workout.

  1. Count songs per artist and sort by the count.
  2. Find the total playlist length in minutes.
  3. Find the longest song with ORDER BY and LIMIT.
Start in the playground
FreeSQL · 35 min

Tuck shop sales

A week of tuck shop sales in two tables. Find the best seller, the busiest day and the snack nobody bought. JOIN, GROUP BY and a LEFT JOIN that earns its keep.

  1. Show how many of each product were sold, best seller first, using JOIN and GROUP BY.
  2. Find the day with the most money taken. You need SUM(qty * price).
  3. List any product that was never sold, using LEFT JOIN and IS NULL.
Start in the playground
FreeC · 40 min

Bit printer

Print any number in binary using shifts and masks. Once you can see the bits, overflow stops being magic.

  1. Write void print_bits(unsigned char x).
  2. Loop from bit 7 down to 0 and print (x >> i) & 1.
  3. Print 5, 255 and what 255 + 1 becomes in an unsigned char.
Start in the playground
FreeC · 40 min

Reverse a string in place

No library help: find the end of a string yourself, then swap characters from both ends until they meet. The best pointer practice there is.

  1. Write int my_strlen(const char *s) that counts characters up to the zero byte.
  2. Write void reverse(char *s) with one pointer at the start and one at the end, swapping as they move inwards.
  3. Test it on "hello", on a one-letter string and on an empty string.
Start in the playground

Pro projects coming soon

Bigger builds with checkpoints, automatic tests for each milestone and a code review checklist. The lessons stay free forever; Pro is how we will keep the lights on.

Pro, coming soonPython · 3 hours

Text adventure engine

Rooms as dictionaries, an inventory as a list, and a game loop that parses commands. Build the engine, then write your own story.

Get told when it opens
Pro, coming soonWeb · 3 hours

To-do app that remembers

Add, tick off and delete tasks, saved in localStorage so they survive a refresh. The classic, done properly.

Get told when it opens
Pro, coming soonSQL · 2 hours

Design a school database

Design tables for students, classes and grades from scratch, then answer the questions a timetable office actually asks.

Get told when it opens
Pro, coming soonC · 4 hours

Write your own malloc

Carve a big byte array into blocks, track what is free, and hand out memory yourself. The best way to understand the heap is to be the heap.

Get told when it opens

Want to hear when Pro opens?

There is no sign-up list on this site yet, and this page does not collect anything. If you want a heads-up, send a one-line email to the address here and we will reply when Pro launches. That is it, no newsletter.

Email us at
[email protected]