Which introductory computer science course should I take?

The Computer Science department offers three 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 three 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.

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) or CPSC 103 (Introduction to Systematic Program Design). CPSC 100 and CPSC 103 are both appropriate for students of all programs at UBC. 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.

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.