What Courses to Take in the First Year of Computing Programs
What CISC course should I start with, CISC101/3.0, CISC110/3.0 or CISC121/3.0?If you have no prior programming experience, you should take either CISC101/3.0 or CISC110/3.0 in the first year. If this course is taken in the fall term, you can take CISC121/3.0 in the winter of first year, and CISC124/3.0 in the fall of second year. CISC124/3.0 can be taken concurrently with fallterm 200level CISC courses.
If you have prior programming experience, you should take CISC121/3.0 in the fall of first year and CISC124/3.0 in the winter of first year. This prior programming experience could be a highschool or summerschool course, job experience, or some kind of independent study, including online courses at Udacity, Coursera, or Amplify.
You do not have to be familiar with any particular programming language. What's important is that you understand the basic concepts of programming: variables, conditionals, loops and methods (also known as procedures, functions or subprograms). If you are comfortable writing short programs in any language, including methods with parameters and return results, you have enough experience to take CISC 121/3.0.
If you are unsure about whether you belong in CISC 121 or 101/110, take a look at the selfassessment quiz. The purpose of this quiz is to help you decide whether you belong in CISC 121/3.0 or in either CISC 101/3.0 or CISC110/3.0. If you are still unsure, you may consult an academic adviser, or an instructor for 101/3.0, 110/3.0 or 121/3.0. In all of these courses, there will be some discussion during the first week of classes about the criteria for taking CISC 121/3.0. If you believe you've signed up for the wrong course, it is easy to switch at that point.
In the long run, you're better off taking 101/3.0 or 110/3.0 before 121/3.0 and doing well in both than going directly to 121/3.0 and doing badly. If you are poorly prepared for 121/3.0, you will find the course very difficult and not grasp all of the concepts being taught. Since most other CISC courses build on material from 121/3.0, a weak beginning will cause difficulties all through your Computing studies.
CISC101/3.0 and CISC110/3.0 count as electives (if taken prior to CISC121/3.0); they are not required courses in any Computing concentration.
Which Math courses should I take?
CISC102/3.0, a course in Discrete Mathematics, is now required in all Computing programs (unless MATH110/6.0 is taken). CISC121/3.0 has CISC102 (or any 1styear Mathematics course) as a corequisite.
Many Computing programs have a 1styear Linear Algebra course as a requirement. This can be satisfied with MATH110/6.0, MATH111/6.0, or MATH112/3.0. We recommend MATH111/6.0 except for students who intend to take subsequent Math courses that require or recommend MATH110/6.0, such as students intending to take the Computing and Math plan (COMA). MATH112/3.0 is an accelerated version of MATH111/6.0 and can be taken by students who are strong in Math (or by students aiming for Biomedical Computing, because there isn't room in their schedule for MATH111/6.0).
Students in Computing programs that require Calculus would normally take MATH121/6.0. MATH120/6.0 can be taken by students who intend to take subsequent Math courses that require or recommend it. MATH126/6.0 is available for students in Arts programs, such as Computing and the Creative Arts. Here is more information about math courses.
What if I already know how to program? Do I really have to take CISC121/3.0?
We recommend that every student in a Computing program take CISC121/3.0. Here are some points to consider.
 CISC121/3.0 is not just a course about programming. It provides an introduction to the science of computing. Take a close look at the course outline and textbook, before deciding whether you already know all this material.
 If you have already taken a computing course at another university, at a community college, or at CÉGEP, you may apply for transfer credit. Work experience and highschool experience are very difficult to evaluate, and cannot be converted to transfer credits.
 What if you already know some of the material that is covered in CISC121/3.0? This is a good thing: having review material in some of your firstyear courses can help reduce the stress and time pressure that students encounter in first year. You can use CISC121/3.0 as an opportunity to refine and deepen your understanding, and to earn a good mark which attests to your high level of mastery of the material. This provides you with a strong foundation for subsequent CISC courses.
 If you are already an experienced programmer and knowledgeable in Computing Science, then the CISC121/3.0 assignments will be quick and easy for you to do. Thus, you will be able to complete CISC121/3.0 without wasting a lot of your time. You should complete all of the course assignments, no matter what you think your level of expertise is. Completing the assignments gives you confidence that you will indeed be able to perform well on the final exam. In the past, quite a few students have overestimated their mastery of the CISC121/3.0 material, and ended up performing very poorly on the final exam. By doing all of the assignments, you will avoid this problem.
 In some cases, it may be appropriate for you to take CISC121/3.0 and CISC124/3.0 concurrently; speak to the CISC124/3.0 instructor about this.

If you are certain that there is no need for you to take
CISC121/3.0, you may be able to avoid taking it.
The following steps are involved. We do not recommend this approach
other than in exceptional circumstances.
 If you do not take CISC121/3.0, you are missing a prerequisite for courses such as CISC124/3.0, CISC203/3.0 and CISC271/3.0. You will have to ask the instructor of each such course that you want to take for permission to take it without the CISC121/3.0 prerequisite. It is up to the instructor to decide whether or not to permit this. And you do this at your own risk  you might end up performing poorly in the subsequent course because you are missing material taught in CISC121/3.0.
 If you do not take CISC121/3.0 and are therefore missing a half course in your Computing concentration, you will have to replace CISC121/3.0 by a CISC halfcourse numbered above 200 that is not otherwise used in the concentration.
What courses can I take as electives?
Any Arts and Science course for which you have the prerequisites and can fit into your schedule can be chosen as electives. This list may help you.
How many courses should I register in?
The normal course load is five courses.
Summary: Courses to Take in First Year for Each Degree Program
 COMPGBA/COMPY (Arts General/Minor)
Students with programming experience should take CISC102/3.0, CISC121/3.0, CISC124/3.0, plus electives.Students without programming experience should take CISC102/3.0, CISC101/3.0 or 110/3.0, CISC121/3.0, plus electives.

COMPGBCP/COMPZ (Science General/Minor)
Students with programming experience should take CISC102/3.0, CISC121/3.0, CISC124/3.0 and MATH111/6.0, plus electives.Students without programming experience should take CISC102/3.0, CISC101/3.0 or 110/3.0, 121/3.0 and MATH111/6.0, plus electives.

COMPMBCH/CSCIPBCH (Computing Major/Computer Science Specialization)
Students with programming experience should take CISC102/3.0, CISC121/3.0, 124/3.0, MATH111/6.0 (or MATH112/3.0 or MATH110/6.0), MATH121/6.0 (or MATH120/6.0), plus electives.Students without programming experience should take CISC102/3.0, CISC101/3.0 or 110/3.0, 121/3.0, MATH111/6.0 (or MATH112/3.0 or MATH110/6.0), MATH121/6.0 (or MATH120/6.0), plus electives.

BMCOPBCP (Biomedical Computing)
Students with programming experience should take CISC102/3.0, CISC121/3.0, CISC124/3.0, MATH112/3.0, MATH121/6.0 (or MATH120/6.0), BIOL102/3.0, BIOL103/3.0, CHEM112/6.0.Students without programming experience should take CISC102/3.0, CISC101/3.0 or 110/3.0, CISC121/3.0, MATH112/3.0, MATH121/6.0 (or MATH120/6.0), BIOL102/3.0, BIOL103/3.0, CHEM112/6.0.

COCAPBAH (Computing and the Creative Arts)
Students with programming experience should take CISC102/3.0, CISC121/3.0, CISC124/3.0, 100level required courses in at least one of the Arts subjects, plus electives.Students without programming experience should take CISC102/3.0, CISC101/3.0 or 110/3.0, CISC121/3.0, 100level required courses in at least one of the Arts subjects, plus electives.

COGSPBCH (Cognitive Science)
Students with programming experience should take CISC102/3.0, CISC121/3.0, CISC124/3.0, MATH111/6.0 (or MATH112/3.0 or MATH110/6.0), PSYC100/6.0 and/or PHIL115/6.0 and/or LING100/6.0, COGS100/3.0, plus electives.Students without programming experience should take CISC102/3.0, CISC101/3.0 or 110/3.0, CISC121/3.0, MATH111/6.0 (or MATH112/3.0 or MATH110/6.0), PSYC100/6.0 and/or PHIL115/6.0 and/or LING100/6.0, COGS100/3.0, plus electives.

SODEPBCH (Software Design)
Students with programming experience should take CISC102/3.0, CISC121/3.0, CISC124/3.0, MATH111/6.0 (or MATH112/3.0 or MATH110/6.0), MATH121/6.0 (or MATH120/6.0), plus electives.Students without programming experience should take CISC102/3.0, CISC101/3.0 or 110/3.0, CISC121/3.0, MATH111/6.0 (or MATH112/3.0 or MATH110/6.0), MATH121/6.0 (or MATH120/6.0), plus electives.

COMAPBCH (Computing and Mathematics)
Students with programming experience should take CISC121/3.0, 124/3.0, MATH110/6.0 (or CISC102 and either MATH112/3.0 or MATH111/6.0), MATH120/6.0 (or MATH121/6.0), plus electives.Students without programming experience should take CISC101/3.0 or 110/3.0, CISC121/3.0, MATH110/6.0 (or CISC102/3.0 and either MATH112/3.0 or MATH111/6.0), MATH120/6.0 (or MATH121/6.0), plus electives.
Students should consult the calendar and/or an academic adviser for more information.