Loading…
A sensor watching a plant's moisture and warning you when it needs watering.
A complete real-time 3D course for the browser, followed from the basics to hand-written graphics effects.
A voice calling application: capturing, compressing, transmitting and replaying the voice in real time.
Moving from containers you launch to a cluster that keeps them alive by itself.
The arcade brick breaker, remade in Python for the fun of it.
Fourteen challenges leading from basic encodings to breaking a block cipher.
A dashboard everyone composes for themselves: weather, GitHub, Twitch, Imgur and calendar gathered on a single screen.
A bot announcing every push in Discord, in the right channel according to the branch.
A native Android application to browse and publish on Imgur.
The traditional board game, with its forty squares all having different effects.
The hangman game with a graphical interface, as a way into Java.
The same hangman, rewritten in Ruby: comparison is the point.
Automating tests, builds and checks on every push.
Two-player Pong in Python: the 1972 game that launched the entire video game industry.
Making five services written in four different languages live together, in a single command.
A networked multiplayer shoot'em up, built on a game engine written from scratch.
Rock paper scissors against the computer, in Java, with a graphical interface.
A web server written from scratch, all of whose features are hot-loaded modules.
A platform where you switch game and graphics engine mid-play, without restarting.
Picking C back up after six months of internship, by drawing fractals into a bitmap image.
Writing the four great ways of storing data yourself, then making them able to hold anything.
Pointers pushed into their most twisted corners.
Building libstring.a, a complete and tested string manipulation library.
The switch to C++: the first classes, in a hospital for koalas.
What belongs to a whole family of objects rather than to one in particular — for instance a counter of everything ever created.
Composition and references between objects, on a Star Trek theme.
What happens when you copy an object that holds allocated memory?
A role-playing class hierarchy: warrior, mage, paladin, priest, hunter.
Giving meaning to operators on your own objects, and laying down the first abstractions.
A heterogeneous collection of toys handled through a single interface.
Handling failures other than with return codes — on a Martian rover.
Recovering the real type of an object hidden behind an abstraction — without getting it wrong.
Writing code that works with any type, without sacrificing anything.
Stop rewriting everything: discovering the standard library containers.
Last day of the pool: writing algorithms that work on any collection.
Reinventing object-oriented programming in C, before even writing a C++ class.
Automating Santa's gift-wrapping line, from a deliberately vague subject.
A machine status dashboard that renders indifferently in a terminal or in a window.
A hackathon on the theme of space, with NASA's astronomy pictures.
Reconstituting, at runtime, a program's function call tree.
Reading a stream of temperatures and deriving, at every value received, the trend under way.
Reducing an image to a few dominant colours, through unsupervised learning.
A 3D Bomberman, multiplayer, with AI and saving — the end-of-second-year project.
Rewriting malloc and free — then substituting them for the system's, on real programs.
Rewriting the C library functions directly in x86-64 assembly.
Opening an executable and reading its internal structure, the way the system does at load time.
A standards-compliant FTP server, able to talk to real clients.
A Microsoft Teams clone in C: teams, channels, discussion threads and private messages.
Simulating digital electronics: from logic gates to complex components.
A simulated pizzeria where every kitchen is a process and every cook a thread.
A third React project: an administration interface with authentication.
A first React project: a contact book fed by a public API.
A second React project: a photo gallery fed by an API.
Spying on everything a program asks the operating system for.
A bot trading cryptocurrencies live against a server, candle after candle.
Redoing a to-do list with Vue.js, to see what really changes when you change tools.
Patterns of surprising complexity, generated by a rule that fits in eight bits.
A persistent world where tribes of autonomous AIs compete to survive and evolve.
The maths of a ball in flight: speed, future position and angle of arrival on the paddle.
Moving, rotating and resizing shapes — the foundation of all computer imagery.
Encrypting a message by multiplying it by a matrix, and decrypting it by inverting that matrix.
Computing where a light ray hits a sphere, a cylinder or a cone.
Behind the geometry of a doughnut, a quartic equation that has to be solved numerically.
The final shell: history, completion, aliases, scripting — a real terminal, as a team.
A calculator evaluating parenthesised expressions with a customisable operator alphabet.
The very first day: learning to live inside a Unix terminal.
Automating the terminal: first shell scripts.
Writing your very first lines of C, with a single function allowed.
Pointer day — the concept that sets C apart from every other language.
Solving a problem by making it call itself — all the way to the eight queens problem.
Re-coding the C string library, function by function.
Turning your collection of functions into a genuine reusable library.
Asking the system for memory — and remembering to give it back.
Grouping data that belongs together, and discovering that byte order is not universal.
Automating compilation, and letting the program itself choose the operation.
C's flagship data structure: a chain of nodes linked by addresses.
Re-coding cat and grep, the two Unix tools everyone uses daily.
Finally opening a window: the pool's first graphics day.
A virtual machine where programs fight to survive in memory.
Generating mazes, then finding the shortest way out.
One day, one pair, a subject discovered on the spot: generating an ASCII fractal.
Searching for a word in a letter grid, in one day and in a pair.
Encrypting and decrypting a file with Julius Caesar's two-thousand-year-old secret code.
Evaluating a mathematical expression given as text, precedence included.
The pool's final exam: recognising, from a drawing, the rule that produced it.
Reading a file line by line when the system only knows how to read blocks of bytes.
Adding numbers too large to fit in a variable.
Moving a whole colony across an ant farm, as fast as possible.
Re-coding wildcard pattern matching, the *.txt kind — then counting every way it matches.
The game of Nim against an artificial intelligence you have to beat.
Writing your own shell: the program that launches all the others.
The shell that gains pipes, redirections and command chaining.
A complete tower defense: place towers, manage your gold, survive the waves.
A Duck Hunt-style shooting gallery with a western makeover: ten targets pop up at the windows and doors of a house, and it is up to you to draw.
A complete 2D role-playing game: two zones, spells, an inventory and a boss.
A Chrome Dino-style runner whose courses are described in a text file — with an optional endless mode.
Re-coding the ls command, options included — far deeper than it looks.
A game of battleship between two processes that communicate only through signals.
Rewriting printf: a function you call without thinking, resting on a C mechanism almost nobody uses directly.
The crate-pushing puzzle, playable in a resizable terminal.
Sorting a list with only two stacks and a handful of allowed operations.
A first team project, a whole weekend, on ASCII rectangles.
Guessing the language of a text from its letter statistics alone.
A timed individual exam: splitting a sentence and sorting its words.
Detecting whether a word reads the same both ways — fast and flawlessly.
Eighties Tetris, in a terminal, with pieces defined by file.
Drawing a fir tree in characters, whose shape depends on a single size parameter.
Consolidating two weeks of functions into a clean, tested and documented library.