Tag Archives: ubc

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.

Course Review: CPSC 210

Software Construction

“The relationship between me and you, the class is zero-to-many, not one-to-many, since you could all get up and walk out right now'”

Text: (none)

Prof: Dr. Paul Carter

Dr Carter is an efficient and articulate prof. He also has a cool British accent. He is really good at balancing questions with getting ahead in the material. He also tries to give reasons for each structure or process, so that our conceptual understanding is good. He seemed omni-present on Piazza, constantly answering concerns, which was really helpful. He once made an error in the time the class ends. When people got up and started going to their next class, he started pleading them to stay, and not give up on his class. Poor guy!



In the first class we dived straight into the rather large code-base of a Space Invaders game. After guiding us through seemingly incomprehensible mazes of Java code, Paul Carter demoed a neat Android app for GPS with the London Underground. Then he informs us we have till the end of the course to submit that app to him. Panic ensues…

It wasn’t that bad. The first few weeks of the course were the worst, because I had no idea what I was doing. The project is fine (he gives you a skeleton) as long as you keep a cool head if things aren’t working out, and manage your time well. The midterm was just like the practice. The final was surprisingly heavy on implementation, but manageable. Labs and assignments are pretty reasonable and count for jokes.

Key Concepts

Object-oriented design/programming

Programming models

Building robust classes/methods

Design Patterns

How to learn a new language


 Hard Concepts

UML Sequence Diagram: Wasn’t covered in much depth at a time when we were still grappling with Java. Lots of details so needs a lot of practice.

Exception Handling: Exceptions are one thing that is pretty new from 110. Its important to learn the rules for throwing, catching and testing exceptions before implementing, because they are a bit different.

Observer Pattern: Sometimes its not clear which class to observe, but the rule of thumb is observe the ‘lowest’ possible class. Lots of little things as well, so make sure to have a mental check-list of all the steps in this pattern.

Iterator Pattern: Implementing a new Iterator can be pretty meta. Not to complex if you understand the basic purpose of an Iterator.

Parsing: Parsing can be a pain. It is really painstaking. Reading examples of parsing, reading the input file carefully and being painstaking are key factors in success.


Really useful course. First course where I actually got an idea of the job of a Software Developer. The excitement surrounding the project was also pretty fun.


Course Review: PHIL 220A

Symbolic Logic I 

“Not-not is not the same as not-not-not-not. But they are equivalent.”

Text: (Logic 2010 Software + Textbook)

Prof: Dr Roberta Ballarin

Roberta Ballarin seemed like she knew her onions. I had very limited interaction with her. One of the two times she spoke to me was to reprimand me, because she thought I started the exam when I was writing my name :P. There were a few interesting points raised in lectures regarding the philosophical implications of logic, but most of the lectures were practice problem sessions.


In comparison to Comp Sci, Physics and Math classes, the weekly problem sets were generally a breeze in terms of length and difficulty. Part of the reason I found this course easy was because I had covered similar material in CPSC 121. That said, if you have not taken anything vaguely computational in while, this course could take more time than you anticipated. Further, even if you do find the concepts easy, one cannot expect to succeed this course without any effort at understanding the material. All the midterms/final were fine if one did the homework and practised a few extra problems by hand. The first midterm was especially easy.

Key Concepts

Propositional Logic

Predicate Logic

Hard Concepts

Symbolizations with predicates: These can get really nasty. One has to symbolize really convoluted English sentences. Make sure you learn the how to deal with specific phrases and connectors.

Derivation with free variables: Tricky. Best to eliminate the free variable using tricks outlined in the software.


Logic 2010 is the name of the software. Some aspects of it are pretty neat, but others are poorly designed. One thing I wish I knew earlier was ‘direct’ symbolization. In any case, later on in the course, the software will start to reject correct symbolizations of sentences, making it pretty useless. The only way to get around this is to try to figure out what the computer wants and only use that. The online book is pretty dry. But there are some useful hints interspersed in the various documentation attached to the software. But it might require some digging.


If I had known the nature of this course, given that I had already taken CPSC 121, I would not have taken it. It does go a little deeper into logic then CPSC 121 though, so that might make it worthwhile for some. I did find the topic interesting. I just felt another course might have used my time more efficiently. Additionally, If you are student used to crunching through problem sets and are looking for an arts elective that is a grade booster, this could easily help you out.

Course Review: CPSC 110

Computation, Programs, and Programming 

“Trust the natural recursion!”

Text: (online videos via Coursera on Systematic Program Design)

Prof: Dr Ronald Garcia

Ron is a cool guy. Great sense of humour. He spent a lot of time answering basic questions and doing (generally) simplified examples which annoyed some, since they had already grasped the basics from the videos, and wanted him to explain the more complex aspects of the course. I didn’t mind, since I failed to fully grasp some of the basics from the videos. And sometimes Ron’s simplifications can be applied to a more complex setting. For example, the way he explained built in abstract functions was simple but did not leave out any nuances.


I worked very hard in this course. Some people who had serious prior programming experience, or got really addicted to programming once initiated by this course, found the assignments and tests a breeze. I did not. I got a very good result, but I think that was a result of generous scaling and a lot of hard work on my part. Problem sets are increasingly difficult. Though the first midterm is really easy if you made the faintest attempt to keep up with the material, the second midterm and the final are exponentially harder.

Key Concepts

HTDF recipe

HTDD recipe



Hard Concepts

Work-list accumulators: Required me to fundamentally alter the way I saw the structure of  my template, which was a challenge. Lots of moving parts as well.

Back-tracking search over generated trees: Most finals have a question on this, pretty tough, with so many moving parts, but the structure is pretty repetitive.

Abstract fold functions: Making one is easy, but using one to solve a problem is a challenge. Requires practice, insight and being methodical.


Generally okay lab, since the TA’s are on hand to help. This was in stark contrast to the problem sets which are generally harder, and you have to work on individually. I found the first few labs super-simple, but the one’s after the first midterm increased dramatically in hardness. I generally did not come close to the the 3-hour mark, though many people often remained till the end and many others would finish ahead of me within the first 30 minutes.


If you are not really  into programming, or have no serious programming experience, be prepared to work very hard to get the most out of this course. I honestly felt that the course was rushed and I didn’t have time to digest what I had learnt.

Course Review: CPSC 121

Models of Computation

 “The laptop that you are using is a lot more powerful than a DFA!”

Text: Discrete Mathematics with Applications 4th Edition by S. Epp (see website for other options)

Prof: Dr George Tsiknis

George Tsiknis is the kindest prof in the world. His amazing accent, and personal warmth really leave an impression. He also has a great sense of humour. Its unfortunate that he had family emergency towards the end. Even though he was really going through a lot, he came to class and made sure we were ready for our final. Great guy. Some of the questions in the slides are worded vaguely, making it difficult to get the I-clickers, but they are only for participation anyway, so its all good.  Really willing to slow down and take questions if you need help, in class. I suppose tutorials and office hours must have been equally beneficial.


I get the sense that the topics on this course are very deep. That said, we skirt at the surface of most of these topics, and as a result, the course is quite straight-forward for the most part.

Key Concepts

Elementary Logic

Proof Strategies

Logic Circuits

Hard Concepts

Algorithm Efficiency: The rigorous definition is quite long-winding. Knowledge of Big-Oh notation from Calculus class could help.

Interpreting Sequential Circuits: I found these really tricky in the lab and on exams. They are kind of puzzle like problems- in that you either get them or you don’t- but you can spend a long time just making sense of what’s going on, even if you understand the fundamentals really well.

Predicate: Conceptually easy, but also easy to make careless mistakes or you can confused in half-way through your own translation.


Fun lab. I kinda freaked out the first few days since I had no clue how to operate a Magic Box or breadboard, but after a while the labs started making sense and I started to enjoy simulating circuits with Logism (which is freely downloadable, btw) or cracking circuit puzzles. Ultimately you simulate a working computer, but it is still a long way a way from the real deal. Pre-labs are not too intense. Most labs are with a partner, so efficient teamwork can get you done a lot faster.


Fun course. Useful in learning basic logic, mathematical proof and simple models of a computer. But I get the feeling that the computer models we use are so simplified that they are ultimately interesting but have appear to have little real world application. I was waiting to connect what we learnt in class with my PC at home but that happened only superficially for me…The surprising immediate application I got out of this class were proof strategies that helped a lot in Math 121.