Monthly Archives: April 2018

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.