Posted by: idm04 | 2021/05/15

May 2021 Update

Wow, I haven’t updated since 2017. Does anyone still read this anymore?

Since graduating from the second degree Bachelor of Computer Science (BCS) at UBC in 2017, I became a software developer at a large, multinational enterprise software company at their branch in downtown Vancouver.

It’s been a whole lot of fun, learned a bunch and made a few lifelong friends, but eventually I decided to try living elsewhere. So, in the middle of the pandemic (near the end of summer 2020) I quit my cushy job and moved to Tokyo, Japan where I am currently residing. Fortunately, my current job (as a software engineer) is completely in English. I have no idea how long I’ll stay and where life will take me afterward if anywhere, but I’m definitely enjoying it. For the time being, I want to be here at least until international tourism has resumed so that I can take my family and friends around.

Despite the lack of a proper lockdown, Japan hasn’t really seen any huge outbreaks which is kind of surprising. And despite dissenting public opinion, the Olympics will go forward. That being said, cases have been on the rise, and I’ll be lucky if my age group can get a vaccine by the end of 2021. So I’m considering coming back to BC temporarily, but no concrete plans yet.

It seems this blog still gets views on the daily, albeit at least one order of magnitude lower than the early days. I still get emails once in a while from students which is nice, but it’s quite rare.

Hope everyone is doing safe and well.

Posted by: idm04 | 2017/07/25

July 2017 Update

Yeah, it’s one of those “it’s been a long time” posts.

I technically haven’t graduated from UBC yet, but I’m done with classes and intend to graduate this November.

Hopefully that still makes me eligible to sign up for Tandem UBC so I can practice my Japanese…

At my last term at UBC, I took JAPN 101, ECON 102 (Gateman), and CPSC 404. I was also a TA for CPSC 310. I really should get around to writing reviews for these courses, but I’ve clearly been putting it off. If you need reviews for one of these send me an e-mail and I’ll prioritize that course.

In other news, I recently went to Japan, Korea, and Taiwan, which was a lot of fun. I knew my Japanese was bad, but only when I went to Japan alone for the first time did I truly become disillusioned as to how terrible it really was! I’m interested in posting my trip pictures on another blog. Technically, I’ve already posted them in a private blog, but I’m thinking of having a public-facing version as well. After my travels, I started working full time at a software company in the downtown area.

Speaking of other blogs, I started a new blog called vanfoodsnob.wordpress.com. I used to post a lot of food pictures on this blog, and my followers were quite split as to whether they enjoyed or hated them. Well, if you didn’t hate them, you can now explore my snobby food adventures on my relatively new food blog. You can sign up for e-mail subscriptions as well at the bottom.

Aside from work and blogs, I’ve been sporadically watching anime, playing badminton, and starting to get back into table tennis (because my office has table tennis). If you want to join me for a food adventure sometime or badminton or ping pong, hit me up :)

Cheers

idm04wordpress(at)gmail.com

/end

Review of CPSC 310, CPSC 340, CPSC 430, and JAPN 100.

Read More…

Textbooks:

Discrete Mathematics with Applications 4/E by Epp
Like new condition
$120

Introduction to Genetic Analysis 10/E by Griffiths
WITH SOLUTIONS MANUAL
Very good condition
$70

Janeway’s immunobiology 7/E
Very good condition
$50

The Philadelphia Chromosome by Wapner
Very good condition
$20

Update:

I was supposed to go on a co-op placement this summer, but I ended up leaving co-op and went on an internship instead.

It was my first dev internship and I learned a lot of things, it was a lot of fun too. The first month or so was pretty tough as I was getting used to the technologies and software development in general, but I slowly became more comfortable with my responsibilities. Most of my work was back-end development, involving Visual C# and SQL Server Management Studio.

During the second half of the summer I also tried working on a personal project (web app), but it’s going really slowly… currently I’m working on the front end, which I have no idea how to do. I’m using the Play Framework and it’s been frustrating because either the documentation/tutorials are obscure/deprecated, or I’m not doing things right lol.

Back to school next week, for hopefully the last September ever. I’m finally taking CPSC 310, which I am not looking forward to. Other than that, taking CPSC 340, CPSC 430, and JAPN 100 this term. I should have enrolled in CPSC 322 but I didn’t realize there was a section that wasn’t at 9 am. I’m looking at joining the badminton club and the table tennis club, although I’m currently injured (as usual).

/end

List of all courses I’ve taken

 

Courses I took this term:

CPSC 320
CPSC 313
CPSC 317

I was originally enrolled in CPSC 314 and 425 as well, but many CS friends advised me to drop one or two courses, and I soon found out why. I don’t recommend taking more than three CS courses in a term. And even with three CS courses, it’s important to consider how heavy the workload is for each course.

.

.

.

CPSC 320: Intermediate Algorithm Analysis and Design

Summary:

 

Some of the algorithms were difficult to grasp and the assignments were very difficult but overall I thought the course was fine.

Jan was the instructor when I took the course.

Grading scheme:

Assignments (8) 20%
Midterms (2) 30%
Final 35 – 50%
Voluntary quizzes (10) 0 – 15%

 

Each quiz had weight 1.5%. If we scored better on an individual quiz than the final, then it will be used to calculate the final grade, and the final will be worth 1.5% less.

.

Syllabus:

– Algorithm design techniques: greedy algorithms, divide & conquer, dynamic programming, randomization etc
– Mathematical tools: O notation, recurrence relations, amortized analysis

We skipped over some material including “P versus NP”

In-class activities:

We would go over an algorithm for some problem, write pseudocode implementing the algorithm for the problem, analyze the running time of the algorithm, and then try to find ways to improve the running time.

The prof wrote notes on the projector, they’re not always posted online so I felt it was important to take notes.

Quizzes:

