Last term (2014W2, or Jan-Apr 2015), I had the opportunity to be a teaching assistant (henceforth abbreviated as TA) for CPSC 210: "Software Construction", which is part of UBC's CPSC software engineering stream. I've already reviewed 210 as a student in an earlier blog post; instead, this blog post will be somewhat different than my regular course reviews, being written from the perspective of a TA rather than a student in CPSC 210. There are a number of blogs out there that offer reviews of various UBC courses, but none that talk about what it's like to be a TA, so I hope other UBC students (and maybe even prospective TAs) might find this interesting.
It's worth pointing out that I was a 4th year undergraduate student when I TA'ed for 210, not a graduate student. My understanding is that for many (most?) faculties, e.g. Arts, TAs are for the most part all grad students, and TA-ship serves as one of their sources of funding for their graduate studies. However, in UBC's Computer Science department, all of the lower level CPSC courses (and a few of the upper level ones as well) are open to undergrad TAs. I've gotten the impression that the CS department seems to be perpetually searching for student candidates to serve as TAs for CPSC courses, and that there aren't always enough candidates, which may be why TA positions are open to undergrads rather than restricted to graduate students. If I remember correctly, all of my fellow 210 TAs were all undergrad students like me, except for a single grad student who took on administrative duties.
Let's start off by talking about how to apply for TA-ship. The process may be completely different for other faculties/departments, but for CPSC, it involves filling an online form that's fairly brief and straightforward. It'll ask you to fill out some basic information about your identity, then select courses that you're interested in TA-ing, and then explain your qualifications. Once you've submitted your application, all you have to do is wait to hear back from the department; you'll get an email regardless of whether you were accepted or rejected about a month or so before the term starts. If you're offered a TA position, you're given one week to either accept or reject it, and from then on you'll interact directly with the instructors of that course and/or the TA that's involved in coordinating everything for that course (the instructors for CPSC 210 in 2014W2 were Gail Murphy and Elisa Baniassad, just for the record). I don't know if that TA actually has a formal position or anything, but I'll refer to him/her as the "lead TA" for the purposes of this blog post.
During the first week you'll hear back from the department (via email from [email protected]) regarding payroll stuff. To summarize, as an undergrad TA and a member of CUPE 2278, you'll be paid biweekly a non-negotiable wage of $14.75/hr (at time of writing) for a maximum of 12 hours/week. The amount of time you work per week has to be a "reasonable" amount and balance, i.e. you may be asked to work more than 12 hours in any given week (e.g. exam periods), but it has to balance out by less hours in other weeks. You also have to regularly submit paper timesheets to receive pay, and you'll have to submit your banking info to UBC Payroll before you get paid, so there'll be a bit of paperwork for you to clear during the first week.
In the first few weeks of the term, you'll also be assigned a TA buddy if you requested one and are a new TA. Your TA buddy will simply be someone that you can ask general TA-related questions (and who will likely get back to you with an answer faster than the CS department ever will).
To wrap up the administrative stuff, shortly before the start of the term, the instructor or TA in charge of administrative tasks will email you to ask about your schedule, and then assign duties like labs, "lecture labs" (210-specific?), and office hours to each TA. For CPSC 210, we were all assigned hours from 2 of the above 3 categories; I was assigned two 2-hour lab slots and 3 hours worth of office hours in the DLC (Demco Learning Centre) per week. This is in addition to a mandatory 1-hour weekly meeting that we had on Thursdays, which makes up for a minimum of 8 hours/week during the term that I spent on TA-related work. I consider this to be roughly equal to the workload of an average UBC course; as a TA, you should be mindful of the fact that the time investment you dedicate to TA-ing is not insignificant. I initially thought that office hours would be a quiet relaxing time for me to do my own homework, since I rarely went to office hours myself and expected it to be fairly quiet. I was quickly disabused of this notion, since I was very often kept busy during the entire duration of both my office hours and my lab sections. That was especially true near the end of the term; as you may well know, CPSC 210 has a fairly lengthy and work-heavy term project that many students struggle with.
Weekly meetings were a chance for us TAs to discuss anything relevant to the course that occurred the week prior, or about to come up the following week. These meetings were often a discussion about common issues in labs and assignments, or issues raised by students on Piazza, or about upcoming lecture labs, or later on about the term project, etc, and provided all of us a chance to ask questions if we were unsure about anything. We were often given a quick rundown as to what to expect in the upcoming week's lab sections, and informed of any additional duties like exam grading during this time.
For CPSC 210 labs, amongst the group of 3 TAs that taught each lab section, we would have one TA do a brief introductory lecture/presentation about the lab, and one other TA take care of marking for the previous lab; we would rotate between these responsibilities every week. We would usually have some sort of pre-made material for us to present, e.g. a set of PowerPoint slides, or a small Eclipse project that would demonstrate the key concepts taught in that week's lab, or even just a list of topics to briefly discuss, although TAs were free to make their own presentations. The marker TA would go through, err...*cough*...a "randomly" selected group of students, a "random" number of times, to mark their labs and ask questions to ensure that students understood what they were doing. (While the process may or may not actually be random, the intended goal is to encourage students to do all the labs even though TAs couldn't possibly mark every person for every lab.)
Office hours for 210 actually felt a lot like labs, in the sense that your job was to help students that came to you with questions about the course. There would typically be anywhere in between 3-12 students coming to me during my office hours, and most of the time questions were asked about either that week's assignment or lab, and later on in the term, the term project. Rarely would questions be asked about lecture material, which surprised me somewhat, but I reckon students often struggled more with labs and assignments than they did with lectures. The questions would often fall into one of two categories: either questions to clarify ambiguity in the lab/assignment or to give an explanation about the material covered in the lab/assignment, or a request to look at the student's code and fix it. The latter is rather undesirable because a "look at my code and fix it" attitude doesn't typically inspire the desire to learn (but I can understand where it's coming from, having been a 210 student myself a few years ago). What I usually do then is just give a few pointers/hints as to where to proceed if they get stuck, and/or go over debugger usage in Eclipse/Intellij IDEA/Android Studio if they still do not understand how to debug their code to fix it. TAs are obviously not supposed to actually fix students' code on their behalf, of course.
For CPSC 210 specifically, I actually think debugging is a concept that should be stressed more, because a lot of students seem to still have no idea how to use a debugger to debug their code even by the time they've started to work on their term project halfway through the term. I've also gotten the impression that students expect me to look at their code and just know what's wrong with it. Protip: sorry to disappoint, but TAs are not omniscient. However, TAs tend to be quite good at debugging code; when it comes to helping students especially with the project, asking them to start up their debugger and stepping through their code with them if needed (with them, not for them) is usually enough to figure out the problem and have an idea as to how to fix it. More often than not, the first thing I say when students come to me for help with the project is, "Have you tried debugging your code yet?"
It's worthwhile to note that for CPSC 210, TAs get solutions for the labs, but NOT for the assignments or the project. And because the term project changes from term to term, yes, as a 210 TA you'll end up doing the term project yourself just so you can anticipate what kind of questions students will ask you, and also so you have an idea of how the application should behave when students demo their term projects at the end of the term.
Another timesink is exam invigilation and marking. Exam invigilation as a TA is incredibly boring; I wasn't allowed to answer any questions from students, hence my job was to simply walk around a lecture hall for 2 hours or so. 210 makes invigilation slightly less boring because students are required to have a computer with them so they can refer to code checked out from a SVN repository, and a little bit of effort is required to make sure that nobody tries to cheat. Oh, I've never TA-ed for Steve Wolfman before, but from what I've heard from other TAs, apparently Steve invented "invigilation tag", in which TAs who are invigilating try to sneak up on fellow TAs to quietly tag them without students noticing. ;)
Exam marking is much more of a timesink than invigilation, however. CPSC 210 that term had 1 very lengthy midterm, and it took roughly 8 hours (on a Saturday!) to mark everything. TAs also took part in marking the final exam, which was done over 2 days and took roughly 11-12 hours in total IIRC. Both exams were marked in a similar fashion. TAs would gather around a few tables with giant stacks of exams, armed with red pens and whiteout. We'd all mark the same question at the same time, with the instructors first presenting the answer key and marking scheme; TAs were free to ask questions if there was any ambiguity, either with the answer key or with an individual student's exam. It wasn't entirely rare for the marking scheme to be modified slightly after some discussion once we got around to marking enough exams and seeing certain patterns, in which case we would have to dig through already-marked exams to apply the new marking scheme (I recall using a non-trivial amount of whiteout). Once a question was completely marked, we'd then move on to the next question and repeat the same process. It goes without saying that the open-ended questions on the exams were the toughest to mark; in some ways they were also...entertaining to mark, given the wide variety of answers (and hard-to-follow code) that students can come up with. Or just downright frustrating.
Note to students: please don't think writing as much as possible is always a good strategy. Digging through spaghetti code to find a few metaphorical gold nuggets that are worth actual marks can be really frustrating for your marker!
As a TA, you are also expected to answer questions on Piazza, the external discussion board used in CPSC 210 and many other CPSC courses at UBC. The system we used during that term was that you needed to answer any questions coming from a student in your lab section to spread the work around fairly. In reality, Gail (one of the instructors) answered a disproportionately large number of questions (IIRC according to the Piazza stats, she had more than a thousand posts by the end of the term), while few TAs had more than a hundred (heh, shame on us!). Piazza is a heavily used resource in 210, even more so during the lead-up to project deadlines; for the most part though, I got the impression that questions asked on Piazza were usually replied to in a prompt manner.
If you're looking for reasons to be a TA, well, I think the most rewarding aspect of the entire TA experience is engaging with students and helping them out with course material, during both labs and office hours. Being able to explain something is one of the more effective ways of demonstrating comprehension/understanding, so in many ways it's a learning process for you as the TA as well. There's also that feeling of accomplishment when you're able to pinpoint the source of a student's struggles or misunderstanding and help fix whatever the issue is. (Conversely, there's that sense of embarrassment when you don't quite know what's going on either and end up suggesting that the student asks on Piazza or the instructors.) For me, as an introvert, it was also the opportunity for me to step out of my comfort zone a bit and engage with others...although I'm still very much an introvert. I suppose being a TA also looks nice on your resume or LinkedIn profile. Other than that, there's also the fact that you get paid for being a TA, but frankly the pay you get as an undergrad TA sucks, given that you'll typically earn a lot more on CS co-op terms or as a private tutor. Heck, quite a few on-campus Work Learn positions pay better than being a TA, so if your primary motivation is money, you may end up disappointed; getting paid to be a TA is just a nice perk on top of everything else.