Full Circle: From Student to Lead TA

Not everyone gets the opportunity to rewrite a class they took.

Learning to code in college has completely reshaped the way I take on challenges. I’ve learned to methodically break down scenarios, analyze their components, and develop plans of action that synthesize the opinions of others and leverage my experience in the field to come to the best conclusion.

Completing the plethora of academic projects each semester and coding during my summer internships have cemented (and at times challenged) my ability to complete the task at hand. However, never have I had my knowledge (and patience) tested in the way that being a TA (Teacher’s Assistant) has.

I really enjoy the world of web development, so after completing CS 1300 and CS 2300 (Intro/Intermediate Web Design and Development) at Cornell University, I applied and received the TA position for these 2 courses during my Sophomore year. It was a challenge not only “re-learning” the course material, but understanding it at the advanced level required to explain it to new students in my weekly section.

As a TA, you are not only expected to have in-depth understanding of the material, but you must also be able to effectively communicate the material to others of varying abilities in a small setting. Given that the class curriculum had not changed since the year before, it was easy to foresee student’s problems before they arose.

But then, during the last TA meeting, our professor announced that he was retiring from teaching and becoming a professional Quaker. (Hey, students shouldn’t be the only ones who should be chasing their dreams in college.)

A new professor was hired to fill that gap. His name was Kyle Harms. Having a proven background in both technical and teaching roles with an intrinsic understanding of Human Computer Interaction (HCI) principles, it was no surprise he was picked for these two classes.

In the Fall of 2017, I once again applied and was chosen to be a TA for CS 1300. Kyle made some smart changes to the course, extending the content of the course and the pace at which it was taught. The only gripe I had with his changes was the grading process. As a programmer, I instinctively want to automate the boring stuff as much as possible. Grading is boring (Kyle if you’re reading this I’m sorry it’s true). So, I spent a weekend developing a tool for my personal use that would generate the necessary documents and auto-validate (W3C validation) the projects of my weekly batch of students. It allowed me to save time that I could better spend helping the students with the intangibles of coding.

Ironically, a few weeks after I made the tool, Kyle mentioned to the TA’s that he wanted someone to create grading tools (like the one I had happened to make) to alleviate the amount of time we would have to spend grading. He was surprised, reviewed my code (even gave me a star on the Github repo), and allowed me to present it during one of the TA meetings. It was the first time I was able to build a tool to directly help a professor, and it felt amazing.

During winter break, I received an unexpected email from Kyle asking for my opinion on the number of office hours he had planned for the upcoming CS 2300 semester, based on my past experience with the course.

I was surprised. A professor, asking me for my opinion on how to organize a class? Wild.

We went back and forth for a while and after settling the office hours issue, I asked him if he was thinking about making any major curriculum changes to the course. In my opinion, the class had historically left out one of the most important pieces of web development, deployment.

The class operated off of a giant server that stored photo uploads and databases for all students. Being Cornell property, this isn’t a scalable solution. We both had a distaste for this server and had discussed using something better for the spring semester. I happened to be dabbling with Heroku over the winter break for my project team, and found it satisfied storage and deployment issues without too much of a hassle. I recommended it to Kyle, and he loved the idea. After a bit more detailed discussion, he proposed the game changing question.

“Would you consider taking a more active role as a TA this semester? It might make sense to have a few lead undergrad TAs”.

Me? A junior? A lead? Am I ready?

In that moment it feel like everything had come full circle. From taking the course my Freshman year to becoming a lead in my Junior year, I finally felt validated in where I was and what I was doing.

I spent the entire Spring 2018 semester working through the technical barriers of using Heroku for a class of 300+ students. Wrestling through the Heroku documentation, as well as testing out different converters and configurations was at times a challenge, but also interesting. By the end of the semester, all 300+ students had deployed their class projects to Heroku and got to engage in that moment of “Yes, now I can show it to the world”.

Looking back, it felt great seeing my idea recognized, then watching it grow to fruition at scale. I can only hope that in the next few years it can be extended, maybe incorporating more modern web frameworks or other server configuration tools.

In the meantime, Kyle is teaching a new course, INFO 4340: User Experience and Software Development Studio and I will be helping him with working out the coding curriculum of this class. I’m slightly nervous, but also excited for the impact I will be able to have on a brand new class.

We’ll see what the future holds.