My page is somewhat inspired by these pages.
- 15-122: Principles of Imperative Computation
- 15-151: Mathematical Foundations for Computer Science (Concepts)
- 21-242: Matrix Theory
- 76-101: Interpretation and Argument (Harry Potter and Popular Culture)
- 16-161: Freshman Seminar (AI and Humanity)
- 07-128: Freshman Immigration Course
- 07-131: Great Practical Ideas in Computer Science
Extracurriculars: Flutonium (flute choir), CMU KPDC
As I am writing this a couple of years after the fact, I don’t have super clear memories of freshman year and what I liked/disliked about it. These reflections are almost certainly influenced by my perspective a couple of years later and experience in future semesters. As a freshman at CMU you have relatively little choice in your schedule and its almost completely determined by what credit for classes you have coming in. The main two choices I made in terms of my schedule was registering for the Harry Potter interp topic and choosing to take an extra humanities class (AI and Humanity).
As a long time Potterhead I loved my interp. I was very lucky to be able to register for it as its one of the most popular sections and there are very limited slots for SCS students. We discussed various aspects of Harry Potter and pop culture such as commercialization of the series, race and gender within the books, and fan communities. It was very interesting to critically reflect on a series which I had enjoyed since childhood. I registered for AI and Humanity mostly because my friends were also registering for the class and I wanted to be in more classes with them. It was an excellent class, although it did require significantly more work than I expected going in. We had some great discussion and one of the professors has some amazing stories.
The rest of my classes are (somewhat) typical of a freshman CMU SCS student who comes in with APCS A credit and Calc 1 & 2 credit, with one notable exception. A large fraction of the freshman class was also in both 15-151 and 15-122 with me. While I did have a bit of a rocky start adjusting to expectations of college work, I was definitely at an advantage since I partipated in competition math in high school. Out of the two classes I found 15-122 more challenging and had several bugs on programming assignments that took a lot of time to find. The main difference in my schedule is that I took 21-242 instead of 21-241. Matrix Theory is an honors version of 21-241 which you can test into during o-week via the mathematical maturity survey. I think it was a very good fit for me but would not be for many students. I already had taken lin alg coming into CMU and therefore was fine when later classes required background related to the more computational side of linear algebra. However, I could see this being an issue for others without similar experience as 21-242 was very abstract and theory focused (for example we covered dual spaces in depth but SVD was only very briefly discussed).
- 15-150: Principles of Functional Programming
- 15-251: Great Theoretical Ideas in Computer Science
- 15-252: More Great Theoretical Ideas in Computer Science
- 21-269: Vector Analysis
- 82-273: Intro to Japanese Language and Culture
Extracurriculars: Flutonium, CMU KPDC, TA for 15-122
This semester was a great balance between classes, TA’ing, and social life. I did have a large workload but I was still able to put lots of time into TA’ing, karaoke with friends, and flute choir while still getting enough sleep. My favorite class this semester was 15-252 (taught by Venkat!!!). It was an amazing and relatively chill class which was an exploration of a collection of interesting extra topics in CS theory. Coming into CMU I thought I wanted to do work in ML (potentially neuro-science related or in game solving) but I came out of this class wanting to pursue CS theory. If I had to pick one defining moment in my CMU experience it would probably be 15-252. I also wanted to give a shoutout to 21-269. Analysis is not a topic that I’m that interested in, and I mostly took the class because I had already taken multivariable calculus in high school and wanted more of a challenge. The class was very analysis heavy and one of the hardest classes I’ve taken at CMU. It taught me how to study well and take good notes and the professor has two very cute cats. Even though I don’t plan to take more classes in analysis I don’t regret taking 21-269 instead of an easier alternative.
This was also my first semester as a TA. While being a first-time TA can be scary, 15-122 was a great place to start TA’ing. There was a lot of training and many resources for first-time TAs. The course staff was also well organized and very structured. I taught a lab instead of a recitation, which meant I didn’t have to do as much talking in front of a bunch of students and mostly helped students 1-on-1. It was a very enjoyable and rewarding experience and I highly recommend TA’ing to anyone who is interested.
- 15-210: Parallel and Sequential Data Structures and Algorithms
- 15-455: Undergraduate Complexity Theory
- 21-237: Math Studies Algebra I
- 84-104: Decision Processes in American Political Institutions
- 21-295: Putnam Seminar
Extracurriculars: TA for 15-251
While this semester was online I was able to move back to Pittsburgh and was living with roommates who were in some of the same classes as me, which I really appreciated. Being able to collaborate with one of my roommates on psets in person was an invaluable experience.
The standout classes for me this semester were Math Studies Algebra I and Undergraduate Complexity Theory (UCT). At this point I had been in the same classes as all the Math Studies people for 2 semesters and the class was small so we got to know each other and the professor very well. Some of my favorite topics were Sylow groups and factorization, and the class provided background for Math Studies Algebra II which I enjoyed much more in terms of content. UCT was taught by Professor Venkat, who is one of my favorite CMU professors. I decided to take this class after enjoying his lectures in 15-252 and I did not regret it at all (disclaimer: the class is very different depending on professor so my experience is not necessarily indicative of UCT with another prof). The class was challenging and fast-paced and we covered lots of interesting topics. I personally enjoyed it as someone who knew at this point that they wanted to do research in theory, but its not for everyone and I would not recommend it to someone who just wants to finish a graduation requirement or get a chill intro to complexity theory.
- 15-213: Introduction to Computer Systems
- 15-451: Algorithm Design and Analysis
- 15-259: Probability and Computing
- 21-238: Math Studies Algebra II
Extracurriculars: TA for 15-251
While I enjoyed all my classes this semester, in hindsight I took too large of a workload and would choose to take fewer classes if given the choice again. For context, I chose to take such a busy schedule because I wanted to finish the graduation requirements which are typically taken sophomore year (15-213) while also taking classes which would give me the background to start theory research and take grad classes in the fall (15-451 and 15-259). I also did not want to drop the Math Studies track because I really enjoyed the material and the class had become a close knit social group with our weekly pset discussion sessions being one of the highlights of my week. I decided to take all four classes, and this is not something that I would recommend. I was working from deadline to deadline the entire semester. I also did not have enough time to put into TA’ing as I would have liked.
I was dreading taking 15-213 as I am not a systems person, but I was pleasantly surprised by how much I enjoyed the class. While the labs were very time consuming I learned a lot and it was a very valuable experience for helping me build my debugging skills. I also had a great time in 15-259 which is one of the most iconic CMU CS courses due to the professor, who has so much enthusiam and passion for the material (it’s honestly contagious!). While I liked 15-451 as an interesting overview of algorithms, I think that I could have succeeded in grad classes and research without taking the class. Its an excellent overview of algorithm design but it is possible to take grad classes such as approximation algorithms without taking 15-451 (and I think 15-259 was much more important background for these classes).
By far my favorite class this semester was 21-238 (Math Studies Algebra II). The content was interesting and I had many great discussion with classmates over not only problem sets but also other random questions that came up when we were discussing lecture content. Galois theory is the most conceptually challenging topic I’ve seen at my time in CMU and while I certainly understand much more about it than the beginning of the semester I still have very poor intuition and am trying to wrap my head around it. This class was very challenging but also rewarding and I miss the amazing community that is Math Studies.
- 15-854: Modern Approximation Algorithms
- 15-859: Algorithms for Big Data
- 07-300: Research and Innovation in Computer Science
- 15-317: Constructive Logic
Extracurriculars: TA for 15-251, Flutonium
This was a very fun semester as I started taking grad level cs theory classes. My two grad classes (approx algorithms and algorithms for big data) were my two favorite classes this semester. Modern Approximation Algorithms was taught by Anupam Gupta and Pravesh Kothari, who are two of my all time favorite CMU professors. They are both excellent lecturers and the content was very closely aligned with my research interests. I really enjoyed the class and am currently working with Pravesh for my independent study! I also really liked Algorithms for Big Data despite debating dropping it several times during the first couple of weeks. Professor Woodruff is super passionate about the material and although at first I was intimidated by the final project (which required either a literature survey of existing research or original work), he offered us lots of support and was very available to discuss potential research directions. Our project was in adversarial robustness and although I had essentially no background in the area going in I grew a lot working on the project and it was a great learning experience. The class is definitely very dense and the problem sets are challenging but I highly recommend it to people who are willing to put in the time (note: you should have a solid background in probability and linear algebra going into this class and its not something that you can really pick up as you go along).
The other two classes I took this semester were for graduation requirements. I personally did not enjoy 07-300 as I felt like the class was poorly structured for research in CS theory and better suited to research in areas such as systems and ML. However, I think it would be useful for people who are struggling to get into research and want more scaffolding. Clogic (15-317) was a graduation requirement for me and it was not a bad class but I found that whenever I was working on problem sets for clogic I just wanted to be either reading papers or doing psets for one of my two grad classes.
- 15-751: Theorists Toolkit
- 76-221: Books You Should Have Read By Now: Fantasy and Mythology
- 80-330: Ethical Theory
- Research Independent Study
Extracurriculars: TA for 15-251