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.
- Read my policy on collaboration.
I will fail any student who cheats or plagiarizes in this class.
- You should read about the CS Department facilities.
- You will need an account on linux.cs.sonoma.edu for this class.
If you do not yet have one, the Computer Science Department has
instructions for obtaining one
here.
-
Create a directory in your linux.cs.sonoma.edu account for all your work in this class.
In order to comply with Computer Science Department
policy,
set the permissions of this directory to 700 so nobody else can access it.
(Consult your Linux reference manual to see how to create a new directory
and change the permissions on it.)
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:
- A file named "README."
This is a discussion of the program, including
- a list of the files included in your submission.
- the test data you will use to determine if the program is working
correctly, and
- a list of unimplemented features (as specified in the assignment) and
other anomalies in the program.
IMPORTANT: No credit will be given for any program submitted without
a README file (unless noted in the assignment).
- All the source, header, etc. files needed to create your program.
(Except, of course, the system files.)
- 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:
- 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.
- 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:
- If the revision does not work, you still have the previous version.
- 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:
- the name of the file,
- a very brief description of the contents of the file,
- the author's name, and
- 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
- If you have never worked in a Unix environment, look at
Some Basic Unix
for the minimum Unix commands you need to know.
- C++ to C
provides very brief discussion of C programming for C++ programmers.
- makefile
describes the basics of the Unix make facility.