CS 241 ISA Duties

This page describes important tasks CS 241 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

Ensure you are able to access the course account. There are detailed instructions at CourseAccountSshKeyAccess.

In summary, you need to generate an SSH key pair, which consists of a public key and a private key, and then the public key must be copied to the /u/cs241/.ssh/authorized_keys file in the course account. The copying of the public key is usually done automatically, but if the automated system is not working then your ISC or someone else with course account access can copy it into the file manually. Once it has been copied, you can use the private key to access the course account through SSH.

Test the Course Email Account

We will be using Nexus for the course email account. The email id is cs241@uwaterloo.ca. This is identical to how you use Nexus for your personal uwaterloo account. The username is cs241 and the password will be given to you by the ISC.

Make sure that you are comfortable with Nexus as all important course emails from instructors, the ISG and the students will be sent to this account.

Update the Course Webpage

All the files for the course webpage are stored in /u/cs241/public_html. The HTML source for the main page of the site is in the file index.html. Changes you make to files in public_html will be reflected immediately on the course webpage.

Usually the previous ISA will do some of the tasks below for you, but not all.

  • Clear out all the announcements.
  • Update the "Syllabus" link to point to the current term's syllabus.
  • Update the "Schedule of Classes" link to point to current term's schedule.
  • Upbdate the "Personnel" section to list the current term's instructor and ISA. Make sure to change the office hours as well.
  • Comment out the assignment links on the main page (except possibly Assignment 1, depending how early the instructor wants it to be available) and update the due dates.
  • 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"). Also, comment out the code that creates links to the next assignment page, but leave the text alone (you can ignore links to the previous assignment page or to another assignment on the same page).
  • In the "Resources" section, comment out the links to lecture notes, and "Materials for Assignment X" links (except for Assignment 1).
  • Comment out the "Tutorial Materials" links and update the URLs (e.g. if the URL contains "tutorial_f12", change it to "tutorial_w13").
  • Update the Piazza links (in the "Piazza" section, as well as the "Jump to" thing near the top) to point to the current term's Piazza class.

Updating the Classlist

As of F15, the .classlist file contains the students from both the regular and enriched version of the course. If CS241E is currently running this term, you will need to run the script ./parse_classlist.bash on a regular basis until the classlist stabilizes. This script makes the files .classlist_241e and .classlist_241r. You will need to upload .classlist_241r instead of the .classlist file so that the CS241E students will not have access to the CS241R Marmoset, Piazza, and Markus.

Set Up Marmoset

Before you can do any of the following setup, the current term's offering of CS 241 must be added to Marmoset and the build servers must be set up (normally done by CSCF) and your ISC must give you instructor privileges on Marmoset. If you have instructor privileges, you will be presented with three accounts to select from when you log in instead of the usual single account: "userid", "userid-student", and "userid-canonical". Select "userid" (the other two are for special purposes). Then click the offering of CS 241 corresponding to the current term, and click the "Instructor View" link near the top of the page. Instructor View mode allows you to access the administrative functions of Marmoset.

Giving Students Access to Marmoset

  1. Follow the instructions on MountingCourseAccountOnCampus so that you can browse the contents of the course account from your office computer.
  2. The classlist is a hidden file. If you have activated the corresponding crontab task (see Activate Crontab Tasks below) a non-hidden copy of the classlist will get created/updated hourly. It's strongly recommended to enable hidden files in Finder (see this page for instructions) if you want to open the hidden file directly.
  3. From Instructor View mode, click "Register UW students for this course by uploading a classlist file".
  4. Ensure that "Limit user ID to first 8 characters" is selected, then browse for the classlist and upload it.
The classlist will change frequently for the first few weeks of the term. You should repeat this process regularly until the classlist stabilizes to ensure every student enrolled in the course has access to Marmoset. The classlist upload tool will not create duplicate students, so you can just reupload the whole list every time.

You may need to give an individual student who is not in the classlist access to Marmoset (e.g. a student on the waiting list who is not officially in the course yet). In this case click "Register one student for this course using a web interface". Fill out their information. For the "class account" and "password" fields, just enter the student's Quest user ID.

