What are Deliverables?Quite simply put, deliverables are those tangible items that are to be delivered to the client upon completion of work. This may include things like source code, compiled executable code, help files, test results, product designs, documentation, training, and just about anything else a client may request. The important thing to remember is that the client specifies the deliverables, not the developer. How the items are delivered can be negotiated (e.g. submit source code on a CD or via email.)
In our classes, I (the instructor) am the client and you (the student) are the hired developer. As the client, I specify what the deliverables are, how they are to be delivered, and when they are to be delivered. Once the items are delivered, you will get paid. Of course, as the Dalai Lama said to Carl Spackler "Oh, uh, there won't be any money..." Instead, you will be compensated with a grade for the assignment. The size of your "paycheck" (the grade you receive) will be proportional to the degree in which you have met the requirements. So, if you only meet a portion of the requirements satisfactorily, you'll only receive a portion of a "paycheck" (a score less than 100%).
In the "Real World", you usually don't get "partial" credit, meaning that you get paid only if 100% of the items are delivered to the client's satisfaction. This means that if you only finish 95% of the project, you don't get 95% of your pay. You get nothing until all of it is finished. Since we can't work quite that way here (due to time constraints), you will get partial "pay" for submitting partially completed/satisfactory work.
For each programming exercise, most of the information regarding deliverables is specified in the handout for the assignment. Most of the criteria is the same from assignment to assignment, with the exception of the task (algorithm, program) being developed. Exactly what needs to be delivered will be specified on the the handout. The common criteria for deliverables are discussed in this document.
Hardcopy Requirements (if required)The hardcopy must be printed in portrait mode (no landscape) using a fixed-pitch font (e.g. Courier). The size of the font should be between 7 and 10 points. This is to help ensure that there is no wordwrapping in the output (and also to help keep the number of pages to a minimum.) Word-wrap is great for word-processing, but it is totally unacceptable for source code. (Ever notice that there is no capability to enable word-wrap in a programmer's editor like Visual Studio or SynEdit?) Of course, if you like to type very long lines in your programs, your lines may still word-wrap even when printed in a small point size. You will have to be aware of this before you print it out because you may end up having to edit your source code and re-print the entire program if any lines word-wrap. (Or, leave the word-wrapped lines and then receive a lower score due to failure to meet the client's requirements as specified.) If you want to have long lines in your source, it is up to you to make sure you can print without the lines wrapping. Also, watch out for large tab sizes and large margins. These attributes are probably the cause of most word-wrapping during printing. If you can't get Visual Studio (or whatever you use to write code) to format your output properly, use some other software that will allow you to control all aspects of the output. There are tons of free tools out on the Internet for formatting source code. You just need to look for it. Here are a few that may help:
Use of DoxygenDoxygen tags must be used to markup your internal documentation (comments). For details on Doxygen and an example of a Doxygenized source file, look here. The minimum tags required are:
Note that in C++ code, it may be cleaner to describe the class using a class tag, rather than to put the information in the file header comment. This header file demonstrates the class tag. The HTML generated from the class tag is here (under the Detailed Description section). Also note that these tags listed above are the minimum requirements. For example, it is common to markup the text with HTML tags within the comments.
Doxygen includes an excellent and exhaustive compiled help file that describes all of the commands and tags that are available and how to use them. It is installed with Doxygen on your computers.