Category Archives: Course Reviews

Course Review: MATH 421

Real Analysis II

“If everyone is getting closer together, and you are going to Cleveland, then everyone’s going to Cleveland!”

Text: Real Analysis: Modern Techniques and Their Applications by Gerald B. Folland

Prof: Dr Brian Marcus

Prof Marcus is one of the kindest professors I know. He also explains each concept from multiple perspectives and breaks the concepts down to simple intuition. His notes are super useful and he has a great sense of humor.


The classes moves somewhat slower then 420, so we went a lot more deeper into the details of certain proofs and where they come from. This meant the classes were easier to follow (and in my view more enjoyable!). Further the homework was largely straightforward. The one challenge in this course was the material towards the latter half of the term was slightly more complex and were not assessed on homework. We also may not have covered the material generally covered in a similar course.

Key Concepts

Banach spaces

Hilbert spaces

Linear functionals

Hahn Banach Theorem

Open mapping theorem

Uniform boundedness

Riesz representation theorems

Hard Concepts

Weak Convergence: Can be hard to think about neighborhoods in this topology.

Hilbert Spaces: There are a lot of nifty tricks in Hilbert spaces that are not immediately obvious, and do not work in other spaces.


Really fun course and learnt a lot. Nice conclusion to my studies of analysis in some sense.

Course Review: MATH 420

Real Analysis I

“F just comes along for the ride…”

Text: Real Analysis: Modern Techniques and Their Applications by Gerald B. Folland

Prof: Dr Stephen Gustafson

Prof Gustafson is an engaging professor. He is able to give a quick, intuitive overview of quite complex topics in class, leaving us to work out the technical details on our own. He also is very helpful during office hours. He also posted his notes online.


The classes move very fast so one might find it challenging keeping up with the readings. Also, though the classes are easy to follow, the homework is increasingly challenging and time-consuming. The final exam was quite hard, practice and recalling theorems and definitions are all important. This course covers a lot of material, so watch out!

Key Concepts



Differentiation of Measures

Lebesgue integration

Convergence of Functions

LP spaces

Hard Concepts

Lebesgue Radon Nikodyn Theorem: Quite powerful theorem, need to notice where to apply it. Also can be hard to find the decomposition at times.

Fatou’s Lemma: Tricky working with the limit infimum, also quite powerful and pops up in unexpected places.


One of the harder courses I have ever taken. Started learning some really powerful theorems about convergence, for example.

Course Review: MATH 322

Introduction to Group Theory

“We say groups have a rich structure because it keeps us mathematicians in business”

Text: Basic Algebra I: Second Edition

Prof:  Dr Vinayak Vatsal

Nike is a humorous professor who cares about his students. The homework he set was also useful in getting a mastery of the material in the course. Unfortunately, the textbook was made up of large, listless walls of text that prove half a dozen theses arbitrarily before deciding to declare that a theorem worthy of a name has been proven. Thus it cannot be readily used as a reference book and is difficult to read. The classes were significantly better, but from time to time also suffered from a lack of direction and interest. Group theory, on the other hand, is a fascinating field and the proofs often use a lot of creativity.



I found the material in this course difficult, but since it was an introductory class, I felt I had enough time to master the relevant concepts. Unfortunately, the relatively few iClickers were weighted 10% of the grade and the exams were not difficult but punished small mistakes a lot. Also, the final exam used a peculiar notation and seemed almost entirely about symmetric groups and had no questions about abstract group theory. As a result, the average was quite low in this course.

Key Concepts



Action on groups


Class equation

Finite Abelian groups

Isomorphism Theorems


Free group and generators

Hard Concepts

Action on groups: Useful to get some practice with a couple of these actions before one can start seeing the action that occurs in problems

Proving isomorphisms/finding a bijection: Often one can use the obvious or ‘canonical’ map, other times you need to do some clever

Counting elements of a certain order in abelian groups: Can make careless mistakes, double check your answer!


An interesting topic, the homework problems were fun, wished the textbook and exams were structured differently.

Course Review: STAT 406

Methods for Statistical Learning

“To fix ideas…”

Text: An Introduction to Statistical Learning by James, G., Witten, D., Hastie, T. and Tibshirani, R.

