CSU 670 Spring 2007: Project Requirements

Richard Cobbe

There's been a lot of confusion, apparently, about the precise requirements for project layout, memo formatting, scripts, and so forth. This document attempts to clarify this. As of project 6, I will start taking off large numbers of points if you do not follow these guidelines.

Directory Layout

Within your submission directory, I must see the following files and directories, in the following locations. (This isn't a change; I'm just being very specific about our expectations.)

Otherwise, you may arrange your files and directories however you like.

IMPORTANT: you should generally avoid filenames that contain spaces, as the Unix shell scripting languages don't deal with these very well. (Yes, thanks, I know the tricks to work around those problems, and I'm not interested. Just don't do it.) You must absolutely avoid spaces in the filenames of files that we specifically ask for by name. If you put spaces in other filenames in your project, it is your responsibility to ensure that your compile etc. scripts work correctly on Solaris.

Script Requirements

This section describes requirements that apply to the compile, run, and run-tests scripts.

  1. These scripts must be executable: when I check them out, they should automatically have Unix permissions at least -rwxr-xr-x. To ensure this, especially if you're using a different OS for your development, execute the following command:

    svn propset svn:executable x compile run run-tests

    and commit the change.

  2. Furthermore, if this file is a script (and it probably is), then please make sure that it does not contain any Windows end-of-line markings. If you're developing on Windows, please execute the following command to have SVN automatically translate Windows end-of-line markers to Unix:

    svn propset svn:eol-style native compile ...

    and commit the change.

  3. You may make only limited assumptions about the environment in which we will run your programs, including the compile, run, and run-tests scripts. You may assume only the following variable:


    You may also assume an appropriate setting for TERM.

    This has three consequences. First, if you need some other setting in your environment (which is unlikely given the nature of the project and the languages most of you are using), you must set those environment variables directly within your scripts.

    Second, if you use a compiler or runtime that's not in the above PATH, you must adjust your scripts accordingly. You may either set the PATH variable in those scripts, or you may specify absolute paths for compilers, etc. (In particular, if you need Java 5, you must arrange for the scripts to use javac and java out of /arch/beta/bin, not out of /usr/bin. And if you're using Ant with Java5, you must set the PATH variable within your script, or Ant won't be able to find the correct compiler.)

    Third: no DISPLAY variable, so no GUIs. If we ask you to write a GUI at some point, we'll explicitly relax this restriction.

    To ensure that your script runs in these environments, run your scripts as follows:

    /usr/bin/env -i PATH=/arch/unix/bin:/usr/X11R6/bin:/usr/bin:/bin TERM=$TERM ./compile
  4. You should assume that I will run your script from the directory which contains it (that is, from within turnin/ProjectN). Of course, since this will be in my working copy, you shouldn't make any assumptions about what that directory is named. So, if your program or scripts have to refer to files in your submission by name, you should specify these with paths relative to your submission's top-level directory.

Memo Formatting Requirements

Memos must be written in HTML. Further:

  1. The memo's file name must indicate the task: the memo for task 3 must be in task3.html, and so on. In filenames, spelling, punctuation, and capitalization are significant. Also, you may not put spaces in your filenames.

  2. The memo must begin with a first-level header (i.e., <h1>) that states your name and your partner's name. The next thing in the memo most be a second-level header (i.e., <h2>) that identifies the project and the task (simply saying "Project 7, Task 2" is sufficient).

  3. Code snippets may be in monospaced text, but the main text must be in the default (proportionally-spaced) font. If you have to use the horizontal scroll bar to see all of the text on a reasonably-sized browser window, you have a problem. (Here's why: when I convert these to PS and then to PDF for printing, the tool I use scales the document down so that it's one page wide. If the text is wide enough to require the horizontal scroll bar, the text in the PS file is too small to read.)

  4. Don't include figures or images. If a memo specifically requires them, we'll give you specific instructions on what to do.

  5. I shouldn't have to say this, but just to be clear on expectations: no JavaScript, ECMAScript, Java applets, etc.

  6. I really shouldn't have to say this: normal English rules of spelling, punctuation, grammar, and so forth still apply. You will lose points if you have too many mistakes at this level.