CSCI 1470 / 2470: (Graduate) Deep Learning

Undergraduate Teaching Assistant at Brown University

CSCI 1470 / 2470: (Graduate) Deep Learning
Roles

Undergraduate Teaching Assistant, Summer Course Developer

Timeline

May, 2022 - Present

Skills

MLE, SWE, Version Control, Unit Testing, Debugging

Tools
    Python Tensorflow Keras PyTorch Jupyter Git Bash

Overview

CSCI 1470 / 2470 is Brown University's Undergraduate / Graduate Deep Learning course taught by Professor Chen Sun each Fall and Professor Ritambhara Singh each Spring. On average, roughly 220 students take in the course every semester.

Course topics include:

  • Neural Networks
  • Autodifferentiation in PyTorch, Tensorflow
  • Convolutional Neural Networks
  • Recurrent Networks (RNN, LSTM, GRU)
  • Transformers
  • Variational Auto Encoders
  • Generative Adversarial Networks
  • Reinforcement Learning

As a UTA and Course Dev, I was part of CS1470's main point of contact between students and the course. The course's primary website can be found here.

Responsibilities as a UTA

As an undergraduate teaching assistant, my responsibilities included: hosting weekly office hours, teaching a weekly lab section, resolving student issues on our class forum, grading assignments, and participating in a weekly progress meeting.

Office Hours

Every week, I held hybrid (In Person/Remote) office hours for 2 hours. During these office hour sessions, students could sign up to be claimed through Brown CS's queue system: Hours at Brown. Once claimed, they would have 15-20 minutes to ask any questions regarding any course related work.

I most commonly answered conceptual questions regarding the math and functionality of DL models introduced in class or helped students resolve implementation specific issues. I would also work to fix any issues discovered in given code.

Forum Questions: EdStem

Supplementing these office hours, CS1470 also had a forum open to students. In the forum, students could post questions, problems, and responses to others. Staff could post important course updates and also answer student questions or endorse student solutions.

Oftentimes, I would debug implementation specific code within students' code. This would involve cloning their project repository and reading / testing their code on my local machine.

Weekly Lab

I also taught a weekly lab. These labs were interactive Notebook assignments which would introduce students to new content. As the TA for the lab, I would go around answering any questions and checking student progress. If any bugs came up during the lab, I would also fix those bugs by making edits to the Google Colab stencils

Staff Meetings / Grading

At weekly staff meetings, the course staff would meet to discuss course progress, make adjustments to assignments and the progression of the course, and grade assignments. As a majority of the homework assignments were rewritten, we closely monitored these homeworks both technically and pedagogically.

In particular, we made sure to quickly patch and release fixes for bugs in stencil code when they were reported on EdStem. Additionally, we considered a rough average of student difficulty to guide how assignments were adjusted and grdaed.

Responsibilities as a Course Dev

Another active responsibility as a TA was to help develop the assignments to align with the professors' visions for the course.

Specifically, I developed course materials and assignments for over 200 students including written conceptual questions, interactive Notebook coding problems, and full Deep Learning model assignments. The first assignment I helped develop was an interactive Notebook assignment where students would implement a heavily simplified version of PyTorch's Tensor/Autogradient tree structure. Next, I helped develop the following assignment in which students implemented a boiled-down version of Tensorflow's/Keras's Autograd graph traversal structure.

In general, I also contributed to testing and autograding. Specifically, I helped write Bash scripts which would be run from the machine receiving submissions as well as the Python code that would verify the functionality of the submitted code.

Takeaways as a CS1470 TA

As my first experience as a Teaching Assistant, this job has been a great learning opportunity in many ways.

Firstly, I am very grateful to have worked with many excellent coders and learned from their perspectives, both as fellow staff members and students.

I have also continued to grow in my technical abilities as I worked through, developed, and fixed course material. In particular, I enjoyed being able to explore more modern DL concepts like attentioning, transformers, and generative models (e.g. GANs), just to name a few.

Designed with by Bumjin Joo. Inspired by craftzdog.