You may also need to give instructors or TAs access to Marmoset. For instructors, click "Register an Instructor or TA for this course using a web interface" and fill out their information. Again, for "class account" and "password" just enter the Quest user ID. For TAs, you should actually use the "Register one student for this course using a web interface" form, despite the name. Fill out their information the same way you would for a student, but make sure the "TA account" option is selected instead of "Student account".

Setting up Marmoset Projects

Each assignment problem in CS 241 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. A2P7, A10P4, A5Bonus). It's important that they both use this format, because some of the scripts written for the course read from the project number, and others read from project title.
  3. Enter the due date for the corresponding assignment in the "on-time deadline" field. Assuming that late assignments are not accepted (as of Fall 2012, this has been the standard policy for a long time) enter the same date and time in the "late deadline" field. If the late policy has changed, talk to your ISC about what settings to use.
  4. For the URL, use a link to the assignment page (e.g. https://www.student.cs.uwaterloo.ca/~cs241/a1/).
  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.
  8. After setting up the project, upload the corresponding test and sol zip files to the project.
  9. After testing has succeeded, navigate to the ultilities page for the project and set up the correct weighting for each testcase.
  10. Finally navigate to the course home page and make sure all parts are labeled active.
Repeat this for every assignment problem. There is currently no automatic or fast way of doing this. A more detailed walkthrough of steps 8-10 is under Uploading Test Setups and Canonical Solutions tab.

Uploading Test Setups and Canonical Solutions

After creating the projects, you need to upload and activate the test scripts for each assignment problem.

Important: It is important to note that test setup and canonical solutions problem numbers (referred to as "stubs") may not match the ones on the assignment page. The stubs do not all conform correctly to the assignment problems with the same identification. You must check that each problem solutions correspond to the file asked. For example, if the previous term removed a problem, all following problems would be offset by 1. You need to upload the test setup and solutions for the corresponding problem, not necessarily the one with the same name.

  1. Log in to the course account, then from there type ssh cs241t@linux.student.cs.uwaterloo.ca to log in to the cs241t account. This special account is where Marmoset tests are executed and where the test setups are stored.
  2. From the home directory, type mkstubs. This creates "stubs" for each of the Marmoset test setups in /u/cs241t/assignments and stores them in /u/cs241t/stubs. (See Marmoset for more information about how these "stubs" are used.)
  3. Follow the instructions on MountingCourseAccountOnCampus but mount the cs241t account instead of cs241.
  4. Go to the "Utilities" page for the project you want. Find the "Upload new test setup" form and navigate to the /u/cs241t/stubs folder. Look for a file called aXpY.test.zip, where "aXpY" is the assignment name (e.g. a4p2). This should be the test setup for that project (it might not be if the assignment specification changed since the previous term, or if the folder names in /u/cs241t/assignments were not properly updated).
  5. After the test setup is uploaded, upload the canonical solution via the "Project submission via jar file for canonical account" form. The canonical solution is also stored in /u/cs241/stubs as aXpY.sol.zip.
  6. 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 running mkstubs again to regenerate all the stubs, then upload the test setup and canonical solution again. If it still fails, there could be an error in the test scripts or the solution.
  7. Once the test passes, click "assign points" to assign marks to each test case. See CompSci241MarmMarks for a table of mark values. If the assignment problem has changed since that table was last updated and it's no longer valid, just make up reasonable values or ask the instructor (and update the table with the new values).
  8. 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.

Set Up Piazza

  1. Go to http://piazza.com and log in under your own credentials - userId@uwaterloo.ca.
  2. Create a new CS 241 class for the current term. The previous term's ISA or the current term's instructor may have done this already. If not, the process should be fairly straightforward. When asked whether you want to enroll as a student, TA, or professor, you can select "professor" (I don't know if there are any differences between professor or and TA accounts, but the latter might have less privileges).
  3. Modify the class settings. (As of Fall 2012 you access the class settings by clicking "Manage Class" at the top of the page, but Piazza's interface seems to change frequently). You can probably leave most of the settings at their defaults, but look through to see if there is anything that you think needs changing. It is recommended that you disable anonymous posting; if disabled, then students will still be able to be anonymous to classmates but not to instructors. It is easier to help students if you know their name since you can look up their assignment submissions on Marmoset (or test them with MarmSql).
  4. Add an Access Code/Password to the class. As of Fall 2015, this cannot be done without contacting Piazza. Send an email to team@piazza.com asking them to create an access code/password for the class. Once created, the Access Code section will show up under the General Settings. Change the default Access Code.
  5. Enroll the instructor(s) and your ISC. There is a form for this on the class settings page; just copy and paste their emails in. Your ISC may also ask you to enroll the TAs.
  6. Enroll the students. As with the instructor(s) and the ISC, there is a form for this on the class settings page that allows you to copy and paste the student's emails in, but it's not entirely trivial to get a list of their emails. Once you have activated the corresponding crontab task, there will be a classlist-emails.txt file from which you can copy all emails into the Piazza interface. You can use the command "clem extract classlist-emails.txt" to generate a file called classlist-emails.txt containing a list of all student emails.
The classlist will change frequently for the first few weeks of the term. You should repeat the last step (enrolling students) regularly until the classlist stabilizes to ensure every student enrolled in the course has access to Piazza. The form for enrolling students is smart enough to figure out which email addresses are already enrolled and avoid creating duplicate students. With the recent change in addresses (@edu.uwaterloo.ca vs @uwaterloo.ca) a small number of students will have updated their piazza email to @edu.uwaterloo.ca. Direct these students to https://piazza.com/account_settings and ask them to add their @uwaterloo.ca email under “Other Emails”. This will link both emails to one account and they'll be automatically enrolled.

Check Permissions on CS 241 Tools

Log in to the course account and navigate to /u/cs241/pub. This "public" folder contains tools such as cs241.binasm and mips.twoints that students must use throughout the term. However, we do not want all of the tools to be available at the very start of the term (for example, if cs241.binasm was available at the start then students could use it to do Assignment 1 very easily). To ensure students do not have access to particular tools, you need to check that the previous term's ISA reset the file permissions correctly (and set them yourself if they did not).

You can check the permissions on a file (or directory) in Unix by typing ls -l filename. It will display something like this:

-rwxr-xr-x 1 cs241 cs241 389 Sep 13  2011 filename

The leftmost part of the output (the sequence of dashes and letters) is a representation of the file permissions. If you do not know how to read Unix file permissions, you can find explanations online. The last three characters of this permission string are particularly important, since they define what permissions are available to "others" (that is, all users aside from the owner of the file and users in the "CS 241" group). For example, the last three characters of the permission string for filename are r-x, which means that every user has permission to read and execute filename, but does not have permission to write to the file.

In general, the "others" permissions on files and directories under /u/cs241/pub should be set as follows:

  • If students should be allowed to freely browse the files in a directory, the directory should have r-x permissions. Otherwise, it should probably have --- permissions.
  • If students are allowed to execute a program or script, it should have r-x permissions. For the Java classes under /u/cs241/pub/classes, it seems to be sufficient to use r-- permissions. If students should not be allowed to execute the program, it should have --- permissions.
The files it is important to check "others" permissions on are:
  • The assemblers under /u/cs241/pub/classes/cs241: binasm.class, relasm.class, merl.class and linkasm.class. Students should not be able to read or execute these until after Assignment 1 is due. There may be some other assemblers lying around that are no longer used in the course (e.g. hexasm.class); disable read/execute permissions on these as well. The only assembler students should have access to is wordasm.class.
  • The linker: this should not be available until after Assignment 5 is due, since Assignment 5 contains a "link two MERL files by hand" problem. There are a few copies of the linker on the course account. Check the "bin" folders under /u/cs241/pub (e.g. /u/cs241/pub/bin, /u/cs241/pub/bin.x86_64) and remove permissions on the file linker and any other linkers that exist. Also check the /u/cs241/pub/classes/cs241 folder and remove permissions on linker.class.
  • The marmoset_submit tool: this should be available at the start of the term or else students will complain a lot. Make sure it has read and execute permissions, and if it does not for some reason then add the permissions. You can find it in the "bin" folders under /u/cs241/pub.
Use the chmod command to add or remove permissions. Again, you can find guides for using this command online. The variations you will probably use most often are chmod o-rx file (remove read and execute permissions for "others" from file) and chmod o+rx file (add read and execute permissions for "others" to file).

Activate Crontab Tasks (Crontab Tasks are not in use, Please skip this)

The Unix tool cron allows tasks to be scheduled and automatically executed at certain times. The tasks and the times at which they will be executed are defined by a "crontab" (cron table) file. Each user has a personal crontab they can edit.

The main CS 241 crontab is stored on the ubuntu1604-000.student.cs.uwaterloo.ca server. (Not only does each user have a personal crontab, but each server has its own set of crontabs for each user.) If you modify the CS 241 crontab on some other server, you will see it does not have the same tasks defined as the main one (most likely it will be empty). You can define new tasks on this server's crontab and they will still be executed, but it is best to keep all the task definitions in one place. If the CS 241 crontab is moved to some other server, update this paragraph.

The CS 241 crontab currently contains the following tasks:

  • Automatically create and update a non-hidden copy of the classlist with the comments and blank lines removed.
  • Automatically create and update a list of student emails
  • Update the "view your marks" page on the website. (See PublicMarksUploader for more details.)
  • Update the scoreboard for the A10 Bonus contest.
  • Save a daily backup of the CS 241 crontab in /u/cs241/bin/crontab-backup in case the original is lost or overwritten.
At the beginning of the term, most of these tasks will be deactivated (i.e. commented out, by putting a "#" at the start of the line that defines the task). To activate these tasks, log in the course account on the server where the crontab is stored. The command crontab -l will display the crontab, and crontab -e will open it in a text editor. The crontab is fully documented, so it should be clear which lines correspond to the tasks you need to activate. Remove the "#" from the beginning of these lines, then save and exit. The tasks you should activate are:
  • The task that creates and updates the non-hidden classlist.
  • The task that creates and updates the list of student emails
  • The task that updates the "view your marks" page. Be sure to update the crontab entry of this job to run only twice a week, 30 minutes after on-time and late assignment due dates. This must be updated every term, since different terms will have assignments due on different days. Be sure not to have the page update more often than that, as students will be able to see how they did on marmoset tests without using release tokens otherwise. See this page for a guide on how to use crontab.
  • The task that backs up the crontab file in case something goes wrong.

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. This file is not used very much in CS 241, but you should set it up nonetheless.

The file should be stored in /u/cs241 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:

gdavies:tutor::::
glu:isc::::
olhotak:instructor::::

You can check that this file is set up correctly by visiting the marks page on the CS 241 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

Give Students Access to CS 241 Tools After A1 and A5

After the Assignment 1 deadline passes, you need to give students permission to use cs241.binasm so they can do Assignment 2. To do this, navigate to /u/cs241/pub/classes/cs241 and give students read permission on the file binasm.class with the command chmod o+r binasm.class. (For the Java classes it seems to be sufficient to give only read permission rather than read+execute, but if students are not able to access cs241.binasm after you update the permissions, you can try chmod o+rx binasm.class.) You should also give students read permission for relasm.class, merl.class and linkasm.class at this time.

After the Assignment 5 deadline passes, you can give students permission to use cs241.linker. Assignment 5 contains a linking problem so you don't want them to have access to the linker before that, but after Assignment 5 they are free to use it. Look in each of the "bin" folders under /u/cs241/pub (e.g. /u/cs241/pub/bin.x86_64) and give students read and execute permissions on the file linker using chmod o+rx linker. It is probably only necessary to enable the linker that is stored under /u/cs241/pub/bin.x86_64, but you may want to enable the linkers in the other "bin" folders just in case. Note that the file cs241.linker is just a symbolic link to linker; linker is the actual executable. There is also a Java version of the linker under /u/cs241/pub/classes/cs241/linker.class; it is not necessary to enable this.

Give Students Access to Print and Allocation Libraries Once A10 is Available

There are two MIPS assembly language libraries ( print.asm and alloc.asm) students must use in Assignments 10 and 11. We only want students who are enrolled in the course to be able to access these. This is done through the use of a .htaccess file, which currently must be manually created each term. Note that this file also needs to have read other permissions turned on.

Navigate to /u/cs241/public_html/a10/lib, the directory where the print.asm and alloc.asm libraries are stored. There should be a script in there called mk_require.bash. Run this script and it will generate a file called require_list.txt, which consists of a bunch of lines of the form "require user userid" for each student in the classlist. Then open the hidden .htaccess file in a text editor and copy and paste the contents of require_list.txt into the .htaccess file (below the comment that says "student list from require_list.txt"). Students who are in the require_list.txt (which should be all students enrolled in the class) should now have access to the libraries. You can manually add yourself to the .htaccess file if you want to confirm that the authentication system is working.

Activate Bonus Scoreboard Once A10 is Available

The automatically updating scoreboard for the Assignment 11 bonus problem is handled by the CS 241 crontab (see the Activate Crontab Tasks section above) and the make_scoreboard script.

Navigate to /u/cs241/bin and open the file make_scoreboard. You need to make a few modifications to this file; there should be comments in the file itself explaining what you need to do. The instructions are replicated here just in case.

  1. Find the "project PK" for the A10Bonus Marmoset project. You can find this by clicking the "view" link for the A10Bonus project and looking at the URL; it will look something like https://marmoset.student.cs.uwaterloo.ca/view/instructor/project.jsp?projectPK=1000. Take this number and search through the make_scoreboard script for all occurrences of "project_pk" and update the corresponding value.
  2. The structure of the make_scoreboard script looks something like a sequence of commands of the form make sc 'giant SQL query' X, where X is some file path. Look for the queries where X is private/a10bonus, a10bonus_ontime, and a10bonus_topten. These correspond to updating the "ontime" scoreboard. Within the corresponding SQL query, change the date and time in submission_timestamp < [date/time]= part to the deadline of A10 for the current term.
  3. For the command make sc 'giant SQL query' private/a10bonus_topten, change the submission_timestamp < [date/time]= to some time after the final exam.
  4. If you intend to submit some stuff to the A10Bonus problem with your user account, add the condition AND NOT students.campus_uid LIKE "userid" to each SQL query (where "userid" is your user ID). This will ensure your submissions do not show up on the scoreboard.
Once this file is property updated, open the crontab and uncomment the line that calls the make_scoreboard script and updates the scoreboard. The scoreboard should start updating every 5 minutes once you do this.

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 details on the process.

Update Marks Spreadsheet

The official CS 241 marks spreadsheet is stored under /u/cs241/marks. It will usually have a name like TERM_CS241_Grades.xls, e.g. F12_CS241_Grades.xls. At the beginning of the term the spreadsheet will probably not be there; your ISC will place it in that folder once you first need to use it. To open it, you should log on to one of the office Macs and follow the instructions on MountingCourseAccountOnCampus so you can browse the files on the course account through Finder. Then double-click the file to open it in Excel.

You can leave the official CS 241 marks spreadsheet alone for most of the term, since the PublicMarksUploader will handle the task of downloading student marks from Marmoset and making them available on the website. However, at some point you will need to do each of the following tasks:

  • Transfer the student information from the classlist file into the spreadsheet.
  • Transfer the assignment marks from the public-marks.txt file into the spreadsheet.
  • After the midterm has been marked, enter the midterm marks in the spreadsheet.
  • After the final has been marked, enter the final exam marks in spreadsheet.
The first two tasks can be done in two ways: by manually copying in the data, or using Excel's "Get External Data" feature that allows data to be imported from an external file. The advantage of using the "Get External Data" feature is that you do not need to manually update the spreadsheet when the classlist or public marks file changes; you can just refresh the data imports and the spreadsheet will automatically be updated with the new values. The downside is that "Get External Data" is a bit clunky and awkward to use. This section will explain how to use "Get External Data" to import the student information and assignment marks.

Before you try to import the classlist and public-marks file, make sure you have followed the instructions in the Activate Crontab Tasks section. One of the tasks in the crontab creates and updates a non-hidden copy of the classlist with the header removed under /u/cs241/classlist.txt. This non-hidden file is the one that gets imported into Excel, rather than the usual /u/cs241/.classlist file (which is a hidden file). Another task in the crontab automatically updates the public-marks.txt file with the most recent assignment marks.

Now, open the marks spreadsheet. If you get a security warning notifying you that "data connections have been disabled" (or something similar), there should be a button on the warning that lets you re-enable the data connections; you must do this or the external data imports will not work. Now navigate to the "public-marks" worksheet. If the external data imports were already set up in a previous term, then hopefully you should see all the public-marks.txt data in this sheet. If the data is not there, or outdated data is displayed, try clicking "Refresh" under the "External Data Sources" section of the "Data" tab. If this doesn't fix the problem, you need to set up the external data import again. There are instructions for doing this in the spreadsheet, as well as below.

  1. Go to Insert > Name > Define. If "public-marks" is a defined name, delete it. Then delete all the data in this sheet (if any).
  2. Highlight cell A1 then go to Data > Get External Data > Import Text File and import the file /u/cs241/marks/public-marks.txt. When asked which delimiters to use, choose "Comma".
  3. Right click anywhere in the imported data and select "Data Range Properties". Make sure "Save query definition" and "Refresh data on file open" are checked, and "Prompt for file name on refresh" and "Remove external data from worksheet before saving" are unchecked.
Now navigate to the "classlist" worksheet. Again, the classlist data may already be in this sheet, or you may have to set up the external data import again. The instructions for setting up the import are below:

  1. Go to Insert > Name > Define. If "classlist" is a defined name, delete it. Then delete everything to the left of column P, if there is any data there.
  2. If so, highlight cell A1 then go to Data > Get External Data > Import Text File and import the file /u/cs241/classlist. When asked which delimiters to use, choose "Other" and type a colon.
  3. Right click anywhere in the imported data and select "Data Range Properties". Make sure "Save query definition" and "Refresh data on file open" are checked, and "Prompt for file name on refresh" and "Remove external data from worksheet before saving" are unchecked.
Once both these files have been imported successfully, check the "Sum_Total" worksheet; it should now contain students' names and their most recent assignment marks. The assignment marks and classlist should update to the most recent versions whenever you refresh the data imports (or when you load the spreadsheet, since the "Refresh data on file open" option should be enabled).

Warning: You need to be careful with the auto-updating classlist and assignment marks when it gets close to the end of the term. Sometime near the very end of the term (probably not until the last week of the exam period, but I don't know the exact time), the classlist will get replaced with the classlist for the next term. If the crontab tasks that update the non-hidden classlist and the public-marks file are still active when this happens, and you open the Excel spreadsheet, the students for the next term will be loaded into the spreadsheet. It's possible this will happen before the final grades have been submitted to the Registrar's Office, and this will mess up the marks spreadsheet. To avoid this issue, disable the crontab tasks (see Deactivate Crontab Tasks) before the classlist gets switched to next term's classlist.

Entering Midterm and Final Exam Marks

After the midterm/final marking is complete, your ISC should send you a spreadsheet containing each student's name, student number, and exam sequence number. You should enter the exam marks in this sheet, not the main marks spreadsheet.

Once the mark entry is finished, you can copy the mark data into the main spreadsheet. Open the "Midterm" or "Final" worksheet in the main spreadsheet, and modify the existing question numbers and mark values to reflect the current term's midterm/final. Then copy and paste the data from the midterm/final mark entry spreadsheet into the main spreadsheet, right below the row with the "placeholder" student (the one with user ID "test"). Finally, copy the last two cells in the row with the "placeholder" student; these are Excel formulas that compute the total exam mark in terms of points and percentage. Copy and paste these formulas into every row below to compute the total marks for each individual student.

Once you have entered the marks on the "Midterm" or "Final" worksheets, they should also appear on the "Sum_Total" worksheet. Make sure the marks on the "Sum_Total" worksheet are correct, since these marks are the ones that will eventually be submitted to Registrar's Office!

After entering the midterm marks (and getting permission from the instructor to release the midterm marks to students), you should follow the instructions in the Uploading Midterm Marks section of PublicMarksUploader to allow students to view their midterm mark online. It is not necessary to do something like this after the final, since we don't let students view their final exam mark on the course website.

"End of Term" Tasks

Archive Course Material

At the end of each term, course-related files are stored in /u/cs241/archives under a directory named after the corresponding term number.

The /u/cs241/archives/archive.sh

script will do most of the archiving for you. Run it and make sure there are no errors when copying. The saved contents are things like, the main index page, the midterm and final folders, the assignment pages, the cgi-bin folder, the outline, and the tutorial materials and solutions (you do not need to archive the whole public_html directory), the assignment testing scripts used by Marmoset ( assignments folder on cs241t), the handin folder (particularly important to archive, since the Moss scripts (see RunningMoss) will look at archived student submissions from previous terms to catch students who plagiarize from people who have already taken the course), the make_scoreboard script, etc.

The files it does not copy are the assignment testing scripts and any files that were changed significantly from the previous term and you should copy those.

You should download annotations and rubric criteria from Markus for each assignment and put them in the markus_files folder.

You should empty the contents of the following directories once you have confirmed that everything is archived properly

  • handin/ EXCEPT the base, bin, and moss-bin folders
  • marks/pubmarks-dir/
  • marks/ EXCEPT the public-marks.txt file, the grades template, and the bin and pubmarks-dir folders
  • markus/ EXCEPT the README.txt file and the bin folder
  • public_html/cgi-bin/midterm_remarking/data/
  • public_html/cgi-bin/cards/

Deactivate Crontab Tasks

See the Activate Crontab Tasks section for an explanation of what the crontab is and how to edit it.

Sometime after the end of lectures, but before the very end of the term, you should disable all crontab tasks except the crontab backup.

To deactivate a task, add a # character at the start of the corresponding line to comment the line out.

Remove Access to CS 241 Tools

To ensure that students will not have access to tools like the assembler and linker and so forth at the start of the next term, set the appropriate permissions on all the tools. Instructions for doing this are given in the Check Permissions on CS 241 Tools section. You should wait until after the final exam to do this so students can still use the tools while they study.

This is not strictly necessary, since it can be done by the next term's ISA, but it will help the next term's ISA a bit if you do it in advance.

Clean Up Website

Complete as many of the tasks in the Update the Course Webpage section as you can. Again, this is not necessary, but it will reduce the next ISA's workload a bit.

Delete or Remove Confidential Information

When the term ends, you should do the following to ensure that the next ISA is not able to access any confidential information.

  • Delete all emails from the course email account. Delete emails from the inbox as well as the sent mail folders. It is best to do this at the very end of the term once you are no longer checking or using the course email account. At this time you should also delete your .forward file (or anything with similar functionality) if you set one up.
  • Delete the marks spreadsheet and public-marks.txt file. Obviously, you shouldn't do this until grades have been submitted.
  • Log in to the CS 241 Piazza account and un-enroll from the current term's offering of CS 241. This is done so the next ISA cannot read private questions from previous terms. Note that it might be difficult to re-enroll in the class once you have done this, so don't do it until you no longer need to read Piazza anymore.
  • If there are uncollected midterms, put them in boxes for shredding. You will also need to put the final exams in boxes and give them to your ISC. Your ISC should be able to give you more detailed instructions.

Update the TWiki

  • If any information you read on the TWiki during this term was inaccurate or out of date, update it.
  • If any of the explanations of how to do certain tasks were unclear, rewrite them.
  • If there are any tasks requiring technical knowledge that you had to do throughout the term, and they aren't documented on this page, add them.
  • If you think of a better way to organize the CS 241 section of the TWiki than having most of the information on this giant page, reorganize it.
  • If the assignments changed in any way since the previous term (e.g., number of questions changed, number of marks per question changed, new test cases were added) you will probably need to update the mark values on CompSci241MarmMarks.
  • If you made any changes or extensions to MarmSql, the PublicMarksUploader, or the Moss scripts, update those pages with the information and upload the new versions.
  • If you wrote any new scripts or tools for future ISAs to use, create a new TWiki page explaining what they are and how to use them.
  • If you think of anything else that should be on this list of things to update, add it.
Topic revision: r35 - 2018-07-15 - SeanHarrap
 
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