CS 247 ISA Duties

This page describes important tasks CS 247 ISAs must do throughout the term. The focus of this page is mostly on tasks that require technical knowledge or step-by-step instructions (rather than e.g. "set up a meeting with the course instructor").

"Beginning of Term" Tasks

Access the Course Account, Test the Course Email Account, Forwarding Course Email

See CompSci241ISADuties for information on these topics.

Update the Course Webpage

All the files for the course webpage are stored in /u/cs247/public_html. The HTML source for the main page of the site is in the file index.html. Most of the other webpages are stored in /u/cs247/public_html/current, and its various subdirectories. Changes you make to files in public_html will be reflected immediately on the course webpage. All file paths listed below will be relative to /u/cs247/public_html.Some of the first things you'll want to do are:

  • Clear out all the announcements.
  • Remove all of the assignments, tutorials, lecture materials, and exam information by commenting them. You can comment in HTML by using "<!--" to being a block of comments and "-->" to end the comments, without quotes. Comments cannot be nested.
  • Update the "Course Outline" ( current/outline.shtml) and "Personnel" ( current/personnel.shtml) section to list the current term's instructor and ISA. Make sure to change the office hours as well.
  • On each individual assignment page, update the due dates and change any references to the previous term (e.g. if it says "Fall 2012" anywhere, change it to "Winter 2013"). Assignment pages are stored in current/Assignments
  • Update the Piazza ( current/newsgroup.shtml) and MarkUs (current/mark.shtml) links to point to the current term's pages.

Set Up Marmoset

Most of the information for setting up Marmoset and giving student access can be found on the CompSci241ISADuties page: the details are very similar. Any differences will be listed below. Note that for CS 247 there will be two Marmoset accounts per user: one for the course assignments ("CS247" account) and one for the course project ("CS247_Project").

Setting up Marmoset Projects

