How to do a design project with me

Theodore Norvell, Computer Engineering, MUN

You must specify

Although the 7800/8800 course description says little about specification, I regard specification as an important part of the course. Up until now (in school at least), you've largely been handed specifications and asked to create a design. In 5895, you may have been asked to design without either being given a specification or writing one down for yourself. Now it is high time to either learn to write a specification or show that you have already learned to do so. All projects done with me should start with a requirements elicitation and requirements writing phase, the outcome of which should be a requirements specification document, acceptable to your both your client and me. (Your client might be me, you, or some third party.)

You must design

This seems fairly obvious for a design course. However let me spell it out. I'm much more interested in a solid design than in a slick implementation. If you look around campus, you won't see a bunch of bridges left over from civil engineering student projects, nor is Long Pond full of the remains of old ocean and naval engineering projects. In computer engineering we have the luxury of essentially free materials (bits) and construction labour (compilers), so we get the added pleasure of implementing our designs and of walking across that bridge or setting sail on that vessel; but let's not forget to carefully document and explain each aspect of the design, preferably before implementing it.

Given this dictum, you might ask: Why write the code? Why not just do a high level design and leave it at that? The first part of the answer is that high level designs (by nature) leave many questions unanswered. The low level design (i.e. code level design) answers those questions. The second part of the answer comes next.

You must verify

In this context, what I mean by "verify" is that you need to create some solid evidence that your design and implementation is correct. Typically this is some set of tests, which could contain unit tests, system tests, or both. Evidence might also consist of a mathematical or automated verification.

You must deliver deliverables

Deliverables typically include.

Some deliverables will be delivered at certain milestones. All deliverables must be kept up to date and, at the end of the project, all deliverables must be sent to me by e-mail or on a CD-ROM.

During term 7 you, in consultation with me and the client, will define the set of milestones and deliverables.

Intellectual property rights

Unless we work out a different deal: You will own all intellectual property that you produce as part of the course. However, I will be granted licence to make use of your intellectual property. That use may include modification, distribution, and incorporation into products.

If your project is to contribute to an existing project of mine, then the intellectual property rights might be a bit different from the above.

You must return all borrowed items

Anything you borrow from the faculty or from me must be returned before you receive a mark for 8800.