CMPT 376 (Spring 2008): Assignment 4—Describing a process

Home    Schedule    Learning Outcomes    Assignments    Email-list    Policies    Resources   

Revision history

Wednesday, Mar 12: Description of draft assignment.
Friday, March 14: Revised due date of draft version.
Monday, March 24: Corrected day of week for due date of final version to Monday.
Friday, April 4: Emphasized that you can include as many diagrams as you like.

Due

Early draft: Wednesday, Mar. 19, bring to class.
Draft version: Thursday night, March 20, midnight.
Final: Monday, Apr. 7, midnight.

Turn in

Draft: However few or many double-spaced pages you need to make your argument, including at least three diagrams. Please submit in PDF format.

Final: Up to 10 single-spaced pages, including at least one diagram (and possibly more). Please submit in PDF format.

Rubrics (will become links when available)

Rubric for draft assignment.
Rubric for final assignment.

Writing goal

Select a process that arises in computing science and describe it. Because computing is a design and engineering discipline, processes arise all the time. Examples include resolving a page miss in virtual memory, the stages in a POSIX pipe script, compiling a programming language, the steps of a sorting algorithm, or the cycle of an agile development method. A process is characterized by a series of steps performed by an agent or a series of stages through which some data passes. For example, in an agile development process, a developer might do four steps: write user stories, develop one incremental feature, do an integration test, and check the feature in to the production system. An email message passes through stages on its way from sender at SFU to recipient at Gmail: in the sender's outgoing mail queue, in the SFU server's outgoing mail queue, in the Gmail incoming server, in the recipient's inbox queue.

Processes are superficially easy to describe but can be hard to describe well. The easy route is to simply churn through the steps one at a time, inviting the reader to envision themselves as performing the steps themselves or being the object the steps are performed upon (perhaps not a good identification if you are describing the steps of sewage treatment). But this approach is ultimately writer-centered rather than reader-centered.

A reader-centered approach seeks to maintain the reader's interest, and the reader's interest is often not focused on the first steps. The preparatory steps are often the least interesting, however vital they may be for ultimate success. As a chef, are you fascinated by techniques for chopping vegetables or would you really rather read about simmering the main course? If you were writing a cook book, you would probably want to tease the reader with the interesting part before chopping through the details of knife-meets-zucchini. Perhaps a photograph of the whole meal, together with an opening paragraph describing its taste.

A reader-centred approach may also require starting with ideas familiar to the reader and moving to unfamiliar readers. Once again, the reader may only see the need for preparatory steps after later steps have been described. Returning to the agile development example above, the step "write user stories" may seem unecessary or perhaps the reader agrees on their need but doesn't see what details to include, only becoming clear to the reader when they see how the stories will be used in actual development. Thus the writer may choose to begin by describing development and only then backtrack to describe writing user stories. (This technique is also used in literature.)

Selecting a process to describe

You may pick any process that falls under the large heading of "computing science". It does not need to be a topic in a course you are taking this semester, and in fact does not need to be a topic in any course you've taken. It could just be something that interests you.

Some processes make better topics than others. You'll need something with rich detail to sustain this many pages of description. Large topics such as "software engineering" are likely too abstract. Indeed, "software engineering" itself isn't a process, but a collection of processes such as development cycles, testing strategies, estimation procedures, and so forth. Very small processes only rarely have the same problem of insufficient detail. Almost any technical topic has enough complexity to fill several pages. Although you should be careful not to pick a process that is too small, the greater risk is to pick a topic too large.

Diagram

Processes are natural candidates for description by diagram. Your final description must include at least one diagram, and your text must be organized around the diagram. You may wish to include several diagrams. For example, you might wish to show a system's progress through several stages, with a separate diagram for each one.

Diagrams do not count towards your page count.

Audience

As with Assignment 2, assume that your audience is computer science students that have not taken the course in which this topic is covered but have taken all the prerequisites.

Goal and structure of draft

As with any writing, you will choose the order in which you make your points based upon your understanding of the audience, the structure of the material, and what the audience expects and already knows about the material. It is best to try out several different approaches before selecting your final sequence. Chances are, as soon as you imagine describing this process, you think of a "natural" way to describe it. For the draft, I want you to consider several "less natural" alternatives. These will give you some insights into your final presentation.

There are several strategies you might use for describing a process:

There are other ways, but these three perspectives cover most cases.

Example of the three approaches

Consider the POSIX pipeline

tr '\n\t' ' ' | tr -s ' ' | tr ' ' '\n' | sort
which takes an input file and produces a sorted list of the words in the file, one word per line. Using the above strategies, we might generate the following descriptions:
Series of steps
  1. Translate all newlines and tabs to spaces.
  2. Convert all sequences of spaces to a single space.
  3. Convert all spaces to newlines.
  4. Sort all lines.
This phrasing is likely the one most people would start out with.
Series of data structures (locations)
  1. All whitespace is space characters.
  2. Every space has a non-blank neighbour.
  3. A list of one word per line.
  4. A list of sorted words.
This phrasing is admittedly odd—you would more likely describe the steps of processing in this case. But note how the focus on data structures forces a greater clarity of their description.
Series of machine actors
  1. tr breaks up every word to a separate line.
  2. sort sorts the list in ascending lexicographic order.
Note how focusing on actors coalesced the first three steps. This organization emphasizes the common element of the first three steps, distinguishing them from the final sort step.

The example pipeline is too simple to require much descriptive detail. I needed something short enough to describe three times in a row. With a richer process to describe, the differences between the descriptive approaches would be more dramatic.

Format of draft

For your draft, describe your process using the three different approaches to sequencing the points. Include a different diagram for each approach. Organize your draft in the following structure:

  1. Describe your intended audience. Write this section in italics. You only need one paragraph.
  2. Name the process you are describing. This should only take a sentence.
  3. Describe the process as a series of steps. Include a diagram.
  4. Describe the process as a series of data structures or locations. Include a second diagram.
  5. Describe the process as a series of actors (human or machine). Include a third diagram.
The descriptions should be a mixture of outline points and actual sentences. Specify the major structure as bullet points (that saves the effort of developing transitions for an organization you will likely not use). Within each major point, write sentences. The sentences themselves don't need to be crafted, just detailed enough that you have to think through the smaller points. You do not need as much detail as you will put in the final version. Separate each approach with a header.

It is likely that one of the organizations will seem strained. That's fine. The goal of the draft version is to (once again) get you to look at your topic through several lenses, seeing different details each time. For the final version, you will likely pick elements discovered by each approach.