Concise Guide to being an Undergraduate Computer Science TA


Table of Contents

  1. Before we Get Started
    1. My Background
    2. Why I Wrote This Guide
  2. Characteristics of a Good TA
    1. Being a KIND TA
    2. Knowledge
    3. Initiative
    4. Non-judgement
    5. Dependability
  3. Tutoring
    1. Before Your Shift
    2. During Your Shift
      1. Answering Questions
      2. Reading Code
      3. What to Do When You Don't Know What to Do
      4. Managing Multiple Students
    3. After Your Shift
  4. Grading

Before We Get Started

My Background

I am a computer science and math major at at STEM-focused small liberal arts college. I have graded and tutored for Intro CS, Data Structures, Information Theory, Machine Learning, and Programming Languages. I provide this background because what worked for me in my context may not work for other contexts (e.g. larger schools with graduate TAs), so proceed with discretion.

Why I wrote this guide

There are some guides for being a computer science TA, but those are mostly aimed at graduate students. These guides are also not typically written by the students themselves. I wanted to provide a guide for undergraduates, by an undergraduate. TAs may have a wide range of responsibilities; at my institution, TAs are responsible for tutoring and grading so that is what I will be covering in my guide.

Characteristics of a Good TA

Being a KIND TA

I like to use the acronym KIND to describe the attributes of a good TA. TAs should have Knowledge, Iniative, Non-judgement, Dependability, and above all, KINDness. In the following sections I will briefly elaborate on these characteristics.

Knowledge

There are three broad categories of knowledge: teaching knowledge, content knowledge, and course knowledge. Each type of knowledge builds upon the previous, with teaching knowledge being the most fundamental.

Teaching knowledge is the understanding of how to teach someone else and is the foundation of an effective tutoring session. It is much more important to know how to guide students to discover the solution on their own than it is to know the solution yourself.

Building upon teaching knowledge, content knowledge is the knowledge of the course content. It would be difficult to tutor a class for which you have no knowledge of, so content knowledge is vital.

Course knowledge is knowledge of the course specifics, such as specifc assignment details. While it is less necessary than teaching knowledge or content knowledge, having course knowledge can make for a smoother tutoring experience.

Initiative

Sometimes students experience self-doubts that prevent them from asking for help. If a TA does not take the iniative to check in with these students, they will struggle silently and fall behind. As a TA, you are in a position of authority over the student, so they may be more inclined to ask for help if you make the first move. There are some more ways to take initative which we will explore later.

Non-judgement

Negative judgements can disrupt a student's learning experience and discourage them from asking for help. It is important to be non-judgemental during both tutoring and grading, even when there are no students around. We should treat each other the way we would want to be treated, which is with empathy, kindness, and respect.

Dependability

The academic system works because of mutual trust between students, TAs, and professors. As a TA, students depend on you to show up to your shift promptly. The other TAs and your professor depend on you to grade promptly. Most importantly, everyone depends on you to uphold academic honesty.

Tutoring

Before Your Shift

  1. A few minutes before your shift start, make an announcement using whatever class discussion platform your course uses (e.g. Canvas, Piazza, Slack, etc.). In my experience, this greatly increases shift attendance.

  2. Read over the assignment.

  3. Arrive promptly. If you are going to be late, send a message via your class discussion platform.
  4. If you know you will miss your shift ahead of time, swap shifts with another TA, get another TA to cover, postpone your shift, or at the very least notify the students. In that order.

  5. Optional: If you need some review, look over the course content. Some ways to do this are to look at lecture slides, reread old notes, or review past homework assignments.

During Your Shift

Answering Questions

  1. Before you do anything, introduce yourself and learn the student's name. This both creates a friendly tutoring environment, and is practically convenient for things like grouping students.

  2. Unless the question is very simple, (e.g. "Do I need a semi-colon here?"), answer a question with another question. The goal is not to give the student the solution, but to help them discover the solution for themselves. Here is a sample list of questions:

    • Can you walk me through what you've tried so far?
    • What do you know about the problem?
    • How is this related to what you learned in class?

    You must be careful to make sure that your question is not an answer hidden in disguise.

    Example. A student asks you, "Why is my code so slow?" You see that they should be using an array data structure, but instead they are using a linked list.

    Bad response: Have you tried using an array instead of a linked list?

    Good response: Is there anything about the data structure that you're using that might make it so slow?

    One response directly gives away the solution, the other will start the student on a line of thinking that will lead them to the correct solution.
  3. Do not negatively judge any question a student asks, no matter how "basic" it may be.

  4. Give some words of encouragement, like "you can do this!" or "I believe in you!"

Reading Code

Reading code can be difficult because knowing about data structures does not equate to knowing about C++. Here are some tips.

  1. Take time to read the code carefully and slowly before jumping into solutions. It is okay to tell the student to wait for you to read.

  2. When reading the code for a function, also read the code for any helper functions or varaibles the function depends on.

  3. Unless a bug is due to a minor syntax error, use the questioning approach to help the student find the bug rather than telling the student what the bug is directly.

  4. Point out style/elegance issues when you see them. This includes but is not limited to undescriptive variable names, poor use of whitespace, or lack of appropriate commenting.

What to Do When You Don't Know What to Do

Sometimes you will run into scenarios where you don't know what to do. That is OK. Here are some tips:

  1. Tell the student you will think about it and get back to them later, or ask them to post a question on your class discussion platform.

  2. If there is another TA on shift with you, ask them for help.

  3. Ask the professor for help.

  4. If another student has already finished the problem, you could direct the student to ask them instead. However, do not do this too often because it is not fair to "TAify" the other students.

  5. Direct the student to refer back to their notes or the posted lecture materials.

Managing Multiple Students

Here are some tips for feeling less overwhelmed when managing many students:

  1. If multiple students are already there when you arrive, do a quick assessment by asking everyone what problem they are working on.

  2. Group students who are working on the same problem together. This encourages collaboration and also lightens your workload. When working together, students may even be able to solve the problem without your help.

  3. Set up a queue. Spend enough time with each student to give them a path forward before moving on to the next student.

  4. Check in with each student at least a few times per tutoring session.

After Your Shift

This section is optional. Taking these extra steps will make you a standout, above-and-beyond TA.

  1. Write down common questions and share them with the other TAs.

  2. Say hi to your students when you see them on campus. Being friendly outside of your shift creates a friendly environment during your shift and encourages people to go to tutoring.

Grading

  1. Grade your assigned portion of the homework every week.

  2. If you are not able to grade one week, communicate this with the other TAs and/or the professor.

  3. If you see strange syntax that is not taught in the course, alert the professor as it may be a case of plaigiarism or AI usage.

  4. If you see two identical submissions, alert the professor as it may be a case of plagiarism.

  5. Never make fun of a student's submission no matter how "obviously incorrect" or incomplete it may be.