Courses

Started:

This is a list of courses I have taken at CMU and what I thought of them.

Summer 2019 (Pre-college)

Summer courses are very fast paced, forcing you to keep up. Taking 2 CS core courses like this while in high school was probably the most difficult thing I had ever done till that point in my life. Luckily I made a few friends and we made it through. Definitely a realistic CMU experience and worth it, just keep in mind you basically won’t have any free time if you take these 2 courses together.

15-122 Principles of Imperative Computation - Anne Kohlbrenner

  • We were taught by Anne (former head TA) instead of Illiano. It was a good experience.
  • Class does a good job introducing C and its fundamentals. Relatively easy if you already know C.

21-127 Concepts of Math - John Mackey

  • Most CS majors take 15-151, which is basically the same class as 21-128, which is a slightly harder version of this class
  • All cover the same requirements (discrete math)
  • Mackey is really nice. He wrote me a LoR (which probably helped me get admission to CMU).

I loved pre-college despite the hard work and decided to ED to CMU on the road trip back home. The pandemic basically ruined Freshman year, so this summer was a good look into what it could have been like.

Fall 2020

Freshman year was very underwhelming and difficult due to Covid, I would have done things differently in hindsight, but I guess that literally is 2020. I was in-person in this semester, but almost everything was on Zoom and socially distanced.

07-128 Freshman Immigration - Tom Cortina & Veronica Peet

  • These are very nice people :) Veronica was also my advisor for pre-college

15-150 Principals of Functional Programming - Stephen Brookes

  • Functional programming is an important topic to wrap your head around (its also pretty cool), but it is quite a learning curve
  • Brookes is very knowledgeable (student of Tony Hoare), but not a great teacher. He says things are “dead easy” a lot even when its not always obvious to everyone.

21-241 Matrices and Linear Transformations - David Offner

  • Math class, not particularly fun

36-218 Probability Theory for Computer Scientists - Mikael Kuusela

  • Easy(ish) class for an A, but not very academically interesting
  • I thought the material was digestible only if you studied the notes and really paid attention
  • The long lectures only on Zoom did not help
  • Kuusela has a strong Finnish accent, which did not help either
  • The TA also had a very calming voice, so the late recitation time did not help focus as well
  • He was overly helpful with homework, which was good I guess
  • I think I learned a lot of probability, but immediately forgot most of it. The notation was also unnecessarily dense/incomprehensible.
  • PnC is a harder but more interesting class, but only offered in Spring. If you want to take Intro ML quickly, 36-218 may be a good choice.

15-294 Rapid Prototyping Technologies (5 unit mini) - David Touretzky

  • In-person, but limited access to equipment
  • I wanted access to laser cutters ASAP (you can make lots of cool stuff for free) and like making stuff so I did this course
  • It was fun, but it really is a 10hr/wk course that only happens half the semester
  • The follow up course 15-394 is not necessary if its just for fun imo
  • I also signed up for 24-210 to get access to Techspark (due to some Covid rules)

27-100 Engineering the Materials of the Future - Noa Marom

  • Fully in-person
  • I came in with lots of AP credit, so I just needed 1 Science lab class to satisfy the science requirement. Most CS majors take Experimental Physics, but I don’t like physics that much and you barely do any lab work in that class.
  • If you took AP Chemistry in high school and enjoyed it (like me), this is a fun class.
  • There is a lot of AP Chem review and then you get to see the applications in the lab. Playing with materials was the most fun part.
  • It is a mild time sink, but it was well worth it imo.

Spring 2021

I was at home (fully remote) for these classes. Probably would have enjoyed them better if in-person.

07-180 Concepts in AI - Reid Simmons (mini)

  • Pretty much a waste of time unless you want to be an AI major. I took it to get a scope of the topic, but I don’t think I learned much.
  • Take 15-281 directly instead.

15-213 Introduction to Computer Systems - Greg Kesden, Zach Weinberg

  • Took it back when it was the same class as 18-213
  • Probably the easiest out of itself, 15-150, and 15-251
  • Apparently they stopped teaching floating point stuff now, which was one of the cooler topics covered imo
  • Malloc lab is sooo satisfying. It’s not thread safe, but you will definitely beat all standard implementations in efficiency if you pass.

21-259 Calculus in Three Dimensions - Clive Newstead

  • Math class, not particularly fun

