CMSC 341 - Project Submission

We are using shared directories on GL's Andrew File System (AFS) for project submission this semester. Using AFS's permission system, we can specify that certain directories are only accessible to an individual student and the instructors and teaching assistants. These directories are the shared directories. You will submit your projects by copying your files into these directories.

Summary of important points:

  • We do not rename the files. Linux file names are case sensitive. Renaming files will break grading scripts.
  • We do not develop code in the shared directory.
  • We do not create sub-directories in the shared directory.
  • We copy the final product (required files) to the shared directory.
  • We clean up the shared directory after testing the code in the shared directory. Only the required files for project will remain in the shared directory. Development files such as precompiled gch, object files, your executable files, or vgcore dump files are large;these files consume disk quota in submission folders.


Initial Setup

Shared directories for each student have already been prepared. (If you added this class late, please contact the course coordinator Prof. Donyaee donyaee@umbc.edu.) The first step is to make a symbolic link to your shared directories in your home directory on GL.

Step 1: Log into GL (using Putty, TeraTerm, Terminal, ...). If you are unfamiliar with the GL system, the lecture notes from CMSC 121 Introduction to Unix will walk you through the steps.

Step 2: In the Unix shell, make a symbolic link to your shared directory in your home directory. Your shared directory resides in /afs/umbc.edu/users/d/o/donyaee/pub/cs341/ under your username. So, if your username is your-user-name your shared directory is /afs/umbc.edu/users/d/o/donyaee/pub/cs341/your-user-name.

A symbolic link will allow you to refer to your shared directory in a more convenient form. The following Unix command will add a link called cs341proj to your home directory. (If you already have a directory called cs341proj, you should first rename it or remove it.)

ln -s /afs/umbc.edu/users/d/o/donyaee/pub/cs341/$user ~/cs341proj
    
Henceforth, you can refer to your shared directory as ~/cs341proj.

Even though you can read and write files in your shared directories before the due date, you should not develop your programs in the shared directories. Furthermore, the files in the shared directories should not be your only copy of the programs: keep your working copy of your programs on your own computer or in a separate location in your GL account.


Shared Directory Layout

Explore your shared directory. You will notice that there are already subdirectories in your shared directory.

    linux2% cd ~/cs341proj/
    linux2% ls
    00Gradesheets  proj1-late1  proj2-late1  proj3-late1  proj4-late1
    exception      proj1-late2  proj2-late2  proj3-late2  proj4-late2
    proj0          proj1-late3  proj2-late3  proj3-late3  proj4-late3
    proj1          proj2        proj3        proj4        
    
The idea is quite simple. For example, to submit your code for Project 3, simply copy all your files from Project 3 into the proj3 subdirectory. After the due date for Project 3, you will no longer be able to write into the proj3 subdirectory. You would need copy your files into proj3-late1 in order to submit Project 3 one day late. The second day after the due date, you would have to submit to proj3-late2 because you will not be able to write into either proj3 or proj3-late1. Four days after the due date for Project 3, you will not be able write into any of the Project 3 directories (as per the Late Submission Policy).

If you have files submitted to more than one of the directories for a particular project, we will assume that you want to have the files in the most late directory graded. The appropriate late penalty will then be applied.

You might notice that you do not have write permission at the top level of your shared directory. Thus, you cannot create Additional subdirectories in your shared directory or rename the subdirectories. These actions would break the scripts used to collect your projects for grading. At the project level (e.g., ~/cs341proj/proj3/) you have all of the AFS permissions to read and write.

Note that proj0 and the homework assignments must be submitted on time. So there are no corresponding late directories for these assignments.


Submitting Your Files

If you already know how to copy files to the GL system, then whatever you are using now is fine. We recommend using sftp applications.
Then, you can login to your GL account using ssh, go to the folder your files reside, copy the files to the proper folder using cp command. Here is an example:

    linux2% cp BST.h BST.cpp mytest.cpp ~/cs341proj/proj3/
      
Just make sure that you are copying the files into the correct project directory. Also, make sure that the files reside in the top level of the project directory and not in a subdirectory. For example, a listing of the directory for Project 3 should look like:

    linux2% ls ~/cs341proj/proj3
    BST.cpp         BST.h          mytest.cpp
    
and NOT LIKE
    linux2% ls ~/cs341proj/proj3
    myproj3/
    

Testing Your Submission

You are encouraged to test your program after copying your files to a shared directory. For example, this sequence of Unix commands would verify that your files submitted for Project 3 were submitted to the right place and that the graders will be able to compile and run your program:

    cd ~/cs341proj/proj3
    make
    make run
    
You should clean up your submission after this test:
    make clean