This page will help you choose your first-year 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 (firstname.lastname@example.org) for advice.
If you might want to study computer science in a Major or Specialist Program
|Do you have little or no programming experience?||Do you have programming experience roughly equivalent to CSC108H1?
||CSC1481 and CSC165H1/CSC240H1
||CSC148H1 and CSC165H1
|| CSC207H1 and CSC236H1/CSC240H1
| First-year calculus: MAT137Y* or MAT157Y* or (MAT1355H and MAT136H)*
||First-year calculus: MAT137Y* or MAT157Y* or (MAT1355H and MAT136H)*|
| Three additional half courses (or the equivalent).
||Two additional half courses (or the equivalent).
||Two additional half courses (or the equivalent).
Two additional half courses (or the equivalent).
Session Expiry<!--[if !vml]--><!--[endif]-->Your session will expire in: 60 seconds Do you wish to extend your session*Students are strongly encouraged to take MAT137Y or MAT157Y as they have been determined to provide the best preparation for upper-year courses in computer science and benefit students in CSC165H/CSC240H.
Note: grades in CSC148H1 and CSC165H1/CSC240H1 are used for admission to Computer Science Programs of Study. Please consult Admission to a Program for more information.
If you want to take a CSC course for breadth or for a requirement in another program
Have you taken an introductory CSC course and want to know what to take next? See How to Continue Your Studies in Computer Science. If you are relatively new to programming, you have four courses to choose from: CSC104H1, CSC108H1, CSC120H1, and CSC121H1. None of these require or expect any prior programming experience.
|Your planned area of study||Suggested course||Notes|
|Humanities||CSC104H1||CSC104H1 is suitable for anyone with a curiosity about computer programming.|
|Natural and social sciences||CSC120H1||CSC120H1 is a practical introduction to programming, mainly geared towards students in the natural and social sciences or anyone who will be working with quantitative data.
|Statistics||CSC121H1||CSC121H1 is an introduction to programming for statistical applications. It is designed for students who are either planning to specialize in statistics or who expect to use statistics extensively while studying another field.|
|CSC108H1 is the first course in all of the CSC Programs of Study, although it is suitable for everyone. There are three versions to choose from:
Do you have some programming experience?
If you do, you may consider skipping CSC108H1 and going straight to CSC148H1. 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 — read the next section, "What if you do not know Python?".
What if you do not know Python?
CSC108H1 and CSC148H1 are currently taught using Python. CSC148H1 offers a full-day ramp-up session on the first weekend after the start of class. The ramp-up session quickly reviews how the CSC108H1 concepts look in Python. Students who have learned the same concepts in a similar language (e.g., C++, Java) typically find that the ramp-up is enough to get them ready to program in Python in CSC148H1. The exact times for each term's ramp-up session will be communicated by the instructor during the first week of classes.
Students may also benefit from completing the free Massive Open Online Courses (MOOCs) developed by experienced instructors of CSC108H who teach Python, available on the Coursera platform:
As always, if you have questions, please contact our Undergraduate Office at email@example.com for advice.
|Scenario||Suggested next step|
|Have you completed CSC104H1?||Take CSC108H1 if you have no other programming experience besides this course, or CSC148H1 if you have some other experience.|
|Have you completed CSC108H1?||Proceed to CSC148H1.|
|Have you completed CSC120H1?||Proceed to CSC148H1, but review the final few weeks of CSC108H1 (specifically, sorting algorithms, algorithm running time, and an introduction to classes). You can find notes to review on the most recent term's CSC108H1 website.|
|Have you completed CSC121H1?||You will need to learn Python, and the CSC148H1 ramp-up session will likely be enough. Proceed to CSC148H1, but review the final few weeks of CSC108H1 (specifically, sorting algorithms and algorithm running time). You can find notes to review on the most recent term's CSC108H1 website.|