Here are my thoughts on the courses I took or audited during my second semester at CMU.

On Grading at CMU

I received straight A’s again this semester. However, I’ve noticed some peculiar aspects of CMU’s grading system.

Graduate students in the Carnegie Institute of Technology (College of Engineering) cannot receive A+ grades in transcript even if they scored A+ in a class not offered by CIT, capping their GPA at 4.0. Since an A+ is worth 4.33 on the GPA scale, graduate students in other colleges can offset an A- with an A+ to maintain a 4.0, whereas engineering students cannot. This policy likely stems from CIT being CMU’s oldest and original college, preserving a traditional grading system without A+ grades.

Another notable quirk: undergraduate students are not graded on a +/- scale. An A- is rounded up to an A (beneficial), while a B+ is rounded down to a B (penalizing). This rounding disproportionately affects students at grade boundaries.

This stands in contrast to my undergraduate institution, where grades were explicitly curved: only around the top 10% received an A, and roughly no more than 25% received an A- or above, independent of absolute performance. This system—nicknamed the “"bell curve god"”—is infamous, and it tends to anchor the average somewhere around a B (about 3.5 out of 5).

This approach has several consequences: it incentivizes competition over collaboration; it pushes instructors to tune exam and assignment difficulty to hit a target distribution rather than reflect actual performance; and it produces systematically lower grades than a more absolute-cutoff approach (CMU courses commonly publish fixed cutoffs, e.g., 90%/92% for an A in undergrad/grad, though it varies by course).

Overall, I find CMU’s grading philosophy more conducitive to learning. The difference is that grades aim to measure whether student learned the material, not where one is ranked relative to everyone else.

18-741 Computer Networks

Beyond what’s typically covered in a standard computer networks course, 18-741 delved into topics like modulation, error detection and correction, and digital signal processing in the physical layer; wireless communication and channel coding in the data link layer; and other topics including BGP, SDN, network security, and 5G. This made me realize just how vast the field of computer networking truly is.

15-618 Parallel Computer Architecture and Programming

An excellent deep dive into parallel computing, covering both computer architecture and parallel programming models and paradigms. Topics span from low-level hardware (cache coherence, memory consistency) to high-level abstractions.

Assignments are challenging and require both algorithmic thinking and low-level optimization. Profiling and debugging parallel code takes time. The final project is open-ended and can be as ambitious as you want.

15-746 Storage Systems

A comprehensive course covering the full storage stack, from physical hardware (flash SSDs, disk drives) through file systems and distributed architectures to modern challenges in AI workloads. Topics include disk arrays, RAID, distributed file systems, and scalable storage systems.

15-779 Advanced Topics in Machine Learning Systems (LLM Edition)

An excellent dive into modern ML systems with a special focus on Large Language Models. The course covers the full stack—from GPU architecture and CUDA programming to ML compilers, parallel deep learning, and LLM serving systems.

98-008 Introduction to Rust Programming Language

A great introduction to Rust with well-designed weekly assignments. The workload is moderate but steady throughout the semester.

14-642 Embedded Systems

This class is lesser known since it’s not offered by SCS, but it’s excellent and underrated. It’s more of an Operating Systems class and involves building a Real-Time OS from scratch through 20+ exercises starting from Bare-Metal C and ARM Assembly. The professor also wrote a book (not published yet) for the class.