Here's a blog post from Bethany Davis:
It has been said that the best way to learn is to teach. That is why I was so excited when I found out I was chosen to be a CIS 120 Teaching Assistant at the beginning of this semester.
My name is Bethany Davis and I’m a sophomore at SEAS studying Computer Science. CIS 120, or Programming Languages and Techniques I, was the first computer science course I took at Penn. During the first half of the semester, I learned my first functional programming language, OCaml, through a series of increasingly challenging weekly assignments that build off of previous concepts and syntax structures. The OCaml portion of the course culminates in a GUI project similar to Microsoft Paint. The second half of the course transitions from OCaml to Java, and culminates in a largely self-directed project in which each student designs a Java game. When I took the course, I built a version of the Snake game from scratch. I found the course to be rewarding because I learned a new programming language, constantly challenged my programming abilities, and produced tangible projects that I could demo for my friends.
The spring semester of my freshman year, two of my hall-mates enrolled in the course. I found myself staying up late to help them with the assignments. I found it very rewarding to share my own CIS 120 experiences with my friends, and it was also very fulfilling to see the influence I had on my peers: one of my hall-mates ended up declaring a minor in CS, while another hall-mate went so far as to consider a second major in CS. I realized that I had a passion for spreading my love of programming to others, and I wanted to find a way to give back to the CS community at Penn, so I decided to apply to become a CIS 120 teaching assistant. After an application and an interview, I was hired as a CIS 120 TA for the Fall 2014 semester!
The infrastructure of the entry-level CIS courses at Penn is very well established. Every week, I attend a CIS 120 staff meeting to debrief on the previous week’s lecture concepts and assignments, review plans for the upcoming week, and discuss the overall trajectory of the course. As a new TA, I also attend weekly TA training sessions with first-time teaching assistants and Head TA’s from the other entry-level courses. During training sessions, we discuss a variety of topics ranging from how to best conduct a recitation to how to increase diversity within computer science. Training sessions definitely help me think critically about my teaching and my role as a TA.
While it may seem that being a teaching assistant primarily entails helping others, I have found that my role as a TA has also been beneficial for my own sake. As a TA, I am responsible for teaching a weekly recitation, holding weekly office hours, and grading students’ weekly assignments for style, testing, and efficiency. Once of the most challenging (yet rewarding) parts of being a TA is helping individual students during office hours. It is difficult to strike a balance between guiding a student towards the right answer while still allowing the student to solve the problem independently. The most fulfilling part of being a TA is when I am helping a student in office hours and the student suddenly reaches that “AHA!” or “eureka!” moment of understanding. Whenever I help a student reach this moment while solving a difficult problem, I am reminded why computer science is such an incredible field to be a part of, and why computer science sparked my interest in the first place. Furthermore, although grading assignments can be tedious and time-consuming, I have found it to be very beneficial to my own journey as a computer science student. Reading other students’ code allows me to visualize many different solutions and approaches to the same problem. Additionally, when I am forced to be critical of other students’ code, it teaches me to be more critical of the code I write myself, and I have found that through grading poorly written code, I am inspired to write more readable, well-written code for my own assignments. Finally, being a TA has helped me prepare for technical interviews. It can be very challenging and uncomfortable to discuss algorithms and code segments with an interviewer, but because I get practice explaining algorithms and code during recitations every week, I have felt much more at ease whenever I approach questions in a technical interview.
I am grateful for the opportunity to be a teaching assistant even though I am only an undergraduate student in computer science. While my role as a TA is primarily to teach others, I am also grateful for everything that being a TA has taught me!