Computer Science Lab Report Format
- BASIC INFORMATION. State your name, class, section,
instructor's name, assignment number, and date.
- PROBLEM STATEMENT. Write a short paragraph describing the
purpose of the program. This statement should become your
main program header comment.
- INPUT AND OUTPUT FORMAT. Describe how the input is going to be
given to the program and the format of the output the program
produces. Present how a typical run of the program should look.
- VARIABLE DESCRIPTION. Describe the important variables in
your program. For each of these variables give its type and
a description of the variable's usage in the program.
This description will become a comment in your program.
Do not describe less important variables such as subscripts and
loop control variables. Advanced students should describe in
detail the data structures used in the program.
- ALGORITHM DESCRIPTION. Give a description of your algorithm,
making effective use of the principles of top-down design and
modularity. Start by deciding what procedures and functions will
be called from the main program and then describe the main program
algorithm using pseudo-code. Show how all the main program
variables and the procedures and functions you've declared
so far are used in the main program. For each procedure and
function you've declared, decide what it will do, and what the
parameters will be. Then give a concise statement of what the
procedure will do, written in terms of its parameters.
Think of this as a contract between the program and the procedure.
This statement will become the procedure header comment in your
program. Next decide whether your procedure needs to be
broken down into further subprocedures. Write a pseudo-code
algorithm for your procedure. Now repeat this process for all
procedures and functions until everything is clearly described.
- STRUCTURE DIAGRAM. Draw a structure diagram to reflect the
procedural organization of the program as you have designed it
in the previous step, and to display how information is transmitted
between procedures. It should have one box for each procedure or
function, and it should list each input, output, and input-output
parameter that is used to pass information to or from a procedure or
- ERROR INDICATIONS. Describe the situations in which your program
detects an error condition and what action the program takes.
Decisions about error handling must be made in parallel with the
- HAND TRACE. Include a hand trace of the piece or pieces of your
program that your instructor indicates.
- EXTRA CREDIT. Indicate whether any extra credit features have
been implemented in this lab. You should describe these extensions
in this section, but be sure you include adequate tests of these
features in the test description and test typescripts below to
qualify for extra credit points.
- CORRECTNESS ARGUMENT. Carefully explain _why_ your algorithm
solves the problem correctly. This is not the same as explaining
_how_ your algorithm works all over again.
- LISTINGS. Give computer listings of all files used in the
assignment, including source files, include files, and makefiles.
Label each one clearly. Appropriate program comments must be included
in the code, not written in afterward by hand. Highlight important
information when appropriate (such as file names), and even
add handwritten notes if helpful. Note: the file name should
always be in a comment at the top of each file.
- COMPILATION TYPESCRIPT. Turn in a typescript demonstrating the steps
in compiling your program. This should show clearly that your program
compiles correctly. Your instructor will give you specific
instructions about how this is to be done in each individual class.
Again, label and annotate to make this clear.
- TEST DESCRIPTION. Describe the tests you will perform to verify the
correctness of your program. This should be a thorough and
exhaustive list of test cases designed to show that your program
does everything it is supposed to do. The combined tests should
exercise every line of code in your program. For each test case,
give sample test data and state what you are checking. If test data
is provided by your instructor, include that as well, and explain how
it tests your program.
- DEMONSTRATIONS OR TEST TYPESCRIPTS. Do program demonstrations
for your TA or instructor that show all the required features of your
program(s). And/or turn in typescripts of tests that you ran.
Place them in a logical order, highlight important information,
and annotate them with handwritten notes to make them
easier to understand.
- KNOWN BUGS. Describe any known problems with your program,
if it does not work as it is supposed to. Include carefully labeled
typescripts of tests that cause the program to work improperly.
If you can, guess at what the underlying problem is and how you
might solve it if you had more time.
It is better to be honest about bugs than to conceal them.
- POSSIBLE IMPROVEMENTS. Describe how you could improve your program
if you had more time. What improvements would make the program faster,
more general, simpler, or easier to understand?
- COMMENTS. Evaluate the lab. What did you learn from it?
Was it too hard? Too easy? Suggest improvements if you can.
Page URL: http://www.d.umn.edu
Page Author: Doug Dunham
Last Modified: Thursday, 03-Sep-2009 17:29:13 CDT
Comments to: firstname.lastname@example.org