The Ultimate Guide to UBC’s Bachelor of Computer Science (BCS) Second Degree Program

Last updated: August 16, 2022 —

UBC BCS logo James Sun Chung. Ultimate Guide to UBC BCS Program. Bachelors of Computer Science Program. BCS(ICS), Integrated Computer Science.
This UBC BCS Logo was created by James Sun Chung. (Thanks, James! Very cool 😎)

As a student in the Bachelor of Computer Science (Integrated Computer Science) Second Degree program, I found a surprising lack of updated resources regarding the program during the application period. A lot of resources weren’t accessible and are usually hidden until after being accepted into the program. I believe that this information should be shared to enable individuals to make better-informed decisions.

Thus, alongside many previous BCS (ICS) students who had written about their experiences — I will add on top of their efforts with recent, updated information from the perspective of the 2019 cohort. This Medium article will be updated accordingly.

I won’t go over my background in this article. If you are interested, you can find it in this article — A Transition into Computer Science from Biochemistry.

Note: I have been updating this as new information and updates are known and as I find any gaps or missing information from calls/emails from prospective students. This makes this incredibly lengthy — so use the ctrl f (Windows) or cmd-f (Mac) to quickly search for specific sections according to the headings below.

What does this article cover?

  • BCS Program Details
  • How to Apply to BCS
  • Tips/Opinions for Interested & Prospective Students
  • Application Tips / Advice
  • Information and Advice for New BCSers / IMPORTANT: Welcome Notes for BCS Students/ I got accepted! Tell me the details.
  • Making your schedule / Exemptions / Should I challenge CPSC 110? / Planning your Bridging Module / Ben’s Bridging Module Breakdown
  • How do I prepare before the program?
  • Moving In Logistics / Residence Options at UBC
  • Key Notes for your first year
  • Getting your first internship in BCS / Co-op program details
  • Is it hard to get the first internship?
  • Additional advice for securing internships
  • Student Resources
  • BCS Resources
  • Let’s get in touch!

Use ctrl-f (Windows) or cmd-f (Mac) on the headings above to quickly navigate jump to the section of interest! Reach out to me via LinkedIn (in/mrbenc88) if you have any other questions, or drop a question at the bottom of the article.

A BCS banner created by Albert Park (thanks Albert)

What is the BCS program?

As stated on the official website:

The University of British Columbia’s Bachelor of Computer Science Second Degree Program (BCS) which is also known as the Integrated Computer Science (ICS) program has been an increasingly competitive program to get into over the past few years.

This program features a 20-month second degree program designed for university graduates who wish to make a career transition into information technology, or combining their own field with computer science.

It features:

  • Bridging Module — A coherent set of 15 credits of upper-year courses (300+ levels) which enables students to explore connections between computer science and another discipline. In brief, it is five electives that follow a similar theme that you can use to explore other areas. It is important to note that you should consult a program adviser (aka. The Director of BCS directly). I will go into more detail regarding this below, however, for the official information — official website page.
  • (Optional but pretty much required to be employable) Co-op Program — The program also offers a co-operative education option that allows students to gain work experience prior to the completion of the degree. As an applicant to the BCS program, you won’t need to worry about this when you apply as the Co-op office will hold information sessions once you are accepted into the BCS program. In a nutshell, the process is first you get accepted into the BCS program, then you apply to get into the Co-op program. For official information — see the official page here.

As stated on the official website:

The BCS demographics are largely made up of mature students (beyond their late-20s).

Since the program’s start in 1998, female students have made up about 37% of the accepted applicants, much higher than the average for Computer Science, and we aim to recruit 50% women and 50% men. Furthermore, about 20% of accepted applicants are from outside of North America. Many of our students, including international students, eagerly join our co-op work program to combine their degrees with real-world experience (for pay).

Breakdown of the undergraduate programs that BCS students have prior to joining BCS. Source: BCS Site

In my experience, this program’s diversity of students is a very unique environment. I have met lawyers, musicians, pharmacists, geologists, fellow life sciences, and many others from a variety of disciplines. To be able to exchange and discuss their experiences was an eye-opener and I find value in such discussions. What differentiates these individuals from others is that everyone has already been through at least one degree. This means everyone is mature and is incredibly focused to finish this degree and get out.

Tuition Cost

Domestic students pay regular Faculty of Science tuition fees for the courses taken (Source). Tuition costs for international students are higher.

A quick look for a domestic student per year for two academic terms (Sept-April) and assuming full course load would be around $5500–7k CAD*.

*UBC increases these tuition costs every year so do note it is an estimate. Always check the official source below.

Check out the official details here: https://students.ubc.ca/enrolment/finances/tuition-fees/undergraduate-tuition-fees

So how do I apply?

According to the official website, you will need to submit two applications:

  1. Online Application for Admission to UBC
  2. Application to the CS Department (Note: You must have applied and paid UBC’s application fee first.)

