# CMU Course Reviews

I took inspiration from 1, 2, and 3.

## Junior Year

### Fall 2023 (51 units in plan)

- 10-714 Deep Learning Systems: Algorithms and Implementation (12 units)
- a free online version is available

- 15-418 Parallel Computer Architecture and Programming (12 units)
- 17-363 Programming Language Pragmatics (12 units)
- 07-300 Research and Innovation in Computer Science (9 units)
- 80-101 Dangerous Ideas in Science and Society (9 units)
- 15-462 Computer Graphics (TA)

## Sophomore Year

### Spring 2023 (48.5 units)

- (A💗) 15-440 Distributed Systems (12 units, 15hrs/week)
- 4 projects over the semester
- Transparent Remote File Operations
- File-Caching Proxy
- Scalable Web Service
- Two-phase Commit System

- 4 projects over the semester
- (A) 10-701 Introduction to Machine Learning (PhD) (12 units, 8hrs/week)
- light workload - once you understand the math, homeworks and exams are pretty straightforward
- if you want a master in ML at CMU, you should consider taking this rather than taking 10-315 + 15-281

- (A) 15-451 Algorithm Design and Analysis (12 units, 9hrs/week)
- the last core course of CS degree
- it teaches some advanced data structures and algorithms not that often used in job interviews, such as splay tree, segment tree, network flow
- some other topics are fun to know - linear-time selection, concrete models and tight bounds, amortized analysis using potential functions, hashing, streaming and fingerprinting, dynamic programming, zero sum games, linear programming, mechanism design, approximation algorithms, online algorithms, multiplicative weights algorithm, computational geometry, FFT, polynomials

- (A) 76-108 Writing about Public Problems (4.5 units, 5hrs/week)
- the other half of first-year writing requirement

- (A) 09-101 Introduction to Experimental Chemistry (3 units, 5hrs/week)
- I took it to fulfill lab requirement, because in this way I’d have to take 18-240 Structure and Design of Digital Systems in the future (so that I can learn more about ECE) to fulfill science and engineering requirement of CS degree
- 33-104 Experimental Physics is a much more popular choice

- (A) 15-195 Competition Programming I (5 units, 4hrs/week)
- (dropped) 15-317 Constructive Logic (9 units)
- contents are boring to me

### Fall 2022 (51 units)

- (A💗) 15-462 Computer Graphics (12 units, 15hrs/week)
- 4 projects over the semester
- Rasterization
- Geometry Processing
- Ray Tracing
- Animation

- Overall, I find the course interesting and hard
- Fall 2022 15462 had been through a series of reconstruction during summer 2022, so I find the instructions unclear sometimes (but now it’s a lot better). Few testcases were available to us by the time I took it, and we students wrote testcases and shared on piazza.

- 4 projects over the semester
- (A) 15-210 Parallel and Sequential Data Structures and Algorithms (12 units, 10hrs/week)
- the algorithms and data structures are taught in Standard ML (which enables us to explore more parallelism in algorithm design)
- homeworks are fun, forces us to think about the maximum parallelism possibile
- topics includes
- algorithm analysis (asymptotics, cost models, recurrences)
- probability theory -> randomization
- sequences -> algorithm design (divide and conquer, contraction, maximum contiguous subsequences)
- binary search trees (parametric BSTs, Treaps, Augmented BSTs) -> sets, tables, priority queues
- dynamic programming
- graph -> graph search, shortest paths, graph contraction, minimum spanning trees

- (A) 21-370 Discrete Time Finance (9 units, 9hrs/week)
- I don’t enjoy it that much and decided to postpone 21-420 (the last course of the computational finance series) to junior spring

- (A) 21-355 Principles of Real Analysis I (9 units, 9hrs/week)
- it’s not as interesting as I thought, although I really like the proofs that requires certain mastery over the materials and some clever constructions
- after taking this course, I decided not to pursue math additional major because I don’t think math is very related to what I want to do in the future, and a math major (with no honors course) is not challenging enough for me

- (A) 36-218 Probability Theory for Computer Scientists (9 units, 5hrs/week)
- a trash course - don’t take unless you want to take machine learning sophomore spring and don’t want to take the math version (21-325 - Probability)
- a much better choice is to take 15-259 (Probability and Computing) which is only offered in spring

## Freshman Year

### Summer 2022

- (A) 15-213 Introduction to Computer Systems (12 units, Summer All)
- malloc lab is my favorite (my computer broke down on the due date)

