CSC444'07F Assignment 1

Due October 15 at Start of Class

 

The purpose of this assignment is for you to become more aware of what you do when you program, and develop an understanding of how individual programmer productivity links to team and project productivity.

Write a program in C, C++, C#, Java, or any other similar procedural language that assigns attendees to seminars during one conference morning.

There are some number of seminar rooms available for various set times during the day, and each can seat a certain maximum capacity. Input this information first. Then input a list of seminars, and how long each is in whole hours. Then input a list of attendees, each of whom lists the seminars they would ideally like to attend in preference order. Your program should output an optimal timetable and assignment of attendees to seminars (you must decide and document your optimality criterion).

Keep track of the exact time spent in each phase of development, and the exact number of defects along the way. Divide your development into the following phases:

  1. Specification
    Decide on the precise inputs and outputs and document it.
  2. Design
    Decide on the algorithm, design the data structures you will use, and document them.
  3. Code and Unit test
    Write code and run smaller tests as the code is created to ensure it works properly. Finish when you believe the program is code complete.
  4. System Test
    Test the software using a wider range of test cases. Fix any defects you encounter.

Hand in the following:

  1. (10%) An estimate in advance (before you start anything) of how many minutes you would expect to spend in each of the 4 phases (no marks are awarded for "getting it right" - just please give your best guess in advance).
  2. (10%) Time summary sheet detailing exact time spent (to the minute) in every phase.
  3. (10%) Defect summary sheet showing the total number of defects found in each phase, and to which phase the defects were attributed.
  4. (20%) Detailed time logs and detailed defect logs that you used to come up with the summary.
  5. (40%) Printouts of the specification, design, code, and tests you used (plus results).
  6. (10%) A commentary on how what actually happened differed from what you thought would happen.

Notes: