Course Review: CHIN 101

Basic Chinese I: Part 1 (Non-Heritage)

“bā lā kè  ào bā mǎ (Barack Obama)!”

Text: Integrated Chinese: Simplified Characters Textbook & Workbook, Level 1, Part 1 by  Yuehua Liu

Prof:  Lee (An-Yi) Laoshi

Lee Laoshi is super funny and passionate. The class was the most enjoyable class I took that term because of interactive nature of the lessons. It was the only class that I didn’t occasionally look at the clock to see when it was ending. She was also very helpful and understanding. Unfortunately, she was only hired as a Visiting Lecturer and will be leaving UBC soon.


The workload was a lot. Weekly quizzes, character sheets, and the occasional workbook chapter created an onslaught of homework, even when there wasn’t a midterm. Most of it was memorization, so it was just a matter of spending the time. Most of the stuff was on the computer. Unfortunately, my computer packed up on the final, so I didn’t do as well as I did during the rest of the course and I lost a letter grade.

Key Concepts

Pinyin (pronunciation) with tones

Character reading

Character writing

Understanding oral Chinese

 Hard Concepts


Recognising pinyin orally: Really hard, be sure to get a lot of practice before the final. I advise recruiting a first language speaker friend to help out.

Writing characters: Quite painstaking, especially if you are not the best artist. Lots of practice.


Fun classes, exhausting homework and worthwhile introduction to one of the world’s most widely spoken languages.

Course Review: MATH 215

Elementary Differential Equations I

“UBC is a very progressive place…Because you get to learn Linear Algebra before Differential Equations!”

Text: Notes on Diffy Qs: Differential Equations for Engineers, by Jiri Lebl

Prof: Dr Dan Coombs

Dr Dan Coombs has great British accent, and a wry sense of humour which helps to keep interest in the class. He tries to balance between tolerating conceptual questions and making progress in the more recipe-oriented curriculum. He spent a lot of effort restructuring the curriculum to be based on Linear Algebra, so as to make the class more conceptual and slightly less “formula-up-my-sleeve” math, though it still is.


The homework is really exhausting. The hand calculations have awful numbers in them, making them really tedious. The Matlab is … Matlab. As a CS student I thought Matlab would be a breeze, but that was not the case, as the language has a lot of quirks. The number of questions in a homework set is a lot considering the time each one takes. With the exception of the first homework, where we were given real world problems and had to come with models for them, I didn’t feel I got a lot out of the homework, except learning a few random facts about Matlab after trial and error.

Key Concepts

Modelling nature as a differential equation

First order linear equations

Linear systems of differential equations

Laplace transform

Non-linear systems

 Hard Concepts

Partial fractions: Thought they were pretty easy, but had a really gross one on the final

Non-linear classification of fixed points: Can get a bit confused between different fixed points

Classification of 2nd order linear systems: If you don’t want to re-derive them, need to be able to recall them quickly.


Homework was a schlep. Interesting topic, but recipe-driven curriculum almost kills it. IMHO, focus should be modelling natural phenomenon. The problem with the recipe driven approach, even for non-math students, is that (1) Engineers will probably just use Wolfram/computer system to solve it anyway. (2) While it might be helpful for them to classify what can/cannot be solved etc, odds are if it is non-linear you will try your luck, or use a linear approximation anyway.

Course Review: MATH 227

Advanced Calculus II

“Consider an infinitesimal paddle wheel…”

Text: (none)

Prof: Dr. Joel Feldman

Dr. Joel Feldman strikes a great balance between being really organized, while still pretty relaxed. He is very helpful, in that he is always available between classes for questions. He is also really knowledgeable about the field (as he is a mathematical physicist) which is great, though he did give us a particularly tragic expression when we said we didn’t know what curl was, halfway through the course and he had to explain it.


The weekly assignments are generally all straightforward. The questions vary from computational to small proofs. I missed the first midterm, but a lot of people got wrecked, and it looked tough so watch out. Each question in the second midterm was manageable, though it required thinking. The challenge is that there are only four questions, so the cost of getting one question completely wrong is quite high. The final was similar except it had more questions. The challenge then was that often it was not clear which of the various techniques we had learned in the course was the correct approach to a question.

Key Concepts

Analysing/ parameterizing curves in 2,3-space

Analysing/ parameterizing surfaces in 3-space

Analysing/ parameterizing vector fields in 3-space

