In 2021 Spring, I was a teaching assistant (TA) of the introductory functional programming (FP) course at CMU 15-150: Functional Programming. In 2021 Summer, I was a TA of Computer Science Scholar, a pre-college program with many students from underrepresented communities. In 2021 Fall, I am a TA of 15-110: Principles of Computing at CMU.
150 teaches the FP language ML with SML/NJ, mathematical formalizations and proofs of programs, abstract datatype, work and span analysis, parallel and sequential designs, and etc. The S21 instance of 150 has 2 instructors, 39 TAs, 1 mascot (@Polly the polymorphic parrot), and 335 students with limited in-person lecture and lab options.
15150 Polly’s ins @pollythepolymorphicparrot |
It’s really cool to see how a class of this scale functions behind the scene. A series of technologies were used:
- GitHub for course infrastructure, where TAs can develop and review new hw/lab questions, compile questions & solutions, raise issues, generate lab checkin passwords, implement playtesting feedback, and etc;
- Slack for staff communications, task assignments, scheduling, feedback, etc;
- Google Drive for sharing slides, OH notes, pre-lab preparation, and Google Form for course feedback to students;
- Gradescope for grading and homework/exam submission, where the autograder for programming hw is hosted;
- Canvas for posting lecture recordings and lab or homework handouts;
- OHQ for virtual office hours where TAs grab students from the queue and go to their zoom rooms to answer questions;
- Piazza for QnA between students and TAs besides OHQ, hw FAQ posts, etc.;
- And of course Zoom for all virtual activities.
As TAs, we devote approximately 20 hrs/week for
- weekly staff meeting,
- co-teaching lab (20+students),
- grading homework,
- office hours,
- answering questions on Piazza,
- content development and playtesting of supplementary course materials such as lab and homework questions.
In S21, I answered 110 questions on 150’s OHQ | In F21, I answered 88 questions on 110’s OHQ |
Given my learning science background, it’s very interesting to see how the best practices in theories are hard to apply because of various constraints in real life and how teaching staff from different background can perceive the issue in very different ways. Please refer to this post for the complete story and my reflection regarding the course improvement feedback. That conversation actually poses a lot of interesting questions, for example:
- Does student have to fail & lose points to learn?
- Is assuming students cannot maturely deal with their failures condescending?
- Are there simply always complaints as students can feel like they’ve lost points that they didn’t expect to lose no matter what we did?
From educational practices and design perspectives, I feel like the answer to all of these questions is NO. But some course staff took the exact opposite position. The answers may be truly context dependent, but from the back and forth discussions, I developed a deeper understanding on how improving education quality is always hard in practice.
Credit to Mia Tang, a former 150 TA | Mid-semester feedback I received as a 110 TA |
Therefore, I decided to gain more TA experiences in different CS courses and expose myself to different sets of course policies, student experiences, and similar or different challenges. During 2021 Summer, I assisted teaching for 30 high school students in the pre-college Computer Science Scholars (CSS) program for students from traditionally underrepresented communities in CS. In 2021 Fall, I become a TA of the course 15-110.
The 21 Fall instance of 110 has 26 TAs and 301 registered students, which is a similar-scale introductory CS course as 150. However, 110 has a more diverse students’ background, as 150 is a required course for CS majors, but 110 is one of the most basic CS course one can take at CMU. I took it in my first semester at CMU, as I don’t have any programming experience before.
In 110, besides experiencing some in-person teaching, I also practiced explaining CS concepts to complete novices in easily understandable ways and shared my passion and interest in CS to others, as what the instructors did when I took 110. I also created a cognitive tutor to help 110 students practice recursive code tracing as my final project of the course Personalized Online Learning.