Revisit: How I organize the teaching staff of my 200+ student class

Kristin Stephens-Martinez
7 min readMar 6, 2024

--

When it comes to anyone’s advice on how to run your own course, your “mileage may vary.” So, I thought it would be interesting to revisit my series on how I organize my teaching staff in my 200+ student class. The first post of that series is my most viewed post on Medium. I published that series during the second half of 2020, and times have changed since then (**cough** pandemic **cough**). In addition, I’ve moved on from that introductory computer science (CS1), and I primarily teach an elective data science (DS) course, which has a high variability in enrollment. In this post, I revisit that series from the perspective of what I still do versus do not between my CS1 and DS courses.

[This article is also posted on my personal blog.]

Current Course’s Context

Before I start my comparison, I need to go over how the context is different since it influenced many of the differences between the two courses. My DS class has a semester-long project and no labs/discussions. The class also uses Python, which is what the CS1 course teaches.

The enrollment numbers are highly variable. Last semester’s class had the smallest enrollment, at 82 students. However, since Spring 2021, when I started teaching it, the max enrollment has been 234. The mean is 198, with a median of 207.

The student’s prior experience is also variable. Most have 2 programming courses. However, I let in students with “1.5 programming courses” and a statistics class. They achieve this mainly by taking our CS1 and a statistics class that includes programming (usually R). The idea is the course can handle two kinds of students. First are those who have enough programming experience that they can pick up Python if necessary and can navigate documentation mostly on their own. The second group of students don’t have quite enough programming experience, but their statistics course helps them get through DS’s course content on those topics more quickly, so they can focus more on the programming parts compared to the first group. Moreover, having taken the CS1 that’s in Python, they already know the DS course’s programming language.

Teaching Staff Roles

Let’s take each of my blog posts as a separate section. In my original post on the teaching staff roles, I covered how I had a Teaching Associate (TA+) who is a staff member who helps manage a set of courses and usually sticks to that same set each term (If you are curious to learn more, I interviewed our first two on my podcast: Kate O’Hanlon and Yesenia Velasco). I also had two graduate teaching assistants (GTAs), some head undergrad TAs (UTAs), and a lot of regular UTAs. The TA+ helped with logistics (like with exam accommodations), managed the TAs, and anything else I couldn’t ask a GTA or UTA to do but didn’t have to do myself. The GTAs handled specific tasks that only they could do and the autograder. There are three head UTAs: Lab, Office Hours, and Grader. Each manages all or some of the UTAs regarding what they are primarily responsible for. The organization has changed since I left the course, but I won’t get into that here.

For my DS class, I still have 2 GTAs and head UTAs. But I do not necessarily always have a TA+. The “sometimes TA+” has to do with history and class size. I didn’t start out teaching the class with a TA+. When I finally got one because the class was big enough and the TA+’s had the capacity, I lost my TA+ after 2 semesters when the class got too small. This inconsistency actually makes it harder to effectively work with a TA+ because what they do overlaps with what I do and other teaching staff roles that are always filled. When I lost them last semester, I had to re-figure out everything they were doing and reassign those tasks.

What the GTAs and head UTAs have changed compared to my CS1. I have four primary roles, and I slot in GTAs and head UTAs as skill sets and interests align regardless of whether they are a grad or an undergrad.

  1. Help Coordinator: This person is in charge of all things that support students’ getting help. This includes office hours, class forums, and TA training.
  2. Group Project Coordinator: This person is in charge of anything related to the semester-long group project. This involves creating groups for students who do not have enough people (they need 4–5), updating the milestone requirements, grading the milestones with the project graders, and managing any other group issues that arise that don’t need my input.
  3. Head Grader: This person organizes all UTAs on all things grading, which are homeworks and exams. This includes creating training sets for grading, assigning who is grading what, ensuring grading is done on time, and organizing exam grading sessions.
  4. Content Curator: Manages all of the course’s content that I am not solely responsible for, with some restrictions. This content is mainly the course website, autograder, and homeworks. This role involves implementing my planned homework/worked examples changes, standing up the autograders, rolling the course website over from the prior semester, finalizing the autograder for the exams (I write the exam but ask them to handle all the autograder hooking up), and making suggestions for how to improve the course content. The one restriction is if they are a UTA they cannot do certain things in the learning management system due to some access restrictions. Those tasks then get handed to the GTAs.