Integrating over curves, vector fields, and surfaces

Integral Theorems

 Hard Concepts


Applications of integral theorems: Hard to pick the right strategy that is going to work.

Biot-Savart Law: Really abstract, not sure if I understood it.


Feels like a fun physics course. Wish we had more time to discuss differential forms, but other than that pretty interesting class.

Course Review: CPSC 221

Basic Algorithms and Data Structures

“After 221 all of you should use “divide-and-conquer” when handing out exams, its a lot more efficient!”

Text: Objects, Abstraction, Data Structures, and Design Using C++ by Koffman, Elliot B., and Wolfgang, Paul

Prof: Dr. Alan Hu

Dr. Alan Hu is great at making everyday metaphors (often involving Justin Bieber) out of abstract computer concepts. He is also very patient in class, answering questions in detail. His classes have a slightly “free-wheeling” style because of this, so the lack of structure could distract some. Dr. Hu is a super approachable guy, (except during exams!), and he seems genuinely passionate about teaching computer science.


The assignments and labs are all do-able, though the penalties for small compilation errors on assignments are harsh. The midterm was pretty long and it had a mistake on it and I (and many others) got wrecked. The final was significantly easier and the scaling was huge. There is a lot of material in the course though, and the questions on exams definitely require some thinking. However, if you are okay with mathematical proofs and work consistently you should be okay after scaling.

Key Concepts

Big-O, Theta, Omega (Time and Space Complexity)

Sorting Algorithms

Basic Data Structures

Iteration and Recursion

Basic Graph Theory


 Hard Concepts

Proof of program correctness: Slightly different than mathematical proof, make sure to fully understand the conditions for a program to be correct. I only realized towards the end of the course, that this requires you to really read and understand the code fully.

Implementation in C++: Algorithms can look a lot less elegant in C++, so one needs to be familiar with common coding style in that language to interpret algorithms well.

Evaluating time complexity of given algorithm: Generally easy, but curve-balls can be thrown. Try breaking it down or stepping through the code.


Really important course for interviews, (along with 213). Felt like I improved a lot of reading code, and Dr. Hu was pretty entertaining.

Course Review: CPSC 310

Introduction to Software Engineering

“The only things that matter are lives and money.”

Text: (none)

Prof: Dr Elisa Baniassad, Dr Gail Murphy, Dr Marc Palyart

Elisa shares a lot of her experience, and how things work in the “real world”, which is helpful for an engineering class. She is also pretty approachable and sympathetic to any concerns that you might have. Dr Murphy created a lot of useful examples, and live-coded in class which was also a great way to learn. Dr Palyart followed a similar approach to Dr Murphy.


The on going “agile development” project during labs is the only thing that really matters. It is where most of your learning takes place, and you don’t get a lot of help for that, so its pretty tough. The classes look at various buzzwords, design patterns and software development processes and these are assessed in the exams. The in class material is not very hard to understand at all.

Key Concepts

Design of Web Applications

Implementation with TypeScript, JavaScript, Mongo etc

Software development processes


 Hard Concepts


Networking: If, you, like me, have never taken a networking course, a lot of how the internet etc is working will seem like magic.

Nodejs: Return of asynchronous programming. Common source of bugs.

Git: Took me a while to get comfortable uploading etc with git.

Self-learning: Sometimes, you just have to use google and your own ingenuity to come up with a band-aid solution to get stuff working when you understand less than you would like and don’t have time to learn more.


Project is great experience, working as a group and learning new skills. Really hard though! Classes are okay, not much you couldn’t read from a book.

Course Review: CPSC 213

Introduction to Computer Systems

“You’ll probably never code in assembly again. But the ability to understand complex computer systems made up of about 20 simply understood lines of code is something you should keep.”

Text: Computer Systems: A Programmer’s Perspective by Randal Bryant

Prof: Dr. Mike Feeley

Feeley is a really hard-working, knowledgeable, helpful and supportive prof. He built a complex simulator to help us understand how assembly works, and his web-page for displaying marks is awesome. It has detailed bar-graphs on how we are performing on key learning outcomes throughout the course. He is really patient during office hours and is really friendly after class. His classes attempt to give us the “big-picture” perspective, so we often have to figure out the details in the lab on our own. He also makes the lab problems quite challenging, to push us further. He does “redemptive grading”, so if you perform better on a learning goal later on in the course, your mark for that learning goal can go up to 80%.


