Principles
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 about 30
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.
Mechanics
A codewalk is primarily a presentation, by you to us,
so all the usual formalities of presentations apply (except,
of course, please don't dress formally for the occasion!). It
is not a chat or discussion session. Treat it as
you would a formal presentation in any other course. The only
difference is the content of your slides.
Your presentation must cover the programs that you wrote for
the assigned homework. Follow these simple rules:
- Print out the program. Transfer it to overhead
transparencies. Conduct your presentation using an overhead
projector (which we'll provide).
- Before you print, put some effort into making sure the
presentation is reasonable. Break excessively long and unruly
lines to a more manageable length. Don't split a function
body across page break boundaries. Use common sense. We
really are going to read your code. If the physical
presentation is unreadable, it's going to be harder to
convince us of its behavior. (But don't spend time fontifying
it and so forth. Plain Courier is fine. So is using
SLaTeX.)
- Other than formatting changes, you may not alter your
program. In particular, you may not change its behavior in
any way.
- Bring along, preferably also on slides, auxilliary parts
of your homework such as test-cases (if applicable).
-
If an assignment involves software we can test easily, such
as a CGI program, please set it up to be accessible from the
Brown computer science department, and bring instructions on
how to run it. If we cannot run your program, we will
consider it incorrect.
You should present the complete content of your program. Be
flexible in your presentation. We may ask you to skip the
details of some part, elaborate on the details of some other
part, or even re-order your presentation entirely. Remind
yourself of the goal of a code-walk.