We are using shared directories on GL's Andrew File System (AFS) to submit the Haskell programs in your homework assignments. In AFS, 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 Haskell programs simply by copying your files into these directories.
Shared directories for each student have already been prepared. (If you added this class late, please contact Prof. Richard Chang chang@umbc.edu.) The first step is to make a symbolic link to your shared directories in your home directory on GL. In the examples that follow, we will use smurf19 as the example user name. You should replace smurf19 with your own user name.
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/c/h/chang/pub/cs331/
under your user name. So, if your user name is smurf19
your shared directory is
/afs/umbc.edu/users/c/h/chang/pub/cs331/smurf19
.
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 cs331hw to your home directory. (If you already have a directory called cs331hw, you should rename it.)
ln -s /afs/umbc.edu/users/c/h/chang/pub/cs331/smurf19 ~/cs331hwHenceforth, you can refer to your shared directory as ~/cs331hw.
Explore your shared directory. You will notice that there are already subdirectories in your shared directory.
linux2% cd ~/cs331hw/ linux2% ls 00Gradesheets/ hw03/ hw05-late4/ hw08/ hw10-late4/ exception/ hw03-late2/ hw05-late-pass/ hw08-late2/ hw10-late-pass/ hw01/ hw03-late4/ hw06/ hw08-late4/ hw11/ hw01-late2/ hw03-late-pass/ hw06-late2/ hw08-late-pass/ hw11-late2/ hw01-late4/ hw04/ hw06-late4/ hw09/ hw11-late4/ hw01-late-pass/ hw04-late2/ hw06-late-pass/ hw09-late2/ hw11-late-pass/ hw02/ hw04-late4/ hw07/ hw09-late4/ hw02-late2/ hw04-late-pass/ hw07-late2/ hw09-late-pass/ hw02-late4/ hw05/ hw07-late4/ hw10/ hw02-late-pass/ hw05-late2/ hw07-late-pass/ hw10-late2/The idea is quite simple. For example, to submit your code for Homework 3, simply copy all your files from Homework 3 into the hw03 subdirectory. After the due date for Homework 3, you will no longer be able to write into the hw03 subdirectory. You would need copy your files into hw03-late2 in order to submit Homework 3 up to two days late. Three and four days after the due date, you would have to submit to hw03-late4 because you will not be able to write into either hw03 or hw03-late2. Five days after the due date for Homework 3, you can submit to hw03-late-pass, but only if you haven't already used the late pass for that group of homework assignments. (See late submission policy in the Course Description.)
If you have files submitted to more than one of the directories for a particular homework, 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 homework for
grading.
At the homework level (e.g., ~/cs331hw/hw03/
)
you have all of the AFS permissions to read and write.
If you already know how to copy files to the GL system, then whatever you are using now is fine. For example, you might be using scp on a Linux or MacOS and WinSCP on a Windows machine. Just make sure that you are copying the files into the correct homework directory. Also, make sure that the files reside in the top level of the homework directory and not in a subdirectory. For example, a listing of the directory for hw03 might look like:
linux2% ls ~/cs331hw/hw03 Postfix.hsand NOT LIKE
linux2% ls ~/cs331hw/hw03 myhw3/
Some Tips:
For example, the following variation of scp will give you a permission error:
scp -r myhw3 smurf19@gl.umbc.edu:cs331hw/ <-- BAD
This next command creates a subdirectory ~/cs331hw/hw03/myhw3/ on GL which is NOT WHAT YOU WANT.
scp -r myhw3 smurf19@gl.umbc.edu:cs331hw/hw03/ <-- BAD
Instead, use:
scp -r myhw3/* smurf19@gl.umbc.edu:cs331hw/hw03/
rsync -rv --delete myhw3/ smurf19@gl.umbc.edu:cs331hw/hw03/
Note that the trailing / are needed. Here, the -r option asks rsync to look recursively in myhw3 and the -v option asks rsync to be verbose so you can see which files are copied. The --delete option tells rsync to delete files in the remote host that are no longer on the local host.
If all your files are already on GL, then the rsync command is just:
rsync -rv --delete myhw3/ ~/cs331hw/hw03/
You should test that your code compiles and runs on GL using the Haskell compiler on GL.
Thus, the files in the shared directories should NOT be your only copy of the programs. You should have a copy of your programs on your own computer or in a separate location in your GL account.