Choosing your First Year Courses — Department of Computer Science, University of Toronto Top

Choosing Introductory Computer Science Courses

This page will help you choose introductory computer science courses, whether you plan to enrol in a computer science program, are taking CSC courses to fulfill requirements for a different program, or just want to take a course or two to learn a bit about computer science.

If you have further questions, please contact our Undergraduate Office (cs.undergrad@utoronto.ca) for advice.

Are you an incoming CMP1 student?

If you’ve been accepted to the Computer Science (CMP1) admission stream and have guaranteed admission to a computer science program, please see our page for newly admitted CMP1 students.

Are you a non-CMP1 student interested in studying Computer Science in a Specialist, Major or Minor program, or interested in the Data Science Specialist program?

Students applying from non-CMP1 admission streams will need to complete specific courses and submit a supplemental application to be eligible to request a Computer Science program, which you will do at the end of your first year. Please see our page on How to apply to a CS program for details.

What programming languages are used in introductory courses?

The language used in CSC104H varies, but CSC108H and CSC148H are both taught using the Python programming language.

Which introductory course is right for you?

If you’re completely new to programming, you have two courses to choose from: CSC104H: Computational Thinking and CSC108H: Introduction to Computer Programming.

If you have some programming experience, you may consider skipping CSC104H1/CSC108H1 and going straight to CSC148H1: Introduction to Computer Science. CSC108H1 starts with the basics: print statements, what variables are, that sort of thing. To give you an idea of the pace, it teaches loops in week 4. To skip CSC108H1, you should be able to, in the programming language of your choice:

  • Design and implement a function (sometimes called a method or procedure) to sort a list (sometimes called an array) of numbers.

  • Write a program to read a text file and print only the words that start with a capital letter.

  • Describe the difference between a function that returns a value and one that prints a value.

  • Read and understand a 100-line program that contains several functions and confidently predict what it will do.

  • Write a function to count the number of zeroes in a list of lists (or 2D array).

  • Given a function description, write a set of unit tests for that function.

  • Given a buggy function that sorts a list of strings, find and fix the bug.

Here is a sample CSC108H1 final exam. If you're thinking about skipping CSC108H1 and proceeding directly to CSC148H1, you should be comfortable answering these questions in a programming language similar to Python.  If you don't know Python but understand the concepts in another language, you should be fine, but might benefit from completing the free Massive Open Online Courses (MOOCs) developed by experienced instructors of CSC108H who teach Python, available on the Coursera platform:

How to continue your studies in Computer Science:

If you have completed CSC104H: Take CSC108H1 if you have no other programming experience besides this course, or CSC148H1 if you have some other experience.       

If you have completed CSC108: Proceed to CSC148H1.

Any other questions?

As always, if you have questions, please contact our Undergraduate Office at cs.undergrad@utoronto.ca for advice.