Category Archives: Course Reviews

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.


Difficulty

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

Testing


 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.


Conclusion

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%.


Difficulty

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

 


Conclusion

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.


Difficulty

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

Ecology

Genetics

Immunology

Cancer


 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


Conclusion

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.”


Difficulty

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 🙂


Conclusion

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!”


Difficulty

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.


Conclusion

Fun, intelligent class. Favourite class this term.

Course Review: ENG 110

Approaches to Literature

“What’s this course called? ‘Approaches to Literature’? What kind of name is that? How should one approach literature? Here’s an answer. Very cautiously…”

Text: Leaving Home by David French, The Beggar’s Garden by Michel Christie, All That Matters by Wayson Choy

Prof: Duffy Roberts

Duffy is a cartoon character. Literally. Pardon the pun. Even the way he says “hi” in the morning is out of Loony Tunes… I think he would make a really good Goofy. Apart from re-enacting epic battles between his pet cat and the neighbourhood mice, Duffy spends most of his classes close-reading text. While its hard to believe, watching Duffy read is really educational. He keeps on searching for implied meaning, an endeavour most of us have either never attempted, or gave up after the volume of reading at school increased dramatically. Duffy is a post-modernist, so that kind of impacts the reading, since he is obsessed with the power of seemingly minute structural or vocabulary choices. He can also be quite rude, but one soon gets used to it, since he is rude to everyone.

Some quips:

“UBC is a Place of Mind. That means it doesn’t exist in real life, only in your mind.”

“Here’s the thinking behind Imagine Day. Lets give you day to imagine your future at UBC. Except there won’t be classes that day, unlike nearly every other day of your life at UBC. That’s where the ‘imagining’ come in.”

“I am your smartphone for the next 3 hours. You’ll never get bored of your smartphone, so there is no reason to get tired of me.”

“I accept bribes.”

“Property speculation is an old game in Vancouver. Where do you think Richmond came from?”

“Multiculturalism in Vancouver means each culture gets their own ghetto and they are not supposed to mix.”

“Don’t get colonized by the structure of a high-school paper.”


Difficulty

Really good luck getting an A+ or an A in this course. Highest score was 82. The workload was really manageable. Understanding what he wants is really important. I suggest first learning exactly what he wants before bending the rules. This course also requires you to think more and read more carefully then you are used to. Once one has resigned oneself to applying one’s mind, he is pretty accommodating with how you interpret and derive implied meaning from the text. Overall, this course is hard as you want it to be-if you are satisfied with simpler interpretations for a text, this course need not get very difficult and it won’t significantly impact your grade, since most of the class was in the 75-82 channel. He doesn’t give a lot of help while you are working on assignments, so be sure to incorporate recommendations from previous assignments in the new one.


Key Concepts

Home, Belonging and Place

Names and Naming

History, histories and memory

Close Reading inspires Question

Point, Illustration and Elaboration


 Hard Concepts

Close Reading: Never really done this in high school. The way I ended up thinking of close reading is as a generalization, that, while derived from the text, does not speak solely about the text any more.

Value: Still not sure how to approach this. He wanted us to evaluate the implied arguments. Felt like I was contradicting myself.


Conclusion

Thought-provoking class. Really improved my reading, which means a lot, since I am passionate about reading.

 

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!

 


Difficulty

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.


Conclusion

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: HIST 108

Global History of Capitalism

“Historians don’t like numbers very much. For this reason, they have left the historical enquiry of capitalism to the economists for far too long.'”

Text: Capitalism by Paul Bowles

Prof: Dr.Daniel VIckers and Dr Sebastian Prange

Prange and Vickers are like opposites. Prange is a tall, young, European man, always dressed impeccably. He has a more global outlook, and his research is on Medieval India. Vickers is shorter and older and has this good ol’ fashioned Canadian vibe. He seems to be pretty focussed on his area of research, New England farming communities.  However, Vickers is a very entertaining Professor, and has a lot of unique insights that really make you think. Prange is more structured, and is quite a methodical instructor, covering all the key arguments and points. In my opinion, they were a good team for this course, balancing each-other out well.


Difficulty

Good luck getting an A+ in this course. Highest score was 87. Other than that, class wasn’t too hard to understand. Some readings were a bit long-winded, but were okay on the whole. The weekly seminar paper was achievable, since they were expected to be short. I would have preferred two weeks though, and written something slightly longer. The midterm was all about speed for me. I left only 10 minutes for the last of three essays, so I didn’t do very well. The final was significantly easier for me, since we had more time.


