cmu courses

This page contains a list of courses I have taken in cmu and some of my comments to them.

Inspiration for this page came from: Wan Shen Lim, Fan Pu Zeng, etc.

This is not intended to be a very serious review. Many of the opinions are going to be subjective, anecdotal, and highly dependent on my personal preference. Please be very cautious if you are using this page as a source of reference to decide your curriculumn.

Feel free to contact me regarding any questions about these courses.

  • As a context, I was admitted to Dietrich College in Fall 2020. I had zero knowledge in computer science before coming to cmu. My level of familiarity with math was somewhat below average compared to newly admitted cmu students. I spent most of my high school years and the first year of college focusing on psychology, before I realized my interest in theoretical computer science.

Spring 2023

    15-330   Introduction to Computer Security
15-445   Database Systems
  • I'm glad that I chose this course to satisfy my system requirement. It covers a lot more interesting real-world database algorithms that I expected. The projects are well-designed, with clear statements of the goals and appropriate level of difficulties. The write-ups include helpful bulletins that guided students to the correct implementations.
15-455   Undergraduate Complexity Theory
  • Prof. Sutner's teaching has quite a strong personal style. He teaches the algorithms and proofs in a story-telling way, which is fun for students that follow his flow, but at the same time can be a bit confusing for students who don't. The contents are slightly different than a "standard" undergrad complexity theory course. For example, we spent significant time discussing the details of different kinds of automata. I was also surprised (and enjoyed) that we took an entire week learning in-depth about Kolmogorov Complexity. The weekly homeworks were relatively long. The total workload of this course is prone to the heavy side.
15-850   Advanced Algorithms
  • This course felt like an advanced version of 15-451 Algorithm Design and Analysis. We covered a new topic about each week, thus inevitably trading depth for breadth. However, Prof. Gupta managed to convey the importance and attraction for each topic in such limited time. I think this is mostly because of his remarkable enthusiasm -- nearly every algorithms he taught were described as his favorite :) Also, the class was very interative. Each lecture was filled with students' questions and comments. There were also frequent sharings of relavant notes, papers, and thoughts on the Piazza. In general, I think this course created a really comfortable atmosphere for learning.
15-859   Topics in Cryptography: Lattice-Based Cryptography
  • It was difficult to get into this course, because Prof. Jain was worried that I might not be prepared enough for the cryptographic topics that he was going to cover. It turned out that he was right -- the contents in this course were very new to me. The lectures felt quite fast-paced and in-depth even after pre-reading every notes from [another similar course](http://people.csail.mit.edu/vinodv/CS294/). But thankfully Prof. Jain used a lot of drawings to visualize the ideas (and was tolerant to my dumb questions.) The course had two components: the lattice problems and their applications to build cryptogphic tools. I didn't fully relate to the use case of some cryptographic protocols that were discussed towards the end of the semester; however, I really enjoyed the first half of the course, when we covered lattice problems, reductions, and algorithms.

Fall 2022

11-485   Introduction to Deep Learning
  • I fully agree with [this comment by Max Slater](https://thenumb.at/cmu/).
15-312   Foundations of Programming Languages
  • text
- [15-451](http://www.cs.cmu.edu/~15451-f22/)   **Algorithm Design and Analysis** - [15-859](http://www.cs.cmu.edu/afs/cs/user/dwoodruf/www/teaching/15859-fall22/index.html)   **Algorithms for Big Data** - 21-325   **Probability**

Spring 2022

  • 15-210   Parallel and Sequential Data Structures and Algorithms
  • 15-317   Constructive Logic
  • 17-214   Principles of Software Construction
  • 21-259   Calculus in Three Dimensions
  • 76-101   Interpretation and Argument

Fall 2021

  • 15-150   Functional Programming
  • 15-251   Great Ideas in Theoretical Computer Science
  • 21-122   Integration and Approximation
  • 85-213   Human Information Processing and Artificial Intelligence
  • 85-219   Biological Foundations of Behavior

Summer 2021

  • 15-213   Introduction to Computer Systems
  • 21-241   Matrices and Linear Transformations

Spring 2021

  • 15-122   Principles of Imperative Computation
  • 21-127   Concepts of Mathematics
  • 66-118   Grand Challenge First-Year Seminar: Thinking With Evidence
  • 76-100   Reading and Writing in an Academic Context
  • 85-107   The Psychology of Video Games
  • 99-358   IDeATe: Introduction to the Unity Game Engine

Fall 2020

  • 15-112   Fundamentals of Programming
  • 36-309   Experimental Design for Behavioral and Social Sciences
  • 79-104   Global Histories: History of Democracy
  • 80-212   Arguments and Logical Analysis
  • 85-102   Introduction to Psychology