While a small number of classes offered inperson components, all learning I took part in this semester was conducted virtually through Zoom and similar mediums.
Additionally, after a semester of TAing I notice that most of my thoughts about classes have begun to lean towards how they could be improved and fixed for the future. Such is life.
Format: (Number, Title)

TA 15251 Great Ideas in Theoretical Computer Science
TAing is certainly a little easier in the second semester of the same course. It was pretty fun getting to meet the freshman class, although by the end of the semester I think I was a little burnt out and so wasn’t quite as good a TA as I’d have liked to be. I’m hoping that getting back in person will reinvigorate me a bit next year.

10315 Introduction to Machine Learning
This course has some hypothetically noble goals that I should agree with. As much as I grumble about CMU’s lack of a learning theory course, it has its share of math prerequisites and spent three full lectures on PAC/SLT learning theory. However the willingness to use math is about the end of where me and this course see eye to eye. The lectures often felt a little disorganized, and when they did get into math had a hard time explaining it well (linear algebra) or stuck to pretty basic ideas (everything else). I think it may be an overall symptom of the field that it’s easier just to to say “this is what we do” than to explain why it does or should work, but regardless that makes machine learning seemingly less satisfying for me.

15259 Probability and Computing
I came into this class with perhaps slightly too high expectations from a lot of students who had described it as among the best courses at CMU. It didn’t change my life, but it was a very solid course in probability. Both lecturers were great so it was always a class worth going to, and it went over a lot of content pretty intensely, which I enjoy. There was a little overlapping content with courses like 15210 and 15251 on randomized algorithms and the policies weren’t super flexible for an online semester, but I enjoyed the course and learned a lot regardless. Plus, it fed my roommates a lot of free chocolate.

15260 Statistics and Computing
This is a mini extra component to 15259 which I’ll admit is mainly here for the course credit. Certain courses require statistics in addition to probability, and I don’t want to take a full course in stats, so attending six lectures through 15260 was a convenient way to get around it. It might have been better to take before ML since some content was shared, but that’s my fault for not respecting the prerequisites.

15354 Computational Discrete Mathematics
I’m not sure I’ll be able to describe the experience of CDM here, there’s a lot to unpack. So I really vibe with the mindset of this class: do computation, do math, use the two to augment each other. Formalize all your computational needs with algebra, and exploit Mathematica and other computational tools to develop intuition for your proofs. But I had been warned that I’d best appreciate CDM as a senior and I did not listen. I’ll say now, that I would have best appreciated CDM as a senior, and while we did a lot of cool niche topics  we did a lot of topics that assumed I had learned a semester or two of abstract algebra in a matter of days and could prove things using field extensions, or that I understood how to apply spectral graph theory to circuits. Reader, I did not.

15451 Algorithm Design and Analysis
I came into 451 with somewhat lower expectations, since I hadn’t liked 210 much and had heard mixed reviews, but it was honestly just a solid class all around. The homeworks were interesting, could be done in groups, and not too frequent, the lectures were well taught (if sometimes bogged down a little by student questions), and the exams were fair. The class seemed to focus on teaching widely applicable techniques and how to apply them in a lot of situations, but I think that worked and it did so well.

15855 Graduate Computational Complexity Theory
Here begins my registration woes: I hit the unit cap and so attended this class without being officially registered for a number of weeks before I was allowed to enroll. I think the class was great overall. While I wouldn’t say it was actually all that much more advanced than undergraduate complexity theory, it covered different topics and when overlapping covered things in different ways. Complexity theory is really cool and I enjoyed getting to see more. However I regret that my lack of certainty on registration meant I avoided finding a group to work with (who I wouldn’t have wanted to abandon if I wasn’t allowed to stay in the class).

17880 Algorithms for Private Data Analysis
This class I was never allowed to register for, but I attended all the lectures and it was honestly fascinating. While much of CS theory feels very detached from reality and things someone outside the ivory tower might care about, privacy is a real concern for a lot of people. It’s neat that it can actually be treated mathematically formally and there are so many interesting algorithms (sorry, mechanisms) to build around it.