Resources and Information for CS 145 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

Things to Know

Course Account

The course account for CS 145 is On the office Macs, you can find it in Finder under, and then find the "folder" cs145. After entering the folder, wait for a while until it has been successfully loaded.

If you will be working on your personal computer, you can login through ssh or sshfs. Usually, I did it by first going to terminal and ssh to my account ( and then ssh to the course account through this UW linux account.

Course Website

The following needs to be done regarding the course website:

  • In the beginning of each term, read every page carefully. Pay attention to any details on each sentence. Check all links. Then, update them accordingly. For example, the year of the course should be updated each year. Another example: tutorial times and/or sections might have changed. This occurred in 2019, where we had 2 sections for the course, instead of 1 section from the previous years.
  • Make sure that you keep it updated daily. This is especially important when waiting for updates regarding final exam and/or midterms, or when uploading a tutorial.
  • Assignments page will be mostly updated by the professor. If you find yourself confused about what is happening there, don't worry too much.
Piazza and Marmoset

Notes for adding students to Piazza and Marmoset:

  • The ISC will add students to Piazza in the beginning of the course, unless they ask you to. After that, watch for daily class updates on course email until a week after the add deadline and add new students using QuestUsername (maximum 8 characters) (e.g
  • For Marmoset, you should receive training regarding it before you start working with it, and then you can add students using their quest/watiam userid and their name.
Notes about handling Piazza:
  • The professor usually answers Piazza posts. However, don't be discouraged to answer student questions, unless you really do not know about it.
  • If students ask for notes, it is okay to share some part of your own note. However, do not copy-and-paste. Instead, if you write a full note, condense it, and you might consider giving a bit different example. (this is why you need to attend lectures in CS 145!)
  • Be professional in writing answers, but do not be too formal, unless you are more comfortable with being formal.
  • Before the end of September, please ask each student if they have been enrolled on Piazza. If someone has not been enrolled, ask for their student ID and/or email and discuss with Karen if possible so you can add them.
Notes about Marmoset:
  • You can submit solutions to Marmoset, just like a student. It is highly recommended that you attempt each problem and actually submit to Marmoset so you can get more familiar with the problems, even if you did it as a CS 145 student. Not only re-learning the course, this allows you to help students regarding to assignments as well. (I will call it mandatory if you were not in CS 145, but instead CS 135 or CS 115).
  • You can view assignments as an instructor. This allows you to see all submissions from students. Strongly advised against it when trying to solve problems, but you will need this when helping a student with Marmoset submission.
  • Before the end of September, please ask each student if they have been enrolled on Marmoset. Pretty much the same reason as Piazza.
  • Other than that, you can use Marmoset to re-test your student's submission by downloading it and submitting it as YOUR submission. However, do not do this in front of the students; they better not know about this. This helps you determine where the bugs in their codes are.
Testing Account and Test Setups

The testing account for this course is It is important to be familiar with it, but the test cases should have been made by the professor beforehand. Still, you will find it helpful in case you want to update a test case because something had gone wrong. You will encounter some of those during the term.

  • To familiarize yourself with the testing system, go to the testing account through terminal and cd marmoset_dynamic. Look at everything that are available there, especially the directory "assignments" and "stubs".
  • There, you can see everything you need to know for test setups. For uploading new test cases, you need to change the test setups through each assignment in the "test" directory. Then, go to the "stubs" directory from the home directory, and type in the following line: w3m
  • w3m is technically a way to connect to a website through the terminal. Going back to test setups, you should be able to do the rest if you have attended training for Marmoset and/or you have familiarized yourself with it.
Lecture Notes and Lecture Attendance

Lecture notes and summaries are NOT provided in CS 145 in general. Please discuss with the professor if you want to provide it after each lecture or at the end of each week (i.e. if you want it to be provided, and you are willing to provide it). However, this is really a worse substitute for attendance. It might be a good idea to share it at the end of the term, before the final exam.

On the other hand, it is a good idea to write your own lecture notes. If students asked to borrow a lecture note in Piazza or they are confused about a material, the lecture note serves as a back-up if you find it hard to explain to students.

You are not expected to be perfect at note-taking, but it really helps you and others, including future ISAs.

If you want to share it with students, you would need to proofread it a little bit to ensure that your information is accurate, clear, and easy to read.

What I did [2019]:

  • Type the notes in a plain text file to make a quick note for every lecture. The display is somehow plain but your formatting is actually more flexible here as you do not need them to be good; just make it comfortable for yourself.
  • Make a TeX version of the notes at the weekend to make a nicely formatted lecture notes. This is where I made a readable version of the notes.
  • I divided the notes into sections based on the date of the lecture. Then, split into subsections based on topics. Oftentimes, these topics could be mixed.
  • Save them both in personal computer and student account, so I have a backup in case all datas in my personal computer inaccessible due to a reason.
Other possible ideas:
  • Use Microsoft Word so you could save the notes in a file that is directly accessible and not need to be re-compiled everytime it needs to be updated. I didn't find this a problem though, and I thought that LaTeX formatting are still much nicer for the notes.
  • Write them in a physical note.

Below are some tips for making tutorials:

  • Avoid adding materials that are too advanced. Even if this is an advanced course, that does not mean all students could understand all possible things in Computer Science.
  • Consulting materials from lectures and past tutorials is a good idea for preparing the tutorials.
  • Sometimes, it is good to add extra materials that is outside the lecture. However, do not add materials that will be covered in the later part of lecture. For example, if the lecture have not talked about lists, do not talk about lists in your tutorial.
Things to be introduced as early as possible (i.e. make them clear in Tutorial 0 and/or 1):
  • The course website
  • Office hours
  • Piazza
  • Marmoset
  • Everything else they need to know about the course
Tools for making tutorials:
  • PowerPoint. Try to play around with it to be more familiar.
  • LaTeX. It could be used as either a slide with beamer document class (using the snippet \documentclass{beamer}) instead of article document class. However, its main use is to pose problems that have full solutions.
  • DrRacket, which is the programming tool used for the course. Helps by directly showing a live code snippet and how it works.

Most assignment results are purely based on Marmoset results. You will still hand-mark some of the assignments, and you will hand-mark the midterm and final exam. Back in Fall 2019 (also 2017(?), 2018(?), and maybe 2016 and before as well), only A6 and A8 is hand-marked, and hand-marking for A8 only checks if students follow constrains.

To do hand-marking, download student submissions from Marmoset to the handin folder on the course account and then upload submissions to MarkUs. Handmarking will be done in MarkUs. CS 136 does hand-marking this way so check with CS 136 ISAs for how to do this.

  • Work with the instructor to provide both marking schemes and sample solutions (for the School archives). Create a marking scheme and check with the instructor that they are okay.
Upload assignment to Markus:
  1. Log in to
  2. Go to the assignment tab, click Add_Assignment.
  3. Create the assignment (part) by
  • The short identifier should be the same as label on Marmoset. eg. Test2-Submit
  • The repository name should be the same as the short identifier(it should do this automatically)
  • The name should be the extended version of the short identifier. eg. Second Midterm
  • The message filed should be empty
  • Set due date to be the due date of the assignment
    • Allow web submits: No
    • Display submission and revision history to students: Yes
    • Let students run and view ... : No
    • Display grader names to students: No
    • Hide assignment from students: Yes
    • Show class average to students when they get their marks back: No
  • Marking Scheme: I personally recommend rubric
  • Required Files: None
  • Students can work in groups: No
  • Submission Rules: Late submission receive no marks.
  • Click submit
The assignment should be created and set up properly now.

Then, go to - course where students do NOT submit on MarkUs to see how to upload students' submissions from Marmoset to Markus.


To make sure that hand-marking goes well for assignments and midterm:

  • The TAs need access to the assignments. Modify .htaccess to allow this.
  • You would expect no hand-marking before midterm 1, but afterwards, you need to set up marking meetings and marking schemes for the midterms and hand-marked assignments. For marking meetings, it is highly recommended to attend one for CS 135, even though the way you would set a marking meeting is probably different.
  • All files necessary for hand-marking must be sent to the TAs, and it must be through email from the course mail account ( This includes: marking details, sample solutions, etc.
  • Try your best to provide both marking schemes and a lot of sample solutions so the TAs can work with it.
  • Marking can be painful, but for what we have right now, it is a necessary tool to measure student's capabilities.

You could read the rest at the sections for CS 135. Note that we don't post assignment solutions to students.

Office Hours

For office hours, I don't really have much to say.

  • Be patient when handling student's questions. Even in CS 145, they expect you to be able to help them in various things.
  • If you have set office hours, make sure that not only you get in on time, but also leave at most 30 minutes late. We are humans, so we need some rest as well.
  • Do not let students discuss code implementation; that would be too far! On the other hand, it is fine if they discuss ideas for solving assignment questions; that is a good way for them to learn.
  • Keep your smile!
End of The Term
  • You will receive an email from Karen regarding what you should do at the end of term. You could also see one from the past and do them early.
  • Do not forget to mark final exams and archive things.
  • ...

More about LaTeX for CS 145

(this probably should be moved into a page for LaTeX so everyone can share their ideas of using LaTeX for tutorials, assignments, etc.)

LaTeX are mainly used to assist in making tutorials, but also very usable to create lecture notes. There should be some base code available in the course account. (If there is none, that means I probably forgot about it. It should be available in the archives, scattered through folders for lecture notes and some tutorials. Otherwise, ask the ISC (Karen) regarding this.)

To use a package, add \usepackage{package-name}. To define a new command, add \newcommand{command-name}. To re-define a command, \renewcommand{command-name} instead.

The more technical notes, about packages and snippets of commands useful for making a good file using LaTeX, is provided below.


  • enumitem, allows changing the item bullets and numbering style. No need to type \item[1], \item[2], ... anymore.
  • xcolor. Allows changing the color of your texts (and maybe other things in the file).
  • float. Mainly used to give the option [H] on LaTeX tables. Forces the table to go in order with the text.
  • pgffor. Only for enabling for loop in LaTeX, but this is very neat because you can separate your LaTeX notes while allowing it to be compiled as one file.
  • graphicx. With this package, you can add pictures into your file.
  • titlesec. Only for different section style.
Snippets of commands and options:

  • \begin{enumerate}[label=...] ... \end{enumerate}. With the option [label=...], you can customize the labels for enumeration. Also usable for itemize. Some labels: \arabic*, \roman*, \alph*
  • \foreach \n in {1,...,21} { ... }. Just like usual for loop (I assume you have learned for loop in C, C++, and bash).
  • \newcommand{\code}{\texttt}, which makes \code{...} works the same as \texttt{...}, except with more readability. Makes whatever the text inside code-style.
  • \input{...}. This is how you can take another file as an input.
  • \includegraphics{...}. For including graphics.
  • ...
Edit | Attach | Watch | Print version | History: r11 < r10 < r9 < r8 < r7 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r11 - 2021-11-17 - AshleyHuo
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