find it · fix it · understand it
Pick a language. Each one walks you through ten short lessons — real code on the left, the live result on the right. Every lesson ends with the option to debug a program that is broken in exactly the way you just learned about, often with more than one bug hiding in it. Your job is to find where the damage starts and fix it. You get hints when you are stuck. You never get the answer.