The part of this course that took me the most time was the labs. Some of them were really hard, and we took ages trying to just understand the question because a lot of the concepts were just being introduced and were still new to us. The exam/quiz questions might require a little bit of thinking, because they often have little tricks to them, but are quite doable. Especially since it is clear what concept is being tested in each question, and because the practice material is similar to the real exams. On the midterm, the really challenging question was reading assembly and converting it to C. You only have about 10 minutes to interpret 20 lines of assembly, so I suggest getting a lot of practice for that before the midterm. Following the midterm, the class is less in depth and we blitz through a lot of big topics in computer systems at top speed. Since a lot of this stuff was new to me, it took me awhile to grasp the concepts. However, the way the concepts were assessed on the final was such that if you understood the example on the slides well, you could do quite well. The labs at the end of the course are intense though, so watch out!

Key Concepts

The basic hardware and software architecture of a computer running a single program

Compiling C-code into assembly (and Vice Versa)

Computer bugs at an assembly/hardware level

Event-based programming

 Hard Concepts

Reading assembly: Sounds easy, takes time. It might be worthwhile to draw pictures/keep track of variables while reading assembly.

Solving problems of asynchronous programming: Tested in the labs. Quite hard but really rewarding. Suggest testing ideas with TA before rushing to implement them.

Reference counting: A bit painstaking, it is important to understand when exactly something is losing and gaining a reference in a specific program.

Bitwise operations: Come in handy at random places in the course, so try to remember them



Hardest Comp Sci course so far. Probably matured the most as a student of computer science as a result of this class. Realized the limitations of abstractions.

Course Review: BIOL 111

Introduction to Modern Biology

“If there is one thing you get of this course, it should be bio-magnification. It’ll make you think twice before eating sushi!”

Text: Essential Biology with Physiology by Eric Simon and Jean Dickey

Prof: Dr Jennifer Klenz

Dr Klenz does her best to make a class full of students who do not particularly like biology, hate it slightly less. She posts a lot of interesting links on the course website, especially about climate change. However, a combination of misleading i-clickers, ill-designed group projects, badly printed exams and arbitrary marking schemes left a bad taste in my mouth on my completing this course. The lectures also lack depth, since this is an introductory class. However, since the scope of this class is so wide, you might find a few of the topics interest you, and Klenz is an engaged lecturer, though she does misunderstand students questions and get sidetracked sometimes.


Conceptually, this course is straightforward enough. If one doesn’t flop of the group projects, there is no reason not to do well. The exams are full of common sense questions, usually based of the slides. Practice exams are pretty similar to the actual exam. The biggest place to lose marks is if you misinterpret the question, don’t have enough detail in your explanation or fall victim to the arbitrary marking scheme. I would recommend having as much control over the quality of the work on the group project has possible, and checking with TA’s to see if one is understanding the criteria correctly, because the assignment specifications are vague, though they are marked strictly.

Key Concepts





 Hard Concepts


Mitosis and Meiosis: While not very complex, this was one of the few things one had to remember

Structure of genetic material: Another thing that need to be remembered


Enjoyed some links about global warming. Felt that my knowledge of any other biological topics lacked the depth to be of any use and group projects were awful. Frustrating class on the whole.

Course Review: MATH 226

Advanced Calculus I

“The point of calculus is to understand how and when we can approximate non-linear transformations with linear ones.”

Text: Calculus: Several Variables by Robert Adams

Prof: Dr Julia Gordon

Dr Gordon is a really kind and gentle prof. Her classes focused on explaining the intuitive motivations for various theorems or algorithms. The classes did seem to get bogged down with administrative concerns. Since this was the first time she taught the course, she made a lot small errors, but not more than your average prof. However, she did get rather thrown-off by her errors and this, along with administrative concerns, probably slowed the class to the extent that we had to rush a bit towards the end of term. While her midterms were similar in difficulty to practice midterms, her homework was a great deal easier then what we have come to expect in honours. She generally explained the intuition behind theorems, but omitted proofs because she felt that the definitions we were using were not efficient/well-suited for proving those theorems. She is very helpful during office hours, but I don’t think she approves of too much hand-holding in an honours class, even though she will help you a lot if you ask for it. I also get the sense that her life is very busy!

Some quips:

“Please don’t cheat. In Russia, they never took it very seriously, but for some reason they take it very seriously here.”

