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?.
Team Project Instructions
Programming in teams does not mean each person writes part of the
code and the team simply pastes together these contributions. Each
person is responsible for every line of code, documentation,
etc. turned in. This responsibility includes getting or losing
points for its quality, being able to explain it, and also incurring
penalties in case of plagiarism or other violations. That is, all
team members will get the same grade, and face the same sanctions:
we will not partition credit or responsibility.
Ideally, we recommend that they develop the software together using
pair-programming techniques (of the form preached by Extreme
Once you have selected a partner please inform the course staff. If
you are having difficutly finding someone to be your partner, please
contact the course staff, and we will attempt to match you with another
Turning in Assignments
For programming assignments, you should use the electronic
handin program. From the directory containing the files for the
assignment you wish to hand in, execute
is specified in the table above.
For both written assignments and
essays, write your login at the top of
(this is helpful in case the pages
become separated), staple the pages together, and place them in the
cs173 handin bin on the second floor of the CIT.
For written assignments, please solve each problem on
a separate page and print single-sided,
so the TAs can easily divide your work for grading.
For team assignments, each member of the team
should turn in a complete copy of the team's work using the correct
procedure from above.
Assignment Due Time
Assignments are always due at 2:00 AM on the
listed date. Why 2am? Because we want you to attend class and to be
reasonably alert when you do so. Past experience indicates that
making assignments due at the start of class leads to a largely
somnambulist audience that day. Those classes are fun for neither
the student nor the professor.
We will not accept late assignments. Assignments are often timed
to be due for a classroom discussion on the assigned material
because you can better follow a difficult topic if your struggles
are fresh in your head. The class will sometimes even discuss
solutions to the homework problems. Once we do this, we can no
longer accept your solution.
If you really need or want to turn in an assignment late, you
must get the professor's permission to do this
at least 24 hours before the assignment
deadline. When we do accept a late submission, we will use this
formula to compute your net grade:
(define (net-grade gross-grade number-of-penalty-units)
(* gross-grade (expt 0.9 number-of-penalty-units)))
A penalty unit is a 24 hour period or part thereof after the due
time. Even a minute after the due time incurs a penalty unit. So
if you're late (and have previously requested late permission),
relax; sleep; attend class; and submit something polished later in
What follows is a tentative schedule of
assignments in this course. We do not expect major variance, and
will notify you in advance if this should occur. But please do
expect numerous minor fluctuations!
We plan to have seven programming assignments.
The first one will go out the second week of class. Each one will
be out for a minimum of one week, some much longer. From October
until the end of the semester, you should expect to always have one
(but not more) programming assignment always due. Approximate
hand-out dates: 9/8, 9/12, 9/15, 10/6, 10/27, 11/3, 11/19.
There will be four written assignments. The
written assignments will ask you open-ended questions of a "what
if" nature, and also synthesize material across different parts of
the course. They will be out for at least one week each.
Approximate hand-out dates: 9/26, 10/15, 10/31, 11/21.
We currently intend to have one essay
assignment (but may add a second one). Essays will be
brief, no more than two (or even one) page long. We expect the
(first) essay assignment to be handed out in late September.