I got a 5 on the College Board AP Computer Science AB Exam in 1996, the last year it was offered in Pascal. I think I was hooked on programming the second I got my hands on my dad's Trash-80 and the BASIC programs printed in 3-2-1 Contact magazine. I couldn't have been much older than ten. I don't know how many times I typed that little three-line program that set the thing counting on its own, but every time it was immensely satisfying to have told it to tackle a problem and watched it obey.

10 i=i+1 20 print i 30 goto 10

When I first learned Pascal, of course the first thing I did was translate this same stupidity into the new language (plus a few modifications).

The next time I got excited about programming was when I was first exposed to the idea of recursion. That felt like real power - defining a complex problem in terms of a few simple base cases and having a procedure call itself to solve the others.

function factorial(base) { if (base < 2) return 1; else return base * factorial(base-1); }

Then I started learning data structures. Linked lists, trees, hash tables, objects - all started making me see problems in different ways. This is my first implementation of a tree to store and operate on a set of numbers.

The curriculum for the AP AB prep course consisted largely of skeleton code frameworks to which we had to apply key pieces of code. This culminated in a fairly large application that simulated fish and shark populations in a toric ocean, much like John Conway's game of Life.