I didn’t study for any of the quizzes, but I really found them helpful because this was one of the classes where falling behind was really bad for the next lecture. This is one CS course I would not skip.

Assignments:

There were eight assignments in total, due about 1.5 weeks apart. They could be done in pairs but I did all of mine alone. They were very difficult and I highly recommend finding a good partner and starting early on each assignment.

The prof had a survey for each assignment polling for how long it took to do the assignment (not including reviewing notes). It seemed like on average people spent seven hours on each assignment.

Textbook:

Algorithm Design by Kleinberg and Tardos, 2005.

I did not read the textbook, but my friend said it was useful for them. I found that reading the slides was sufficient.

Exams/Tips:

We got one cheat sheet, double-sided for the midterms, and three cheat sheets double-sided for the final.

Do not throw away your midterm cheat sheets because you can use them for the final!!

The exams were fairly straightforward and were based directly off the algorithms we learned in class as well as the questions about the algorithms that are on the lecture slides. Some questions were directly from the slides or tutorials.

I recommend going to tutorials because it gave me extra practice for doing exercises and better understanding the algorithm, and some tutorial questions (or similar questions) did appear on the exam.

To study for the exam, I just went through the lecture slides thoroughly, making sure I could understand everything and could answer all the questions on the slides, e.g. questions about running time for a specific pseudocode example. Then I wrote notes/examples in my cheat sheet, and finally I re-did some tutorial questions and/or the practice exam questions. If I had time I would also look back at quiz questions which were somewhat representative of exam questions, and then assignment questions.

.

.

.

CPSC 313: Computer Hardware and Operating Systems

Summary:

The assignments were long and difficult; the quizzes were short and difficult. I enjoyed the material but I learned most of it from the textbook.

Grading scheme:

Assignments (4) 24%
Quizzes (4) 28%
Final 48%

Acton was the instructor when I took the course.

.

Syllabus:

  • Sequential CPU instructions (Y86 instruction set architecture) and various CPU stages
  • Pipelined CPU instructions – executing multiple instructions in a pipeline, one for each stage, to increase throughput
  • Memory hierarchy – different levels, caching, locality
  • File systems – Disk characteristics, FAT, Unix, Standard I/O
  • Virtual memory – memory organization, translating virtual address to physical address

In-class activities:

Typical lectures. I think we could have done more exercises in class.

Quizzes:

The quizzes were in-class. We spent the first 30 minutes doing an individual quiz, and the next 15 minutes doing a group quiz. The quiz mark was a combination of the individual and group quiz marks, or just the individual quiz mark if we did better on that.

Make sure to use the learning goals (if provided) on Piazza to determine how to study for the quiz. Many quiz questions are quite tricky and I felt many questions were not covered much in class.

The average and median for Quiz 1 were 59% and 57% respectively.
The average and median for Quiz 2 were 58% and 59% respectively.
The average and median for Quiz 3 were 66% and 67% respectively.
The average and median for Quiz 4 were 59% and 59% respectively.

Assignments:

There were four assignments in total, and I thought they were quite difficult. The first one was really easy; just involved translating X86 to Y86. The remaining three were programming assignments (in C).

Assignments could be done in pairs or alone.

Make sure to start and get help early. Each assignment except the first one took us tens of hours each. It was pretty “easy” to get near perfect on the assignments because the requirements were laid out very clearly, but getting to the finished product took a lot of time and effort. I recommend starting at least two weeks in advance.

The second assignment was particularly bad for me because I had forgotten how to C.

The assignments were good practice for coding in C, but they were not helpful in learning the lecture material.

The average and median for Assignment 1 were 88% and 96%, respectively.
The average and median for Assignment 2 were 77% and 88%, respectively.
The average and median for Assignment 3 were 85% and 91%, respectively.
The average and median for Assignment 4 were not given.

Textbook:

Computer Systems: A Programmer’s Perspective 3/E by Bryant and O’Hallaron

Exams/Tips:

I focused my studying on the learning goals. I did not learn much during lecture and had to read the textbook for all the sections except the first one on Y86 ISA, which was mostly review from CPSC 213.

Tutorial questions were not posted online, so definitely go to tutorial because there wasn’t that much practice material elsewhere. Tutorials were also used for getting help with assignments, which were only helpful if you started the assignment “on time”. Aside from tutorial questions, the recommended textbook questions were often useful as well.

.

.


.

CPSC 317: Internet Computing

Summary:

 

Assignments were long and difficult, quizzes were short and difficult. Some of the material was interesting — I particularly liked the topic on security. I also appreciated learning about fundamental protocols of the internet like UDP, TCP, DNS, but there were many technical details covered in the course that were less interesting to me.

 

Grading scheme:

Quizzes (3) 24%
Assignments (3) 24%
Final 52%

Acton was the instructor when I took the course.

.

Syllabus:

  • IP addresses and routing
  • Link layer and ARP
  • Network structure and construction
  • Layering
  • Layers & Connection Multiplexing
  • UDP
  • DNS
  • Performance Metrics
  • Reliable Delivery
  • Multimedia (skipped this)
  • TCP
  • Application Layer Protocols
  • Security & Privacy

 

In-class activities:

Other than regular lectures, sometimes we would do a worksheet. Pre-class Socrative questions were posted before each lecture. Unfortunately, there was no way to access the questions and answers afterward.

Quizzes:

The quizzes were in-class. We spent the first 30 minutes doing an individual quiz, and the next 15 minutes doing a group quiz. The quiz mark was a combination of the individual and group quiz marks, or just the individual quiz mark if we did better on that.

Make sure to use the learning goals (if provided) on Piazza to determine how to study for the quiz. Many quiz questions are quite tricky and I felt many questions were not covered much in class.

The average and median for Quiz 1 were 65% and 64% respectively.
The average and median for Quiz 2 were 71% and 74% respectively.
The average and median for Quiz 3 were 63% and 65% respectively.

