CMU Courses
I took inspiration for this blog from Max Slater
A shortlist of selected coursesSpring 2024

15210: Parallel and Sequential Data Structures and Algorithms
 I actually enjoyed that this course discussed the practical elements of computation such as granularity control and more systems level topics.
 I also found the course's emphasis on developing parallel algorithms to be an interesting departure from purely sequential algorithms.
 I found the topics discussed actually important and quite fundamental knowledge a CS student should know.
 The TAs and professors (Sleator and Acar) were not always on the same page which meant the tests did not always meet students' expectations.

15259: Probability and Computing
 The course material is very well prepared and makes learning probability really easy.
 Mor and Weina finalized a textbook, which used to be course notes, and the book is absolutely all you need to succeed in this course.
 Compared to 21325 version, this class is more applicable as for example, PnC does not discuss Sigma fields. I actually quite enjoyed this approach and saw its applications in computing to be interesting.
 Overall, the lectures were very clear, and the course was super well run overall.

: 15311: Logic and Mechanized Reasoning
 I was really excited to dive into the world of SAT solvers and decide the satisfiability of problems, and I think this course made me realize while useful and powerful, I won't take further classes in this domain.
 Overall, I found the topics to be less interesting than I expected as lots of effort was focused on transformations and proofs I didn't quite see the beauty in.
 Marijn and Jeremy were really great and clearly cared about the course a lot.
 My favorite parts of the class were encoding problems into SAT/SMT solvers, and having the SoTA solvers make light work of them. These assignments made me appreciate the applicability of such technologies.
 I really liked seeing an actual example of software verification.

18095: Getting Started in Electronics: An Experiential Approach
 I originally took this course to take care of a science requirement with the lowest FCE, but I actually learned quite a bit!
 I found the course to be a needed change up in my schedule by physically building circuits as opposed to just math+CS work.
 The course staff and Tom Zajdel were absolutely amazing and really supportive! Being surrounded by software people all the time, it was nice to learn about people approaching computers from a lower level.
 For the Final Hack, there were quite a few really cool projects!

