6.030 Fall 1999
Introduction to Interactive Programming

Written Assignment 1
Program Design

(also includes laboratory 0)

About this assignment

This assignment is intended to give you some practice in thinking about program design. It also contains the work that you will be expected to do in the laboratory the week of 13 September. This week, there is little relationship between the written assignment and the laboratory work. Beginning next week, the pre-lab, in-lab, and post-lab work that we ask you to do will be interrelated. Because we want you to get used to this structure, we will ask you to bring your written work to laboratory as a check-in assignment. Students who do not do so will be denied admission to the lab and will need to return on a different day. Such check-in denial will be recorded and will affect your grade on the assignment.

Be sure to read through the 6.030 general information handout, and in particular the collaboration policy. For this assignment, you may discuss the project in as much detail as you like with your classmates, but you should do the writeup on your own. You may also get comments from other students on all portions of your writeup before turning it in, if you wish. Please include the names of anyone with whom you collaborate, in any way, on this assignment, and indicte the nature of the collaboration. Failure to include this information is a violation of the collaboration policy.

This assignment emphasizes the following topics

This assignment is due at the beginning of class on Friday, 17 September.



This week's pre-lab has three parts. Future labs will have more extensive explicit lab preparation but less additional preparatory work.

A. Written Exercise

In this assignment, you should pretend that you are corresponding with a Martian pen pal. (Alternately, pretend you're corresponding with your 6.030 professor, which can often feel the same.)

Pick a system of some sort that you encounter in every day life and describe/explain it to your pen pal. You may choose a physical system, like a vending machine or a pinball game, or an organizational system such as the MIT registrar or the US Congress. Your job is to explain this system to your pen pal. You may use words or pictures, as you choose. You should consider the following:

What kinds of users does this system have, and what different needs might this system fulfill for each of them? (The same person may use the system for different purposes at different times. Each of these potentially defines a different kind of interaction.) For each user interaction (sometimes called a "use case", give the user-role and the system-function.

What are the constituent parts of the system? For each one, give its name and a brief description of its purpose, function, or responsibility.

How do these parts interrelate (and relate to users outside the system)? What interaction paths exist, and what kinds of transactions or information flow (or other transfers or communication) happen over these paths?

You may give more than one level of decomposition if it makes sense, but you are only expected to provide one level. If you find it easier to produce a diagram, this is fine, provided that it is either sufficiently self-explanatory or you also produce text that explains the diagram.

A very nice description of this whole process, Alistair Cockburn's coffee machine scenario, can be found at http://members.aol.com/acockburn/papers/coffee/cm1.html

Remember that Martians (and Professors) know very little about life on Earth, so you should make your description fairly detailed and specific. The description should run approximately two paragraphs, and in no circumstances should it exceed one page. (Martians have notoriously short attention spans.)

Bring this writeup with you to lab. While you may revise it after lab (and before the problem set is due), the course assistant will want to see this writeup as a part of lab check-in.

B. Finger exercises

A writeup of the finger exercises shouldalways be turned in along with your completed laboratory.

Do exercises 1, 3(a-f), and 4 in chapter 3 of the book.

C. Lab Preparation

This week's lab work is really intended to acquaint you with the particular laboratory facilities that we'll be using this term. You should read through the (attached) laboratory handout prior to coming to lab so that you will be able to get to work as soon as you have been checked in.


What to Bring to Lab

In order to be admitted to lab this week, you need only bring the letter to your pen pal. You should also have read the entire problem set before you arrive. Of course, you should bring this document with you as well.

Getting Started

The laboratory handout is available at http://www-cs101.ai.mit.edu/courses/fall99/psets/Intro/intro.html.

Before you leave

Before you leave lab, you will need to have your work checked off by a course staff member. If someone has been observing your work during the lab, this should be straightforward (but should still be done). If not, you should find a lab assistant and show them what you've done. In either case, you should record the name of the staff member who checks you out of lab.

You should allow time for an adequate demonstration and discussion of what you have done. Please do not wait until the last minute to be checked off.

Post-Lab, AKA What To Turn In

Your completed assignment should include:

Lab assignments are due on Fridays at the beginning of section. They may, of course, be turned in earlier.

This course is a part of Lynn Andrea Stein's Rethinking CS101 project at the MIT AI Lab and the Department of Electrical Engineering and Computer Science at the Massachusetts Institute of Technology.


Questions or comments:


Last modified: Mon 13 September 1999