76-107 Writing About Data (mini) - Rebecca Wigginton

  • Improved my writing I guess

76-108 Writing About Public Problems (mini) - Jamie Smith

  • Improved my writing I guess

80-180 Nature of Language - Christina Bjorndahl

  • Possibly my favorite non-CS class
  • Lot of work, but I loved it and great professor
  • Must take if you like linguistics

Fall 2021

First “true” in-person semester, but 2 of my classes were still fully remote…

15-251 Great Ideas In Theoretical Computer Science - Klaus Sutner

  • Klaus is a legend in TCS and lectured about a lot of cool topics not in the scope of the course. He also only lectured over Zoom.
  • For this reason, lectures were not very useful this semester, but the TAs and textbook taught us well
  • TCS is really important, probably the most important class for a CS major

16-384 Robot Kinematics and Dynamics - Howie Choset

  • I wanted to do a Robotics concentration coming in to CMU, but the intro class is only offered Spring so I took this first
  • Howie is a legend in Robotics but is a bit difficult. Don’t come late to class and don’t use your phone, tablet, or laptop. He purposely makes labs stressful and competitive, but I think grading at the end is somewhat fair.
  • This class is a lot of matrix multiplication and trig. Really helps if you know your physics/mechanics well.
  • Learn Matlab
  • The final project was to work in pairs to make a robot arm pick and place Jenga blocks to make a tower. This was very difficult due to quirks of the hardware and using Matlab. Find a good partner in advance.
  • This class made me realize I don’t love robotics as much due to needing to rely on hardware which can sometimes be unreliable.
  • Organizational issues caused a lot of complaints so they made the final project requirements easier, giving a lot of extra credit. So the end became very easy if you did well on the project just for this semester.

70-332 Business, Society and Ethics - David Tungate

  • I took the online version, which was far easier than the in person one (and there were no spots left for in person)
  • Tungate has a long, very interesting career in law and lectures consist of him telling personal stories from his practice related to that week’s reading.
  • I usually got by the quizzes by just skimming the textbook chapters and really paying attention in lecture, taking notes
  • I already was interested in business law and the stories helped me understand the law much better

80-261 Experience, Reason, and Truth - Joel Smith

  • Very easy elective, marginally easier than Intro Philosophy
  • Good intro for Epistemology. It gets you thinking about your own thinking. Joel encourages discussion.
  • Have to write a few short essays, but they are graded extremely leniently (at least before ChatGPT)

99-358 IDeATe: Introduction to the Unity Game Engine (1 unit micro) - Hugh Dyar

  • Beats self learning it

Spring 2022

15-210 Parallel and Sequential Data Structures and Algorithms - Umut Acar, Marijn Heule

  • You learn some nifty parallel algorithms
  • Further builds on your ability to reason functionally

10-315 Introduction to Machine Learning (SCS Majors) - Henry Chai, Aarti Singh

  • Much more technical than 15-281 (other popular AI requirement course). Gives a good overview of ML.
  • If I had to only take one AI class, it would be this one.
  • Note: if you want to do the 5th Year Master’s in Machine Learning (or retain the option to) do not take 10-301. Many people say it’s a better class, but it does not count as part of the Intro ML + 15281 combo. Alternatively, just take 10-701.

16-299 Introduction to Feedback Control Systems - Chris Atkeson, Yuan

  • Chris Atkeson is very famous (he made Baymax for Big Hero 6!) and very nice, but I felt this class lacked rigor and organization
  • All deadlines were essentially flexible, there were no real assessments, and little TA support - I think most people got A’s with minimal effort regardless
  • Much of the content covered in lecture was difficult to understand without an engineering/signal processing background.
  • The open ended project was fun and I got to keep my robot

15-330 Introduction to Computer Security - Lujo Bauer, David Brumley

  • Got me really interested in Computer Security, one of my favorite CS electives
  • The first homework is the hardest, but still fun: it’s a much harder version of BombLab from 213
  • Some of the other homeworks also have a puzzle like aspect

98-012 Fun with Robots StuCo

  • Fun class regardless of robotics background
  • Fee of $10, but you get to keep a $100+ robot that is remarkably versatile

Fall 2022

After starting the semester I realized I would have nearly all the requirements to graduate in Spring. But, I still wanted to stay at CMU. I had to rush to make plans, but decided to apply for the 5th Year Master’s just in time for the deadline.