Assignments:

There were three assignments in total, and I thought they were quite difficult.

Assignments could be done in pairs or alone.

The first two assignments were in Java and the last one was in C.

Make sure to start and get help early. Each assignment except the first one took us tens of hours each. It was pretty “easy” to get near perfect on the assignments because the requirements were laid out very clearly, but getting to the finished product took a lot of time and effort. I recommend starting at least two weeks in advance.

The assignments were good programming practice, but they were not that helpful in learning the lecture material.

The average and median for Assignment 1 were 88% and 93%, respectively.
The average and median for Assignment 2 were 88% and 96%, respectively.
The average and median for Assignment 3 were 71% and 78%, respectively.

Textbook:

Computer Networking: A Top-Down Approach 6/E by Kurose and Ross.

Exams/Tips:

I focused my studying on the learning goals. I did not learn much during lecture and had to read the textbook for pretty much all the sections. The textbook was more detailed than our purposes for many sections, so I skipped over some of the details that weren’t pertinent to the learning goals.

Tutorial questions were not posted online, so definitely go to tutorial because there wasn’t that much practice material elsewhere. Tutorials were also used for getting help with assignments, which were only helpful if you started the assignment “on time”. Aside from tutorial questions, there were recommended textbook problems and Socrative questions if you saved them. Most of these were good for practicing.

The kind of questions people had most trouble with seemed to be on performance metrics (calculations) and I felt we could have used more practice with that topic.

.

.

Posted by: idm04 | 2016/01/10

January 10th, 2016

Happy New Year!

I just finished my co-op term at a software company in downtown. Am definitely missing it there already… the people were great and a lot of ping pong was played ;)

Back to school now, which I feel somewhat miserable about. For the first few days of school, I was feeling extremely tired during all my classes, and I wasn’t sure why. On Thursday, I decided to take the bus to school instead of riding my bike (it’s only a 10 min bike ride for me) and all of a sudden I wasn’t that tired in class anymore… I guess my body wasn’t yet used to going back to cycling after months of not cycling.