“I sense some unrest in the class…”

“I haven’t taught you improper integrals, but you can extrapolate from you understanding of proper integrals.”

“Does everyone believe that this is an honest approximation to the function? Good”

“WAIT!! WAIT!! Before you pack up, let me deliver the punchline!”

“At some point in your mathematical career, you will have to solve a 100 difficult integrals. Here they are.”

“The Fundamental Theorem of Calculus is : ‘Never differentiate in public’. I am now going to ignore that rule.”


I have found this course the easiest honours Math course I have taken at UBC. However, people who are new to honours Math were slightly overwhelmed by a combination of n-dimensional space, epsilon-delta and the scarcity of example-based learning, all of which were prevalent in first year honours calculus. The workload was very manageable, with Webwork and a short written assignment due in two weeks. Scaling was generous, because people did poorly on the midterms. This was partly because of the people that were new to honours Math but also because the homework did not challenge us to demonstrate deep understanding of all the necessary concepts, which comes in handy on honours Math midterms, where conceptual understanding often trumps computation.

Key Concepts

N-dimensional intervals/balls (topology), limits (epsilon-delta), differentiability and continuity

Partial derivative of N-dimensional curve

N-dimensional derivative (Gradient and Jacobian Matrix)

Integration over N-dimensional space

N-dimensional optimization (Lagrange)

 Hard Concepts


Implicit Function Theorem: Found explanation in book confusing. Found it easier to think in terms of Jacobian Matrix.

Lagrange: Computationally difficult, have to solve non-linear system of equations.

Topology: Found it difficult to do proofs under time pressure.

Change of variables using Jacobian: Make sure not to get confused between image and source.

Geometry: Have fun visualizing N-dimensional intersections of various curves 🙂


Good class. It was nice to understand calculus from a linear transformation perspective. Felt that my understanding of key theorems of the class is still sketchy though, and that the end of the class was rushed.

Course Review: MATH 223

Linear Algebra

“This is really useful. You might get a call one day from Downtown, asking you how to take the inverse of a two-by-two matrix.”

Text: Linear Algebra and its Applications by David C. Lay (optional)

Prof: Dr Richard Anstee

Professor Anstee looks kinda like a classic Prof. Fuzzy white hair, check. Kindly yet contemplative expression, check. He is also a natural teacher, having a cavalier attitude yet still able to get the material across. He says the most whimsical things in the middle of lecture, making his classes really entertaining. He spent the first week teaching many of the major concepts intuitively for two-by-two matrices. The following weeks till the second midterm were both applying and more rigorously fleshing out the ideas discussed in the first week, so don’t get psyched by the first week if the material is really new for you. Anstee tends to switch perspectives a lot during lectures, without explicitly informing you. I have a feeling he does this on purpose, to keep us on our toes, because viewing things from multiple perspectives is a core  feature of Linear Algebra. He is also a really kind Prof, holding many-many office hours and always willing to chat to his students. He also brought home-made cookies on the last class :D.

Some quips:

“You never know who you will meet on the bus!”


Since I had learnt this material before, I am not a fair judge. However, for people who have either never taken an honours math class or have no familiarity with matrices this course is probably both challenging and do-able. More then any other course I have taken so far, conceptual understanding is key. In calculus you can memorize a ton of algorithms and you can go pretty far. In linear, the questions are deceptively simple if you can make the connection to theory. On exams, some ten mark questions were literally two or so lines. He also gives you practice exams where the first few questions (these are often the ones that test computation) are exactly the same as the one on the real exam, except with different numbers, so there is really no excuse for losing many marks on the first 40%. Some of the homework questions are significantly more challenging then exam questions, but they are do-able, and he gives you lots of help if you ask him. Conceptually, since linear algebra is about multiple perspectives, to do very well in this course, I would suggest consulting a variety of sources. In terms of marks, after generous scaling, I think that one can get a decent grade in this course, though those who are new to honours math might have to work extra hard.

Key Concepts

Representing linear transformations as matrices

N-dimensional Vector Spaces (generalization of R^n)

Properties of matrices/transformations (characteristic, determinant, trace, rank, eigenvalues)

Types of matrices/transformations (diagonal, diagonalizable, invertible, orthogonal, hermitian)

 Hard Concepts

