Courses

Here I share my thoughts on the courses I took at National Taiwan University (NTU, undergrad) and Carnegie Mellon University (CMU, grad). Courses with a ⭐ are those that I think is decent, those with ⭐⭐ are transformative, and those with a ❤️ are those that I personally enjoyed a lot.

Overall I think the average quality of courses in CMU is much more higher than NTU. Maybe it is because CMU’s tuition is almost 20 times more than NTU :p

Generally speaking, courses in CMU is a lot more fast-paced, which allows them to put a lot of content in one semester. Furthermore, instead of encouraging students to take 7-9 3-unit courses per semester, in CMU taking 3-5 12-unit courses is the norm. I think this is a better way for students to understand topics they are interested in-depth (compared to having broad knowledge across different domain but with very-limited understanding of each domain).

This page is inspired by Fan Pu’s CMU course review page.

Asterisks denote graduate courses.

Carnegie Mellon University

Spring 2023

  • ⭐⭐ 10-708* - Probablistic Graphical Models (Andrej Risteski)

    Compared to 16-824 or 11-711, this course involves lots of math. It is a great course for learning graphic model properly, and also a good chance to learn the mathematical foundation behind commonly seen models like VAE or diffusion model.

    There is no exam in this course, and the grade is composed of 4 homework, a final project and attendance. Homework is quite hard and consists of a handwritten part (math) and a programming part. For the final project, the only limitation of the topic is that it should be related to graphical models or topics mentioned in class (a list of past topics is given here). We choose to study the problem of text conditional graph generation. The report is given here: https://arxiv.org/abs/2306.01937

    A common comment for this course is that it is not “useful”. Indeed, this course might not be “useful” compared to other machine learning courses, however I think it is a great course for building solid (math) foundation for machine learning. I am very glad that I took this course.

  • ❤️ 16-824* - Visual Learning and Recognition (Deepak Pathak)

    This course is a great course for intro to Computer Vision! Taught by professor Deepak, this course covers a lot of topics in computer vision, mainly focus on deep neural network methods. I really enjoyed his way of teaching: besides going through the paper and models, his personal comments on those model is really inspiring. Sometimes he also talked about how to do research and read paper, these mindset and techniques really helped me a lot.

    There’s no exam in this course. Grading is composed of three homework plus one final project. All three homework is not hard because most of the code is already given. The first homework is about object detection with FPN+RPN, second is about GAN, VAE and Diffusion model and third is about ViT (vision transformer).

    Final project requires a group with size 2-4, and can work on any topic related to computer vision. We worked on improving an object-centric representation method called “slot attention” with self-supervised learning loss. Our report is given here: https://arxiv.org/abs/2306.02577

  • 15-618* - Parallel Computer Architecture and Programming (Zhihao Jia, Brian Railing)

    This course covers common general parallel frameworks (pthread, SIMD, CUDA, OpenMP, MPI, …etc), some domain specific parallel frameworks (GraphLab for graph parallelism or deep learning parallelism), and cache coherency algorithm. Overall I like the syllabus but not the teaching style. Grading is composed of 4 homework, 2 exams and 1 final project. Homework and project is done in a two-people group. Ironically, the homework is not designed for a group, it can be actually be done with 1 person.

  • 15-750* - Algorithms in the Real World (Ryan O’Donnell)

    The only reason I took this course is to fulfill my theory req for MSCS program. It is composed of 6 homework plus 2 take home exams. With my CS undergrad background, this course is really easy and I didn’t really learn much from this course. Ryan is a great teacher but his pace in this course is really slow… I kind of regret taking this course instead of 15-850 (Advanced Algorithms) by Anupam Gupta.

  • 15-689* - Independent Study (Graham Neubig)

    I took this MSCS research course to work on a research project that is lead by PhD students of Professor Graham (Shuyan Zhou). The project is about building a dataset for web navigation. One can think this dataset as a harder (and more realistic) version of MiniWob++. Paper link will be provided upon publication.

  • 98-008 - STUCO: Rust Stuco (Jack Duvall, Cooper Pierce)

    A cool course if you want to learn Rust. I didn’t spend much time on this course because I am too busy with other courses, so even though I passed the course I still do not really know how to write Rust :p

  • ⭐⭐ 98-317 - STUCO: Hype for Types (Runming Li, Isabel Gan, Thea Brick, Sonya Simkin)

    A great course if you are interested in the world of programming language theory! This course give a high-level introduction to a bunch of topics in types and programming language theory. To be honest some of the topics are really hard and I do not think I really understand it.