15311: Abstract Algebra (Dropped)
 I actually enjoyed the first few weeks of course a lot and found all the topics to be beautiful abstractions.
 At some point, I became lost by the loads of terminology in the course (there's a lot) and found myself unable to keep up without significant correction.
 While I do find the topics interesting, I wouldn't take it expecting ~10 hours of work a week with Bukh teaching it unless you already have a preexisting background in abstract algebra.
Fall 2023

11785: Introduction to Deep Learning
 This course demands a considerable amount of time. I recommend the graduate version only if you can form a cohesive group, possess prior experience, and are selfsufficient in managing the coursework.
 Although labeled as "practical," the lectures, quizzes, and HW P1s effectively cover theoretical aspects. Expect to dedicate significant time to weekend quizzes, which I found challenging. Attending hackathons or collaborating with a group can significantly aid in tackling these quizzes.
 Be prepared to spend significant time on quizzes on weekends. I found the quizzes to be quite challenging, but attending the hackathons, or having a group to work with can help immensely.
 HW P2s are engaging during implementation. However, achieving the high cutoff requires delving into papers or seeking architecture hints from TAs, followed by experimenting with various configurations. This experimentation can be somewhat tedious.
 The final project offers a great opportunity for exploration, but choose a feasible topic within the onemonth timeframe to avoid a hectic final week. The mentorship quality varies, so being adept at finding online resources can be crucial.

15213: Introduction to Computer Systems
 If you do any serious programming, I highly recommend taking this class.
 The TAs were incredibly knowledgeable and supportive. They were also the most enthusiastic TAs I've encountered in any class I've taken.
 The inital assembly labs I found quite challenging given differing syntax inclass vs. online resources.
 To do well in this class and save hours of pain, simply planning out your design should be sufficent. If this doesn't get you 100% of the way there, adding invariants to your code will do so.
 This class exposes you to fundamental topics like Cybersecurity, Memory Management, Caching, Networking, and more.

21355: Real Analysis
 The class starts about a bit slow, but I found the ideas to be more engaging come the end of the semester.
 On some occasions, the problem sets could be quite challenging and would require using arguments that are far from straightforward.
 The instructors teaching this semester were good, but be wary the quality of any math class highly depends on the professors unlike CS classes.

80101: Dangerous Ideas
 I like the idea of this course and the structure of arguments.
 Occasionally, I found some ideas discussed to be overly abstract for me to care debating about the topic.
 This course tends to be popular among students, as noted in course reviews.
 The workload is relatively minimal for a gened course.
Spring 2023

15150: Principles of Functional Programming
 This class frames new and many problems from 15122 in a recursive manner.
 Learning how to formally compute time complexity with work and span calculations was one of my favorite topics.

15251: Great Theoretical Ideas of Computer Science
 The problem sets are SUPER interesting. Definitely start them early.
 Prof. Ada and Prof. Gupta were a great duo this semester.
 The bonus lectures are worth attending.
 I would learn more from writing my homework instead of the Homework Writing Sessions at night.

21266: Vector Calculus for Computer Scientists
 If you want an even more formal view of Calculus, I recommend the math options offered
 Clive Newstead is a great instructor, and the class was very well organized

79262: Modern Chinese History
 This class with Prof. Benno Weiner is worthwhile if you are genuinely interested in Modern Chinese History.
 This course does have a reasonable workload and a fair bit of reading.

84110: Foundations of Political Economy
 I recommend taking the standard Micro/Macro Economics course. They have a more developed curriculum.
 Not the most organized class.
 The political topics in this course are mildly intriguing and briefly discussed in some 15251 bonus lectures.
Fall 2022

07131: Great Practical Ideas in Computer Science
 TAs were super cool to hang around and friendly when assisting with the labs.
 This class should definitely be taken if you don't have experience in Vim, Regex, or Git.

15122: Principles of Imperative Computation
 The class gives a good foundation in Data Structures and Algorithms.
 The leaderboard on Autolab added a fun competition to completing programming assignments and bonuses quicker than your classmates.
 I noticed less content was covered than in previous years due to the addition of Fall Break, which I was mildly disappointed about.
 Take advantage of Diderot rather than office hours for simple questions. You can save hours of time!

15151: Mathematical Foundations for Computer Science
 This class is well organized with good coordination between TAs and Mackey. There were only occasional issues where content due for the Problem Set was introduced the day before its due date.
 I had a great pair of TAs which made learning the content in recitations enjoyable.
 The course has fair grading, and performance on tests is weighted correctly. Admittedly, knowing competition math gives you an advantage as lots of content will be review.

21241: Matrices and Linear Transformations
 The CSversion of 21241 and nonCS 21241 have the same course number, but the quality of the class varies significantly. Talking with peers in the other section, the CS version covers far more content and is far superior. I hope this issue is addressed and that both classes have the same quality and rigor.
 Since I took Linear Algebra in High School, the first half of this course was mostly review. Towards the end of the class, there was a much higher focus on applications which was interesting to learn.
 The class has a final project which gives the opportunity to further explore a linear algebra topic of your choice. I found this aspect to be the most enjoyable of the class. Make an effort to pick an interesting topic!

21295: Putnam Seminar
 It is rewarding to solve the problems on the practice sheet after a couple of hints and time.
 As I had little competitive math experience in High School, I enjoyed the opportunity to learn from my experienced peers.
 If you want to improve at Putnam, I recommend attending the optional Tuesday and Sunday sessions.

76107/76108: Writing about Data / Writing about Public Problems
 These classes were normal freshman writing classes.
 Listening to my peers' experiences in 76101, I did the right choice taking the minis.
 I enjoyed 76108 more than 76107 because the end of 76108 allowed me to write a proposal related to something at CMU. I took the chance to research and write about CMU's grading system.