This term, I will be taking CPSC 313 (hardware and operating systems), 320 (algorithms), 317 (internet), 314 (graphics), and 425 (computer vision). In addition, I am continuing a volunteer role from last year and have to apply for co-op jobs again       :(

Oh, and I’m selling textbooks for BIOL 234, CPSC 121, and MEDG 421:

Discrete Mathematics with Applications 4/E by Epp
Excellent condition
$120

Introduction to Genetic Analysis 10/E by Griffiths (with solutions manual)
Very good condition
$70

The Philadelphia Chromosome by Wapner
Very good condition
$20

 

 

Posted by: idm04 | 2015/09/20

September 20th, 2015 – On co-op

It’s been a while… (do I say this every time I post?)

So, over the summer I finished a bunch of courses (CPSC 221, 213, 304) and secured a co-op placement for the fall, which I’m currently working at. I wish I’d worked on more personal projects before applying for co-op jobs, and done some technical questions practice — I think it would have helped me be more competitive when looking for jobs.

I also wish I’d done more stuff like badminton/basketball, online courses, personal projects… in second term of the summer, I only had school twice a week; I don’t even remember what I did in my abundant spare time. Feels like I have so little time now since I’ve switched from that to a 9 – 5 ish work schedule, five days a week.

Anyway, I started my co-op term in the first week of September, commuting to downtown. The company is doing really well, my supervisors are really nice, and I’m finding most of the work interesting so far. Unfortunately, there isn’t a lot of coding in this position… so I’ll have to work on stuff on my own time to practice coding ;_;

Is it just me or does it seem like UBC admitted way too many people this year? I heard CPSC 110 had over 300 people on the waiting list, and there are some first year CS students who aren’t gonna take any CS courses this entire year because they can’t get in, even through the waitlist. Similarly with GRSJ. Also heard a couple first year Engineering students got kicked out of their STTs because they didn’t have enough space in them and didn’t realize until later…

In other news, I’ve been playing badminton once a week in Richmond, and need to find more people around my skill level… anyone here play?

 

Courses I took this summer:

CPSC 221
CPSC 304
CPSC 213

List of all courses I’ve taken

.

.

.

CPSC 221: Basic Algorithms and Data Structures

Summary:

One of the most important courses for CS interviews because data structures. You’ll also have to learn C++ on your own.

I have a feeling that the summer offering of the course is a lot easier — material might be left out, and there weren’t many assignments.

Grading scheme:

Labs 10%
Assignments 10%
Midterm 30%
Final 50%

.

Syllabus:

– Linked lists, stacks, queues
– Big-O, Big-Omega, Big-Theta, time and space complexity, algorithm analysis
– Induction and recursion, loop invariants
– Sorting
– Trees, tree traversal, binary search trees (BST), tree rotation, B-trees
– Priority queues, heaps
– Hashing
– Graphs
– Counting (probability)

In other words, check out the course website.

In-class activities:

Nothing new here. Aside from actual lecturing, there were some worksheets given to us near the end of class sometimes that we would do in class. Unfortunately, since we worked on it at the end of class, we did not go over the questions as a class.

Lab:

Lab was done alone or in partners, and was due the following lab. Some people just did the lab at home, went to lab, got it marked as soon as possible, then left. I found the first few labs were somewhat difficult, perhaps because I wasn’t used to C++.

For labs and assignments, I either used Visual Studio 2013 or I connected to the Linux ugrad.cs.ubc.ca servers. I should note that I run Windows. I recommend the latter for assignments, because that’s how the markers will test your code.

Assignments:

There were only four assignments — two theory assignments and two programming assignments. The theory assignments were straightforward. The programming assignments could be done as a pair, and were somewhat challenging.

Textbook:

Readings were assigned from two textbooks:

Objects, Abstraction, Data Structures and Design Using C++, Elliott B. Koffman and Paul A.T. Wolfgang, Wiley and Sons, 2006.

Discrete Mathematics with Applications (Fourth Edition), Susanna S. Epp, Brooks/Cole, 2011.

Some people found these textbooks online. According to our course website, we were expected to read Chapters P and 1 of the Koffman book before our first lab, but I doubt anyone did, because that encompassed 100 pages. After reading about 10 pages, I gave up and didn’t read any textbooks for the remainder of the course.

Tips:

You have to learn C++ on your own, and there are a plethora of online guides to help you do that, just search online. Some resources I’ve found:

http://www.programmr.com/practice/ – scroll down and you’ll see a link to an interactive C++ course. You’ll have to create an account.

http://www.horstmann.com/ccj2/ccjapp3.html – ‘Moving from Java to C++’

http://pages.cs.wisc.edu/~hasti/cs368/CppTutorial/ – ‘C++ for Java Programmers’

http://www.learncpp.com/ – what a lot of people use

If you’re reading my post to get a head’s start, either read Chapters P and 1 of the Koffman book before your first lab, or start going through one of the above resources.

Don’t understand pointers? Binky Pointer Fun Video may help. Or just search for ‘pointer tutorial c++’.

Assignments — as usual, start early, for reasons that should be obvious by now. And please run your code regularly so you can debug it in small steps. I still see people write functions after functions and then run their program at the end, resulting in hundreds of error messages, many of which are dependent on another, and is essentially a huge mess and a pain to fix.

Difficulty:

This class is notorious for being difficult, but it was quite easy in the summer with Kurt as our instructor. I have a feeling some details were taken out, and that the exams would have been more difficult if taken with a different instructor or during the Winter Session. Our class average was 84%…

.

.

.

.

CPSC 304: Introduction to Relational Databases

Summary: Relational databases + SQL. I heard this course was useful for co-op so I took it instead of the usual CPSC 310 that most BCS students take in the summer.

Grading scheme:

Clickers 2%
Tutorials 5%
Peerwise 3%
Project 20%
Midterm 1 15%
Midterm 2 20%
Final 35%

.

Syllabus:

– Relational Model (Entity/Relationship diagrams)
– Functional Dependencies and Normal Forms
– Formal Relational Languages (Relational Algebra)
– Structured Query Language (SQL)
– Data Warehousing & OLAP
– Datalog & Deductive Databases
– Semi-structured data and XML

In other words, check out the course website.

In-class activities:

We had Hassan Khosravi as our instructor, who gave us a lot of in-class problems and clicker questions to work on.

Tutorial:

In tutorial, we were given exercises to do either alone or in a pair. They were to be handed in for completion marks either at the end of the one-hour tutorial or by the end of the day if it was a longer exercise. The exercises were based on material we had covered in lecture.

Project:

In teams of four, we were required to choose an application that could use a database, and then build the database application, complete with GUI. We didn’t have to form a team with people in the same tutorial, but it was recommended. Unfortunately, all of my team members were in the other tutorial, which made communication a bit more difficult on my end.

There were several milestones or stages in the project at which we were to hand something in. For example, the first milestone was the project proposal, which was simply a description of what application we chose (e.g. bank, school, some kind of business), and was due a few weeks into the course.

As for working on the actual project, our team divided the work into GUI, populating the database (writing the SQL script), and doing backend to connect the database to the application and GUI. The SQL script is by far the easiest and would only take a couple of hours.

We probably started writing actual code for the project a little over a week before the project was due, which was stressful but ended up working out in the end. People could either do the project in Java (JDBC), PHP, or something else. We chose Java because we thought it’d be the easiest since we were most familiar with it.

Readings:

The required textbook was Ramakrishnan and Gehrke. Database Management Systems, 3rd Edition, McGraw-Hill, 2003.

I did not find it necessary to read.

Exams:

For the midterms, we had an individual exam and a group exam. The group exam consisted of the same questions from the individual one but we worked in groups of four and were given less time. The group exam immediately followed the individual exam.

Tips:

For the exams, it was sufficient to simply redo the in-class problems/clicker questions we were given. The exam questions were analogous to these problems. In terms of lecture material, I found the material on Data warehousing and Datalog & deductive databases the most difficult. Unfortunately, I had co-op interviews when those sections were covered, and I found the lecture notes difficult to understand. The notes for the other lectures however, were fairly straightforward to understand, even for those that I missed for co-op interviews.

For the group project, I recommend choosing people in your tutorial, or at least people with whom you can easily meet schedule-wise. The Java/JDBC backend stuff (connecting to Oracle, connecting the database to the application) seemed pretty overwhelming to me at first (I had only done CPSC 210 previously), so I kept putting it off which was obviously a bad idea. Once I started following through the tutorials on the course webpage, it really wasn’t too bad.

Many previous students use Github to store their project, so if you were to search for CPSC 304 or CS 304 you’d probably find many projects if you’re looking for sample code.

We really only needed a few full days to start and finish the project, but as usual, my recommendation is to start early…

.

.

.

.

CPSC 213: Introduction to Computer Systems

 

Summary:

I don’t remember what I learned because I’m writing this review a year later… looking back at my notes, it seems like we mostly learned things about translating C to assembly (machine instructions) and vice versa in order to get a better sense of how the computer executes a program. Also, we learned about multithreading and virtual memory.

Grading scheme:

In class exercises 5%
Labs/Assignments (6) 25%
Midterm 20%
Final 45%

In-class activities:

Sometimes we would do worksheets or Socrative (sort of like iClicker) questions. Otherwise it was just regular lectures.

Readings:

There was a PDF called ‘Lecture Notes Companion’ written by Mike Feeley that was given to us.

Readings were assigned from both the companion as well as the following textbook:

Computer Systems: A Programmer’s Perspective. Randal E. Bryant and David R. O’Hallaron, Second Edition.

I did not do any readings during the course, but looking back maybe I should have to get a better understanding of some material that wasn’t explained well in class.

Assignments:

I thought (at the time) the assignments were of moderate difficulty and I had to ask the TAs for help for some of them. But for the most part it wasn’t too bad. Assignments were done in pairs. We could have done them alone but it wasn’t recommended.

 

Tips:

Don’t understand pointers? Binky Pointer Fun Video may help. Or see A Tutorial on Pointers and Arrays in C.

.

.

.

Courses I took this term:

CPSC 210
STAT 302
MEDG 421
MICB 425

List of all courses I’ve taken

.

.

.

CPSC 210: Software Construction

One-line summary: This course was intense and immersive, but I’m glad I can say I now know some Java.

Grading scheme:

Updated information about the grading scheme is available on the CPSC 210 website. You can also read descriptions about each of these on the website.

Final Exam 40%
Labs 10%
Project 15%
Assignments 5%
Quiz 10%
Midterm 20%

Syllabus:

This list probably won’t make sense unless you’ve already learned some of these things on your own or at another school…

Basically, we learned Java and object oriented programming. A lot of the things we covered were abstract.

Control and Data Models
Data Abstraction
Type Hierarchy, Polymorphism, Dispatching
Robust Classes
Implementing an Object-Oriented (OO) Design
Extracting an OO Design
Design Principles (Coupling and Cohesion)
Observer Pattern
Composite Pattern (think trees)
Iteration Abstraction

In-class activities:

Lectures generally involved the instructor going over code, or drawing diagrams on the projector. Unlike 110, we did not work on problems by ourselves most of the time. However, every few lectures, there was something called a “lecture/lab” in which we were given a problem to work on on our laptops and ask for help if necessary. Unfortunately, we were usually only given ~15 minutes to work on it, which was not enough time to complete the lecture/lab in class.

I found it difficult to take notes in this class because copying code by hand is difficult, and because explanation of diagrams/code was usually verbal rather than written. Fortunately, there are videotaped lectures posted online from 2013W, which I found very helpful for reviewing.

Lab:

There were five labs to attend, once a week, during the first half of the term. It was not required to attend labs after that, aside from the project marking at the end of term. Each lab was due at the beginning of the next lab session. Labs were focused on practical aspects, like how to write tests for a Java program, and I found them much more interesting/engaging than lectures. We were allowed to leave the lab during the lab session after being marked, or if we weren’t being marked that lab.

Our lab mark was based on at least two randomly assigned labs (out of the five labs).

Assignments:

Like lab, we only had assignments for approximately the first half of the term. Assignments were generally straightforward. We had to hand in our code online for the assignments to be automatically graded by running the handed in code against a series of tests. We were immediately given the score and were allowed to change and re-submit our code as many times as we wanted before the deadline for the assignment.

Project:

The project started halfway through the term, after all the assignments and labs had finished.

Our project involved developing an Android app that would plot UBC student schedules on a map, and determine whether two students can meet at a given time (ie. if they have mutual breaks), and if so, where they could meet on campus. A lot of the “backbone” of the code was already given to us; we just had to add certain functionality.

The project was also broken down into two phases, and smaller, more manageable tasks for each phase. We were to work on the project on our own, although in previous versions of CPSC 210, the project was done in pairs. I found the project to be challenging, but very doable as long as I started early. The TAs and instructors were also available to answer questions on Piazza. I don’t think I would have completed the project without consulting Piazza.

Readings:

There was no textbook, but readings were assigned online. Many of the readings didn’t make sense to me until I re-read them for the second or third time, but re-reading them was an important part of my review for the exams.

I have heard complaints from other students about the readings being difficult to understand and abstract. It may be worthwhile to consult other resources, such as Big Java, or Java Software Solutions, or something else (there are many resources).

Tips:

Start the project early and work on it regularly. The project takes a lot of time, and it would generally be a terrible idea to start the same week that it’s due. Many students started very late and couldn’t get a score greater than zero from the automated grader by the deadline of the first phase of the project. Most people will need some help with the project, whether that be through TA/office hours or through Piazza. It may be increasingly difficult to get help closer to the deadline because others may also be in the same position as you. I also recommend handing in the project early, because the online repository to which you submit code is not completely reliable, and may have technical issues especially when everyone is trying to submit a few minutes before the deadline.

On that note, also make sure to commit your project to the online repository regularly so that you have your code backed up in case the program/computer crashes. One of my friends told me that his friend’s computer crashed while he was halfway through the first phase, resulting in all that work being lost (he hadn’t yet committed). I also overheard a student talking to an instructor about how his computer crashed the day before the project was due, resulting in all his work being lost (he hadn’t yet committed either).

We had to learn a lot of things on our own in this class, which was kind of intimidating, but it was intended and it was a good experience. When you’re working on a project, you have to be able to look up some things on your own. That being said, the TAs and instructors were very helpful and dedicated a lot of time and effort in guiding students to the right places/solutions throughout the project and the course.

I felt it was important to pay attention in class in order to be prepared for the exams, because lecture notes aren’t posted (at least, ones that make sense without much context) and the other materials (e.g. online readings) do not adequately cover the material on their own. One can also review the videotaped lectures from 2013W online, which is what I did for the final.

I suggest using some lab time during the first half of the course, to ask the TAs questions about any lecture material that may be confusing. During this time, TAs aren’t doing much in labs, because the labs are fairly straightforward and so people don’t need much help with them.

.

.

.

.

STAT 302: Introduction to Probability

One-line summary: This was a fun course for me. Not sure when I’ll ever apply what I learned though. I took it in part so that I could take more stats, so we’ll see…

Note: Eugenia was the instructor for the offering of the course that I took. I looked on Piazza for the previous term’s offering and it seemed quite different, unexpectedly.

Grading scheme:

Written assignments (four total) 16%
WebWork online assignments (bi-weekly) 9%
Midterm 25%
Clicker 5%
Final (must pass to pass course) 45%

Syllabus:

1. Principles of counting: premutations and combinations
2. Definitions and rules of probability, conditional probability, conditional independence
3. Discrete and continuous probability distributions
– random variables, expected values, functions of random variables
4. Bivariate and multivariate probability distributions
– joint, marginal, and conditional distributions, conditional expectations, moment generating functions
5. Limit theorems
– convergence in probability, convergence in distribution, Central Limit Theorem

In-class activities:

I should mention that I was initially in MATH 302 so that I didn’t have to have a three hour break on Tues/Thurs, but after one class of MATH 302 I quickly left and joined STAT 302, which was taught by Eugenia.

We usually went over the lecture notes posted online, which consisted of reviewing theory as well as stepping through example problems. There were usually a few clicker questions each class. Every few classes we would also have worksheets that we worked on in assigned groups.

Solutions to example problems were not posted online, but were available at office hours.

Assignments:

There were four written assignments. Some questions were pretty easy, but some were quite difficult and took me a frustratingly long time to complete. I spent anywhere from four to over ten hours on each assignment. I recommend starting them early so that you can ask the TAs for help. The TA office hours were very helpful for assignments.

Webwork:

The Webwork online assignments were more straightforward than the written assignments and took far less time. We got several tries for most questions.

Readings/Textbook:

I don’t think there were assigned readings, but there was an assigned textbook and suggested practice problems from the textbook. I did not purchase the textbook, and I know many people found a copy online. I think the textbook would be useful if you wanted extra practice with the material, but most of the time the practice given is sufficient (in-class examples, assignments, webwork).

Tips:

As with most stat/math courses, practice is important to understanding the material and doing well. The midterm was only 60 minutes long but there were many questions and I did not have time to check it over. This means that reading over the notes is most likely insufficient to doing well. Practice is key.

Assignments can be more difficult than they look, so I recommend starting on them early so that you can get help early.

I found making a cheat sheet (which we were allowed to for the final) really helpful. Aside from that, I redid some of the Webwork questions, in-class examples, and a few of the assignment questions, to study for the exams.

.

.

.

.

MEDG 421: Genetics and Cell Biology of Cancer

Short summary: I found this course quite interesting and I learned a lot about the paradigms of cancer cell biology, particularly about how cancer develops and evolves, current and past efforts to treat cancer, and why treating cancer remains so difficult. I found the grading/assessment in this course to be in some ways, unorthodox. If you are interested in cancer biology and do not mind putting in some work/effort for a grade in the 80s, I would recommend this course.

Note: When I took this course, it was full before the course started, but there were several seats remaining by the course drop date.

Prerequisites:

When I took the course, the prerequisites were BIOL 335 and one of BIOL 234, BIOL 362, BIOC 302, BIOC 303. However, I did not have BIOL 335. In my opinion, the knowledge I would have gained from taking BIOL 335 or BIOC 302 would not have been necessary for this course. The course coordinator did not seem strict about the prerequisites.

Grading scheme:

Article summaries 20%
Cancer e-book contributions 20%
Book club report/participation 20%
Midterm 20%
Final 20%

Each of the graded components were weighted equally, which I find strange. It seems rational to me that components would be weighted depending on the extent to which they test the student’s knowledge, and depending on the effort expected. As such, it was unusual that the midterm and final were only weighted 20%.

Syllabus (topics below are for each lecture):

1. Transformation
2. Oncogenes
3. Tumour suppressor genes
4. Protein tyrosine phosphatases
5. Genome stability
6. Autophagy
7. Stem cells
8. Immunity and cancer
9. Genetic testing with next generation sequencing (NGS)
10. Moving to treatments
11. Cancer genomics
12. Pediatric cancer genomics
13. Pharmacogenomics
14. Lymphoma
15. Genetic counselling & cancer genes
16. Angiogenesis
17. Cancer immunotherapy
18. Ovarian cancer
19. Cancer epigenetics
20. Retroviruses and cancer
21. Prostate cancer
22. Lung cancer

In-class activities:

For the most part, each lecture was given by a different speaker who was a researcher in some area of cancer biology. One of the reasons I found this course valuable was because I heard from a wide variety of cancer researchers on their area of expertise.

The lectures were usually traditional lecture format = slides + lecturing. Slides are posted online sometime after class.

Article Summaries:

We were required to summarize five research papers chosen from specific areas throughout the term. Only one student per paper was allowed, which was enforced by having us sign up the pubmed id online. Fortunately, I never had the issue of signing up for a paper that was already chosen, even when I signed up relatively late. It is feasible to sign up for the five papers all at once, and they can be changed.

It was recommended to choose papers that relate to a particular pathway or cancer, because it makes summarizing the later papers easier because you can use your previous background knowledge from the earlier papers. Choose review articles or letters (short versions of papers) was discouraged.

The time I spent summarizing each paper depended on how difficult I found it to read the paper, so choose wisely. I spent many hours for the first paper summary, and the time I spent slowly decreased as the term went on.

I found the marking of the paper summaries very strict and subjective, and towards the later paper summaries, not constructive. The highest mark I received was 18.5/20, and it seemed like marks were taken off our summaries just so that no one (or very, very few) got higher than 19/20. Following the rubric is really important to doing as well as possible on the paper summaries. Other than trying to understand the jargon in the papers, I also found it difficult to summarize papers in only one page with 1.5 spacing. You may have parts in your paper summary that seem important, but need to be omitted in order to meet the page limit. For example, a paper usually has several key findings and possibly a few minor related findings. In such cases, I sometimes presented one or two of the more important findings and omitted the other ones to meet the page limit.

I will post my article summaries if I remember (remind me if I don’t). Article summaries had to be submitted to turnitin.com.

Cancer e-book:

When I took the course, there was an e-book being developed for the course, and we were expected to contribute to it. Initially, we were required to submit a report on a specific topic as well as edit three reports from other people, but the editing part was removed. However, we still had to edit chapters of the e-book written in previous years, which consisted of adding new paragraphs, rewriting sentences, and inserting figures which could be original work or Creative Commons.

In my case, the report was on Nobel prize work that was relevant to cancer research and was 750 words in length. I received 14/15 on my first draft and chose not to revise. I’ll post it here if I remember.

As for editing the chapters, I mostly just made edits to grammar, formatting, and to the bibliography, which were relatively insignificant edits. However, I did save often, which probably resulted in there being many edits under my name. I received a mark of 7/10 for editing which I was pleased with, given my efforts.

The editing was worth 8 out of the 20% for the Cancer e-book mark, and the report was worth the remaining 12%.

For any reports where references are needed, I highly, highly recommend using a citation manager such as Zotero. I have used RefWorks before as it was recommended in MICB 421 and SCIE 300, but Zotero is far superior and is free for anyone to use. The integration with browsers including Chrome and Firefox, as well as integration with Microsoft Word is amazing and it is extremely convenient and easy to learn and use.

Book club report/participation:

We were required to choose one of three books to read and write a two page report on. I chose The Philadelphia Chromosome by Jessica Wapner, which I read over a couple days during Reading Break.

NOTE: I am selling The Philadelphia Chromosome for $20.

I’ll post my report here if I remember. I only received 85% or something like that which was disappointing because after the instructor talked about the book report, I was under the impression that it would be marked quite leniently, and no criteria were given. The only feedback I got on the report was a comment saying “Good job” so I’m not sure where I lost marks. As with the paper summaries, I felt that marks were taken off to control grades.

As with reading any book for any course, use sticky notes while reading to bookmark/highlight key passages. This makes it much easier to find them and refer to them when you are writing the report.

Aside from the summary, there was a group discussion of the book during one of the lectures.

Readings/Textbook:

No textbook was required for the course. If you want to read a textbook, the e-book is easy to read and gives a good intro to many topics in cancer biology.

Exams:

The exams are open book, and there are previous exams available online. Do have a look through them because the questions on past exams are a good representation of what to expect, and the questions seem somewhat unorthodox and easy to misinterpret. One of the things I really liked about this course was that problem solving was valued over memorization, which is untrue in many other courses I have taken.

For the open book exam, I printed out the notes for each lecture and stapled each lecture together so that I could go through my stack of labeled lectures easily and pick out the relevant lecture for the question.

It was important to answer the exam questions both clearly and with as much detail as possible. Despite the questions being open ended, there was usually only one or two ‘right’ answers that got full marks, and they were generally pretty obvious.

The average and median for the midterm was approximately 68%. The highest mark for the midterm was a mere 84%, and I managed to get 83%. The instructors said they did not expect the grades to be so low, and it seemed that many people were disappointed with their marks. A lot of people simply completely missed what the question was asking for on at least one question (and therefore failed that question), and there were only five questions on the exam. The instructors hinted at substantial scaling for the midterm.

In my opinion, people found the exam difficult because it is unlike other exams in life science courses. There were only five questions on the exam, and they were all open-ended, but the marking was strict. This generally makes for low marks.

Another reason why I think the grades were so low was because of unfair marking. Despite my relatively high mark of 83%, there was many examples in my midterm and undoubtedly in others’ midterms where marks were docked unfairly. One example — there was a question that asked us to describe and explain an event that could occur in a patient with melanoma that would result in failure of the combination therapy Raf inhibitor + MEK inhibitor.

My answer: “A mutation occurs in the gene coding for the MEK protein such that the MEK inhibitor no longer binds to the MEK protein. MEK can have its ‘normal’ downstream effects resulting in activation of pathways in cell division, survival, and migration.”

Answer key:
-mutation in gene for MEK protein so that inhibitor doesn’t bind
-MEK no longer inhibited, can activate pathways in cell division etc

Despite my answer being identical in content to the answer key, I was docked several marks. When I approached the TA about it, she took several minutes to look at it, and then decided to tell me that she was looking for more detail.

Another example — one question described a clinical scenario and asked us to give one hypothesis of what could be going on. In the answer key, TWO hypotheses were needed for full marks.

(Summary of) Tips:

1. When given, follow the rubric.

2. Use Zotero for references.

3. Use sticky notes while reading the book for the book report.

4. For exam questions, read the question carefully and find out exactly what it is asking so you can frame your answer properly. For example, if it asks to propose a hypothesis for a phenomena and propose an experiment to test it, then make sure you do exactly that in your answer. It would also make sense to explain how to interpret the results.

Furthermore, despite the question being open-ended, it is sometimes obvious what answer they want, and each question is usually related to a specific lecture. For example, one question described chromosomes of abnormal structure and number, and asked us to “suggest” two mechanisms that might lead to this phenomena. In class, we talked about several mechanisms that resulted in chromosomal abnormalities. All we needed to do was to describe two of them in our answer.

Based on past exam answer keys, you can to some extent predict what key words and what details they’ll be looking for in your answer. If in doubt, just write as much as possible, which increases the probability that you’ll have key words or explanations that match part of the answer key.

5. Don’t worry too much about grades. See below.

Grades/Workload:

I have probably made it seem like the marking style can be quite unfavourable in this course, which may discourage people from taking it. Whether I would recommend this course depends on your goals. The majority of people who take this class receive a grade in the 80s. If you are interested in cancer biology and do not mind putting in some work/effort for a grade in the 80s, I would recommend this course. If you intend to get a 90+ in this course, it will most likely be a lot of work, and in my opinion, not really worth it. If you wish to get as high a grade as possible in this course, you may not enjoy it. If you are interested in learning about cancer cell biology and genetics but don’t want to deal with doing paper summaries and writing a portion of someone’s textbook for free, you could consider just sitting in the lectures.

I did not find the workload to be that bad, but I also wasn’t trying very hard to get a high grade, especially after the midterm. I spent three hours a week on average on this course outside of lectures, spent a day studying for the final, and ended up with 83%, which I am quite satisfied with given my effort. The average for my year was 80%. The highest mark in my year was 93%.

.

.

.

.

MICB 425: Microbial Ecological Genomics

One-line summary: One of my favourite MICB courses. A lot of emphasis on critical thinking. Small assignments, group discussions, and no exams.

Grading scheme:

Five “Evidence Worksheets” 25%
Five problem sets 25%
Four writing assignments 25%
Participation 25%

Syllabus:

Module 1 – Origins and earth systems
– How did life originate and evolve over geological timescales?
– What roles do microbes play in global geochemical cycles and how do they support other life forms?
– What is our current understanding of global microbial diversity and abundance and what gaps are there in our knowledge?
Module 2 – Remapping the body of the world
– What methods are used to study microbial community genomics and what limitations are there?
– What does the structure and metabolism of a microbial community look like, and how does it impact the Earth?
Module 3 – Agents of open source evolution, microbial species concepts
– How prevalent is horizontal gene transfer (HGT) and what role does it play in the evolution and diversity of microbes?
– What role does HGT play in the preservation of biogeochemical pathways?
– How diverse are microbial populations and microbial ‘species’?
– What are the models for microbial species concepts and what are their limitations?
Module 4 – Distributed metabolic networks/bioinformatics?
– Using MEGAN
– How does BLAST work?

In-class activities:

Class usually consisted of either short lectures by the instructor, group presentations from students, whole class discussions about the readings/material, or small group activities.

At the end of each module, we were given a writing prompt for the writing assignment. Most people chose to continue working on the writing assignments outside of class.

My least favourite module was the bioinformatics one. We had a different instructor for that module and the activities were much less engaging.

Binder:

All of our written work went into a binder that we maintained and added to throughout the term. We were given a few opportunities to hand in our binder for marking and re-marking.

“Evidence worksheets” were only marked for completeness. The problem sets were marked for correctness. Both the evidence worksheets and the problem sets are based off readings which consisted of primary literature, review articles, and less formal news articles/scientific opinion.

Readings:

There are readings to do in this course, but it was not as bad as I expected. I spent an average of two hours a week outside of lecture on this course, mostly on readings or the writing assignments.

Tips:

Since work could be handed and re-handed in at several points throughout the term, I think it is possible to get 100% in the course. It is not difficult to get a grade in the 90s. The most difficult aspect of the assessment were the writing assignments. According to the instructor, perfect marks were given out for the writing assignments only if a new/creative idea was brought up.

Use Zotero for references for the writing assignments. I mentioned it for MEDG 421 above and it is amazing and much better than RefWorks.

For the writing assignments, make sure to have plenty of references for each one. Even better if you reference material outside the required readings.

.

.

.

.

/end

Posted by: idm04 | 2015/03/19

March 16th, 2015

One thing I wish I did before entering the Bachelor of Computer Science (BCS) program was to take CPSC 110. I could have taken it in the summer, or I could have taken it during the last year of my first degree. The reason is that 110 is required for 210, and 210 is required for both 221 and 213. Therefore, I had to take 110 (and 121) in first term, 210 in second term, and now I have to wait until the summer to take 221/213! If I already had credit for 110 by September, I would be able to take 210 (and 121) immediately followed by one or both of 221 and 213 in second term. One of the major advantages to getting 221 & 213 done before the summer is that those in the co-op program will be applying for jobs in May. However, the ‘normal’ slower pace may be preferable to some BCS students who are getting used to the program.

An update of my term so far:

CPSC 110

TAing is going fine. Being a TA has made me realize how much I’ve forgotten since I took this course…

CPSC 210

There were a lot of people complaining about how incredibly long the midterm was — would you like some cheese with your whine? :P Anyway, I did think that the midterm was really long, and I only sort of finished and had absolutely no time to check over anything. However, I don’t think it was really unfair, but it did make me realize how unprepared I was, even though I thought I spent a lot of time preparing. The average ended up being 57%, standard deviation of 17%. I suspect there will be scaling of some sort later on… (edit: there was)

We just finished Phase One of the project (it was due Sunday night), and boy was it tougher than I imagined. Looking at Webcat (the online grader), a considerable amount of people did not get to submit the project, which seems really weird. I was silly enough to wait until the week was over before I really started diving into the project, and as a result I wasn’t able to get much help from the TAs by means of office hours/lab hours. And my Friday lab was really packed, with people waiting as long as 10 minutes for help.

Anyway, I knew I couldn’t keep leaving it until later in case I ran into some sort of roadblock. So I stayed up on Friday night working on the project, and ended up completing enough to get 20/30 on Webcat. I ended up sleeping at 6 AM, and then I woke up at 9:30 AM because I had regretfully booked a physio appointment at 10. After I got back home, I continued working on the project and finished! IT FELT AMAZING

Then I observed the chaos that was on Piazza with lots of people freaking out about how Webcat was only giving them 0/30 and how they couldn’t find out where their code bugs were and time was running out. Again, the whining was present. I did feel bad for a lot of these people, and I tried to post a few hints. One particularly sad post read: “Webcat wouldn’t take my last submission…”

MEDG 421

Midterm average was much lower than the instructors expected — average was 68% and median was 69%. Highest mark was 84%. The marking was…. interesting.

STAT 302

Average was 59%, median was 62%. It was longer than I expected, even though I did do the practice midterms. Turns out I should actually review integration by parts and by substitution… . .

.

.

.

/end

Older Posts »

Categories