Fall 2022

  • 15-640* - Distributed Systems (Heather Miller, Peter Steenkiste, Wenting Zheng)

    Fall version of one of the well-known system course in CMU. The difference between fall version and spring version is that fall uses Golang while spring uses C++. The course content is designed to be very broad, covering lots of topics but not in depth. There are four homeworks and four projects (code in Golang). Handwritten homeworks are easy, basically just contents from the lecture. Projects are moderately hard and loosely related to course content: LSP Protocol (TCP like protocol implemented on UDP), Raft and a distributed key-value storage implemented in Actor Model.

    Overall the syllabus is decent but the quality of teaching is unstable, especially for Write-Ahead-Logging (WAL), Paxos and Byzantine Fault Tolerance (BFT and PBFT algorithm). I learned all of them with slides I found myself on the Internet…

  • ❤️ 11-711* - Advanced Natural Language Processing (Graham Neubig, Robert Frederking)

    A great course for intro to NLP! The course covered both the basics and broad application of NLP, mainly focus on Neural Network methods instead of traditional method. The assignments are great, especially for assignment 2. It requires us to go through the process of solving a NLP problem from scratch i.e. data collection and labeling to model selection and tuning. Though the assignment is designed with good intention, the unclear and keep-changing spec of the homework kind of ruin the quality of the homework.

    There are no exams in this course (hooray!) but there is non-trivial quizzes for every lecture. A major part of the final grades is composed of the final project, which is to reproduce a paper from major NLP conference (ACL, NAACL, EMNLP) and improve it. At the end of the semester, instead of each group presenting their work in front of the classroom one-by-one, they hosted a poster session which is quite interesting! IMO the final project quite hard to be done in just a month…, we are kind of lucky to pick the right paper and found some improvement to get A+. I saw few papers during the poster session that actually have a improvement over the original paper, most groups just reproduced the paper and perform some analysis on it. This project eventually results in a paper (arxiv link) and is accepted (non-archival) in Natural Language Reasoning and Structured Explanations Workshop in ACL 2023.

  • ⭐ 10-703* - Deep Reinforcement Learning (Katerina Fragkiadaki)

    Despite the quality of homework is not good and the TAs are very unresponsive, overall I think this course is a decent (broad enough) intro to Reinforcement Learning. This course forces me to read a lot of papers in different domain of Reinforcement Learning. Midterms are main about concepts in papers, which I think is not very hard since they allows us to open everything (no Internet).

  • 17-759* - Advanced Topics in Machine Learning and Game Theory (Fei Fang)

    Not recommended for people who are not doing related research to take this class. The course content covered topics in Multi-Agent Reinforcement Learning and a bunch of techniques about solving special games' Nash Equilibrium with Machine Learing. The content and homework is loosely planned so if you are not doing related research in the field you probably can’t gain a lot from this course.

National Taiwan University

Spring 2022

  • PE 2124 - Weight Training (Chia-Ying, Lien)
  • Chem 1009 - General Chemistry (c) (Ru-Shi, Liu)
  • ⭐ ECON 3004 - Money and banking (II) (Yi-Ting, Li)
  • ECON 5107 - Industrial Organization and Firm Strategy (Pohan Fong)
  • ❤️ ECON 5106* - **Financial Engineering** (Luke Huang)
  • ECON 2023 - Introductory Econometrics with Recitation (Jui-Chung Yang)
  • ⭐⭐ ECON 5089* - Advanced Statistical Inference (II) (Chun-Hao Yang)
  • LibEdu1102 - The Science of Joyful Living (Malabika Misty Das)

Fall 2021

  • PE 5001 - Squash-basic (林聯喜)
  • ❤️ Psy 1007 - General Psychology (Tsung-Ren, Huang)
  • ⭐ ECON 3043 - **Money and Banking(I) ** (Yi-Ting, Li)
  • ECON 5148 - The Practice of Financial Sector and Industry (I) (Ming-Jen Lin)
  • EE 3035 - Web Programming (Chung-Yang Huang)
  • ECON 2022 - Statistics with Recitation (Jui-Chung Yang)
  • ⭐⭐ ECON 5088* - Advanced Statistical Inference (I) (Chun-Hao Yang)

