Resources and Information for CS 138 ISAs

This TWiki is for technical details only. Any other duty information can be found in Waterloo LEARN (D2L): CS Instructional Support Group -> Course Admin & Duties for ISAs.

Key Links


Week 0-2:
  • Meet your colleagues.
  • Enter the course account and familiarize yourself with the locations of files, the directory structure, and all the HTML files under public_html.
  • Complete the training required by the University of Waterloo.
  • Attend the ISA training sessions, especially the ones on Linux, course accounts, and Marmoset.
  • View manual.txt in the course account under the useful_info folder to get familiar with your work.
  • Attend the lectures and give feedback about the lectures to the instructor.
  • Prepare for the tutorials.
  • Set up and release the first assignment(s). Details are in the "Assignments" section below.
  • Monitor and answer questions on Piazza and the course email.
  • Hold office hours and tutorials.
  • When an assignment is due, update the marks and run MOSS. Details are in the "Assignments" and "MOSS" sections below.
Throughout the Term
  • Continuously check the course email and reply to any pertinent emails. Typically, the order of importance is course staff > student emails.
  • Regularly check Piazza and answer student questions.
  • Attend the lectures and prepare for the tutorials.
  • Hold office hours and tutorials.
  • Read through the assignment specifications and make any necessary fixes on the PDF before assignments are released.
  • Release new assignments when the time comes.
  • When an assignment is due, update the marks and run MOSS on student submissions.
Midterm & Final
  • On the exam day, arrive at the ISC's office at the specified time for instructions on proctoring the exam.
  • Proctor the exams.
  • Attend the marking meeting and mark the exams.
For midterm only:
  • Post an announcement on Piazza when midterm marks are released. Include information about midterm remark requests.
  • Handle midterm remark requests as instructed by the ISC.

Course Directory Structures

Most directories contain a README.txt with details pertinent to their specific contents/function.

  • Course Account (
    • useful_info: Contains useful instructions, such as ssh.txt, first_time_setup.txt, dailyTasks.txt, weeklyTasks.txt, etc.
    • archives: Contains backups of previous terms.
    • bin: Contains scripts used by other scripts.
    • marks: For downloading and compiling assignment marks.
    • moss: Workspace for downloading student submissions and running MOSS.
    • public_html: Contains the contents of the course website.
  • Testing Account (
    • marmoset: Contains folders for assignment test setups and canonical solutions to be uploaded to Marmoset.


First Time Setup
  • Clone the staff git repo to your personal account.
  • In the testing account, copy over the last term's folder (e.g. w24) and rename it after the current term.
  • Update the term/year information on ~/public_html/cgi-bin/ in the course account. This script is used to display the unofficial marks on the course website.
Setup For Each Assignment
  • Create a directory for the assignment. It is recommended to separate the contents into at least the three following sub-directories:
    • Description: The LaTeX and other files (such as images) for creating/editing the assignment PDF.
    • skeleton: The skeleton files for the assignment.
    • solution: Solution files for the assignments.
  • Copy over the assignment files from the previous offering's files.
  • Modify the year and the due dates for the assignment in the LaTeX file.
  • Read through the specifications carefully with the instructor and modify them if necessary.
    • Attempt to do the assignment yourself before releasing it. This helps you identify which specifications require further clarification.
  • To compile the LaTeX file into a PDF, run pdflatex <.tex-file-name>.
Marmoset Setup

The details can be found on ~/marmoset/README.txt in the testing account.

  • In the current term's folder, navigate to the directory for the current assignment. Within each project folder, there should be at least a directory named "test" for the test setup, and another named "sol" for the solution files.
    • For projects that use standard input/output, you may need to generate the *.out, *err, and *.expected files by running ./maketests in the test/code directory.
  • Update the test setup if necessary. The instructions are provided in ~/marmoset/README.txt.
  • Run ~/marmoset/bin/runtest <solution-directory> to test the solution files for correctness and generate the zip files.
  • On Marmoset, create a new project for each part of the assignment.
  • Upload the test setup and the canonical solution to each project. Assign points to activate the test setup.
Releasing the Assignment
  • Create an empty git project in the student skeleton group, and clone the repo to your personal account somewhere else.
  • Copy over the skeleton files and the PDF.
  • Commit the changes and push the commit to the remote repo. Students should be able to see and pull the assignment files now.
  • Change the Marmoset projects' visibility to "Visible to Students". Marmoset projects should now be available for the students to see and submit their solutions.
  • Post an announcement on Piazza and/or LEARN about the newly released assignment.
After the Deadline
  • Grant any extensions for students on Marmoset as notified to you by the ISC.
  • After the deadline passes for all students (including those given extensions), change the test-outcome visibility of each assignment project to "Everything".
  • Inside the directory ~/marks/download in the course account, run ~/bin/marm_sql -v -m <assignment> to download the marks for the assignment.
  • Edit the script combine.bash as necessary. Then, run ./combine.bash > public-marks.txt to calculate the marks and compile them into a single file.
  • Double-check that the marks have been compiled correctly; change the marks manually for instances like remark requests if necessary.
    • Document all the remark requests in a single text file.
  • When ready to publish, copy public-marks.txt to the parent directory (i.e. ~/marks). Students should now be able to see their marks on the Unofficial Marks page.
  • Download the student submissions from Marmoset and run MOSS as explained in the section below.


The instructions can also be found on ~/useful_info/manual.txt in the course account.

  • Create a directory for each assignment project in ~/moss. You may want to create directories for each assignment first, then create sub-directories for each project.
  • cd into each project directory, then run ~/bin/marm_sql -v -d <project-name>. This will download all student submissions for the project in a new sub-directory with the project name.
    • You can also download the submissions from the Marmoset web interface.
  • Run yes O | /u/isg/bin/runMoss -d <path-to-submission-directory> '-l ascii' to run MOSS on the submissions. This will generate a sub-directory named html with HTML pages of MOSS results.
    • Note that the O after yes is the capital letter O, not zero.
    • You may want to replace ascii with cc in the command to run MOSS with C++ language.
  • To generate a more readable results page, run cd html then u/isg/bin/moss_makereadable index.html 10 > readable.html.
  • Open the readable.html file and manually inspect the submissions with high match percentages.
  • Compile a list of submissions you think are suspicious, then follow the instructions from your ISC.


Please see the folder ~/useful_info for more details on the course.

Non-Technical (To be moved to D2L)


No Longer Relevant

<As CS138 makes use of Marmoset for testing but also requires some hand marking from TAs, it's worth checking PrintingMarmosetAssignments for scripts that will help accomplish this.>

Edit | Attach | Watch | Print version | History: r16 < r15 < r14 < r13 < r12 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r16 - 2024-04-15 - MaxJung
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