Courses @ CMU

Foreword

The following is inspired by the many other CMU course reviews out there on the internet. Just search “cmu course reviews”, and you can find pages like this. However, pretty much every other site you will find will be from a CMU SCS student/alum.1 I have yet to see a course review post from a CMU ECE student/alum. Maybe this will inspire people to make more! 🤞


Key

These emojis act as qualifiers to describe my experience with each class.

  • ⭐️: Transformative. It gave me a perspective-change.

  • ❤️: Loved/enjoyed. I had a fun with this class.

  • ‼️: Time-consuming. Conceptually hard, and/or just lots of work.

I’ve included the number of units next to each course, and for additional context, I’ve included the average workload in terms of hours as reported by students in Faculty Course Evaluations (at the time of writing). These hours are an underestimate, since they do not include things like TAing and research. I’ve also included a list of any other commitments I had during each semester. The commitments are listed in descending order of impact. Lastly, I’ve left a small blurb under some semesters describing how I felt about the semester/workload.

Some semesters, especially the earlier ones, are missing these details, mostly because I’ve shut them out forgotten them. The COVID years were terrible for me.

Here is what I tentatively have planned for next year (my IMB year).

Fall 2024 (Upcoming)

  • 18-622 Digital Integrated Circuit Design

  • 15-749 Computing After CPUs: Recent Research in Non-Von Neumann Computer Architecture

  • 17-715 Advanced Topics in Hardware Security

  • 18-640 Hardware Arithmetic for Machine Learning (tentative)

  • Research?

  • (TA) ???

Spring 2025 (Future)

  • 18-725 Advanced Digital Integrated Circuit Design

  • 18-742 Computer Architecture and Systems

  • ???

  • Research?

  • (TA) ???

Here are my thoughts on the courses that I have taken.

Spring 2024

  • ⭐️ ‼️ 15-411 Compiler Design (15)

    • Not too challenging conceptually, but it was an engineering nightmare to put together so much code from scratch. By the end of the semester, we were able to cobble together a compiler and runtime environment that in principle performed mark-and-sweep garbage collection on top of implementing the C0 language.
  • 18-341 Logic Design and Verification (12)

    • Took this for extra SystemVerilog practice. I personally did not find verification interesting, but SV has some nifty constructs. I was chilling in the class until USB.
  • 18-500 ECE Design Experience (12)

    • My salty, reductionist take on what happened to my team: set ourselves up for Icarian failure by choosing a very difficult project, failed to get early enough feedback to bring us back down to earth, grinded ourselves to the bone just to get something barely working at the end, with lots of busy documentation work interspersed.
  • 85-241 Social Psychology (9)

  • (Research) Application-Based Fault-Tolerance, Radiation Hardening, Floating-Point ($)

FCE Hours: 56, definitely was at least 56.

Other Commitments: Gym 5-6x a week (until the last quarter of the semester), SO time, some social life (in the first two thirds), a spring break trip (do not regret despite the later pain).

Workload: The highest I have ever experienced. This semester there were probably 10ish days where I effectively did not sleep (1-2 hours max, I can’t operate with truly zero sleep). Call it cognitive dissonance and justification of effort, but in this semester I feel I learned the most I ever have despite the suffering. I do not regret going through the struggle.

Fall 2023

  • ⭐️ 18-740 Modern Computer Architecture and Design (12)

    • Conceptually interesting. It was the first time I was properly exposed to out-of-order execution. The labs could be a lot better, since I did not gain much insight from them. Logistically, the class could have been run a lot better (more TAs were definitely needed).
  • ‼️ 18-643 Reconfigurable Hardware (12)

    • On first glance, this class looks like a class on FPGAs and HLS. However, much of the lecture content covers those topics, but the labs make this class a hardware design and optimization class in disguise. It was painful to use Vitis HLS, but otherwise I learned a lot about hardware design (a tool-agnostic skill).
  • ❤️ 18-220 Electronic Devices and Analog Circuits (12)

    • Fundamental, and Professor Budnik made it very enjoyable.
  • 82-137 Chinese Calligraphy: Culture and Skills (9)

    • Fun and chill.
  • 66-221 Topics of Law: Introduction to Intellectual Property Law (9)

    • Comically chill. Like, too chill. Like, “should this class even be offered” chill.
  • 98-154 Stuco: Intro to Open-Source FPGA & ASIC Chip Design (was not registered, I just showed up lol)

  • (Research) 18-580 Application-Based Fault-Tolerance, Radiation Hardening, Floating-Point (9)

  • (TA) 18-344 Computer Systems and the Hardware-Software Interface

