CSL: Policies: Academic Course Services

Each semester, the Lab Staff provides directories for each CS course in addition to several other services. Instructors and TAs may want to familiarize themselves with these services to make the transition into each new semesters as seamless as possible.

Course filesystems

There are several filesystems associated with each course, each intended for a specific purpose. The top-level filesystems are as follows:

/usr/project/courses/
This filesystem is for course work; e.g., programs, homework submissions, etc.
/usr/project/cwd/
The Course Web Docs (cwd) filesystem is intended for course websites.
/usr/project/coursearchive/
Contents of the courses/ and cwd/ filesystem from prior semesters are archived here indefinitely. Announcements are made via e-mail around the end of each semester, and then around 1-2 weeks after the end of the semester, the directories are moved.

Instructors and TAs should perform any maintenance on files in these areas before they are moved to coursearchive/. This might include: removing object files, temporary files, personal information; adjusting permissions; etc.

Contents of coursearchive/ are read-only; if content must be modified, please contact the Lab Staff.

Individual courses within these directories are located under semester directories, e.g. /usr/project/courses/fall09/cps001/, /usr/project/cwd/spring10/cps215/, /usr/project/coursearchive/cwd/spring05/cps149s/. The courses/ directories are also symlinked into the top-level directory, so the directory for the current semester CPS110 class can also be found at

/usr/project/courses/cps110/

The cwd/ partition employs a slightly different linking strategy: the top-level directory contains directories for each class which in turn contain links for all past and current semesters. For example, the Fall 2009 semester directory can be found at

/usr/project/cwd/cps110/fall09/

(While somewhat obscure, this system has persisted for some time due to historical reasons and faculty preference.)

In each case, the instructor of the course is made the owner of the directories for that course.

Course permission group

Each course directory is assigned a Unix permission group, with group read/write permissions enabled. These groups are intended primarly for the sharing of files between each instructor and their TAs (and UTAs), though in some circumstances may be used to share files within the class. By default, TAs for a course are added to that course's group. If you do not want your TA to have read/write access to any of these directories, please make sure to use the chgrp and chmod commands as needed. Alternatively, you may contact the Lab Staff for changes to the group membership or directory permissions.

Note: Each user should be aware of the permissions on their files. Files must have group-write permission enabled in order for others within the group to modify them.

The current status of the group can be determined using the getent command:

% getent group cps110
cps110:*:1110:angela,carla

Commands such as these can be used to set access:

% cd /usr/project/cwd/fall09/cps130
% chgrp cps130 newfile
% chmod g+w newfile

Course accounts

Instructors and TAs can request term accounts for UTAs or class members, assuming that they don't already have CS computer accounts. (Anyone registered as a Computer Science first or second major or minor should already have a CS account, please check!)

Course mailing lists

A default mailing list is set up for each course: simply create the file MailingList in your courses/ directory, and add one email address per line using any text editor. For example:

/usr/project/courses/fall09/cps110/MailingList

The email address of this mailing list is: cps110@cs.duke.edu. Additional lists can be set up upon request; e.g., cps110-staff.

Note: the MailingList file must have world-read permission in order to work. Additionally, the enclosing directories must all have the world-execute bit set in order for the mail server to be able to read the file.

Course bulletin boards, wikis, etc.

Course bulletin boards are available for each class; most 100-level classes are already set up, others are available upon request.

Wikis and other communication methods can also be set up for classes. Please contact the Lab Staff for more details. In addition to local wiki support, Duke has added wiki support. See wiki.duke.edu for more details. And, of course, Blackboard@Duke is available, please see blackboard.duke.edu. And, Blackboard's replacement, Sakai: sakai.duke.edu.

Online assignment submission

Many instructors are now using the Ambient system for course assignment management and submissions. Please see the online documentation for details.

Upon request, Submit/Listen binaries can be built for each course by the Lab Staff. This is an old system, and is depricated. Please see the online documentation for details.

Note: Make sure the submit directory does not have world read permission, which would allows anyone with a CS account to read the submissions of others.


If you have any questions, or have a problem with your course setup, please let us know.