Change of basis: Got really confused by this. What I realized was, depending on the context, one can interpret a matrix as a change-of-basis, or as a linear transformation on a given basis. Another thing to keep in mind is that a change-of-basis matrix has column vectors that form a basis of the domain in the co-ordinates of the image.

Complex conjugate: Didn’t go to deep into complex numbers, but got confused about which theorems apply in the complex/real case respectively.

Entry-wise manipulation of arbitrary matrices: Had difficulty visualizing the a_ij element in a matrix.


Fun, intelligent class. Favourite class this term.

Book Review: Preface to Plato

Preface to Plato by Eric Havelock 


My summer project of reading Ancient Greek Philosophy got off to a rough start when I stumbled through Plato’s Republic. Expecting an insightful, albeit idealistic political solution, I was sorely confused. Interspersed between polemics against Poetry and Homer, I found traces of a simplistic, totalitarian regime. Even the running of this regime was not elaborated upon, except in the branch of education.
After scouring the internet wildly for answers, I found two likely solutions to my quandary. The first, was the following review:…
The second was this book.
From what I understand, Havelock’s fundamental aim is to trace the transformation in the Greek Mind through Plato’s writing. The main premise is that Plato’s society was still largely illiterate, and thus Plato’s attack against Poetry is in fact an attack on a ‘pre-literate’ source of knowledge that is lacking in logical consistency and factual correctness, that we take for granted in our own encyclopaedias. Havelock is arguing that Ancient Greeks literally ‘believed’ in Poetry, and this is the rational for Plato’s attack. From this perspective, the state that is constructed in Plato’s Republic is simplistic because it is brought in only for the sake of the argument on Poetry. The details in education are given because of the role Poetry played in Ancient Greek education, and this is the aspect of Poetry that Plato is attacking.
Havelock makes a lot of other insightful points about vocabularly etc, half of which went over my head. Aside from the the Republic and Homer’s Odyssey, I haven’t read any of the other sources he quotes. Further I do not understand Greek. For these reasons, it’s possible that the evidence Havelock brings to support his claim is faulty. However, the construction of his hypotheses, whether they are validated by fact or not, is intriguing in itself. He really made me think, and question in a way I was not used to. For example this is how it starts:

“It sometimes happens in the history of the written word that an important work of literature carries a title which does not accurately reflect the contents. A part of the work has become identified with the whole, or the meaning of a label has shifted in translation. But if the label has a popular and recognisable ring, it can come to exercise a kind of thought control over those who take the book in their hands. They form an expectation which accords with the title but is belied by much of the substance of what the author has to say. They cling to a preconception of his intentions, insensibly allowing their minds to mould the content of what they read into the required shape.
These remarks apply with full force to that treatise of Plato’s styled the Republic. Were it not for the title, it might be read for what it is, rather than as an essay in utopian political theory. It is a fact that only about a third of the work concerns itself with statecraft as such. The text deals at length and often with a great variety of matters which bear on the human condition, but these are matters which would certainly have no place in a modem treatise on politics.”

Where have you been all my life? Not only is he answering my concern about the lack of political theory, he is making the seemingly obvious hypothesis that maybe it is not about political theory at all. The presentation of this hypothesis, however, disguises its sheer brilliance. Through all my confusion, I not once doubted that Plato aimed to write on political theory.

“So it is that the long sleep of man is interrupted and his self-consciousness, separating itself from the lazy play of the endless saga-series of events, begins to think and to be thought of, ‘itself of itself’, and as it thinks and is thought, man in his new inner isolation confronts the phenomenon of his own autonomous personality and accepts it.”

This comes at the end of the chapter in which he draws a link between the transformation from an oral to written culture, and how it results in a realization of self. Not sure if I buy it completely, however, it asks really interesting questions about the impact of our means of communication on our fundamental thinking. The way he describes the process of self-realization is equally fascinating.

“Yet the day would come when the original drive of the Platonic method would revive, and the phenomenal flux would once more be examined and penetrated and subordinated to categories of explanation which possess a wholly abstract integrity. And when this day came, science would awaken again.”

While this is slight less original, in that he seems to be merely documenting the return of ‘rationalism’. However, while few people claim to be Platonic idealists, the way we continue to describe our world in abstractions definitely has deeper parallels to Plato then I initially thought. Once again, his description of this historical process is in itself, thought-provoking.
Ultimately, Preface to Plato not only helped me understand Plato’s Republic better, as an exposition of hypotheses, it is commendable.