- (A) 73-102 Principles of Microeconomics (9 units, Summer 2)
- (A) 21-260 Differential Equations (9 units, Summer 1)
- I took it because it fulfills math requirement and 21-420 pre-req, and I thought I was gonna do a math additional major

### Spring 2022 (47.5 units)

- (A💗) 15-150 Principles of Functional Programming (10 units, 10hrs/week)
- Welcome to functional programming and Standard ML

- (A💗) 15-251 Great Ideas in Theoretical Computer Science (12 units, 10hrs/week)
- Welcome to CS251

- (A) 18-100 Introduction to Electrical & Computer Engineering (12 units, 15hrs/week)
- (A) 21-270 Introduction to Math Finance (9 units, 6hrs/week)
- this it the first course of the computational finance series

- (A) 76-107 Writing About Data (4.5 units, 5hrs/week)
- half of first-year writing requirement
- Instructor Yishan Wang is chill

- (dropped) 76-106 Writing about Literature, Art and Culture (4.5 units)
- I had to drop because my topic was about diasporic literature, and I found the readings way too hard to comprehend (partly because I wanted to understand every sentence of the reading)

### Fall 2021 (51 units)

- (A) 15-122 Principles of Imperative Computation (10 units, 10hrs/week)
- It teaches fundamentals of programming and how we do analysis about programs (e.g. loop invariants, amortized analysis, asymptotic complexity analysis …)
- basic programming concepts and data structures: arrays, big O, libraries, memory management in C, generic pointers & data structures, graph representation
- basic data structures: stack, queue, linked list, unbounded array, hash dictionary, binary search trees, balanced trees (AVL tree in particular) priority queue, heap,
- basic algorithm: binary search, quicksort, libraries, stack, queue, linked list, hashing, depth-first search

- I didn’t learn much in 15-122 since I was already familiar with the course materials

- It teaches fundamentals of programming and how we do analysis about programs (e.g. loop invariants, amortized analysis, asymptotic complexity analysis …)
- (A💗) 15-151 Mathematical Foundations for Computer Science (12 units, 9hrs/week)
- (A) 21-259 Calculus in Three Dimensions (9 units, 4hrs/week)
- very standard multi-calc course
- I’ve taken similar course in high school, so I only took 4 hours per week to finish the homework

- (A) 21-241 Matrices and Linear Transformations (9 units, 8hrs/week)
- I took the SCS version taught by Prof. David Offner which covers a lot more topics than the math version, very useful for ML courses
- matrix arithmetic, Gaussian elimination, LU decomposition, Gauss-Jordan algorithm, Vector spaces, RREF, 4 fundamental subspaces, Rank-nullity theorem, Projections & Least squares approximation, Gram Schmidt algorithm, QR factorization, Error correcting codes, Hamming code, Markov matrices, Spectral theorem, singular value decomposition, principal component analysis, low rank approximation, Compression : Fast Fourier Transform

- I wrote a final project paper with Lucy Mo
- More aspiring students should consider taking the honors version 21-242 Matrix Theory and then 21-269 Vector Analysis in freshman spring

- I took the SCS version taught by Prof. David Offner which covers a lot more topics than the math version, very useful for ML courses
- (A) 76-100 Reading and Writing in an Academic Context (9 units, 6hrs/week)
- As long as you put in some efforts, you’ll get a decent grade

- 07-131 Great Practical Ideas for Computer Scientists (2 units, 2hrs/week)
- 07-128 First Year Immigration Course (1 unit, 1hr/week)

## Pre-Uni

### Misc Courses

- (NP) 15-051 Discrete Math Primer
- I failed it because I didn’t finish the material
- It’s related to

- (P) 99-101 Computing @ Carnegie Mellon
- You have to watch videos and read paragraphs to answer questions about what you should and should not do with CMU’s computing resources

### Advanced Placement Credit

- 15-112 Fundamentals of Programming and Computer Science (AP CSA 5)
- 21-120 Differential and Integral Calculus (AP Calc AB 5)
- 21-122 Integration and Approximation (AP Calc BC 5)
- 33-141 Physics I for Engineering (AP Phy C Mechanics 5)
- 36-200 Reasoning with Data (AP Statistics)
- 09-105 Introduction to Modern Chemistry I (AP Chemistry 5)
- 73-011 AP Economics (AP Microeconomics 5 & Macroeconomics 5)