Programming Projects

Last modified at 9:44 PM on 1/11/02.

IMPORTANT

You must follow the naming conventions given here. I will be using some automated systems to test your programs. If you do not use the correct naming conventions, your program may not pass the tests, which may affect your grade.


Program Preparation and Submission

When starting a new program, create a directory named
nnn_yourlastname_m.v
where:
nnn is the course number, e.g., 250
yourlastname is your last name
m is the project number, starting with 1
v is the version number starting with 0

Do all your work for the program inside this newly created directory. When you are ready to submit your program you will create an archive of the entire directory, compress the archive, and send it to me. So make sure that you keep all your work organized.

For example, all the files for Robin Smith's first assignment for CS 250 should be kept in a directory named 250_Smith_1.0. If Robin creates a second version of this program, Robin will create a duplicate of the directory, along with all the files in the directory, and name the duplicate directory 250_Smith_1.1.

Each project submission, unless otherwise specified, shall consist of:
  1. A file named "README."
    This is a discussion of the program, including
    IMPORTANT: No credit will be given for any program submitted without a README file (unless noted in the assignment).
  2. All the source, header, etc. files needed to create your program. (Except, of course, the system files.)
  3. A makefile.
    I will start the test of your program by using the Linux commands
    	make clean
    	make
    
    So your makefile must be designed such that this produces the desired results.
To create an archive:
  1. Leave only the required files in the directory named nnn_yourlastname_m.v. Delete any other files (e.g., application, .o) before you submit your project folder.
  2. From the directory immediately above this one use the commands:
    	tar cvfz nnn_yourlastname_m.v.tar.gz nnn_yourlastname_m.v
    
    (Read the man pages for tar and gzip to learn what is being done here -- and to learn how to read man pages!)

    The resulting compressed archive (.tar.gz file) is known as a "tarball."

Deposit your tarball in the specified directory on the department's linux server.

Creating and submitting an updated version

You must create another directory with a different name. Make a copy of your first directory and all the enclosed files. Follow the above naming convention, using ".1" for the first update, ".2" for the second, etc. (The original version uses ".0" in its name.) Then make your modifications in the new directory. When you are ready to submit the revision, follow the above directions for creating an archive. There are two reasons for making revisions on a copy of your program:
  1. If the revision does not work, you still have the previous version.
  2. When I extract your program from the archive, the directory is created with all the files in it. If you do not use a different name, this process will write over the previous version. This makes it difficult for me to keep track of the programs.
I will grade only the latest revision, unless you notify me otherwise in writing.

Required documentation

Every file you submit for this class -- including the README and makefile files -- must include at least the following documentation at the top:
  1. the name of the file,
  2. a very brief description of the contents of the file,
  3. the author's name, and
  4. a dated history of the major modifications made to the file.
    Most of the time this will be one date -- the date that you complete the file.

Approximate Program Grading Criteria:

README file and Documentation 20% stop here if incomplete
Assembles and links with no errors 20% stop here if errors
Meets specifications ≈40%  
Design ≈20%  

Solutions

I generally will not post solutions to programming projects. If you are unable to complete a program by the time it is due, submit what you have completed. But you are still responsible for figuring out how to complete the project.

The point is to learn how to solve the problem, not how to copy someone else's (my) solution to the problem. You can, of course, ask me questions about how to solve it.


Useful Information