CMU Course Reviews

This is the mandatory CMU course review page. Be aware that the following reviews are highly opinionated, your mileage may vary, and course instructor/content may change, so please check with other sources (e.g. Faculty Course Evaluation data) before registering.

Timeline

Year Fall Spring
2020-2021 15122 18100 15251 15252
2021-2022 15150 18220 15210 18213 18310
2022-2023 15418 18240 18370 15411 18290 18349
2023-2024 18422 18746 15445 18525
2024-2025 15605 15814 18726 TBD

ECE Classes

18310: Fundamentals of Semiconductor Devices

310 is a must-take class at CMU, as long as you are an ECE student. Imagine how bad it is to join some silicon initiative by a fruit company, or write matrix multiply computer programs, without understanding how sillicon, pn-junction, and transistor work. And it’s taught by the best professor at CMU! This class is also extremely useful for subsequent digital and analog circuit classes.

18349: Introduction to Embedded Systems

I’m not sure about this one. While it talks about many interesting stuff in ARM architecture, on the other hand, spending one semester learning a bunch of IO standards might not worth your time, and the projects are too easy (maybe <100 LOC?)

18370: Fundamentals of Control

This is a good course if you like control systems. The professor is really nice.

18422/18622: Digital Integrated Circuit Design

Welcome to the SRAM project! This is the digital IC course at CMU, so you can’t miss it if you want to do hardware. And you’ll get to know the professor and the course mascot.

18525/18725: Advanced Digital Integrated Circuit Design

This is a project course - design your digital/analog IC, a fruit company will pay for your chip tapeout (remember the silicon initiative?) and give you some gift.

15746/18746: Storage Systems

This is a software system class (crosslisted as 15746). Course content is pretty interesting (flash, SSD, hard drive, filesystems), and projects (SSD flash translation layer + cloud filesystem) are awesome.

CS Classes

15411/15611: Compiler Design

This course has 15 units. The workload is large, but it is 100% worth your effort. The course project is writing a compiler from (almost) scratch, and 411 goes over everything from frontend to backend. The professor is great, and the course content will be interesting to both systems and programming languages people.

15418/15618: Parallel Computer Architecture and Programming

This class teaches high-level parallel architecture (things above ISA) mostly from a software perspective. It does teach some architecture knowledge (cache coherency) but it’s not a computer architecture class (like 18447). The projects (SIMD, CUDA, MPI) are very interesting and useful for learning the abstracted architecture and doing performance optimization.

15445/15645: Database Systems

I find the database project a bit disappointing - they give you some starter code that has almost everything working, and only left out a few simple, unimpressive modules for you to implement (such as some random linked list and hash tables). As the result, students don’t get to implement most of the content from lectures, which is not great.

15410/15605: Operating System Design and Implementation

In progress

15814: Types and Programming Languages

In progress