Working with CSE 241 Labs in Your Subversion Repository


This page describes the system that we use in CSE 241 to distribute and collect programming labs. Please review this information carefully to ensure that you can spend your lab time working on the assignment, instead of fighting with the course infrastructure. If you plan to use Eclipse to do your labs, please read both this page and the separate page on using Eclipse in CSE 241.

Finding Your SVN Repository

Each student has a Subversion (SVN) repository that will be used for all labs. Your CSE 241 repository can be accessed from any machine via the following URL:

https://svn.seas.wustl.edu/repositories/repoName/cse241_fl15

where repoName is your WUSTL Key ID (with all alphabetic characters in lower case, e.g. "jbuhler").

You can view your repository in any web browser using the above URL. You'll need to supply your WUSTL Key username and password to access it. You can also view and edit your repository with any tool that understands SVN version 1.8.

How We Hand Out Labs

Each new lab will be rolled out to students by creating a subdirectory within your repository. These directories will be named with mnemonic keywords such as intro, close, hash, and so forth. To work on a particular lab, check out the corresponding directory from SVN.

Each lab's directory will contain a control.txt file, which is used to control turn-in and auto-grading as described below. Below this directory, you will find the provided code for the lab; each language will have a corresponding subdirectory for its code. For example, the Java version of a lab's code is in the subdirectory java, while the C++ version is in c++.

Working On Your Lab

To complete a lab, you are expected to start with the provided code in your language of choice, modify it, and commit your changes, along with any new code files you've created, back to your repository. Any modified files must replace the originals in the same directory -- do not move your code to any other directory. Any new source files you create should reside in the same directory as the modified files; C++ users may also need to modify the provided Makefile for the lab.

To indicate which language you are using for a lab, please edit control.txt to uncomment the the language directive and set its argument to your chosen language. Possible arguments are "java" and "c++". If you do not enable this directive, Java is assumed by default. Our grading procedure uses the language directive to decide which code subdirectory to test and grade, so please make sure it is correct for your lab!

Because we put each lab in its own directory, we have not added any package declarations to the lab code. You should not add package declarations either; doing so will cause the automated scripts we use to assist in grading to fail.

Each lab includes a top level driver file that contains your program's main procedure. This file is named Main.java or Main.cc. While you are free to modify this file as you wish for testing, any modifications to the driver file will be discarded, both in automated testing of your code and at the time your lab is turned in. We will never require you to modify the driver file in order to produce a correct lab, though you may need to modify your local copy of it to perform timings or to debug your code.

The CSE 241 Auto-Grader

As a convenience to help you debug, we will run an auto-grader program that can run your lab on some test inputs and tell you if it fails. Passing these tests is not sufficient to guarantee that your lab is correct, but the tests do provide some exercise for your code on non-trivial inputs. Use them as a debugging aid and a sanity check, but feel free to find other ways to check your code as well.

The auto-grader will not attempt to test your lab until you uncomment the test directive in control.txt (and commit this change to your repository). Once this directive is uncommented, your lab will be tested roughly once per hour against a set of sample inputs. You can find these inputs posted on the labs page if you want to try them yourself. Each time it runs, the auto-grader writes a file autograder-results.txt in the same subdirectory as the code it tested, which shows whether it successfully compiled your code and whether the resulting program passed each of the provided test cases. Note that you will have to update your SVN repository to see the latest autograder output.

If the lab has an extra credit portion with its own auto-grader test cases, your control file will have a directive extra. Uncomment this directive as well as the test directive to test the extra credit portion of your lab.

Code that does not compile, or code that contains package declarations (which you aren't supposed to add!), can severely confuse the auto-grader, resulting in hard-to-interpret output. Consider leaving the test directive commented out at least until your code compiles.

Turning In Your Lab

Your labs are officially due at the beginning of class on the due date. At this time, we take a snapshot of each student's lab from the SVN repository and preserve it for grading. You don't have to do anything -- the snapshots are taken automatically. When a snapshot is taken, a file named turnin-record.txt will appear in your lab directory, showing the exact date and time of the turn-in. (This may be a few minutes after the official due time because of the time needed to snapshot every student's lab, but don't worry -- your lab is not late!)

If you wish to turn in your lab late, you must replace the snapshot that was taken at the time it was due. You can do so by uncommenting the forceturnin directive in control.txt, which will force your lab to be turned in again at the next late collection deadline. A new turn-in record will be written indicating the new turn-in time, and that you overwrote a previous turn-in. To prevent unintentional late turn-ins, we will automatically comment out the the forceturnin directive in your your control.txt file following a successful forced turnin.

Late labs with forceturnin enabled are collected once per day for three days following the due date, at the time corresponding to the beginning of a class period. You can use forceturnin multiple times if you decide to submit a late lab, then resubmit an even later lab on a different day. No late labs will be accepted after the three-day window.


CSE 241
Last Update: 8/17/2015