Engineering Computing

PI: 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 on Monday, 27 January. 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 a specific portion of written work to laboratory as a check-in assignment. Students who do not do so will be denied admission to the lab until that portion of the assignment is complete.

Please read through the course 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 actual 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 on this assignment and indicate the nature of the collaboration. Failure to include this information is a violation of the collaboration policy. (This is not meant in any way to discourage collaboration, just to help us track it!)

We would also like to track how much time you are spending on various aspects of this course. On the first page of your assignment, please indicate how much out-of-class time (approximately) you've spent on reading, on preparation of the homework, in lab, and on other non-class-time course-related activities (and what). This should be four numbers, labeled please! Thank you for helping us tailor the course to your needs.

This assignment emphasizes the following topics

  • Thinking in terms of interactions
  • Laboratory infrastructure and programming environment

This assignment is due at 5pm on Wednesday, 29 January in AC312.

Contents

Pre-Lab

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 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 Olin registrar or the US Congress. Your job is to explain this system to your pen pal. You may use a combination of words and 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 (HINT: 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. Describe the services that it offers -- ideally, give method signatures for them -- and anything that the component needs to keep track of.

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? Describe at least one of your use cases by gluing together a script made out of services provided by different components.

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.

The (use cases and scripts for the) library example in chapter 2 of the text is a good model for this assignment, although you are not expected to implement the methods/services as is done in later parts of that chapter. A different description of this process, can found in Alistair Cockburn's coffee machine scenario.

Remember that Martians (and Professors) know very little about life on Earth, so you should make your description fairly detailed and specific. The description (including use cases, component specifications, and scenarios) need not be more than one page, and in no circumstances should it exceed three pages. (Martians have notoriously short attention spans.) It should also be well written and reasonably easy to read. (Martians know a good writing consultant.)

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

B. Finger exercises

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

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

C. Lab (Non-)Preparation

This week's lab work is really intended to acquaint you with the particular facilities that we'll be using this term, including setting up codewarrior on your laptop and facilitating your access to our code server. We will provide you with a detailed set of instructions in lab, and we will be there to help guide you through that process.

Laboratory

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 and may wish to complete some or all of the remainder of the work before lab. Of course, you should bring this document with you as well (although it's available online as well.

Getting Started

Normally, this section of a lab handout will explain where you should begin. This week, the instructions for lab will be distributed when you arrive as they have nothing to do with what you'll need to do before lab.

Before you leave

Before you leave lab, you will generally 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 one of us and show us what you've done. In either case, you should record who checks you out of lab and any questions we leave you with..

You should generally allow time for an adequate demonstration and discussion of what you have done (though there isn't too much to show this week.) Please do not wait until the last minute to be checked out.

Post-Lab, AKA What To Turn In

Your completed assignment should include:

  • on the front page, how much out-of-class time (approximately) you've spent on reading, on preparation of the homework, in lab, and on other non-class-time course-related activities (and what).
  • your pre-lab assignment, including the written and finger exercises.
  • answers to the questions in the lab handout.
  • the name of the staff member who checked you out this week and answers to any specific issues we may have asked you to address. (There probably won't be any/many this week.)
  • the names and roles of any collaborators in any parts of the project.
  • Finally, tell us one think you really like about the class (there is at least one, right?) and something you're finding unclear.

Lab assignments are due on Wednesdays at the 5pm in AC312. They may, of course, be turned in earlier.

$Id: index.jsp,v 1.6 2003/01/27 15:57:14 bvandiver Exp $
Questions, comments, gripes and other communication to pi-staff@lists.cognition.olin.edu
This course is a part of Lynn Andrea Stein's Rethinking CS101 project at the Computers and Cognition Laboratory and the Electrical and Computer Engineering area at Franklin W. Olin College of Engineering. Olin College Logo