Which introductory computer science course should I take?

The Computer Science department offers four options for your first Computer Science course at UBC.  None of these courses have any programming prerequisite, so they are all appropriate for beginners. These four courses all have different goals, require different amounts of work, and have different levels of difficulty.

CPSC 110 (Computation, Programs and Programming)

CPSC 110 is the shortest route to CPSC 210 and the rest of the Computer Science major and mini-streams. If you plan to complete a Computer Science major or honours degree (including combined majors, combined honours, double majors, dual majors, and minors) or need CPSC 110 to fulfill a degree requirement, then you should take CPSC 110. But, even students who are not planning to focus on Computer Science may still find that CPSC 110 best matches their needs and interests.

The goal of CPSC 110 is to give you a solid foundation in best-practice software development methods that you can use to write high-quality programs in any programming language. The approach in 110 is to learn by doing – in lecture, lab and in homework you will be writing programs. We aim to prepare you for a career of quickly picking up new languages and being able to program effectively. To do that, CPSC 110 uses a teaching language that behaves like the core of nearly every other language you are likely to use.

Starting in September 2018 we will be offering a fully online section of CPSC  110.  Students in this section will complete their lecture and lab work entirely online.  They will still hand in weekly problem sets and will attend the same midterm and final exams as students in the face to face (on ground) sections.  Online section students will have access to the same instructor and TA office hours as on ground students.  The online section is intended to serve students with excellent self-motivation and time management skills who may have difficulty attending 6 hours of course activity (lecture plus lab) a week.  The online section will not be less work than the on ground sections – in fact, because there won’t be scheduled class time to attend to the on ground section will require a little extra work from you to ensure you stay on top the course.

CPSC 110 is a 4-credit course, with 3 hours of lectures, 3 hours of labs, and 6-8 hours of other work per week.

If you do not plan to do a Computer Science degree and you do not need CPSC 110 to fulfill a degree requirement, then you may wish to consider taking CPSC 100 (Computational Thinking), CPSC 103 (Introduction to Systematic Program Design), or CPSC 301 (Computing in the Life Sciences). CPSC 100 and CPSC 103 are both appropriate for students of all programs at UBC. CPSC 301 is designed for Life Science students. You should choose the course that best fits your interests.

CPSC 100 (Computational Thinking): How have computers impacted the world around you, and how do they do it?

How have computers impacted the world around you, and how do they do it? CPSC 100 (Computational Thinking) covers related topics, including the way that computers have changed animated movies, what businesses can do with your personal information such as your phone number, how the Internet works, and whether artificial intelligence will destroy the earth.
CPSC 100 is NOT a programming course, though there will be a small amount of programming in a visual language so that you can understand a bit of what makes computers tick.
CPSC 100 is targeted for first-year students, but is open to all UBC students. You cannot get credit for CPSC 100 if you have credit for CPSC 110.

CPSC 103 (Introduction to Systematic Program Design)

This course is for any UBC student who wants to learn how to program in an introductory setting. You will learn sound programming skills that will allow you to solve problems in a discipline of your choice. You will learn the Python programming language, but your main focus in this course will be on learning to design small, well-structured, readable programs rather than focusing on learning a particular programming language.

CPSC 103 is a 3-credit course, with 1.5 hours of lectures, 1 hour of tutorials, and 10 hours of other work per week. This class is taught in a blended format; you will attend your lecture and tutorial at UBC, and the rest of the work can be done at a time and place that you choose.

Students who complete CPSC 103 and then decide to pursue further study in Computer Science can take CPSC 107 (or CPSC 110) to complete the learning goals necessary to continue with further computing courses.  Students who know in advance that they wish to pursue further study in Computer Science should register directly for CPSC 110 rather than CPSC 103 / 107.

CPSC 301 (Computing in the Life Sciences)

This class is for students who have third-year standing or higher and who wish to have a single-course introduction to programming skills in the Python programming language.  Applications and examples will be drawn from the life sciences.  Students completing CPSC 301 will be able to write short programs to access, manipulate, summarize and visualize simple data, such as text, image and common biological sequence formats.  CPSC 301 is a 3-credit course, with 3 hours of lectures, 2 hours of labs, and 3-5 hours of other work each week.

You cannot get credit for CPSC 301 if you have previous university or college level computer programming credit beyond CPSC 100 (or our old CPSC 101) or equivalent.  CPSC 301 is not suitable as a prerequisite for other Computer Science courses. Consequently, students interested in pursuing additional Computer Science study at UBC should take CPSC 110 or 103.  At present, we plan to offer CPSC 301 in September 2018, but there may not be any further offerings after that time.

a place of mind, The University of British Columbia


ICICS/CS Building 201-2366 Main Mall
Vancouver, B.C. V6T 1Z4 Canada
Tel: 604-822-3061 | Fax: 604-822-5485
General: help@cs.ubc.ca
Undergrad program: undergrad-info@cs.ubc.ca
Graduate program: grad-info@cs.ubc.ca

Emergency Procedures | Accessibility | Contact UBC | © Copyright The University of British Columbia