Walkthrough For Everything to do with Assignments

(with lots of reference to BitterSuiteWalkthrough)

For This Walkthrough, we will assume that all work is being done with Assignment 1 on ubuntu.student.cs. This document has been significantly changed at the beginning of Winter 2013. If there is anything not working, please contact your ISC or look up the older versions of this document.

Create tests for the assignment

Create a tests folder

Use make-all.py to create a folder called aXX that contains test.1, which is used to store auto-tests, and test.pt, which is used to store public tests.

Write public tests

In /u/csXXX/marking/aXX/test.pt/in/, write at least one test for each question. For each test, create a file (and directories) .../in/Q/tXX/test.rkt, where Q is the question number and XX is the test number. You do not need to make-test.py to create the public tests.

Public tests should cover simple non-base cases; for example, a list of length one. Checking the empty list is less useful, because it doesn't ensure the students are including the correct types of data in the list.

If you have trouble to find format of public tests or auto-tests, u/csXXX/archives/XXXX/Marking/ has the tests from previous terms.

Create the assignment in Markus

See Markus for details. Make sure to disallow re-mark requests on the assignment.

Setting Up

Post Assignments on Course Web page.

On the assignments.shtml page, there should be a link to the assignment ( a1.pdf) that is commented out. First, move the actual assignment file to the public_html/Assignments folder and rename it to match the link in assignments.shtml. Then uncomment the link and test it out.

If it says that you do not have permission to access this folder, you must change the permissions on the file, so type chmod 755 a1.pdf. The assignment is now available for students to view.

You can post other files, like interfaces, in the same way.

Post Announcement on Course Web page.

Post an announcement to tell students that the assignment is posted, and point out the due date in this announcement. Courses with Piazza will probably want to post an announcement there as well.

Preparing Submitted Assignments for Graders

Write Autotests

Using make-tests.py, write autotests for each question. Consult with the instructor who wrote the assignment; they may want to contribute and/or review test cases. While writing test cases, it's good to keep two things in mind: how correct do students need to be to pass, and how correct do students need to be to get perfect. Usually you will want a wide spread of difficulties in the tests you write so that students with major mistakes get some marks (from easier tests), while students with minor mistakes lose some marks (from harder tests).

Prepare MarkUs for Graders

Create a marking scheme and annotations on MarkUs. Again, consult with the instructor to see how much input they want to have in this process. ISAs from previous terms should have archived past marking schemes and annotations as csv files; you can upload these files to use as a starting point for this term's assignment.


See here for details. The abbreviated instructions are:

  1. Create a folder to download students assignments to, such as /u/csXXX/handin/a01_autotest/, and create a symbolic link to the autotests with a matching name using ln -s /u/csXXX/marking/a01 /u/csXXX/marking/a01_autotest
  2. Download groups from MarkUs, and save to /u/csXXX/marking/a01/a01groups.csv
  3. Set the variables in CheckoutAndCommit.py and MakeGradedAssignment.py. See MarkUsScripts for detailed info about those scripts.
  4. Checkout (download) the students code using python CheckoutAndCommit.py checkout viewcmds followed by python CheckoutAndCommit.py checkout runcmds
  5. Run the autotests: distrst -t t a01_autotest 1 toPrint (note: the second 1 should not change from assignment to assignment)
  6. Run any other pertinent scripts (such as checking student test cases with checktests.sh (Racket) or test_tests (Python); details for these scripts can be found at CheckTestcases and TestTests)
  7. Combine all of the student files, including autotest results, into a single file: python MakeGradedAssignment.py
  8. Commit (upload) the autotest results to Markus using python CheckoutAndCommit.py commit viewcmds followed by python CheckoutAndCommit.py commit runcmds
  9. We have to tell MarkUs to mark the revision we committed from the previous step. Logon to MarkUs with Admin Role, and go to the assignment's "Properties" page.
    1. Change the deadline to a few minutes after CheckoutAndCommit.py finished.
    2. Go to the "Submissions" page. Every row should be white, with a blue square for marking state. Click the "Collect All Submissions" link. Wait until every row is green.
    3. Change the deadline back to the posted deadline so that students don't get confused.

Assign Graders

Follow the instructions in /u/cs116/marks/markusGraders/HowToAssignGraders.txt gives the instruction to assign graders.

Run moss

See Running moss

Release Marks and Post Solutions

Release marks on website

The file /u/cs116/marks/public-marks.csv stores all student-viewable marks, and if you update marks in public-marks.csv, it will automatically updates the marks on website. For the script to update marks in public-marks.csv, read /u/cs116/cs116-scripts/AssignMarks/HowToConvertMarks.txt.

Release marks on Markus

Under Submission, select all students, and click Release Marks.

Post Solutions

Get a copy of the assignment solutions from the course instructor, and save it as a PDF in /u/csXXX/protectPDF/a01solns/a01solns.pdf (to save the original file as a pdf, use the "print to PDF" option from the print menu). You may need to change the permissions of this file and/or folder; follow the instructions on posting the assignment to the course webpage. Edit the array in /u/csXXX/public_html/protect/requestAssignmentSolutionCommon.php to include the new assignment.

Edit | Attach | Watch | Print version | History: r19 < r18 < r17 < r16 < r15 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r19 - 2013-11-12 - GradonNicholls
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback