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