Spring 2021

  • ECON 4030 - The Application of Economic Policy (陳博志)
  • ECON 5163* - Topics in Labor Economics: Empirical Methods and Applications (Tzu-Ting Yang)
  • IB 2013 - Commercial Law (林麗真)
  • LS 1009 - General Biology (c) (Chien-Yuan Pan)
  • ECON 7218* - Computational Methods for Econometrics (Chih-Sheng Hsieh)
  • IM 5057* - Practices for Distributed Systems and Cloud Application Development (Yuh-Jzer Joung)
  • CSIE 1214 - Fundamental Object Oriented Programming (Hsuan-Tien, Lin)
  • CSIE 3511 - Computer Network Laboratory (Phone Lin)

Fall 2020

  • PE 2036 - Beginning Taijiquan (游添燈)
  • PS 4642 - GLOBAL AWARENESS (徐斯勤, different lecturer every week)
  • IB 2003 - Outline of Civil Code (b) (林麗真)
  • CSIE 3510 - Computer Networks (Cheng-Fu Chou)
  • ⭐⭐ CSIE 3230* - Compiler Design (Wei-Chung Hsu)
  • CSIE 3512 - Special Research (Hsuan-Tien Lin)
  • CSIE 7016* - Computer Security (Hsu-Chun Hsiao)
  • CSIE 5732* - Computer Vision (Chiou-Shann Fuh)

Spring 2020

  • CSIE 1923 - Modern Sciences and Science of Mind (Yen-Jen Oyang)
  • CSIE 2121 - Probability (Shou-De Lin)
  • CSIE 3310 - Operating Systems (Chih-Wen Hsueh)
  • CSIE 3512 - Special Research (Hsuan-Tien Lin)
  • CSIE 5371 - Advanced Network Administration and System Administration (Hsin-Mu Tsai)
  • ⭐ CSIE 5431* - Applied Deep Learning (Yun-Nung Chen)
  • ECON 2019 - Microeconomics (2) (Chen-Ying Huang)
  • ECON 2021 - Macroeconomics (2) (Pei-Ju Liao)
  • ⭐ EE 5184* - Machine Learning (Hung-Yi Lee)
  • Prog 1040 - Overcoming Uphill Challenges for the New Generation Entrepreneurs (Gary Wang, Formor President of 3Com)

Fall 2019

  • CHIN 1081 - College Chinese(I) (蔡璧名)
  • CSIE 2120 - Linear Algebra (Hsueh-I Lu)
  • ⭐⭐ CSIE 2136 - Algorithm Design and Analysis (Hsu-Chun Hsiao)
  • CSIE 2210 - Systems Programming (Pu-Jen Cheng)
  • CSIE 3003 - Programming Techniques (Pu-Jen Cheng)
  • ⭐ CSIE 3110 - Formal Languages and Automata Theory (Tony Tan)
  • CSIE 3340 - Computer Architecture (Chia-Lin Yang)
  • ECON 2018 - Microeconomics (1) (Yusen Sung)
  • ECON 2020 - Macroeconomics (1) (Hung-Jen Wang)
  • ⭐ IM 3002 - Programming Languages (穆信成)

Spring 2019

  • BST 1006 - Introduction to Nutrition and Foodi (林璧鳳)
  • CSIE 1212 - Data Structures and Algorithms (Jyh-Shing Roger Jang)
  • ⭐⭐ CSIE 2311 - Network Administration and System Administration (Hsin-Mu Tsai)
  • ⭐⭐ CSIE 5043* - Machine Learning (Hsuan-Tien Lin)
  • CSIE 5108* - Game Theory (Hsueh-I Lu)
  • ECON 1005 - Principle of Economics (with Recitation) (2) (Ming-Jen Lin)
  • GenEdu 2006 - Freshman Forum - Ability Cultivation (Shih-Torng Ding)
  • MATH 1202 - Calculus (general Mathematics) (a)(2)
  • ESOE 2013 - Object Oriented Programming Language (黃乾綱)

Fall 2018

  • CSIE 1000 - Introduction to Computer (Winston Hsu)
  • CSIE 1210 - Introduction to Computer Programming (Pang-Feng Liu)
  • CSIE 3002 - Program Structures and Design (Pu-Jen Cheng)
  • ⭐⭐ CSIE 5432* - Machine Learning Foundations (Hsuan-Tien Lin)
  • ECON 1004 - Principle of Economics (with Recitation) (1) (Pohan Fong)
  • MATH 1201 - Calculus (general Mathematics) (a)(1)
  • PE 1003 - Health Related Physical Fitness