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 asymmetric rounding disproportionately affects students at grade boundaries.

At my undergraduate institution, grades followed a bell curve where only roughly the top 10% received an A, not more than 25% for A- or above, and top 40% for B+, regardless of absolute performance. This system—so called the “bell curve god"—is infamous, which achieves an average of B grade around 3.5 out of 5.

The effect is detrimental in several ways. First, it creates competition rather than collaboration—students compete for limited A slots instead of helping each other learn. Second, exam questions are often artificially tweaked, or grading schemes are adjusted downward, solely to maintain the desired target distribution. Third, undergraduate grades are significantly lower at NUS than at CMU and other private US institutions.

Overall, CMU’s grading philosophy is much more conducive to learning. CMU’s courses, taught by world-class professors, cover challenging and rigorous material that demands deep understanding. Even with a higher percentage of students earning A’s, it reflects students genuinely understanding high-caliber content, not a lowering of academic standards.

18-741 Computer Networks

Having taken a networks course as an undergraduate and reviewed UC Berkeley’s CS168 materials over the summer, I was surprised by how much of the material was still new to me. 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.

18-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.