In the past winter quarter of 2019, I was serving as the Teaching Assistant (TA) for UW’s senior level course CSE 403: Software Engineering. It was a very busy, but very rewarding experience, since I both witnessed the learning and success of students and myself as a first-timer TA.

Just to give your some context, the course is composed of lectures, exams, individual homeworks, and group project. The project is a quarter-long experience to propose, design, and implement a tool for software engineering purpose. The student will learn about working as a team, reporting formally and improving over feedback from both “customers” and “supervisors” (both are staff’s job), designing and conduct real user study and evaluation, and finally giving presentation of their work. So compared to other courses, TA’s responsibility is not just grading homework and answering technical questions, but also interacting with and mentoring the team consistently throughout the quarter.

Here is a summary of tips put up together after the quarter, which is a composition of both tribal knowledge and general working principles. I intend to be brief and incomplete, so if anything is unclear, please leave a comment to discuss with me.

  1. Infra:
    1. Use an automatic system + version control to track/build your course materials
      1. Ease of reusing content across different offerings
      2. Consistency between content
      3. Enable more complicated and fancier UI without too much manual work
      4. Make course material updates reviewable
      5. Resolve merge conflicts
      6. Use automatic HTML link validator
    2. Canvas/GradeScope comparison
      1. GradeScope is good at: grading scanned written exams answers
      2. Canvas is good at: add inline comments to PDF submission
    3. Consistency Management:
      1. Idea: any student who found an error in materials will get a reward (sweet or whatever)
    4. Set necessary things up as early as possible
  2. Meetings: Use meetings to
    1. Make a lot of small decisions fast
    2. Know the physical/mental status of your colleagues
    3. Inform and discussion a proposal of big decisions. Settle it by deadline through email on a later date. Give people the chance to cognitively digest it
    4. Ask if you don’t know or understand something “trivial”
  3. Knowledge:
    1. Write manual for everything
    2. TA succession is an extreme case of high employee turn-over rate
  4. Student Group Project Mentoring
    1. The project group should be small (4 is sufficient for a quarter long one, even 3 can be successful)
    2. Give help and resource to students actively
    3. Prepare for meeting and nudge the team to prepare the agenda too
    4. Your goal is to make your team successful
    5. Co-edit for greater transparency: push your notes to the mentee’s repo and nudge them to review and check
    6. Encourage students to manage their report using source control
    7. Write detailed feedback and track whether they are addressed
    8. Meeting agenda:
      1. Discussion of the product: Production description, use cases, UI diagrams
      2. Discussion of the Process:
        1. Group dynamics: Who is PM? How decision is made? How to resolve conflicts and imbalance?
        2. Software and tools
        3. Risk and schedule: consider more people risk
  5. Grading:
    1. Use the available points to its full potential to ensure a high variation amont students. Curve them to an ideal distribution in the end of the quarter, considering both policy and overall deservedness.
    2. Take note of attendance and in-group responsibility difference
    3. Use rubric and ask for help if not sure how to evaluate
      1. Design taste is very hard to develop, and we want consistency across the class
    4. No absolutely continuous grading: while it is great to give continuous feedback and numeric grades as the quarter goes, it is improper to formalize the entirety of grading structure early on, because it would mean that once some item is checked off, it is no longer important. This will discourage students from working hard persistently.
    5. Grade hard early on
  6. Time management:
    1. Conflicts: pay back your time in other ways to other TAs if they have to take over your responsibility for some reason, but admit it frankly & timely and be proactive in the coordination
    2. Need to be efficient and time-keeping when the schedule is tight. Move small steps quickly.
  7. Responsibility
    1. Each actionable point in your teaching schedule should be supervised by someone, this ensures that things will not be missed off
    2. Make responsibility assignments part of your course git repo to make sure (1) it is tracked (2) it is editable by anyone
  8. In-lecture activities
    1. For presentation, inform students that they have a limited time budget, give them a count-down timer, and cut them off if necessary. Keep the schedule tight e.g. by overlapping the presenter QA and next presenter’s connector prep
    2. All staff should take notes on presentations. This is used to alleviate the TA bias across projects and provide different feedbacks to the teams
  9. Homework
    1. Let student report their time spent on the homework and note the outliners
    2. Check in the submissions in the repository for ease of management and archival purpose
  10. Communication
    1. TAs must cc either the staff mailing list or the lecturer on all emails to students
    2. When writing an email, do other people some convenience like inserting an link even if they can find it somewhere