Each assignment problem in CS 247 gets its own Marmoset project. Here is how to create a project:

  1. Click "create new project" from Instructor View.
  2. For the "project number" and "project title", enter the assignment problem name (e.g. A1Q2, A3Q1ab_Strategy, etc).
  3. Enter the due date for the corresponding assignment in the "on-time deadline" field. Assuming that late assignments are not accepted enter the same date and time in the "late deadline" field. Otherwise, enter the correct late date and time.
  4. For the URL, use a link to the assignment page (e.g. https://www.student.cs.uwaterloo.ca/~cs247/current/Assignments/A1/A1.pdf).
  5. The "description" can be left blank.
  6. For the "stack trace policy", select "the entire stack trace for Java or full output printed to stdout for C".
  7. Most other options can be left at their default settings. For the "canonical class account", you might want to change this to "youruserid-canonical" (if it is not the default) since you are the one creating the projects, but it doesn't really matter which canonical account is used. Repeat this for every assignment problem. There is currently no automatic or fast way of doing this.
Since all but one of the tests for each question in this course are secret tests, students cannot normally see the tests after submitting. After creating the project, you will want to set it so that the test results will be displayed after the deadline has passed. To do this, click "View" next to the project name, click "Utilities" near the top, scroll down to where it says "Project Maintenance". There is a subsection titled "Test-Outcome Visibility" with a pair of radio buttons below. Select the one that says "Everything" then click the "change post-deadline visibility of outcomes" button.

Uploading Test Setups and Canonical Solutions

After creating the projects, you need to upload and activate the test scripts for each assignment problem. The marmoset tests and solutions can be found in /u/cs247/marmoset on the CS247 course account.

  1. If you need to make any changes to the project tests or solution, just unzip the corresponding file (if it hasn't been already), make the changes, then zip the file again by using the zip command (e.g. "zip sol.zip hangman.cpp" to zip the solution for assignment 3 question 2)
  2. Go to the "Utilities" page for the project you want. Find the "Upload new test setup" form and navigate to the /u/cs247/marmoset folder. Look for a file called test.zip.
  3. After the test setup is uploaded, upload the canonical solution via the "Project submission via jar file for canonical account" form. The file should be called sol.zip
  4. Once both the test setup and canonical solution are uploaded, the canonical solution will be run against the test setup to check for correctness. If the test fails, try zipping the solution then submitting again. If it still fails, there could be an error in the test scripts or the solution.
  5. Once the test passes, click "assign points" to assign marks to each test case. See the past term's Marmoset accounts for mark values. If you do not have access to the previous term's account, ask your ISC for access. If the assignment problem has changed since the previous term, ask the instructor for appropriate new values.
  6. After assigning marks, the test setup will be active, though the project will not be visible to students until you click the "Make visible" button. Verify that the test setup works correctly before you click this button, since you cannot (easily) make a project invisible after it has been made visible. Repeat this for every assignment problem. There is currently no automatic or fast way of doing this.

How Marmoset tests students' submissions:

  1. Marmoset extracts the student's submitted zip file using "unzip -DD". The -DD means the extracted files will have the current time.
  2. Then, Marmoset extracts the test setup zip file using "unzip -DD". Marmoset will replace any files that already exist.
  3. Then, Marmoset runs "make -f TestMakefile" (according to the settings in test.properties)
  4. Then, Marmoset runs ./test_name

Set Up Piazza

Your ISC may have already set this up for you. If not, talk to your ISC and see CompSci241ISADuties for a detailed setup procedure.

Create Course Staff File For Current Term

Several scripts used by ISG-supported courses expect there to be a file in the home directory of the course account containing information about the course staff for the current term. The file should be stored in /u/cs247 and should be named .coursestaff.XXXX, where XXXX is a number corresponding to the current term. The term number should be in the "MFCF format": * The first two digits encode the current year, e.g. 12 for 2012. * The last two digits encode the starting month of the term: 01 for January, 05 for May, or 09 for September. For example, the file for Fall 2012 would be called .coursestaff.1209, and the file for Winter 2015 would be called .coursestaff.1501. The command termcode -m returns the number corresponding to the current term in this format.

The format of the course staff file is described at ClassListPerlModule, though it is not necessary to include the information about lectures, tutorials, labs, etc. as mentioned on that page. It should be easy to figure out what the file should contain by looking at examples from previous terms. Here is an example course staff file:


You can check that this file is set up correctly by visiting the marks page on the CS 247 website. This page uses the course staff file to determine who the ISC for the current term is. If the file is correct, it should show the ISC's name on this page. Otherwise, it will show "None".

"During the Term" Tasks

Upload Student Submissions from Marmoset to MarkUs

Details are avaliable at cs247/handin/README.txt.

To upload student submissions from Marmoset to MarkUs, follow these steps. This could be turned into a script with a little extra work, but this is the basic algorithm

  1. Change variables near the top in the file /u/cs247/markus/bin/CheckoutAndCommit.py. Read the comments in the file for details, the new settings should all be self explanatory once the current term's MarkUs instance has been set up.
  2. Run the command /u/cs247/markus/bin/CheckoutAndCommit.py checkout viewcmds. This will output the sequence of commands that will be run in the next step. Check over one or two entries to make sure they look correct (i.e. that the correct assignments, students, and file locations appear, etc.)
  3. Run the command /u/cs247/markus/bin/CheckoutAndCommit.py checkout runcmds. This will checkout the MarkUs repositories for every student for the current assignment. At this point they should all be empty.
  4. Download the submissions from Marmoset. To do this, navigate to the project page, click Utilities near the top, then scroll the "Student Submissions" heading. Click the "Download all students' best submissions link". You will need to do this for every project. Move these zip files to /u/cs247/handin/ and unzip them there.
  5. cd /u/cs247/handin/ - if you are not already there
  6. Run ./changename.sh AxQy. This will change the names of the individual directories within AxQx from the format "studentName-On-time", etc. to read just "studentName"
  7. Run ./copyToMarkus.sh AxQy ~/markus/AxQy to copy all of the files in the AxQy directory to the /u/cs247/markus/AxQy directory (this is the checkout folder from CheckoutAndCommit.py) (see handin/README.txt for more details about how this script expects the files to be organized)
  8. Run /u/cs247/markus/bin/CheckoutAndCommit.py commit viewcmds to see the list of commands that will be run in the next step. As before, check to make sure that the commands seem reasonable.
  9. Run /u/cs247/markus/bin/CheckoutAndCommit.py commit runcmds to save all of the assignment submissions to Marmoset (i.e. commit to the respository)
  10. Open Markus and navigate to the current assignment -> Submissions, and click "Collect All Submissions." This should take at least a few minutes, though you can click on a student's name to give that student's submission priority, if you need to. This must be done after the due date that you set for the Markus project.
Details for how to assign graders randomly (now that you have uploaded student submissions) can also be found in cs247/handin/README.txt

Getting Grades from MarkUs

Since this course uses a subtractive marking scheme for its assignments MarkUs cannot calculate the grades itself. To obtain the student grades:

  1. Download the rubric and detailed marks from MarkUs
  2. Go to the /u/cs247/markus/bin/ directory
  3. Edit the getMarks.config file to give the number of questions in the assignment and the number of criteria, max mark and base mark for each question (format specified in getMarks.bash)
  4. Run getMarks.bash rubric detailedMarks, this will generate the marks as a csv to stdout, you should redirect it where you want it.
If there are newlines and commas in the descriptions of the criteria in the rubric file it may cause the script to fail. You can fix this by opening the rubric and deleting the columns after those specifying the grades, however, if you do so in Excel the newlines will be replaced with carriage returns so you will need to run sed -i "s/\r/\n" rubric then add a newline to the end of the file to fix it.

Run Moss To Check For Plagiarism

Your ISC will ask you to run Moss (plagiarism checking system for code) on some of the assignment problems. The exact set of assignment problems used can vary slightly from term to term. Once you know which assignment problem you will be running Moss on, see RunningMoss for more details on the process. For CS247, navigate to the /u/cs247/moss/Scripts directory and open the moss247.sh file. You will want to change the lines that say "TERM1NUM=abcd", "TERM2NUM=efgh", and "TERM3NUM=ijkl" to the appropriate term numbers for checking against a previous term's assignments, uncomment line 116 and (or) line 117 and (or) line 118 depending on the terms you want to check against with. Check with your ISC to decide which previous terms to test against. Copy student solutions from Marmoset into /u/cs247/handin in a directory called "mossAxQy". Navigate to /u/cs247/moss and run the command "Scripts/moss247.sh mossAxPy". The moss247 script will copy the directory to /u/cs247/moss and run moss on that directory and against any past terms. If asked about exceptional cases, enter "c" to continue. After the scripts finish running you will get the output in the file /u/cs247/moss/mossAxPy/html_cc/_readable.html

Project Setup

As of writing, CS 247 has a group project that students are allowed to complete either by themselves or in pairs. The following sections explain any relevant procedures for the project.

Groups Setup

Details are avaliable at cs247/group/before/README.

Create the directory /u/cs247/handin/groups if it does not already exist. Create the file .subfiles with the following contents:


Then run the deadline command to set a due date for the submission. See PreparingSubmitAtStartOfTerm and PreparingSubmitForEachAssignment for more information.

Currently, there is a readme located at /u/cs247/group/README that describes the procedures for setting up project groups in detail (note that this readme differs from the instructions below and not all of the steps are completed every term; check with you ISC if you are unsure). These steps are to be performed after the due date to minimize manual edits. If you have to make changes to the groups after they have been created the first time, those edits should be done by hand since the scripts could mess up the existing group ordering (e.g. if you add a new group, that could shift existing groups back, etc.). The steps are as follows (see the readme for more information). Many of these steps could be modified for more automation.

  1. Run /u/cs247/group/before.bash. This script is just a wrapper for most of the scripts in the before directory that would need to be run in order. Here we just simplify the task slightly by not requiring you to know the order of execution.
  2. Run cat /etc/group | grep "cs247" to ensure that no groups are leftover from previous terms. If you get no output then you are fine. If you get output, you will have to remove those groups. See man edit_group on the student.cs machines for details on how to remove groups.
  3. ssh into student.cs.uwaterloo.ca with the cs247 account, then read man edit_group for information on the edt_group command. This command will allow the cs247 account to create group names of the form cs247_xyz without any extra permissions from CSCF.
  4. run setenv PATH "${PATH}:`/bin/showpath Usedby=Maintainer ${HOME}/bin standard`" to set the PATH environment variable
  5. Run /u/cs247/group/before/createGroup.bash to actually create the groups
  6. cat /etc/group | grep "cs247" to ensure that groups have been created
  7. edit /u/cs247/group/after/email_groups.bash to change the tutor_sig variable, then run the script to email all of the students in the course. You can uncomment/comment the lines near the bottom to email to the cs247 account first to test that everything is working.
  8. run /u/cs247/group/before/marmosetGroupsClasslist to create a classlist file for the marmoset group accounts. This script expects to receive the course classlist file on standard input.
  9. Load the new classlist file into Marmoset to create the group accounts. Make sure to allow any length of userid as the group userid will be longer than 8 characters.

Setting Up Demo Signup

Students will go to https://www.student.cs.uwaterloo.ca/~cs247/cgi-bin/project_booking/demo.php to book a demo timeslot for the project. Edit the demo.php file ( /u/cs247/public_html/cgi-bin/project_booking/demo.php) to update the time when booking closes, the demo room, and set the READ_ONLY variable at the top to 0 (you will need to set this variable to 1 to close booking). Set up the list_of_times.txt file with time ranges that are valid options, e.g.:

Wed_a 24 July 2013 1230 1410
Wed_b 24 July 2013 1250 1410
Wed_a 24 July 2013 1630 1810

To specify that 12:30 - 2:10, 12:50-2:10, on July 24, and 4:30 - 6:10 on July 24 are valid time ranges, etc. The demo.php will generate all of the time slots of length 20 minutes each (this is the variable LENGTH at the top of the generate_time_options python script, in case it ever needs to be changed). Finally, copy the /u/cs247/.classlist file to /u/cs247/.classlist_tmp and add the following two lines:

99999998:rschlunt:Schluntz, Rob:001:gene:engineering:eng:0:NU:BM:Al Masri:R:F:1:lec=001,tut=101,tst=201
99999999:kaanders:Anderson, Karen:001:gene:engineering:eng:0:NU:BM:Al Masri:R:F:1:lec=001,tut=101,tst=201

Replacing "rschlunt:Schluntz, Rob" with your details. You should then be able to go to the demo page above to book a time and make sure that it all works before telling the students about it. Also don't forget to delete your test booking when you're finished!

Project Demo Procedures

Copy all of the student submissions into /u/cs247/aaProjectDemos. The submissions should remain in the handin directory as well, but all demo testing and modifications should be made on this copy.

You will be given a marking sheet for the demos. There are three columns: Present, Graphical, and Updates. The requirements for these levels are cumulative, so it is not possible to satisfy "Updates" without satisfying both Present and Graphical, etc. When marking, you will run down the checklist to ensure that each feature is present and check off the appropriate box depending on how well the feature is completed. After running through the checklist, you will then get to the bonus features section. For each extension, write a short description of what the feature is supposed to be. You must then use the feature to ensure that it works. If it works, you then give a mark from 0 to 5 depending on how much the feature improves the experience. Bonus features should be marked after the students have left.

If the student's submission does not run without modifications, check the box on the top right. Students are allowed 2-3 lines of modifications, which you must make note of if they manage to get it working.

When entering the marks for the bonus features, remember that even though students can have more than 2 extensions worth 5% (6.25 marks if the total is 12.5) each, they can only receive a maximum of 10% extra.

If xterm fails to open, try the following in a terminal:

  1. make sure you are not SSH'ed into the course account, or your account on the linux environment
  2. cd ~/<your userid>/Library/Logs
  3. make sure there is a folder there for X11.
  4. go into that folder and remove the logs there.
-- RobSchluntz - 2013-08-19

-- AbrahamDubrisingh - 2014-08-21

-- MaxBardakov - 2015-08-20

-- AlexRowaan - 2018-08-16

Topic revision: r8 - 2018-08-16 - AlexRowaan
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback