We will use codewalks, a common practice at software companies, to evaluate some of your programs. A codewalk is a presentation where you, the programmer, convince us, a jury, of specific properties of your program. You accomplish this by presenting your program and answering questions about it. We are most interested in

  • correctness: does it do the right thing?,
  • extensibility: how adaptable is it to related tasks?,
  • robustness: is it built like a house of cards?, and
  • performance: does it avoid poor implementation decisions?.

We will conduct two or three codewalks during the semester. Codewalks will evaluate the programs turned in as solutions to regular homework assignments. Each program will receive 30 to 45 minutes of scrutiny. The code you present must the be the same code you turned in as your homework solution. Here's the catch: You don't find out whether we will conduct a codewalk on an assignment until after you turn in your solution for it. No excuses or exceptions; you read it here.

We conduct codewalks for two reasons, one pedagogic and one technical. The technical reason is that the assignments in this course offer a microcosmic example of typical software evolution, so this is an opportunity for you to hone your software construction skills. The pedagogic reason is that codewalks offer students the richest and most immediate critiques of their programs, while giving instructors a very effective way of judging student understanding.

The real-time nature of codewalks tends to favor simplicity and cleanliness over both sloppiness and (excessive) cleverness. In this course, it's extremely unlikely that advanced language features will offer either desirable property. Keep things simple and you are least likely to run afoul of questions.

We will provide more specific instructions later in the semester.