Assignment 3 - Implementation

Introduction/What to do

You will write a program which conforms to the requirements specification from assignment 2. The purpose of this assignment is to provide material for future assignments and give you some experience writing a program you know will be maintained by another group. This means that on the one hand, you won't be graded on this assignment, but on the other hand, your ability to do future assignments depends on doing a good job on this one. Furthermore, the grading for the maintenance assignment will be based on both the ability to complete the maintenance task and the ease with which another group completed a maintenance task on your program, so ease of maintenance is important.

What to hand in

You will turn in a pointer to your source code and executable. Please check permissions on all files and make sure that we will be able to read/run appropriate files.


To facilitate automatic testing, the program must be able to run with input on stdin, output on stdout, error messages on stderr, width defaulting to 80, width specifiable by a command line option -w n (where n is the width), the flag for listing links defaults to off and is turned on by the option -l. You can add other options, such as a command line option for input and output files, if you desire.

The program can be written in C, C++ or Ada. Please send me email as soon as possible saying what language your group is using.

What to think about

One of the future assignments will be maintenance. In this assignment, you will swap projects with another group and perform a maintenance task. Thus the program should be written with maintenance in mind. The types of tasks to expect are described in the system evolution section of the requirements specification.

Due Date

This assignment will be due on May 15th, the same day as the Test Plan assignment. Because the test plan is due at the same time, we strongly recommend that you start working on your implementation immediately.
Adam Carlson