Course Guide

A review of all (major) courses that I took at the universities I've attended. This guide is meant to help fellow students in the majors I am in.


Feel free to contact me if you have any questions about any courses I took, preferably on Discord: my username is beterare


Huge thanks to the many upperclassmen who helped me with their advice and guidance on school & life in general. Special thanks to Rui Pan for the website template.


* Indicates graduate coursework

Class List

  • ...
    MATH 571: Numerical Linear Algebra

    Professor: Divakar Viswanath

    TODO

  • ...
    STATS 503: Multivariate Analysis

    Professor: Jackson Loper

    TODO

  • ...
    EECS 442: Computer Vision

    Professor: Jeong Joon Park

    TODO

  • ...
    MATH 564: Topics in Mathematical Biology

    Professor: Daniel Forger

    TODO

  • ...
    STATS 485: Capstone Seminar

    Professor: Kerby Shedden

    TODO

  • ...
    MATH 493: Honors Algebra I

    Professor: Kartik Prasanna

    Typical class in undergraduate algebra, covering a good amount of group theory, covering all the basic definitions and theorems, as well as some extra content (group isometries and representation theory). I personally struggled a bit in this class, not because I thought it was particular hard, but I thought that the content was poorly motivated (which admittedly is a bit of a me problem). The beginning is pretty chill, but for us it ramped up significantly when covering the sylow theorems, group isometries, and representation theory units. Note that the content covered in this class is heavily instructor dependent (but almost always has a pretty decent curve).

  • ...
    EECS 485: Web Systems

    Professor: Andrew DeOrio

    Really enjoyed this class! Personally, I view pretty much all the CS upper electives as survey courses, and in that regard there are a couple that I personally feel aren't worth taking (lack of rigor in 445 comes to mind), but 485 embraces that aspect, covering such a wide swath of topics and technologies. It doesn't do any of topics in great detail, mind you, but the course does such a great job motivating you to pick out the topics you enjoyed and explore them in greater detail in other upper-level eecs classes if you should wish to do so. I would STRONGLY recommend taking this class as your first upper-level eecs requirement, as it helps you understand what other upper levels you want to take. In terms of workload, it's pretty heavy, but if you have a good group, all the projects should be slightly easier than 281 projects. It's also a great resume builder. By the end of the class, you can add to your resume: 2 programming languages (Python and Javascript), a frontend and backend framework (flask and React.js), A full-stack project (P3), and a distributed systems project (P4 and P5).

  • ...
    STATS 500*: Statistical Learning I: Regression

    Professor: Brian Thelen

    Graduate (Masters) version of stats 413, covering roughly the same content. Mostly focused on applications, with easy math derivations on the homework. The content covered in this class is substantial, and useful if you want a good background in linear models for machine learning. Overall, the class was good for learning techniques, however, I felt that the lecture didn't put much emphasis on the mathematical reasoning for some of the methods, and felt more like "heres the r-code, now do it". After taking Stats 503, I think that the regression covered in a comparable intro to statistical learning is more than enough, and doesn't warrant an entire semester. As for advice, the course defintely ramps up after the first midterm. Try to understand the main ideas and intuition behind the models, and if you are curious on the mathematical background, study it on your own or take Stats 600.

  • ...
    EECS 370: Introduction to Computer Organization

    Professor: Jonathan Beaumont

    This class is often described as the litmus test for whether or not you like systems or not, and has me firmly placed in the "non-systems" camp. I can't tell if it's just because the course is structured poorly, as I've heard that 370 and 376 are both not great introductions to those subjects in cs from people that are in systems and theory respectively, but I couldn't watch a 370 lecture without my eyes glazing over. The projects are all really simple, if you go to lecture it will probably take you 5-10 hours per project. The midterms and exams are notoriously difficult, but if you do the previous exams, you'll probably survive. It's worth noting that the variance in difficulty in 370 exams is crazy high, often you'll have semesters in which the median is 50, and one where the median is 70. Overall, a pretty typical workload class that I thought was unfortunately very boring.

  • ...
    MATH 555*: Introduction to Complex Variables

    Professor: Ahmad Barhoumi

    Pretty typical undergraduate level course in Complex Analysis, covering pretty much all the major definitions and theorems. I personally struggled quite a bit working in the complex plane, as the definitions become a bit wonky, and lose a lot of intuition when working outside the reals. General advice would be just to remember the major definitions (Cauchy's integral/derivative formulas, Liouville's theorem, Argument principle, Residue theory come to mind the most) and gain a good understanding of complex arithmetic early (seriously, this class is a lot of arithmetic). My professor, Ahmad Barhoumi was great! despite this being the first time he taught a 500 level course. Super down to earth and approachable guy, also has practically native level english skills despite being from Qatar.

  • ...
    STATS 511*: Statistical Inference

    Professor: Kean Ming Tan

    A course in Statistical Theory and Inference at the graduate level using Casella & Berger. To be honest, I felt that the course was a bit dry and lacking in rigor, with a lot of the proofs being hand-wavy or just sketches. Statistics being the field that it is leaves a lot of lacking for the motivation behind lots of definitions, but this was pretty much the first statistics course i've ever taken so take my opinion with a grain of salt. It was cool seeing the derivations and reasoning behind common stuff you could see in an intro statistics course(Z and T tests, MLE, Hypothesis testing, Confidence intervals, etc). My professor, Kean Tan Ming, was super great and a real funny guy, his office hours were able to demystify pretty much anything you had trouble with. If you are considering taking STATS 426, whether it be for a degree requirement or just personal interest, I HEAVILY HEAVILY recommend you take STATS 511 instead. It counts as an override for 426 and has a ridiculously generous curve (look it up on atlas if you don't believe me).

  • ...
    EECS 281: Data Structures and Algorithms

    Professor: David Paoletti

    Yikes this class was a lot of work. Overall, the concepts covered in lecture aren't really that difficult, but the questions they ask you about it on the exams are pretty difficult. Generally speaking, the advice I would give you would be to do a lot of leetcoding beforehand, as the exam FRQS and lab questions are literally just rewritten leetcode questions. This kills two birds with one stone if you are also looking to get a SWE internship. Make sure to learn most of the core Data Structures and Algorithms (no pun intended) beforehand (Stack/Queue & Priority Queue/Hashmap/BST/DP). If you are familiar with these topics, it really isn't worth your time to go to lecture. I personally never went to lecture and subsisted entirely on lab recordings, and it seemed to be enough to get by. As everyone says, start projects early, as no matter how well you know the material, it will still end up being a timesink. Paoletti and Darden teach this class pretty much every semester, and both of them are top notch professors.

  • ...
    EECS 376: Foundations of Computer Science

    Professor: Leqi Zhu

    Depending on how comfortable you were in 203, this class will range from being a fairly light introduction to the theory of computation, or will be the absolute bane of your existence. Homeworks for the most part felt pretty handholdy and not too difficult to complete on your own, but I am also a biased math major so please see how comfortable you are with the first few homeworks and plan accordingly. Lecture sometimes seemed pretty disjoint with the questions on the homework, I mostly used the course notes they provided and the discussion notes and worksheets to learn the material. I would say that this course more than others, going to lab is useful to understand what is actually going on. Leqi(Jimmy) Zhu was a funny and empathethic instructor, who is unfortunately leaving for the University of Toronto next semester.

  • ...
    MATH 526*: Discrete-State Stochastic Processes

    Professor: Asaf Cohen

    This class was great! If you like probability, then you will for sure like this class. Tons of applications to queueing theory, machine learning, financial math, control systems, biology, (the list goes on and on). One thing I will say is that we skim over a lot of the proofs, and the class can be a little hand-wavy at times, but that is not the fault of the instructor or the class, as you have to cover a lot of non-trivial content without the use of measure theory, which obviously means you have to leave some stuff out to fit it all in a semester. Homeworks usually were not that bad, but it defintely becomes harder as the semester went on. Asaf Cohen, my instructor, was probably the best math instructor I have ever had. Super knowledgable and patient guy, providing tons of intuition to all the theorems and definitions. 100% recommend taking the class with him if you have the chance.

  • ...
    EECS 280: Programming and Intro Data Structures

    Professor: James Juett

    Solid class that covers a lot of the underlying architecture used for data structures (classes, pointers, iterators, polymorphism, operator overloading, the new keyword, etc). Taking this class with only a Java background, I can honestly say that i've been converted to C++ supremacy. You really gain a newfound appreciation for how the underlying mechanisms of things that are taken for granted in other languages. For example, most other languages don't even go over pointer semantics or the new keyword, although most use it. I highly recommend using the online textbook (Runestone) that was graciously given by the 280 staff, I personally just used that and never went to a single in-person lecture (although lectures are all recorded if you are into that). My only piece of advice would be to get good at using the debugger and starting projects early.

  • ...
    HISTORY/ASIAN 207: Southeast Asian Civilization

    Professor: Victor Lieberman

    This course was amazing. Professor Lieberman is world-renowned in his knowledge of Southeast Asia, and his lectures are incredibly engaging, rich with illustrative anecdotes. I left with a much better understanding of Southeast Asia, and a rekindled appreciation for history in general. Professor Lieberman won the award for best Professor in 2014, and for good reason. If you are looking to fulfill your Race&Ethnicty/Social Sciences Gen Ed, or if you are just interested in histroy in general, please consider taking a course with Professor Lieberman. He teaches HISTORY 207 and HISTORY 244.

  • ...
    SOC 100: Introduction to Sociology

    Professor: Robert Jansen

    I initially took this class for the easy Social Science credit, and I can honestly say that it really wasn't worth it. The topics discussed had the opportunity to be interesting, but it seemed so basic and surface-level that it was hard to do the readings without my eyes instantly glazing over. I would recommend taking SOC 300 if you are actually interested in Sociology, or to seek out more interesting courses if you are looking for Social Science credit.

  • ...
    COMP SCI 200: Programming I

    Professor: Jim Williams

    As intro to programming courses go, this one felt wayyy too long. I feel like if I had the chance to do this class over, I could learn all the content in 2-3 weeks instead of stretching it out over an entire semester. I would highly recommend self-studying and requesting an override into COMP SCI 300 or taking an accelerated course at a community college and transferring it over as credit instead of taking this class.

  • ...
    COMP SCI 240: Discrete Mathematics

    Professor: Beck Hasti

    This class (despite what CS majors tell you), didn't feel that hard. You may struggle with proofs in the beginning, but after a while it isn't so bad. Keep in mind that this class is cross-listed as math, with the cs department teaching in the fall and the math department teaching in the winter. If you are a cs/ce major, I would heavily recommend taking this class with the cs department in the fall, as it prepares you better for Intro. to Algorithms.

  • ...
    MATH 341: Linear Algebra (Honors)

    Professor: Antoine Remond-Tiedrez

    This class for me was a hard introduction to proofs. The class was very abstract compared to the math courses I had taken in the past, and many times I was left wondering what I was even doing. That being said, this class defintely reaffirmed my decision to major in math, and gave me a deeper appreciation of the rigor in upper-level mathematics. If you are at all considering majoring in mathematics, I would defintely recommend taking this class, especially if you are already majoring in computer science, as linear algebra is incredibly important for many upper-level electives(ML, Optimization, Cryptography, etc). We mostly used course notes, but we pretty much followed Linear Algebra by Friedberg, Insel, and Spence

  • ...
    MATH 421: Theory of Single-Variable Calculus

    Professor: Nate Fisher

    This class serves as a way to see the theory behind Calc 1, and a good introduction to proofs. We used Spivak's Calculus as our textbook. The assignments were usually pretty tough, but the exams in comparison were easier. If you are confident in your proof skills, I would say to skip this class and take Analysis, but if you want a little more practice with proofs, this class is for sure a good choice. This class pretty much covers the second half of MATH 521: Analysis

  • ...
    MATH 531*: Probability Theory

    Professor: Vadim Gorin

    This class was crazy hard. We jumped from topic to topic very frequently, and I felt that the class moved too quickly for me to fully understand topics. Homework ranged from super easy to incredibly unintuitive, exams were easier in comparison. A lot of math topics were mentioned but not deeply covered(Borel Sigma-Algebras, Lebesgue Integral, Characteristic functions). I would recommend taking MATH: 431 as your first introduction to probability instead of this class. Vadim was a cool professor. He's a super knowledgable guy, and a fellow Magic: The Gathering player.

  • ...
    MATH 521: Analysis I

    Professor: Laurentiu Maxim

    Despite the general sentiment on Real Analysis, I didn't think this class was that bad(granted I took MATH 421 beforehand). Baby Rudin is concise, but often times to a fault. He would often just flat out omit important details in proofs. Chapters 2 and 3 were especially hard, but if you gain a good grasp of those two chapters, the rest of the book will follow nicely. Maxim was super chill and a good professor, don't listen to the people who badmouth him for the one semester he taught MATH 340 during covid.

  • ...
    COMP SCI 300: Programming II

    Professor: Hobbes Legault

    Compared to COMP SCI 200, this class was a lot more work. Programming assignments were pretty time consuming, but the topics covered weren't that hard to grasp. Exams and Homework were also pretty easy. I would recommend learning git/github in conjunction with this class, as it serves as a good way to archive your code, as well as learn software that you will use for the rest of your computer science career. If possible, take this class with Hobbes Legault. She should be referred to as Hobbes LeGOAT. She's incredibly charismatic, her lectures are engaging and informative, and just has good vibes across the board.

  • ...
    COMP SCI 252: Computer Engineering

    Professor: Jim Skrentny

    If I had to describe this class in one word it would be tedious. This class isn't hard in the slightest, but you cover pretty dull subjects and spend your time tracing code and converting between numeral systems. The silver lining is that exams are virtually identical to the homework, so just study the homework and exams won't be bad.

  • ...
    ASIALANG 113: First Semester Elementary Japanese

    Professor: Emre Murat Bozer

    I never thought I would be taught Japanese by a Turkish person, but it turned out to be a great experience! Bozeru sensei is super enthusiastic and attentive to questions. Attendance for this class was mandatory, which was great(atleast for me), as I was able to interact a lot with my classmates. Just know that if you take this class, you either are a weeb, or will be surrounded by them. Overall a very chill class and good introduction to the Japanese language.

Contacts

yangpe@umich.edu   |   (+1) 781-492-9588

 

Built by Peter Yang with Bootstrap