FCE Hours: 45, felt like 55

Other Commitments: Gym 5-6x a week, running 1x a week, SO time, internship search

Workload: High, mainly because of 643 + TAing + research.

Spring 2023

  • ⭐️ ❤️ 18-447 Introduction to Computer Architecture (12)

    • Solidified my love for computer architecture after 344. Built a superscalar RISC-V core. My project group came in second in both (performance and performance-per-watt) categories!
  • 18-349 Introduction to Embedded Systems (12)

  • 79-204 American Environmental History (9)

  • ❤️ 79-211 Modern Southeast Asia: Colonialism, Capitalism, and Cultural Exchange (9)

  • (Research) SPIRAL: Modular Arithmetic, Finite Fields, and Encryption

    • After this semester of research, I requested Prof. Franchetti to change my research project. I tried my best to learn the math, but it did not inspire me, and so I struggled to make progress.
  • (TA) 18-213 Introduction to Computer Systems

FCE Hours: 43, felt like 48

Other Commitments: Gym 5-6x a week, running 1x a week, SO time, stressing about summer

Workload: Moderate. 447 became more intense (and fun) at the end. So did 349. The gen-eds balanced out the heavier technicals well.

Fall 2022

  • ⭐️ ❤️ 18-344 Computer Systems and the Hardware-Software Interface (12)

    • Pivotal. This class put me on the path of computer architecture/systems and hardware.
  • 18-290 Signals and Systems (12)

  • ❤️ 10-301 Introduction to Machine Learning (12)

  • 76-270 Writing for the Professions (9)

  • 98-043 StuCo: Chess Tactics and Strategy (3)

  • (Research) SPIRAL: FFT Integer Multiplication w/ Interval Arithmetic

  • (TA) 18-213 Introduction to Computer Systems

FCE Hours: 44, felt like 48

Other Commitments: Gym 5-6x a week, SO time

Workload: Moderate.

Spring 2022

  • ‼️ 18-240 Structure and Design of Digital Systems (12)

    • 240 was a struggle for me; I did not understand how cool hardware could be until I got to later courses.
  • ⭐️ 15-150 Principles of Functional Programming (12)

    • Opened my mind to a different way to program. This class proved useful to me later on in both learning Rust and taking Compilers.
  • 36-226 Introduction to Statistical Inference (9)

    • Why the heck did I take this class?
  • 15-281 Artificial Intelligence: Representation and Problem Solving (12)

  • 98-008 StuCo: Shilling The Rust Programming Language (3)

    • My first introduction to Rust. I did not appreciate it as much as I do now because of how tough the other classes were on me.

FCE Hours: 50. At this time in my undergrad, I was not ready for 50.

Other Commitments: Gym, club frisbee, intramural basketball, social life

Workload: Should have been moderate—or with the right focus, even a light workload—but for a variety of reasons it was a heavy load. This semester served as a wakeup call for me to reflect on what my priorities are.

Fall 2021 (first time @ Pitt)

  • ⭐️ 18-213 Introduction to Computer Systems (12)

  • 36-225 Introduction to Probability Theory (9)

  • 21-241 Matrices and Linear Transformations (11)

  • 73-102 Principles of Microeconomics (9)

FCE Hours: 43, felt like 43

Other Commitments: Running and gym, club frisbee, social life

Workload: Light/moderate

Spring 2021 (remote @ home)

  • 15-122 Principles of Imperative Computation (12)

  • 18-100 Introduction to Electrical and Computer Engineering (12)

  • 76-101 Interpretation and Argument (9)

  • 21-127 Concepts of Mathematics (12)

Other Commitments: Track training, gym, and this time, actually zero social life.

Comments: My worst semester “at” CMU, and probably the worst experience of my life.

Fall 2020 (remote @ home)

  • 21-259 Calculus in Three Dimensions (10)

  • 15-112 Fundamentals of Programming and Computer Science (10)

  • 24-101 Fundamentals of Mechanical Engineering (12)

  • 39-109 Grand Challenge Freshman Seminar: Climate Change (9)

Other Commitments: Track training, gym, and no social life except for my one hometown friend Evan who was also stuck at home like me.

Comments: Although I was bummed to be at home, the novelty of Zoom college had not worn out.

Acknowledgements

I would like to give special thanks to my good friend Evan Rovelli who read over this post and gave me suggestions.


Footnotes

  1. Here are some of my favorites course reviews: 1 2 3 4