Reflecting on Courses at CMU
Pictured: A double rainbow by Scaife Hall during my first week at CMU.
As a way to share a small slice of my undergraduate life, and for my personal record, I’ve committed myself to writing a reflection on every course I take at Carnegie Mellon University (CMU). This article will be updated at the end of every semester and will evolve alongside my time here. My hope is that future students, colleagues, or anyone curious might find these reflections helpful or relatable, or at least gain a clearer view into one student’s experience navigating CMU.
Where I’m Coming From
Prior to arriving at CMU, I had substantial programming experience through personal projects and coursework at other universities, including UC Berkeley. I also came in with a solid foundation in introductory statistics and calculus, along with additional transfer credits from Advanced Placement exams and other institutions.
A Note on Perspective
Please note that my ratings and reflections are subjective. They reflect my experiences based on my background mentioned above. These will not be the same for everyone.
I also want to add that my schedule is not a standard course sequence, or even one that I recommend for that matter. I took courses with significantly more units than what most students do in their first year, and at times, I had to jump through hoops to make scheduling choices that most advisors and professors would otherwise not approve for typical students. This is just one of many paths an ambitious student can take at CMU.
To CMU students: Please consult your advisor and consider your own background and interests when planning your courses. Your college experience will be different—and that’s okay! Forge your own path, and define success on your own terms.
Fall 2025
| Course | Units | Difficulty | Workload |
|---|---|---|---|
| 15-122 Principles of Imperative Computation | 12 | ||
| 15-151/21-128 Mathematical Concepts and Proofs | 12 | ||
| 21-259 Calculus in Three Dimensions | 10 | ||
| 66-118 Grand Challenge Seminar: Reasoning With Evidence | 9 | ||
| 76-101 Interpretation and Argument | 9 | ||
| 21-295 Putnam Seminar | 3 | ||
| 98-008 Introduction to the Rust Programming Language | 3 | ||
| 99-101 Core@CMU | 3 |
Total units: 61 (52 factorable units)
-
15-122 is often considered the rite of passage at CMU because nearly all students take the course, making it one of the largest classes offered here. It was my first real exposure to CMU’s emphasis on the mathematical nature of computer science, particularly through the use of proofs in an intro course. I primarily interacted with Professor Anne, who delivered engaging lectures and was the most helpful in answering my questions. Contract proofs (early lectures) and graph algorithms (last few lectures) were new to me, but unfortunately, most of the other content felt like review. Despite my prior programming experience, however, the sheer workload—practice problems, programming assignments, and preparing for check-ins (weekly quizzes)—consumed a significant amount of my time. On a lighter note, it was always hilarious to see what kinds of memes students would post on Ed every day. The liveliness of the class discussion board made it a uniquely memorable experience.
-
15-151/21-128 (Concepts) was by far my most difficult course this semester. This was the first math course where I had to spend hours thinking about how to solve a single problem. Transitioning from formula-based high school math to proof-based mathematics, which requires a lot more creativity and deep reasoning, was a major challenge. Mackey is the iconic professor who teaches Concepts—he’s always carrying around a bottle of Diet Coke and going off on amusing tangents. Bill Kuszmaul was my second instructor, and I learned a great deal from his lectures, which tended to align more closely with the course material. While Concepts stretched me to my limits at times, I’m grateful that it helped develop my mathematical maturity and allowed me to see mathematics in an entirely new light.
(Note to CMU students: If you are not in SCS/MCS, you will likely take 21-127 instead.) -
21-259 felt like more of a test of my study habits than anything else. If you asked me mid-semester, I would have rated this course’s difficulty as much higher because of how I struggled in the first midterm. In hindsight, though, I think much of that difficulty stemmed from my own poor study habits. Visualizing complex shapes and vector fields in three dimensions was tough at first, but multivar as a whole wasn’t as conceptually challenging as other areas like discrete math. I recognize now that I neglected this course a lot until I crammed before the final, which really wasn’t the best way to retain the material. That said, I wouldn’t say I liked the course either: Evan O’Dorney is a solid lecturer, but the TA who led my recitation simply regurgitated problems from the textbook. I honestly felt like I learned more through self-studying than attending recitation (my grades even improved when I stopped going after fall break…). Additionally, since we were required to simplify our answers, some midterm problems involved a heinous amount of computation, which, while not conceptually difficult, felt extremely tedious and unnecessary. I have both myself and the course structure to blame for not liking multivar.
-
66-118 is a seminar course that combines introductory statistics with geospatial analysis in ArcGIS. Unfortunately, the first half of the course felt rather sluggish given my prior statistics background, and many of the exploratory data analysis assignments came across as repetitive busywork. That said, I enjoyed the latter half of the course, which introduced R for statistical tests and logistic regression. I also appreciated Professors Greenhouse and Benner, both of whom were friendly and approachable during office hours.
-
76-101 is the standard full-semester first-year writing course. I took it with Professor Gasson in a section themed Digital Selves and Social Systems: Inquiry through Research and Writing. Much of the course felt like a cycle of three low-stress weeks followed by a much heavier week (high-stakes essays and admittedly some procrastination), but overall it was very manageable. I highly recommend Prof. Gasson: she is deeply passionate about the subject and makes sure that everyone feels welcome in our “discourse community,” as she puts it. Beyond general writing skills, we explored AI’s societal impacts, with the main highlights being homogenization of expression, data colonialism, and identity in the digital age. I also developed a deeper appreciation for the readings after the course, particularly the idea that we live in different “windows” online and offline (those who know me on Discord can probably relate!).
-
21-295 is taught by perhaps the most famous professor here at CMU: Po-Shen Loh. Prof. Loh is an exceptional lecturer, and I would honestly attend his lectures for fun even if I weren’t enrolled in his course. I will caution, though, that finishing the homework can feel like a chore at times, especially approaching finals week. If you are interested in problem-solving but already have a heavy course load, I wouldn’t actually recommend enrolling at all. You can gain just as much by sitting in on lectures and working through the homework problems from the course website on your own time.
-
98-008 is the student-led introductory course on Rust. I’m a huge fan of the programming language, so when I found out that this course was offered at CMU, I had to take it! Sadly, aside from unsafe code, parallelism, and concurrency, I knew most of the course content already, so the lectures weren’t particularly engaging. However, I still found the homework assignments to be well-designed and interesting to think about. Take this course if you are unfamiliar with Rust and will do some programming in the future—it might just change your life!
-
99-101 was forgettable. The Canvas modules primarily assess reading comprehension, along with some mind-numbing (and often absurd) “social tests.” (Ask any student and they will complain about these!) I sped through the entire course over fall break and never looked back.
My first semester at CMU was far from a smooth ride, but I ultimately fared better than I had expected. I went through many ups and downs while acclimating to college life and balancing academics with research, clubs, and other responsibilities. In particular, performing poorly on my first midterms for 15-151/21-128 and 21-259 was a major wake-up call, and for the rest of the semester, I wasn’t sure whether I would be able to recover. Dealing with non-academic challenges (family, friends, illness, etc.) didn’t help at all either, and there were many moments when I wished I had more time to accomplish everything. However, to my surprise, I performed significantly better on my final exams and completely exceeded my expectations. I’m grateful to have found such a close group of friends, and I’m happy with how the semester turned out.
My main takeaways: I tend to perform much better on my finals than my midterms, probably due to longer time limits and more effective time management skills. I also learned that advanced mathematics isn’t my strong suit, especially proof-based math. I will be more cautious about taking multiple math-heavy courses simultaneously in the future.
Spring 2026
| Course | Units |
|---|---|
| 15-150 Principles of Functional Programming | 12 |
| 21-241 Matrices and Linear Transformations | 11 |
| 33-120 Science and Science Fiction | 9 |
| 36-202 Methods for Statistics & Data Science | 9 |
| 79-160 Introduction to the History of Science | 9 |
| 85-110 Cognitive Psychology | 9 |
| 05-180 Introduction to Human-Computer Interaction | 5 |
| 66-310 Reflecting on Experiential Learning | 1 |
Total units: 65 (64 factorable units, overloaded)
Check back later in May to see how I did!