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
Professor: Divakar Viswanath
A pretty typical class on numerical linear algebra, following Trefethen and Bau's fantastic textbook. Homeworks in this class were pretty light, and the curve was pretty good (~A- median). I felt as if this was one of the classes where you could condense the material into a couple topics, and everything else would follow. The two big topics were the SVD and the QR decomposition, as well as a couple other miscellaneous decompisitions. Exams were not that bad, the content covered in lectures were fairly straightforward, with a lot of proofs just being derivations. Professor Viswanath has been consistently teaching this course for a while now, and he is very kind towards students and has a deep understanding of the content.
Professor: Jackson Loper
A course in Multivariate Statistical Analysis, better known today as Machine Learning. This class was a good survey to the many models used in machine learning, including: Linear/Logistic/Ridge/Lasso Regression, QDA/LDA, Naive Bayes, Trees/Forests/Gradient Boosting, SVM, Neural Networks, and Reinforcement Learning. As is the nature of a survey class, it doesn't do this in that much depth, with very little proofs. The most valuable thing I gained from this class was writing python code to do data anaysis with a slew of ML models. If you have an advanced enough math background(i.e, you've taken an analysis class of some kind), I would recommend taking the Phd version of this class, STATS 601, instead. The textbook we used, Introduction to Statistical Learning with applications in Python is one of the ML bibles, and a fantastic textbook. Jackson Loper was a great professor. He's got that chill millenial down to earth energy, and lectures were really relaxed, but you could tell that he is incredibly sharp and knows his stuff really well.
Professor: Jeong Joon Park
A modern introduction to the field of Computer Vision. I thought that this was one of the better EECS classes. It covered a fair bit of content, with the origins of computer vision and more modern topics like object detection, generative models, etc. Most of the algorithms you learn in class you will implement in the homework by yourself, which I thought was pretty cool. This class also has an embedded mini intro to neural networks component in it, so if you want to learn neural networks but don't want to dedicate an entire class to machine learning, this would be a good class to take. The grading for this class was super lenient. We had a midterm but it was pretty straightforward. Overall, a solid class that I would recommend as an Upper level elective.
Professor: Daniel Forger
Topics in Mathematical Biology is usually taught by Daniel Forger, and usually has a statistical and machine learning flair to it. When I took it, it was mainly focused on machine learning, but covered other topics that are popular for mathematical modeling, like gaussian processes, kalman filter, etc. I personally thought that the content covered in the class was incredibly difficult and fast paced, with someone needing a fair amount of background in differential equations, statistics, and machine learning in order to fully grasp all the content. The homeworks were a cakewalk compared to the lecture, and the final project gave you a lot of leeway on what you wanted to pursue. I just wish the class was organized better, if all the lectures were by slides, I think that I would have retained a lot more of the knowledge. Overall, the class was mostly learning different mathematical/statistical/machine learning models and applying them to datasets that professor Forger provided.
Professor: Kerby Shedden
The Statistics Capstone Seminar is basically a "statistical consulting" class. The class is composed of 7 memos, each of which is around 2-3 pages long. The class consists of you learning a new statistical method through some notes and code that the professor provides, and using that to method to make slight alterations to the code to do some analysis on something that you think is interesting. I thought that the class was fairly easy and not lot of work, with most memos taking me 2-3 hours to complete. If you are considering a statistics major, you should know that it counts as for ULWR, as does an honors thesis. Kerby Shedden was a good professor, and gave me some good adivce about grad school during office hours.
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).
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).
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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.
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.
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.
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.
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.