When I had a TA+, they managed the logistics of the exams, helped identify struggling students who needed to be reached out to, and general TA management, like getting TAs set up with the systems and keeping tabs on whether they were doing their work. When I do not have a TA+, the exam logistics are shared between the GTAs and myself, I take the bulk of responsibility for finding struggling students and setting TAs up in the systems, and TA management is more done by my head staff, who I coach on how to gently poke those they manage to get their work done on time.

Outside of my head staff, I do not have lab UTAs nor tutoring groups because there are no labs, and this course, being an elective, hasn’t shown a need for tutoring groups compared to CS1. The UTA structure is much flatter and “squishy” where duties are not assigned by title/role. Instead, everyone grades and otherwise duties are assigned directly based on interest, strengths, and availability.

Communication

When it comes to how I communicated with my CS1 versus my DS class, it’s pretty much the same. In that, I still have an all-hands meeting at the beginning of the semester and use Slack for everything. I also still hold to my general Slack etiquette and philosophy.

The main difference is the use of channels and integrations. The channels are different because the duties/responsibilities are different, but otherwise, the philosophy of one channel per responsibility still holds. I don’t use the GitHub integration anymore because that was for the CS1 class website. The DS class website is on WordPress. I still use the Trello integration because I still track the task list there, which leads me to the next section.

Tracking the task list

Regarding tracking the task list with my head staff, the philosophy is still the same, but the execution is different because (again) the teaching staff organization and general components of the class are a little different from the CS1.

The lists in the Trello board are almost the same. Where I have a done list per week, a list for this week’s tasks, a list for future tasks, and two reference lists one from last semester and another for next semester. I actually have more than the original duplication lists from my CS1 that had weekly and commonly duplicated cards. For my DS, I have lists I duplicate per module, exam, and project milestone.

My weekly duplication list has similar and different cards. In addition to the weekly status reports on the class forum and office hours, I also have weekly status updates on potential signals from the homework that warrant reaching out, like not turning in homework or running low or negative on late tokens. Another status card focuses on the general usage of the flexibility in the course, which is the late tokens system and an extension “token” I give students for their weekly quizzes. There’s also a card to discuss what happens in TA training since I’m still working with my Help Coordinator on what goes into training each week.

Meetings

Per my last blog post on this, I only meet with my head staff weekly. A major difference is that everyone stays for the entire meeting. Almost everyone is involved in some way with everything, so it does not make sense to split it up. The only head TA that might not need to be involved is the Group Project Coordinator. Still, their opinion is valuable even if they aren’t actually involved in building stuff, so I ask them to stay and often seek their opinion, especially with regard to changes that might help students with their projects.

Something I forgot to mention in my original series is that the UTAs in both my CS1 and DS get weekly training. In CS1, they went over the labs, and in DS, it is a mix of common ways students struggle with the content and going over the more difficult homework problems. A difference is that for CS1, the trainings are always on Mondays or Tuesdays. It is impossible to schedule so many UTAs to attend a single training, so there are always two. The same goes for DS, but we collect when the UTAs are generally available and then find two times that work for everyone.

Conclusion

If I had to summarize this post in a single sentence, the philosophy is pretty similar, and much of the difference is due to the structural differences in the courses themselves. Hopefully, this post is a helpful compare and contrast of case studies for you all to more easily see what is due to my personal teaching staff philosophy versus structure.

Do you have any questions about this post or thoughts on anything? Feel free to leave a comment or reach out to me!

--

--

Kristin Stephens-Martinez

Creator and host of The CS-Ed Podcast https://csedpodcast.org/ Associate Professor of the Practice in Computer Science at Duke University.