15-440 Distributed Systems - Peter Steenkiste, Wenting Zheng, Heather Miller

  • Take the Fall version - you do everything in Go instead of Java. Go is a really cool language that has awesome concurrency primitives.
  • Covers a lot of topics and tools that you will likely use in a software job involving more than one computer communicating. Practically useful.
  • Probably the easiest systems class.

15-451 Algorithm Design and Analysis - Daniel Anderson, David Woodruff

  • The algorithms you learn in this class are relatively cutting edge, cool, and useful for job interviews.
  • Very difficult class, especially since basically only hardened CS majors take it.

15-316 Software Foundations of Security and Privacy - Matt Fredrikson

  • I did this for my logic and languages requirement, haven taken no logic classes prior. I figured I would like it since it covered security (and I did).
  • The logic part was very intuitive, and homeworks were easy once the ideas clicked.
  • Complements 15330 well. Both classes mention material covered in the other, so you get a holistic picture.

07-300 Research and Innovation in Computer Science - Ruben Martins

  • Most CS majors think this is the worse option for technical writing, but it can be useful
  • I wanted to get a good reason to get into research, so I used this class. I reached out to Matt Fredrikson as part of the final assignment and used my research proposal for my 5th Year Master’s thesis application (instead of doing the follow up 07-400 course)
  • Ruben is very helpful, so use him as a resource

98-154 Intro to Open-Source FPGA & ASIC Chip Design StuCo - Anish Singhani

  • FPGAs are pretty cool and are a hot topic in areas such as high frequency trading
  • I was not really prepared for this class due to having 0 low level hardware experience (Verilog, logic gates, etc.), but it was still a good overview of the field and it’s not too difficult to learn concurrently, esp. if you have a basic understanding already
  • We did a tiny tapeout style project at the end (they may or may not actually be fabricated)

24-206 Intro to Wood Working - Ryan Bates

  • Really fun class. Useful if you want to quickly make your own things out of wood.
  • Class projects include a crate and folding camping stool.
  • You need to take this class to get access to the wood shop. Turned out very useful for the Rube Goldberg project in Intro Robo.
  • Instrumental in being able to decorate the ScottyLabs Doghouse for Carnival.

24-200 Intro to Manual Machining - John

  • My first time working with metal. Something I’ve always wanted to do.
  • You make a metal phone stand. Probably never going to use this shop at CMU, but it’s good to have the option.

Spring 2023

Finishing up the last remaining requirements and planning for my research thesis.

15-322 Introduction to Computer Music - Tom Cortina, Tom Sullivan

  • Course is designed by Roger Dannenberg who famous in the field for creating Audacity and the algorithm behind Smart Music.
  • He also created the Nyquist programming language (based on XLisp) and IDE, which the course uses
  • Pretty fun and not too much work if you already have some interest in computer music

15-281 Artificial Intelligence: Representation and Problem Solving - Stephanie Rosenthal

  • Steph is a really cool person she went to CMU as an undergrad and PhD and even has her face in the mural at Tepper.
  • I like that I took this class so late, because it is relatively easy and programming assignments are satisfying.
  • Some of the material is review from other classes like 451, but it is useful.

16-311 Introduction to Robotics - Howie Choset

  • Another of Howie’s classes
  • Lab 1 (Rube Goldberg Machine) is really unfair and is probably designed to get people to drop the class
  • The other labs are better, but needing to rely on hardware working as expected is annoying. Still, the Lego robots are fun to use.
  • There is a lab basically every week and it is usually a big time sink.
  • The material taught in lecture is fairly straightforward (much of it is also covered in 15281) and simple.
  • Labs are fun if you have a synergistic team (of 3). At least 1 great programmer and 1 person good at building sturdy lego robots is needed. Howie recommends forming teams so you have a CS, ECE, and MechE person.
  • I think taking this robotics class last was a good idea so I could focus my effort on the labs instead of also learning new material

15-812 Programming Language Semantics - Stephen Brookes

  • Another of Brookes’ classes
  • Grad version of 15-314 (same exact class, no difference)
  • I took this as a credit to carry over for my Master’s next year
  • I think the material is somewhat interesting, especially as it relates to compilers, but it is hard to digest and almost no one comes to lecture.
  • In hindsight should have dropped this class and taken something else. It was not fun and I didn’t need to take it to graduate.