*Note the official program requirements (https://www.cs.ubc.ca/bcs)

Tips/Opinions for Interested & Prospective Students

  • In the BCS program, typically it is common to struggle in the first few CPSC courses (ex. CPSC110 and CPSC121). Don’t worry about it, as many individuals are in the same boat. Both of these initial struggles aren’t accurate representations of what studying computer science is like as a whole.
  • I strongly agree with individuals who support challenging the CPSC 110. It is a significant barrier to your degree. Getting it out of the way will help you prepare much better for the first Fall Co-op term.
  • If you don’t challenge CPSC 110, that’s okay too! Make sure to take CPSC 110 and CPSC 121 together in the first term. For the rest of the courses, probs around 2 other ones — take prereqs for bridging modules courses or your bridging module courses to get them out of the way. For term 2, take CPSC 210 and that would be your only CS course. Since you took CPSC 121 in term 1 with CPSC 110, you have a lighter term and can focus on self-learning (ie. React, git, api), attending hackathons, building your projects, and ultimately beefing up your resume for the upcoming internship search.
  • When researching course pre-requisites, co-requisites, and their dependencies, I found these tools extremely helpful: ubcexplorer.io/ as well as ubcexplorer.io/bcs. Use them as they didn’t exist when I had originally started to plan my degree but it is now much more convenient.
  • It may feel competitive as some individuals in your cohort may make the courses seem effortless. This may potentially lead to imposter syndrome and cause you to fall into a more toxic self-deprecating mental state. It is important to focus on yourself and not compare yourself to others. It’s okay for the material to not click with you immediately. It is most important to persist and continue to learn. You are transitioning to a brand new field after all! Just remember that you are on your own timeline.
  • The best part of the program is the BCS community. This community is very close as everyone has a previous degree so it is easier to connect and make new friends. It is a tight-knit group with our own lounge, our own executive team organizing events, and its own annual hackathon. As it is everyone’s second degree, everyone is very motivated and with purpose which differs a lot from previous degrees.
  • [OFFICIAL UBC BCS STATS 2019] In regards to the GPA for my cohort’s acceptance (2019 cohort), (on the assumption that they fixed the number of admits but admitted solely based on GPA — which they don’t) the GPA was ~ 82%. (Note that that would be a putative minimum, not an average.) The actual average GPA of both those who accepted the offer and those who were offered was similar and around 83.9%. (Note that that truly is a mean, and there were values well above and well below it).
  • [OFFICIAL UBC BCS STATS 2019] A rough number of around 450 applied to the program, and about 145 were accepted with an intended yield of 90.
  • A new addition to the program requirements is the following: “Given the highly competitive nature of admissions to BCS over the past three years, we will reject without complete review applications with a most recent 30-credit undergraduate UBC-equivalent GPA of less than 72%. We will give a complete review to all applications above this cutoff that meet the remaining minimum requirements for admission, but we expect few or no applications with GPAs less than 75% to be competitive.” — This means that there is now a minimum GPA requirement to even be considered!
  • Complete at least one introductory online course to get a feel for if it is what you really want to do. Plenty of free resources — Automate the Boring Stuff (Python), FreeCodeCamp, Codecademy, w3schools, Udemy, etc.
  • I have had numerous applicants ask if there is a BCS admissions interview. To my knowledge, in the past three cohorts (2019–2021), no one has actually gotten any interviews. Everyone has only received an email stating that they either got accepted or rejected.
  • [Interesting/Outlier tip] Some individuals who have accepted take classes in the summer as unclassified students before starting the BCS program in September (Usually CPSC110, CPSC121, and CPSC210). This allows them to start CPSC 221 and CPSC213 in September.
  • [Interesting/Outlier tip] Note: It is no longer permitted to defer BCS admission. Source: https://you.ubc.ca/applying-ubc/admitted/deferring-admission/

Application Tips / Advice

Disclaimer: The following are application tips and advice that I have compiled based on the types of emails I have received from interested BCS applicants. It is all advice and based on my experience. Mileage may vary.

  • Be sure to write a good statement of purpose in your application. Express what exactly you would want to take away from the program, how the program will help you achieve your goals as well as how you could contribute back to the program and BCS community. Contribution to the BCS community is incredibly important.
  • Submit two quality references that can discuss your abilities and personality based on the prompts given. For my reference letters, I had one from a professor for which I did my undergraduate thesis and a co-worker from a blockchain startup for which I had worked part-time.
  • BCS admission to the program is not solely based on GPA as the staff takes into account work experience, the letter of intent, and reference letters.
  • The BCS admissions team views each complete application (including essays, resume, reference letters, and transcripts) according to four broad criteria that are roughly equally weighted. See official BCS interpretation on the official website.
  • The following section is a simple breakdown of the 4 criteria based on my experience.

Suitability of academic background

Basically, make sure that you don’t have an “excessive computing background” as the admission team doesn’t want to admit individuals who are overqualified. As the program is targeted towards those who have a bachelor’s in a non-computer-related area, little or no programming experience, or outdated programming knowledge.

A realistic plan for success

This section’s goal is to allow the applicant to show that they can handle the workload that would come from the transition into a brand new discipline. It is also where you can highlight any activities related to programming you have completed (self-learning via Udemy or FreeCodeCamp, Codecademy, YouTube, etc.). Grades and coursework related to computing are also assessed in this section. Relevant ones include CPSC 110, CPSC 121, and maybe CPSC 210.

Motivation for program

This section focuses on how engaged and enthusiastic you are to work hard. It sees if you have a passion for learning and the drive to complete the 2–3 year program. This is where you need to really emphasize how you will succeed in the BCS program with examples to prove it. Naturally, make sure to also explain why you are the best fit for BCS and use examples to back up and provide evidence. If you can try to incorporate your previous degree as the motivation for why you want to be in the program, that might help as well.

Contribution to community

The admissions team values contribution to the BCS community pretty highly. This is where you really have to emphasize how you will contribute to the community and interact with students/perspectives from a variety of fields and ages. How you can positively affect and help push forward the learning experience within the BCS cohort. Make sure to back this up with examples. I strongly recommend doing some volunteer work or community contributions so that you can use it as proof that you can contribute to the BCS community in your application (ie. volunteer work for communities, assistance with events, contribution to society, volunteer at a hospital, etc.) A starting point would be highlighting how the cohort benefits by having you as part of your cohort. What kind of contribution can you bring? Would it be fostering healthy discussions/spaces for BCS students to connect and exchange ideas, etc? Prove that you can make a positive impact.

Join the UBC BCS SubReddit!

So, you applied — what now? Feel free to interact with other applicants on the UBC BCS subreddit! https://www.reddit.com/r/UBC_BCS/

I am also a mod there, so you might see me around under the handle mrbenc88.

Information and Advice for New BCSers / I got accepted! Tell me the details.

Congrats on getting in! You now have taken the first steps to a new journey in a new field.

Acceptances typically get sent out around April 30 and continue to roll out until all seats are filled. (At least that’s when I got mine.)

IMPORTANT: Welcome Notes for BCS Students

Upon accepting the offer of admission, UBC BCS students are sent the Welcome Notes. You need a UBC account to sign in. It contains a wealth of information and provides further clarity. It’s unfortunate as many individuals don’t get access to this content until they have already accepted the offer. I’m pretty sure if you applied to the program and have a UBC account — you should be able to access this page.

I highly recommend that you fully read it:

MUST-READ FOR ALL BCS STUDENTS: https://my.cs.ubc.ca/node/41871

This will also provide more information on the actual UBC BCS program and specific details and help inform your decision like how the course requirements, bridging modules, and exemptions work.

Note the page can be a bit buggy. If you get an error / restricted access — force refresh the page or copy-paste the URL again in your browser.

You should see a huge Table of Contents like the one below:

By the way, if you go to the 2. Course Planning section, you might be able to find a useful tool 😎

Use ubcexplorer.io for course lookup ubcexplorer.io/bcs for BCS Term planning.

At this point, upon accepting the offer — you need to start planning out your courses and bridging module.

If you have accepted the offer to join the program, join the BCS Community — Piazza, Facebook group, Discord server

I have to specifically highlight this as some in the previous cohorts didn’t realize it existed. You can find the links to join via the Welcome Notes to BCS Students in the last section — 7. Getting Involved in the BCS Community.

Make sure to read the Welcome Notes thoroughly!!

Read and Review the BCS Advising Checklist

The UBC BCS staff have created an advising checklist that contains the requirements for a BCS student to graduate. You should thoroughly review it.

This is the official tool for BCS degree planning (unfortunately a pdf lol).

You can also find the checklist here: https://www.cs.ubc.ca/sites/default/files/shared/advising_checklist_bcs.jun_2017.pdf

Alternatively, a tool that my group of friends and I made a tool that takes these requirements and puts it into a modern degree planning web app. It can be found here: https://ubcexplorer.io/bcs

Making your schedule. / Exemptions

For courses, the official website lays out a typical first-year /second-year (BCS) example schedule.

Also, be sure to check if you are able to be exempt from any courses. Typically, you could get exceptions for MATH180, STAT203, and upper-level communication requirements.

How do you go about receiving exemptions?

In regards to the process for course exemptions, after accepting your offer — the UBC BCS admin will email you before your registration date about the exemptions you qualify for. If you feel that courses you had taken in the past from previous degree(s) are relevant and can be used to exempt you from the exemptable courses. You can email them / BCS Director to approve the exemption.

In my case, I got all exemptions initially except the upper-level communication requirement. I emailed the BCS Director to get it as I wrote a thesis during my undergrad which was approved to exempt that specific requirement.

You can also apply to write the English Exemption Exam to get the lower level ENGL1XX exemption. The CPSC Challenge Exam is also discussed below which is for the CPSC 110 exemption.

I was able to get exempted from MATH 180, STAT 203, and the upper-level communication requirement (STCM 3XX). I also took the English exemption challenge exam in my first term so I didn’t have to take ENGL1XX. Due to my MATH 180 exemption as well as having taken Differential Calculus + Integral Calculus in my previous degree (which exempts me from the MATH 101, MATH 103, MATH 105, MATH 121, SCIE 001), I was able to take MATH 200 in the first term by simply emailing the UBC Math Department to manually place me in those courses (as the course registration will not allow you to register yourself on SSC).

After emailing the MATH department, I was given the reply:

As a BCS student you are hereby permitted to take courses depending on Math 100 and Math 101 (such as Math 200, for example) based on your previous studies. As a second-degree student, however, this cannot be recorded in the student information system and your registration must be done manually.

For your reference, my degree timeline looks like this:

Exemptions: STCM 3XX, MATH 180, STAT 203, ENGL1XX

Pre-BCS (May 2019): Accepted BCS offer April 30. Graduated from the University of Windsor with a Bachelor’s Degree in Biochemistry Honors, Minor in Applied Information Technology.

Term 1 (1st year BCS | Sept 2019): CPSC 110, CPSC 121, COGS 200 (Prereq for upper-level COGS bridging modules), MATH200 (Prereq for CPSC 340).

Term 2 (1st year BCS | Jan 2020): CPSC 210, MATH 221 (Prereq for CPSC340 and a variety of upper-year CS courses), COGS 300, COGS 303.

Term 3 (1st year BCS | May 2020): CPSC 221 + Apply for Co-op jobs/Interviews. Joined nwPlus.

Term 4 (1st year BCS | July 2020): CPSC 320 + POLI 385A (Bridging module course which counts for COGs).

Term 5 (2nd year BCS | Sept 2020): 4 months term as Software Developer Intern with Checkfront.

Term 6 (2nd year BCS | Jan 2021): CPSC 304, CPSC 213, CHIN 131 + Apply for Internships/Interviews.

Term 7 and 8 (2nd year BCS | May-Sept 2021): 4 months term as Software Engineer Intern with TD.

Term 9 (3rd year BCS | Sept-Dec 2021): This is a pretty hard semester.
— CPSC 310, CPSC 313, CPSC 317, COMR 329 😪

Term 10 (3rd year BCS | Jan — Apr 2022): ASIA 326, CPSC 330, COMR 398, CPSC 427

Term 11 and 12 (3rd year BCS | May-Aug 2022): 4 months term as Software Engineer Intern with Riot Games + CPSC 455 [By the end of this term, I should have all the grad requirements completed]

Term 13 (4th year BCS | Sep-Dec 2022): 4 months term as Software Engineer Intern with Coinbase — this is an interesting situation where I would either apply new grad right away or take the extra 4 months to grind harder for a better new grad position or go for another internship for possible return offer. In this case, I was able to secure another internship with Coinbase and will grad Apr 2023.

Term 14 (4th year BCS | Jan-Apr 2023): TBD — I already finished all my grad requirements at this point lol. Probably some dummy fill-in courses in order to stay in res and maintain full-time student status. — Expected Grad: Apr 2023

Due to the prerequisite chain of CPSC courses which prevented me from taking more CPSC courses other than CPSC210, I decided to complete courses that are a part of my bridging module during the second term. For my exemptions, I decided to take MATH221, MATH200, and COGS200 which would unlock plenty of other dependent CPSC and COGS courses.

I discuss some of the courses in a separate article if time permits.

Most BCSers in my cohort for their first year had a schedule like:

First-Year BCS Term 1 (without challenging CPSC 110):

  • CPSC 121
  • CPSC 110
  • Elective / Prerequisite to Bridging module courses
  • Elective / Prerequisite to Bridging module courses

First-Year BCS Term 2:

  • CPSC 210
  • Bridging module courses
  • Bridging module courses
  • Bridging module courses

Note: This worked out pretty well as it allowed me to get lots of progress done on my bridging modules. The second term was much lighter and I was able to focus on learning frameworks, hackathons, building projects, and ultimately building my portfolio to make myself a stronger candidate for the upcoming internship/ co-op search.

— -

First-Year BCS Term 1 (with challenging CPSC 110):

  • CPSC 121
  • CPSC 210
  • Elective / Prerequisite to Bridging module courses
  • Elective / Prerequisite to Bridging module courses

Second Year BCS Term 2:

  • CPSC 310* (Replace with CPSC 213)
  • CPSC 221
  • Bridging module courses
  • Bridging module courses
  • As of 2020, CPSC 310 now requires CPSC213 as a prereq. You would probably want to replace this with CPSC 213 so that you can take CPSC 310 in subsequent terms.

Should I challenge CPSC 110?

TL;DR: yes

In my opinion, it is highly recommended to challenge CPSC 110*. It is a major bottleneck in the CPSC prerequisite chain which will leave you stuck with only a single CPSC 210 course in the second term. This would put you slightly behind your peers who successfully challenge.

It isn’t the end of the world if you do not challenge, as you could use the time to self-learn a language, work on a personal project, or even start grinding LeetCode. tl;dr — build your portfolio/get actual experience.

I didn’t challenge CPSC110 as I thought it was a hassle. The initial registration process was filled with numerous hurdles such as emailing department heads to get registered. During registration, you would have to register for the courses you would like to take for both terms. You would also need to register in CPSC110 just in case you are not successful at challenging the CPSC110 challenge exam and register in CPSC210 on the assumption that you have passed the challenge exam. Depending on if you successfully pass the challenge exam for CPSC110 which is around the first/second week of classes (Sept 10 in 2019), you can drop out of CPSC110 and stay in CPSC210, or vice versa.

Challenge Exam Info: https://www.cs.ubc.ca/students/undergrad/courses-registration/cpsc-110-challenge-exam

CPSC 110 Info: http://cs110.students.cs.ubc.ca/info.html

Additionally, if you do end up challenging — also consider taking some Java tutorials as after challenging CPSC 110 successfully, you may be a week behind in the CPSC 210 course simply due to the schedule of the challenge exam. By taking the Java tutorials, it will make the transition into CPSC 210 smoother.

Some previous year's advice against challenging is based on not being to know your fellow cohort if you do challenge. I feel that this wasn’t really applicable in our year as those that challenged still were in our CPSC121 class in the first term so in the end no missed opportunities were experienced for them.

If not being able to know more of your cohort is a reason preventing you from challenging, challenge it anyway. It will be worth it. Not challenging the CPSC110 challenge exam will probably be one of my regrets in my first year.

*Note: If you aren’t able to challenge CPSC110 due to not enough time to study / work / other priorities/ not enough experience, etc. it is also fine. Numerous BCSers in my cohort including myself didn’t challenge. Challenging CPSC110 is a good idea only if the challenger puts in very high-quality study time over the summer for the 110 content as it could be overwhelming otherwise. Not challenging just means that you will have a lighter second term as you can only take CPSC 210. Just make good use of that extra time!

Planning your Bridging Module

Your Bridging module can really affect your experience in the program. It is recommended to take some time to research what related set of courses you would use as these bridging module courses. Each of your bridging modules should follow a theme and be approved by the BCS director.

Be sure to get familiar with the prerequisite chain for both CPSC and your bridging module!

Tips

Below are some bridging modules fellow BCSers have taken

  • COGS/AI
  • COGS/PSYCH
  • STATS
  • ECON
  • COMM
  • CPEN — CPEN 422, CPEN 421, CPEN 400A

Ben’s Bridging Module Breakdown

For my bridging module, I sent the following proposal to the BCS Director and got it approved. It’s a COGS/COMR/CS mix.

My bridging module consists of:

COGS300, COGS303, POLI385A, + (any two of COMR398, COMR329, CPSC330, CPSC344)

Finalized Bridging module (Updated: March 26, 2022):

COGS300, COGS303, POLI385A, COMR398, COMR329

My bridging module theme (sent to BCS Director):

I would like to prepare myself for working for SaaS companies dealing with user behavior and/or user analytics — ie. Salesforce, Slack, etc. By understanding cognitive systems, how individuals form opinions, and the psychological processes which back them, I can become a better developer and further understand the end-user.

COGS300: Understanding and Designing Cognitive Systems
Reason: Develops my understanding of how cognitive systems work, a very brief intro into how machine learning works, and how we need to adjust weights.

COGS303: Research Methods in Cognitive Systems
Reason: Develops my understanding of research methodologies of different disciplines relevant to cognitive systems (Computer Science, Linguistics, Philosophy, Psychology).

POLI385A: Public Opinion and Elections
Reason: Develops my understanding of the psychological and social foundations of public opinion. It also develops my understanding of how voters make up their minds and helps me to make connections to user behavior.

— Below, are possible courses that also would fit this bridging module story.

COMR398: Introduction to Business Processes and Operations
Reason: Helps me to understand the design and management of systems that efficiently and effectively supply products and services to the end-user. This will enable me to be able to better develop products that complement or evolve existing systems.

COMR329: Principles of Organizational Behavioral
Reason: Understanding user behavior is important when designing/creating tools that help streamline the extraction of user analytics and behavioral patterns. This course will enable me to be knowledgeable in organizational structure, environments, group processes, motivation, and leadership

CPSC344: Introduction to Human-Computer Interaction Methods
Reason: Introduces me to tools and techniques for interface design, task analysis, analytic and empirical evaluation methods. This is important as it provides the knowledge for me to better evaluate user response and user interaction when I push some iterations of my product out to my users.

CPSC330: Applied Machine Learning
Reason: Introduces me to the application of machine learning tools that will aid my analysis of user behavior and user statistics. It would enable me to perform data cleaning, feature extraction, machine learning, and compilation of useful analytical data.

I’m not a huge fan of COGS. If you genuinely want to explore COGS, feel free to do this bridging module — otherwise, it probably is not recommended. In my opinion, my experience with the COGS Bridging module has shown that it is not worth it. There are multiple other combinations of bridging modules that would allow you to actually pay to learn something rather than merely scratching the surface of three fields.

Still interested in COGS? Alright, here’s a raw master compilation of my COGS200 lecture notes (a combination of all the slides, discussions, lecture notes, and thoughts from profs for Sept 2019). Naturally, everyone’s mileage will vary, thus, if COGS is something you are really interested in — go for it!

Below, is a snapshot of the course sequence and CS streams you may potentially take.

NOTE: CPSC 310 now has a prereq of CPSC 213! Search all dependencies with UBCExplorer.

Course Tree Graphic Created by Sasha Avreline. Updated 2021–06–25.

How do I prepare before the program?

  1. Study for the CPSC 110 Challenge Exam (Give around 2–4 months of prep time)
    It is recommended to take the CPSC 110 challenge exam so you can get exempted from it and take CPSC 210 in your first semester which will get rid of the bottleneck caused by the CPSC prereq chain.
    Thus, it is important to start studying for it. Give yourself ~2–4 months which is advised by most other BCSers if you have little to no coding experience.
    You can access the course material through this website. More info on the challenge exam here: https://www.cs.ubc.ca/students/undergrad/courses-registration/cpsc-110-challenge-exam
  2. Start self-learning a language.
    It is recommended to start learning and picking up a language like Python and/or Java will give you a feel for what programming is and familiarity with the topics that you will probably cover.
    Automating the Boring Stuff is a good python resource.
  3. Start working on a personal project (if you already had experience programming and don’t need to do #2)
    Get a head start and go work on a project. It helps contribute to your resume which will be beneficial to get your first Co-op placement.

Moving In Logistics / Residence Options at UBC

You have accepted your offer and getting ready to move (assuming that you are moving to Vancouver). Now, you get worried lol — where do you live?

UBC Residence Options

UBC has three residence options:

Winter Session Residence — September to April
Mainly for students new to UBC who qualify for a guaranteed room. A limited number of spaces are available for returning students.

Year-Round Residence — typically May to April
For returning and graduate students, and student families.

Summer Residence — May to August
For UBC students who are studying or staying on-campus for the summer or visiting research students.

As an incoming UBC student, make sure you apply to both Winter Session Residence and Year-Round Residence. The Winter Session Residence is basically a lottery, but as a new student, you could potentially snag a position. The Year-Round Residence is based on the waitlist. It takes forever to get an offer and the earlier you apply, the more time you can be in the queue.

Here is the official UBC page on how to apply: https://vancouver.housing.ubc.ca/applications/how-to-apply/

So, how should you rank the residences (UBC Housing)?

This is a pretty hard question as there is no central location solution or website at the moment that allows all residence information to be shown with reviews / etc.

For pricing, you can see the official website: https://vancouver.housing.ubc.ca/residences/

UBC only has a Reddit thread (NEW TO CAMPUS MEGATHREAD) on the UBC subreddit which typically would answer most questions — https://www.reddit.com/r/UBC

For reviews of residences, search the residence name on YouTube — many YouTube videos by students sharing their experiences.

Personally, I would choose:

Outside UBC Residence Options

Sometimes you won't be able to secure UBC Housing, that’s fine. Many students have to sublet or rent a location just outside UBC.

You can also rent places on campus but not a part of UBC Housing. These locations are much more expensive than typical UBC Residence options — Wesbrook Properties.

I stayed at Central for a year and it was incredibly convenient. I have also lived around the Dunbar area (~ 20 min commute by bus to campus).

https://www.wesbrookproperties.com/

So, where do you get a place and/or a roommate/housemate?

Facebook groups / Facebook marketplace

UBC Housing Forums (Good for sublets)https://forums.housing.ubc.ca/

Craigslist Vancouver https://vancouver.craigslist.org/d/apartments-housing-for-rent/search/apa

Key Notes for your first year:

The following section will discuss pieces of advice that were learned from experience in my first year.

Check out different career paths.

When you plan your degree, you need to know what is out there and what is required to get where you want to go. Below, is an infographic that I had saved from a LinkedIn post many months ago which highlights some of the relevant stacks you will need for different types of development.

Use the UBC Course Explorer and Dashboard to plan your degree.

As we all know, the UBC Student Service Centre isn’t the best website to navigate on. The UBC Course Explorer allows students to easily search up a course and see all prerequisites/dependencies. Additionally, the BCS Dashboard is specifically built for BCS students to help with their degree planning. Be sure to create your plan and confirm with the BCS Director!

Start working on personal projects.

It is essential to have personal projects or collaborative projects. As an individual who had just transitioned into computer science, you won’t have enough computer science-related work experience to display on your resume. Thus, you will need to showcase technical activities like hackathons and projects.

Reach out to other BCSers/other students to build a project together.

Building a large-scale project may seem intimidating especially when you are just starting out in computer science. However, even with zero experience, you could still build something fantastic. Find/create a group, hash out an idea, plan, and then start to learn all the necessary requirements to build your ideas into reality. For those starting out, my friends and I have documented our journey of how we built a UBC course explorer and BCS dashboard with minimal knowledge of our stack. We hope that it may inspire and help provide insight for you to kickstart your project!

Attend hackathons.

Hackathons are a great way to meet new people and force yourself to build something within a set time frame. Even if you go in having no experience, you can go to learn and experience the collaborative atmosphere. At hackathons, you should sit down, set up a project goal, and then be browsing, researching, and learning to “hack” that project together.

Even if you aren’t able to deploy a finished product or MVP (minimum viable product), you have still won as long as you had taken something away from the hackathon (ie. learning something new). Take these hackathons as opportunities to learn and grasp tech/frameworks/languages that are used in industry and usually aren’t taught in lower-level introductory courses.

How to join a hackathon / where to find them?
Keep an eye out on MLH’s website, Devpost, or through the UBC CS department emails. You can also follow UBC’s largest hackathon club — nwPlus. The nwPlus marketing team usually shares the stories of other hackathons on their social channels like Instagram!

Take the English Exemption Exam to get exempted from ENGL1XX

Seriously, take it. It’s super easy and will save you money and time spent on taking the first-year English course. From multiple reviews from BCSers who took the lower-level English course — it is an absolute disaster. Go challenge. It is free — so why not?

More information is on the official website.

Don’t buy any textbooks!

In CS, pretty much every textbook can be found in a pdf format online. Ask upper years, or use libgen. For some CS courses, you’ll actually be dependent on the textbook (ie. CPSC121, CPSC317)

Take extra courses on the side and do self-learning

As a student completing a second degree, we are behind the others who are on track completing their standard first undergrad degree in computer science. It is also important to self-learn through the numerous resources out there like Udemy, FreeCodeCamp, LeetCode, YouTube, etc. which will help expand your skills.

Here is a list of must learns (in my opinion):

  • Learn how to use git and GitHub (git clone, git branch, git add ., git commit, etc.)
  • Learn CLI (ie. cd, ls, etc.)
  • Web dev (Learn how to build a front end and a backend as well as how to connect them)
  • How to build and use APIs.

I highly recommend following this tutorial and create a MERN stack application. https://medium.com/@beaucarnes/learn-the-mern-stack-by-building-an-exercise-tracker-mern-tutorial-59c13c1237a1

You might feel Imposter Syndrome.

Don’t let that get to you. Most feel the same way. You also have to remember that you are transitioning from a different field. It is new. A transition can be hard. You also shouldn’t be comparing yourself to others. You have your own timeline and own set of goals. Don’t lose focus and lose sight of that goal.

Don’t fall behind.

Stay on track with your courses. Falling behind will typically result in a massive accumulation of workload and stress as the term progresses. It simply isn’t worth it.

Marks are not that important in this industry.

In computer science, while high marks are a good thing, it is not a necessity unless you want to apply to grad school or a professional school. It is absolutely important to do self-learning outside of class/academia. The CS degree frankly will not teach you the skills directly applicable right away in the industry. In my opinion, definitely aim for high marks, but don’t stress over them. Try to keep the marks at 70–75%+ and you should be okay. It’s not worth trying to aim for 100% and get diminishing returns for the increase of effort where the returns for that same effort would be better used elsewhere.

Use TA/Professor Office Hours

They are there to help you to succeed. Use them, you are paying for them — so why not use an already paid-for service. They can be instrumental to help in connecting the dots of concepts that may have been previously fuzzy.

Study with other people.

In biochemistry, I had found that studying with a group of people wasn’t effective unless I have already done some self-study beforehand. The most effective way to study is to first self-study and then do group study which will allow you to bounce ideas off of each other and discuss each of your interpretations of the topics. Studying with a group also keeps yourself accountable which will make you more likely to stay on top of your tasks and not fall behind.

Attend BCS Events

Show your support for the BCS executive team and any BCSers who organize such events. A good turnout will allow such events to repeat in the following years and allow the team or the individual to hold more of such events. Grasp such opportunities to meet your cohort and upper-year cohorts. Who knows, you might gain some inspiration, insight, or even enlightenment about how it is in other fields of study.

Get Involved

There are many opportunities to also get more involved in the BCS program such as running to be an executive. By default, all students registered in the BCS program are automatically a part of the Bachelor of Computer Science Student Association. You could always apply to be more involved during the elections for the executive team.

The BCS Student Association executives organize events and restock supplies in order to further contribute to the BCS community culture, provide learning and networking opportunities, and enhance the overall student experience.

Naturally, it is also okay to organize events yourself and ask for the BCS Student Association executive team to give some insight/advice and potentially help run/sponsor the event.

Getting your first internship in BCS / Co-op program details

The first internship is the most difficult one to get. Let me first provide some information about UBC’s Computer Science co-op program process for BCS students.

After starting BCS, you will get an email early in the year to apply to the co-op program. They will interview you and let you know of the result in January so they can make sure that you satisfy the minimum grade requirement.

Here are the requirements from the official UBC CS co-op website:

As long as the above is satisfied, you will be accepted into the co-op program by term 2 (Jan-April). During this time, you will have to attend some co-op workshops.

The timeline for applying to jobs is typically the following:

  • Apply for Summer positions (Start Date: May. End Date: Aug) 4 months before. This means you apply and send applications in Jan-Apr before.
  • Apply for Fall (Start Date: Sep. End Date: Dec) in the summer before. So, apply and send resume/apps in May-Aug.
  • *For larger companies like Google, Facebook, Amazon, Uber, etc/ and US internship, you apply much much earlier. Some you apply 8 months before the start date. So if you want to get a summer internship, then you need to apply around Aug-Nov (Typically, they start posting the job postings Aug-Sep and interview Nov-Dec).

Note: For a more detailed and comprehensive article about getting co-ops, internships, and the process — check out this guide! https://medium.com/world-of-cultivation/internships-get-the-bread-handbook-11a95f21be89

Is it hard to get the first internship?

The first internship/co-op position will be the hardest to get. To increase your chances, I would recommend you start doing projects early on and do self-learning as recommended above. I would cover the following concepts to ensure you are ready and have an edge over other students:

  • Learn a frontend development stack (Recommended (one of): React / Vue / Angular, etc.)
  • Learn a backend development stack (Express.js / Firebase / PHP / Golang, etc.)
  • Learn how to create an API and how to use them.
  • Learn what a database is and how to set one up (MongoDB (for NoSQL), MySQL/Postgres (for SQL)).
  • Learn how to use GitHub and version control with git.
  • Learn some of the common methodologies used in the industry (Agile/Scrum).

Once again, I would recommend individuals to follow this MERN stack tutorial. https://medium.com/@beaucarnes/learn-the-mern-stack-by-building-an-exercise-tracker-mern-tutorial-59c13c1237a1

Do not be discouraged if you are having a hard time finding the first co-op.

I also wrote another article here detailing my own Job Search Journey which you can read here: https://medium.com/world-of-cultivation/internships-get-the-bread-handbook-11a95f21be89

First Co-op

When I was searching for my first one (the term where I landed at Checkfront), I had sent out 160+ Apps. For this first job search, I applied to EVERY position that was a software development position. The response rate was terrible. Within those 160+ apps, I only had 5 interviews before I got an offer. These interviews were also from smaller companies. To give you an idea, they mostly were <100 people in total (Checkfront, FISPAN, Pattern Labs). Larger companies that had invited me for an interview would include Neurio (aka Generac) and BlackBerry. Very disappointing stats, but then again, at that time COVID had shut the world down and companies had frozen hiring and were hesitant to take on interns.

Second Co-op

After landing the first co-op, it is so much easier to get interviews. For my second job search cycle where I landed TD. I had sent out probably 70+ applications. However, this time, I was extremely picky and only applied to large well-known companies or companies that I liked. I was flooded with interviews. I had 12 interviews and numerous other coding challenges (I grouped the numerous interview stages as a single interview for the ones that had multiple rounds.). For 1.5 months, I had at least 1–5 interviews per week. To provide some information on these companies, they were Bloomberg, SAP, Axiom Zen, Blackberry, Electronic Arts, WorkDay, TD, FISPAN. As you can tell, this is a HUGE level up from the first job search cycle. So no worries — it gets better! Land the first one, and then you should be golden for the next.

Third Co-op

This section is a relatively recent addition. I did another job hunt cycle where interviews were flooding in and I found myself drowning in online assessments and requests for interviews. I sent out ~65 applications this round, got around 5–8 interviews, and numerous online assessments. Happy to say that I secured Riot Games for the summer of 2022.

Fourth Co-op

With so much prior internship experience, getting some callbacks and online assessments was much simpler this time around. I accepted an offer for Coinbase for Fall 2022.

Additional advice for securing internships

Some additional advice I usually provide to those that ask would be the following:

  • The pandemic is still here. Everyone is stuck inside. It is the best time to network. Attend hackathons, talks, and events, or connect to individuals you are interested to speak with on LinkedIn and ask to schedule a call. You might be surprised who you might meet.
  • Build, build, build. Make sure you are active and still developing.
  • It’s important to keep your interviewing skills sharp. Review behavioral interviews (ie. Be able to go over your resume and explain each aspect of it such as past work experience / what you built etc.)
  • Do LeetCode for obvious reason as companies would most likely ask some sort of technical LeetCode-like question. Buy LeetCode premium.
  • Online assessments are hard. Just have to keep doing them and keep doing LeetCode to get better.
  • Don’t get discouraged. As with any job search, it is a grind. Fail and learn from it. Use the failure to become better prepped for the next one. Bad interview? gg next.
  • If you get invited for an interview, read the job posting and google “Top 100 interview questions for _____” for every language or concept listed in the job posting. ie. If it says Java, google and go over the “Top 100 interview questions for Java.” Surprisingly, I had so many of these trivia-style interviews where this was the alternative to LeetCode Algo-styled questions.
  • A small addition to advice would be to make use of your network. Ask for referrals. They do help depending on the company. It is typically better to ask a full-time employee over an intern, but having a referral is better than none.

Student Resources

You would be surprised that there are many student resources out there. Make sure to capitalize on these resources and maximize your student status.

BCS Resources

Incredible TAs from the BCS program have also compiled review sessions, study notes, etc. I have also included some non-BCS resources from other noteworthy sources like nwPlus — the team behind Western Canada’s largest hackathon, nwHacks, HackCamp (previously UBC Local Hack Day — North America’s largest Local Hack Day in 2018), and Vancouver BC’s first all-female* 24-hour hackathon, cmd-f.

You can find them here:

If you have any resources that you would like to share — please reach out and I can add them to this list.

Let’s get in touch!

Hi! You reached the end! Congrats on making it through this guide. I hope that it has provided some insight and can better inform your decision!

Feel free to reach out and connect if you have any questions or would like to contribute to this article. If you know anyone who is currently a prospective or incoming BCS student — do send them this article :)

Feeling extra supportive🥳 ?

If you enjoyed the read, do take some time to follow or contribute some claps — each member can clap 50 times by holding the clap button (lol). This would help increase the SEO and allow more potential BCS applicants to be able to access this resource!

Edit: Wow!! We made it on the first page of Google results for a search query of UBC BCS or UBC BCS Guide.

Feeling extra generous🤯?

Alternatively, if you are feeling extra generous and want to drop a tip to contribute to my next coffee or late-night Mcdonald's. You can do so below! A small tip for a coffee is always appreciated! Thank you 😊!

Donate/Tips

Other Miscellaneous Thoughts🧐

I will be updating this periodically with more ideas and relevant content. You can see the last updated version at the very top of the article.

Edit: Great to see quite a lot of emails! If you have questions, don’t be shy to reach out. My response time is quicker on LinkedIn, however, both LinkedIn and email work (Email may sometimes be lost in my spam box if it is from a unique email domain). I am also down to hop on calls.

LinkedIn: https://www.linkedin.com/in/mrbenc88/

Email: chessben88@gmail.com

Website: http://bencheung.me/

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store