I've got one question from one student but I presume others may be
confused. 
In the TD assignment, you need to write function
  pick_move_by_TD(struct board *b, int iter) 
which gets called when you use a call like
  robots -t td.net -h 20
When pick_move_by_TD is called, the global variable "net" is a pointer
to a Neural Net that has, 100 inputs (the board), 20 hidden units (if
-h 20 is used) and 1 output (the "utility" or "prob of winning").
  if (TDNetfile) {		/* read in or create TD Net */
    if ((net = bpnn_read(TDNetfile)) == NULL) {
      printf("Creating new TD network '%s' with %d hidden units\n",
	     TDNetfile, num_hidden);
      net = bpnn_create(net_input_n(nr), num_hidden, 1);
    }
	...
    }
Calling pick_move_by_TD both (a) selects a move to do now based on the
current net and (2) also does one step of backpropagation, by calling
"bpnn_train" (look at train-nn.c to see how this is done).  This is
what you need to figure out how to do.
Let me know if there are other questions.
Tomas