Teaching College
I taught Introduction to Machine Learning at BYU this semester
Introduction
If you know me very well, you know that I'm working on my PhD in Computer Science. I'm studying at BYU, and I'm nearing the end of my program. I've taken all the classes I need to take, and done most everything except for my dissertation. As part of the CS PhD program, BYU requires each student to do a teaching practicum, where you teach a college class. I did mine this semester.
The idea behind this teaching practicum is that you are the professor. This is different from leading a recitation section as a TA. I helped with curriculum development, made a lot of slide decks, taught a bunch of lectures, wrote exams, and graded projects. For the last four months, I was 'Professor Lyman'.
Ideally, PhD students teach a class that's related to their research. I got to teach Introduction to Machine Learning, which was a good fit. It was all stuff I already knew, and several topics I taught were relevant to my research today.
The Class
I had 38 students in my class, which meant that if everyone in the class was present, there were no empty seats in the room. The class was supposed to be capped at 30, but so many people signed up the department asked if they could increase the enrollment cap.
In most of the college classes I've attended, enrollment falls off hard pretty quick as the semester goes on. After a week or two, maybe 10% of the class doesn't attend. I've been in several classes where less than half of the students are attending by the end of the course. We, however, had 25 students in class on the last day of the semester. (Pictured below)
I wanted to be a good professor, so I spent a long time studying the picture roll, and got to know the names of almost everyone in the class. I don't think most of the students ever found that out, though, unless they talked to me outside of class time. It did come in handy, however, when I ran into a student in the grocery store and knew her name. (It was very strange being on the other side of the 'run into your teacher outside of school' experience.)
Interestingly, there was almost no oversight in my class. Nobody from the university ever came in to observe my teaching, and I never got any external evaluation, aside from student reviews. I guess if I was doing a really bad job, one of the students might have complained to the college, but thankfully that didn't happen.
Teaching
I like teaching in general. I enjoy presenting about my interests to my family, and I've had several opportunities to teach in church. Actually teaching college, however, was way more work than I anticipated. I taught Tuesday/Thursday for 75 minutes each class.
Preparing lectures is a lot of work. I had some old slides to work off of, but they were just a starting point. It took me many hours to get each lecture ready, then another couple of hours to practice and time the lecture, decide what to add/cut, etc.
I also forget how many things I take for granted that these students have never heard of. I've been doing machine learning in some form or another for almost a decade. My students, in an intro course, aren't expected to know any of that.
After my first week or so of teaching, I asked for feedback. The students told me to talk slower, and explain things more in depth, starting from a more basic level. I implemented some of them, and lectures for the rest of the class went very smoothly.
Apparently the students agreed, because I found this review of me on the course discord.
While most of the semester was me lecturing, I also had the opportunity to have a few in-class activities. In one of them, we had an in-class competition with the tensorflow Neural Network Visualizer, and did a machine learning competition in another class. (I gave them some data and the students worked in teams to train the best model). These activities were really fun, and helped the students apply principles we'd talked about.
I also incorporated my research and my interests. For one lecture, I trained a model to identify Magic: the Gathering card colors from art for a visual example of confusion matrixes. When we were learning about something I use in my research, I made sure to explain how I had used it so the students could see real-world applications.
Lecture Slides
As I mentioned, I inherited some really old slides that had been passed down through generations of BYU professors. The slides for this course were first developed by Tony Martinez, then changed by Quinn Snell before being passed along to me. Some of the slides were written over 10 years ago and did not fit my design sensibilities. I rewrote every single slide deck for both aesthetics and clarity.
I'm always looking at slides from other universities online, so I thought it would be nice to return the favor. Here are my slides from this semester:
- Week 1 - Machine Learning Basics
- Week 1 - Machine Learning Basics 2
- Week 2 - Naive Bayes
- Week 2 - K-Nearest Neighbors
- Week 2 - Logistic Regression
- Week 2 - Logistic Regression 2
- Week 3 - Metrics
- Week 3 - Metrics 2
- Week 4 - Model Validation
- Week 4 - Confusion Matrix
- Week 5 - Regression
- Week 5 - Regression 2
- Week 5 - LLMs (Supplementary)
- Week 6 - Decision Trees
- Week 6 - Decision Trees 2
- Week 7 - Support Vector Machines
- Week 8 - Perceptron
- Week 8 - Neural Nets 1
- Week 9 - Neural Nets 2
- Week 9 - Neural Nets 3
- Week 9 - Backprop Math
- Week 10 - Ensembles
- Week 10 - Ensembles 2
- Week 11 - Clustering
- Week 11 - Clustering 2
- Week 11 - NLP (Supplementary)
- Week 12 - Dimensionality Reduction
- Week 13 - Feature Engineering
- Week 13 - Feature Engineering 2
Sharing the Load
I taught one section of this class, and Quinn Snell taught another. He was very helpful in getting my course setup online, and letting me share the course TAs. We shared exams, so he wrote most of the midterm and I wrote most of the final.
My advisor, David Wingate, was also great. Whenever I had a question or didn't know how to deal with a student, he was right there to help me. I'm sure I wouldn't have done so well if I hadn't had the two of them in my corner.
The End
Well, the semester is over, and nobody in my section failed the class. That's worth celebrating in and of itself. In fact, the students in my section did a little bit better than the other section on both the midterm exam and the final, so I'm confident that taking the class from me wasn't a handicap.
I'm really proud of my students. They worked hard and put up with me for 4 months. This intro course covers a ton of material, and they did a great job with the volume of new information.
When I started teaching, I knew I probably wasn't going to be anyone's best professor, but I was pretty sure that if I worked hard, I wouldn't be anyone's worst professor either. On the last day of class, I put out an anonymous poll. I asked a few questions. For one of them, I asked if I was anyone's worst professor.
I think the results speak for themselves.
Conclusion
I really enjoyed teaching, and at least some of my students enjoyed having me as a professor. If it paid better, I could see myself teaching for a career. Maybe I'll try it after I've worked in industry for a while. Regardless of whether I end up teaching later in my career, I'm very glad I got to teach this class.