My very bright 13-year-old nephew would like to learn computer programming (from scratch). He's quite familiar with using software,
Dan, there are some kids where the absolutely best place to start would be the console toggle switches and indicator lamps on an ancient mainframe, if you can find a live one in a computer museum, e.g. There are other kids who take best to the opposite extreme, say generic functions (object-oriented LISP). For a certain concrete thinker, I'm planning the following first program: Combine Macsyma's string manipulation functions, especially CARDINAL_STRING (12 -> "twelve") and ORDINAL_STRING (12 -> "twelfth") to make a FRACTION_STRING function (11/12 -> "eleven twelfths"). There are nice opportunities for bugs ("one twelfths", 1/2 -> "one second", 3 -> "three firsts") and features (improper vs proper format, "three quarters"), generalization (RATIONAL_STRING, NUMBER_STRING even taking floats), and finally Robinson Crusoeing one's own CARDINAL_ and ORDINAL_ STRINGs. (Captious: "third", "thirteenth", "twenty third".) --rwg