Prof:  Dr. Matías Salibián-Barrera

Matías is a very earnest professor who often works through helpful examples in class. He also provides supplementary class notes that are useful to review in your own time. His slides can be a bit confusing from time to time but are generally understandable.


This was my first statistics course. I found the material quite challenging at first because I was unfamiliar with a lot of the vocabulary and notation that was used. Also, we used a lot of quite novel results from advanced linear algebra and probability. However, I soon got used to the notation and realized that to succeed in the course one does not need to fully understand what mathematics operating in the background (just need to understand a little). The first midterm was short, free response and had a low average. The subsequent midterms and the final were multiple choice, largely, and were easier, the only difficulty often being the wording of some of the options. A lot of the material was also reviewed from CPSC 340. One of the aspects of the course that was a bit annoying was the webwork. They had a time limit and would often start by accident, or give you an incorrect mark on your first attempt. The labs were pretty reasonable, though you need to be quite quick and compare answers with your friends.

Key Concepts

Model Selection, esp Cross-Validation

Elastic Net Methods

Tree-based methods


Bagging and Boosting

Clustering Techniques


Hard Concepts

AIC Derivation: Can be pretty confusing as each formula makes different assumptions

Cross-Validation as Expectation: Make sure one understands the notation for expectation used

Linear Predictor: Some models may be linear predictors though they do not appear all that linear


A handy review of CPSC 340 except in R. Would have liked to have delved more into the statistics of it and how one chooses an appropriate model for a given data set.

Course Review: CPSC 421

Introduction to Theory of Computing

“Let me start off by telling you a fact without enough background to prove the fact”

Text: Introduction to the Theory of Computation by Michael Sipser

Prof:  Dr. Nick Harvey

Dr Nick Harvey is a very clear professor. He makes effective use of slides and slowly explains complex topics, making his lectures both interesting and easy to follow. For example, his explanation of the diagonalization argument was much clearer than any of the presentations on the same topic I have received in math classes. He also has a peculiar sense of humour and is a big soccer fan, so the class is interspersed with entertaining distractions.


The material starts with fairly simple with a bit of review from CPSC 121. It picks up a bit when you start performing reductions between problems from various complexity classes though there is a bit of recap from CPSC 320. The first midterm was straightforward, however, given its short length it was possible to not to do as well if one tripped on only one or two questions. The final was a bit harder, however, the previous exam was good preparation.  The homework included some questions that could be genuinely hard to understand. However, he gave generous hints as the deadline approached, and they were the type of questions that once you understood what the question was asking, the proof was often one of the first few obvious approaches that you would think of. Given that he dropped the lowest couple of homework, it’s no surprise that the overall average in the course was 80.

Key Concepts

Finite Automata and Regular Languages

Turing Machines


Time complexity classes

Mapping Reductions

Probabilistic Turing Machines

Communication Complexity and Fooling sets

Hard Concepts

Context Free Languages: Can be hard sometimes to come up with CFG or PDA for a given context-free language

Probabilistic Turing Machines: Give rise to quite convoluted complexity classes.

NP-Hard reductions: Might require a bit of imagination to come up with the reductions, at times.

Fooling Sets and Covers: One can sometimes get fooled by these, make sure one recalls the definition of rectangles and what exactly needs to hold for a fooling set.



Fun course. Dr Nick Harvey can make the course appear deceptively simple at times, but you actually learned a lot of quite complex material.

Course Review: CPSC 303

Numerical Approximation and Discretization

“One of the questions I got at the end of last week was ‘How do you deal with the loneliness?'”

Text: A First Course on Numerical Methods, by Uri M. Ascher and Chen Greif

Prof:  Dr. Jessica Bosch

Dr. Jessica Bosch is the literally the kindest professor I have ever met. She is super-receptive of feedback and cares (possibly too much) about her students’ trials and tribulations. She once spoke about her current research relating to mathematical models of tumour growth which was pretty interesting. Her slides (along with the helpful summary slides) are usually very clear and well structured. She also has in-class chapter group quizzes which are very useful in preparing students for the midterm and final.