Key Concepts

 

Capital

Money

Trust

Work Ethic

Corporations

Division of Labour

 


 Hard Concepts

Historical Argument: Different from a normal essay. Very important to take a stance and argue that position, while considering evidence on either side. Stating key arguments and defining all terms in introduction is key. Also remember to summarize the discussion in each paragraph, to drive the point home.

Economic concepts: Depending on how much economics you know, some of the concepts might be new. For example, the process by which government debt was turned into shares in a company seemed kind of confusing initially, since I didn’t really understand how government debt worked.


Conclusion

Fun elective for me. Improved my argumentation a lot, I think. Don’t expect great grades, though. I could not recommend this course enough for a student in Commerce or Economics, because it gives a historical perspective to a lot of the things that are taken for granted in those fields.

 

Course Review: PHYS 109

Enriched Experimental Physics

“Try to be careful while handling the radioactive material'”

Text: (none)

Prof: Dr. Douglas Bonn

Dr. Doug Bonn is amongst the highest paid scientists at UBC. This might explain why he constantly has the appearance of being on another planet. He is probably thinking up the world’s next great physics experiment. That said, his explanations are generally clear and precise. Most of the time in this course, though, its just you and your lab partner and possibly a TA. So the quality of your lab partner probably has a far greater impact on how much you enjoy/learn then the professor, since the curriculum is the same across both sections.


Difficulty

I’m not the most precise person, so I find labs hard and stressful. The average for the course was 86% though, so its hard not to get an A. One has to work fast from the beginning to finish on time.


Key Concepts

Least-squares fit

Chi-squared

T-test


 Hard Concepts

Coming up with improvements: The TA’s are a lot more demanding in this respect this term. Not sure I mastered coming up with improvements.

Two parameter fit: This is a pain. Lots of calculations on Excel for one ruddy number. Good to keep table organized to avoid making careless errors.

Handling oscilloscope: Though circuits were easy? Think again. Guessing and testing generally was the rule of thumb.

Observing resonance in a wire: Difficult to observe if a vibrating wire has achieved resonance. One way around this is to use theoretical values to approximate before observations.


Conclusion

Same as lab section for PHYS 107. Some cool experiments. Others are a pain. Probably learnt a lot of useful statistics on-the-fly. Not that enjoyable for me, though.

 

Course Review: PHYS 108

Enriched Physics II 

“Oh my God! Something is changing my magnetic flux!”

Text: David Halliday, Robert Resnick and Jearl Walker. Fundamentals of Physics 10th Edition Volume 2 (Chapters 21-44)

Prof: Dr Janis McKenna

Janis keeps things really straightforward. Further, she brings entertaining demo’s to class. She exploded lots of things and showed us how several devices work, ranging from a rail gun to an electric guitar. She is super-passionate about particle physics, and comes to the tutorials to help explain. Discussions on magnetic monopoles are always on the table. She also gave us guided tours of Triumf. Overall, a great prof for an enriched class in electromagnetism.


Difficulty

In comparison to PHYS 107, the professor and the textbook was a lot easier to understand. At the same time, electricity and magnetism is more abstract then mechanics. Further, you are expected to have grasped the basics of calculus by now, so the maths is harder. There was no scaling in this course yet the average was 75-78%, so if you keep up with the material you are okay. They through some tricky tutorial and homework questions at you once in a while, but rarely on exams or midterms. The midterms and exams were fairly conceptual-only a handful of plug-n-chug or mathematical questions. Most of the questions on the exam focused on applying (a) known physics concept/s in a possibly new environment. Thus, the cheat sheet was more of a security blanket than anything else.

Key Concepts

Maxwell’s Equations

Voltage

Electric Fields

Charge

Magnetic Fields

Circuits


Hard Concepts

Induced EMF: Never understood how an EMF can be circular, and not produce a voltage. Just learnt to accept magic.

Inductance: Tricky at first. Helpful to view as capacitance backwards.

Flux: Flux is mentioned in all of Maxwell’s Equations. Important to write flux through a loop as an area integral for some questions.

Integration: Sometimes its difficult to set-up the integral correctly, for a particular current or charge distribution. Important to make good use of trigonometry and right-hand rule. Also, check the answer.

 


 Conclusion

Fun course. Not as much work as Phys 107. Recommend it to anyone who has a vague interest in Physics. Even if you don’t do well, Janis’s demo’s will make it worthwhile for sheer entertainment value.