The content in the course is in some ways very simple, it is a bunch of algorithms for solving well-known math problems. However, I think this simplicity is deceiving and the course hints at a fundamental aspect of computing – how problems get transformed as they are represented in the computer, and what properties are preserved. From this perspective, the course could be very complicated. Fortunately, we do not do very complex mathematics in the course, and largely the course is quite manageable. The midterm, given the practice material, was pretty doable. The final was a bit trickier but was combined with very liberal scaling. The assignments were not bad, though Matlab can get annoying. There was also a bonus assignment which, along with the liberal final scaling, contributed to the A- average in the course.

Key Concepts

Floating point number systems

Polynomial Interpolation

Numerical Differentiation

Numerical Integration

Numerical Solutions to ODEs

Global error (Convergence) vs local error (Consistency)

Taylor Series

Hard Concepts

Butcher Tableau: Used to represent an instance of general Runge-Kutta method. Easy to get mixed up with the meaning of the different coefficients.

Barycentric weights: Used for efficient computation of Lagrange basis. Not something that would occur to you naturally.

Order of a method: Each chapter seems to have a slightly different meaning of the order and precision of a method. Good to keep track of what it means in a particular context.


Interesting course. A combination of annoying Matlab along with neat mathematics and clever algorithms.

Course Review: CPSC 317

Internet Networking

“Most people’s code must have resembled a state machine… Only two of you [had code resembling a finite state machine]?! There’s gonna be a lot of zeros on the next assignment!”

Text: Computer Networking: Top-Down Approach 7/E by James Kurose  Keith Ross

Prof:  Dr. Alan Wagner

The professor is an engaging speaker and likes to intersperse class with somewhat philosophical activities. Though he cares about his students’ learning, he is somewhat disorganized and several lectures were very unclear and confusing, even if you had done the reading. The class is not boring, however, and Dr, Wagner has a lot of useful analogies, aphorisms and anecdotes that you can learn from even if you will not be assessed on them.


Unfortunately, there were several issues with clarity and many more administrative issues that prevented the course from being the dynamic course Dr. Wagner intended. This resulted in amplifying the difficulty of the conceptual material being taught which is actually quite manageable. A lot of terms were not clearly defined, the slides were not structured or written well (especially if they are to be used as a study resource), and the in-class drawings on the slides often added to the general confusion rather than alleviating it. The textbook is sporadically useful, as we often deviate from it, and other times, since we jump around, we lack the pre-requisite knowledge to understand the assigned readings. The assignments are fun, but the evaluation criteria were not clearly defined and kept getting changed in different ways by various contradictory piazza posts by instructors and TAs.

Key Concepts

Networking Layer

Link Layer

Transport Layer

Various Protocols (IP, TCP, ARP etc)

DNS Lookup

Performance metrics

Communicating Finite State Machines


Hard Concepts

DNS assignment: Implement a DNS server. The recursive calls along with the caching can get confusing, best not to do it at the last moment.

Layers: Separating out the flows in different layers can be confusing, best to read and understand an example protocol at each layer to get an idea of how it fits together.


Important topic, confusing delivery, still worth taking.

Course Review: CPSC 340

Machine Learning and Data Mining

“I don’t care if these parameters don’t mean anything to you – they don’t mean anything to me either.”

Text: (none)

Prof:  Dr. Michael Gelbart

Very affable professor. He is keen on his lectures (and even Piazza) not to be engulfed in sub-optimal questions, though, so the lectures are very well scheduled and structured. His background is in Biophysics which is pretty cool, as he will occasionally mention an application or connection to the physics that govern amoeba. He is very concerned about not contributing negatively to students’ mental health, often sparking heated Piazza discussions. Every now and then he will also drop some absolute gems such as:

“It’s easy to see that this is a good idea, but it takes a while longer to realize that it’s not a horrible idea”

“There’s a lot more to your loss function than just your GPA”

“Most of us already find it hard to find our way in this three-dimensional world”

“The mindset you should have right now is ‘I’m awake'”

“I’m a bit afraid to try this, but… Whatever”

“I was so much happier living a happy life, predicting the mean every time”

[Credits to Philip Haupt for recording these XD]


This course covers a LOT of material. The assignments are also very time-consuming. The actual material varies from trivial facts about parabolas to quite complex gradient calculations involving matrices. That said, the midterms and finals do not go very deep into the material. Ultimately the average for the course was an A and I don’t think there was any scaling.

Key Concepts




Dimensionality Reduction

Loss Functions


Fundamental Trade-off

Neural Networks

Hard Concepts

Convolutional Neural Networks: Not really sure how they worked. Thankfully, no question was asked about it on the final exam.

Kernel Regression and Kernel Trick: Not immediately obvious how these things work and inter-related. Possibly useful to think of the underly mathematics of inner products.


A broad introduction to the hot-topic that is Machine Learning. Enjoyable though time-consuming class.

Course Review: PHIL 321

Induction, Decision and Game Theory

“If my parents had brought me up in a house where all the coins were 99% heads, what probability should I assign to a coin flip?”

Text: An Introduction to Decision Theory by Martin Peterson

Prof:  Dr. Christopher Stephens

Entertaining lecturer. Full of funny examples and jokes. Also willing to go through examples quite slowly to ensure everyone understands.


The course is largely mathematical in nature, and as there are not a lot of pre-requisites the complexity of mathematics is not very high. We do cover a fair deal of diverse content in the course though so you might need to allocate some time to learn the material even if you do not find the mathematics challenging. The midterm average was quite low, and the highest grade was only 92% so it did not turn out to be much of a GPA booster if that was students motivation in taking the course.

Key Concepts

Decisions under Ignorance

Decisions under Risk

Interpretations of Probability

Game Theory

Hard Concepts

Dutch Book Arguments: Need to learn how to set the different cases up correctly. One useful intuition is that you usually want to encourage the victim to bet for what they are over-confident about and against what they are under-confident about.

Bayes Theorem: They sometimes ask Bayes Theorem questions in an odd way, not sure if it is mathematically incorrect or I am just being stupid. The confusion is related to sampling.

Final Paper: Not that used to writing a paper. Spent a great deal of time getting my thesis to be specific.


A decent introduction to Decision and Game Theory that is more nuanced and skeptical than you might get from an Economics or Mathematics class. Would have enjoyed even more emphasis on the philosophical issues and less on the mathematics.

Course Review: MATH 321

Real Variables II

“And now we have the tools the derive the Fundamental Theorem of Calculus, the formula you’ve been using since you were children.”

Text: Principles of Mathematical Analysis by Walter Rudin (3rd Edition)

Prof:  Dr. Gordon Slade

Dr. Slade was an engaging professor. He was clear while also motivating the content well. Once in a while, he would drop a wry joke, which brought a small amount of necessary levity to the class. One thing that stood out to me is that he would welcome clarifications and inquiries/corrections on the smallest details, especially on Piazza, rather than dismissing them which I think is helpful in such a class. Students’ often lack confidence in their first few serious proof courses and sometimes misunderstandings on seemingly small details can exacerbate that.


I found the course content more manageable than MATH 320, as it felt more well-motivated and we were applying a lot more of the theorems learnt in MATH 320. On the other hand, the homework was slightly harder as the proofs became more lengthy. Sometimes what was an entire proof question in MATH 320 is just a minor trick as part of proving some larger theorem. The midterms and final were all mostly doable, though I believe I made several trivial errors in the final. The final grades appeared to be scaled.

Key Concepts

Riemann-Stieltjes integral

Sequences of functions


Stone-Weierstrass Theorem

Arzela-Ascoli Theorem

Power Series

Fourier Series

 Hard Concepts

Metric space of functions: Takes a while getting used to discussing metric spaces where points are functions. Need to understand what neighbourhoods and open and closed sets refer to in this context.  Then you can apply a lot of the theorems already learnt to this metric space.

Inequalities: It may seem ridiculous to mention this, but some of the hardest questions involve finding tight bounds on functions using simple tricks such as triangle inequality, Cauchy, tangent lines, sums of squares in clever ways.

Examples: Coming up with examples (e.g. a point or a sequence) is not only useful in questions that explicitly ask for them, it can also be applied in conjunction with certain theorems taught in the course to show a certain object does not have a certain property. It is also a useful thing to practice before an exam as it helps you remember the conditions for certain theorems.  They can be really tricky to come up with on the spot sometimes.


Rewarding continuation of Real Variables I. Content was well motivated and homework was challenging.