Top

Incoming First Year Computer Science Students

Students arriving in Fall 2023

Welcome to the Department of Computer Science! We typically shorten “first-year computer science” to “CMP1” (pronounced: comp-one). This page will help you prepare for your first year in computer science. If you have any questions about computer science courses and programs, check out the FAQ and other links below, and if you can’t find the information you’re looking for, please don’t hesitate to reach out to our Computer Science undergraduate team at cs.cmp1@utoronto.ca.

Your 2023 first-year instructors

Sadia Sharmin

Sadia Sharmin (with Dr. Chirly the pocket-sized parrot)


CSC110/111 Coordinator and CMP1 Faculty Advisor

 

The Computer Science admission guarantee

The Computer Science Admission Guarantee is a set of requirements that, if completed, guarantee you a place in a Computer Science Specialist, Major, or Minor program of study starting in your second year. The guarantee does include grade requirements in both CSC110 and CSC111, which we set to ensure that you’re prepared to succeed in our programs. We certainly aren’t “weeding” anyone out—we expect the vast majority of you to meet these requirements, and we are committed to helping you learn and succeed in our courses this year.

Details about the admission guarantee and applying to the CS program at the end of your first year are available on our page about Applying to the CS Program.

Choosing your first-year courses

The Department of Computer Science has developed two new innovative courses that will be offered exclusively to those admitted to the CMP1 admission category. These courses will create an excellent introduction in Computer Science by immediately integrating practical programming skills with theoretical mathematical foundations from day one. The new courses will also offer a consistent and streamlined experience for all CMP1 students to foster the development of a strong student community.

  • CSC110Y1F: Foundations of Computer Science I

  • CSC111H1S: Foundations of Computer Science II

In addition to these two courses, you will need to complete MAT137Y or MAT157Y to be eligible for the Computer Science Major or Specialist. MAT137Y and MAT157Y are full year courses, running from September through April.

Finally, if you are interested in the Data Science Specialist program, you must also take STA130H. STA130H is a single term course and is typically offered in both Fall and Winter terms. There is no program admission guarantee for the Data Science Specialist program (though spaces are reserved for CMP1 students), so please refer to the information on our “How to Apply to a CS program” page for details on eligibility for the Data Science Specialist. 

Since CSC110Y is a full credit offered in the Fall, you should treat it as two courses as you’re planning your Fall term. Normally, a 100% course load is equivalent to 5 courses per term, but notice that you should only take up to 4 courses in the Fall because CSC110Y1F takes up two slots – see the FAQ below the table for details. In addition to the courses mentioned above, you might want to take courses to prepare you to pursue additional Arts & Science programs, or complete electives. Your College will have lots of great information for you about choosing these other courses. Below is an example of what your first year enrolment might look like, given these courses. We’ll share lots more information about course selection at a live course selection webinar over the summer!

Fall Term Winter Term
MAT137Y / MAT157Y
CSC110Y CSC111H
STA130H (if interested in Data Science) or elective
Elective 1a Elective 1b
Elective 2a Elective 2b

What is the difference between an "H" course and a "Y" course?

An “H,” or half course, is worth 0.5 credits and normally runs for one term.

Typically, “Y” courses last a full year (two semesters – like MAT137Y/MAT157Y).

CSC110 is a “Y” course, but it’s unique in that it is a full credit course offered in a single term.  This makes it a double course, meaning that you should expect the workload of CSC110 to be equal to two H courses – so in your fall semester, instead of taking five courses you will only take four: CSC110 and three others.

How should I choose between MAT137Y1 and MAT157Y1?

Both MAT137Y1 and MAT157Y1 are theoretical and proof-based approaches to calculus, and both provide excellent mathematical foundations for computer science students. MAT157Y1 is taught at a higher level of abstraction, and is particularly suited for students intending to complete one of the four MAT157Y1-stream Math specialist programs (can be taken alongside a computer science program) or to specialize in the more theoretical or mathematically-intensive aspects of computer science. The Math Department also offers a variety of specialist, major, and minor programs available to students who complete MAT137Y1. For more information about choosing between these courses, check out this advice page from the Department of Mathematics.

One recommendation if you are interested in MAT157Y1 but are unsure about the difficulty level or workload: You have the option to attend both courses in the first few weeks of class and try the assigned homework to get a sense of the style of each course. The Math Department offers the ability to change your course enrollment from MAT157Y1 to MAT137Y1 for a limited time after the regular enrollment dates.

For more information about these courses and programs of study in mathematics, please contact the Department of Mathematics.

Are there other CS-related courses I can take in my first year?

Here are some suggestions for other courses you may be interested in completing in your first year. None of these are required for your first-year in computer science, but you may find them particularly interesting and/or useful for your long-term academic planning:

I'm not sure what electives to choose, what advice do you have?

One of the advantages of being an Arts & Science student is that you have a huge range of courses and programs to choose from. Whatever you're interested in, there's probably a course in it! We strongly encourage you to take a broad range of elective courses in your first year, and explore your interests outside of computer science. The computer science course load gets heavier after your first year, and so now is the time to choose courses in other areas based on your interests, to to fulfill the breadth requirements you'll need to graduate.

A great way to get started to look at the different Program Areas in Arts & Science and look for subjects that interest you. Every program area page contains both courses and programs offered in that area. Many computer science students end up choosing a minor or major in a completely different field, so don't think that you must study only CS during your time at U of T.

Who should I talk to about Computer Science course and degree planning?

The Computer Science Undergraduate Office academic advisors are here to help you with questions about CS courses and programs. To connect with them, please visit our academic advising page.

You may also want to consider connecting with your College Registrar's Office for academic advising, especially regarding overall degree planning or non-CS courses.

Preparing for your first year

Resources to help you prepare

We have prepared a course on Quercus, U of T’s learning management system, to help you prepare for your first year Computer Science courses: First-Year Computer Science Summer Prep (log in with your JOINid and password).

You’ll be hearing from us, your college, and the Faculty of Arts & Science throughout the summer, so keep checking your U of T email regularly. Check out the New Student Guide for helpful information about enrolling in courses, getting to know your college, and more.

What kind of laptop should I buy?

Your courses in first year rely heavily on PyCharm and Python 3. The system you purchase should be able to install and run both of these softwares. Here are some specifications that we recommend:

Operating System: Microsoft Windows 10/11 or macOS 10.15 (or later)
Memory: At least 4 GB of RAM (8 GB recommended)

The other specifications will depend on your budget. Avoid computers with limited capabilities, such as Chromebooks, iPads, etc. Courses in 2nd year and beyond will ask you to install more types of software depending on the topics being taught, which will likely be impossible with something like a Chromebook. Finally, it would be a good idea to invest in a laptop with a good processor - the types of processors out there vary, so brush up on reviews before picking a laptop.

Do I need to have experience programming before starting this fall?

No, we’ve designed CSC110 to be accessible to everyone regardless of programming experience. We have students coming in with a wide variety of backgrounds and knowledge, including no programming knowledge at all, and that’s okay!

If you have time this summer, here are some resources for learning the basics of programming in Python, which is the programming language we’ll use in our first-year courses. This is not required, but could be useful preparation to ease your transition to university life and academics this fall. The content below is based on CSC108, our department’s main introductory programming course, and CSC110 will cover similar content, albeit with different presentation and style.

Which textbooks would you recommend for CSC110 and CSC111?

We've actually spent a lot of time preparing some notes for the course that we'll make available online. These notes will make up the required reading for the course, and there's no required textbook outside of them.

If you are interested in textbooks for supplementary reading, for Python we recommend: Practical Programming, Third Edition - An Introduction to Computer Science Using Python 3.6 by Paul Gries, Jennifer Campbell, and Jason Montojo (https://pragprog.com/titles/gwpy3/practical-programming-third-edition/).

For the mathematical side of things, you can check out Discrete Mathematics: An Open Introduction, 3rd Edition by Oscar Levin (http://discrete.openmathbooks.org/dmoi3/).

What are the best ways to prepare for CSC110 and CSC111 exams in general?

There will be many opportunities to practice what you've learned in lecture through weekly prep, exercises, weekly tutorials, and assignments. Staying on top of all the materials and not falling behind is one of the best ways to be prepared for a term test. While you complete assessments, keep a written notebook of the concepts and questions you've struggled to understand. This gives you an idea of what you need to re-visit before a term test so that you can improve your weaknesses.

One of my (Sadia's) favourite ways to study for an exam was reviewing all the material as thoroughly as I could, and then doing as many past exams as I could from the UofT old exams repository. I would print the exams out, put on a timer, and complete the past exam closed-book to really test my understanding, and try to simulate a “test environment”. Once time was out, I would grade myself – typing up my solution to coding questions and running it on the computer to test their correctness. The “grade” I earned on the past exams gave me a good idea of how prepared I likely was for the exam, as well as helped me pinpoint areas or types of questions I was struggling with (which I could then discuss with my professors/TAs during office hours prior to the actual exam!).

How are the proofs we learn in math courses linked with CS in general?

While you are proving different kinds of statements in the CS and math courses, you will find that there are similarities in how you approach proofs. Proving something true is a skill that you will get plenty of practice in. In Computer Science, our proofs will focus on the correctness and efficiency of algorithms. But a lot of the mathematics you learn in your first two years act as a foundation for future computer science courses. For example, there is a strong link between linear algebra and computer graphics.

Research and work opportunities for CMP1 students

In first-year your options are limited because you are still establishing a lot of foundational knowledge. With that being said, if you are interested in research or work opportunities, you should definitely be thinking about it, and preparing, from 1st year.

Check out this page about mentorship, work and research opportunities for CS students. In particular, at the end of your first year, you’ll be able to apply for the Research Opportunities Program, the Technology Leadership Initiative, and the Arts & Science Internship Program (ASIP).

Once you are in 2nd year, you may be eligible for awards that make you more attractive to professors looking for undergraduate student research. Your grades in 1st year are important for these awards, but so are making connections with professors. Keep an eye on emails from the department for events that you can join virtually so that your name becomes recognizable to the professors you want to work with.

 

I have a question about X. Who should I be asking this question to?

There are many different aspects to your studies at the University of Toronto, and it can be a bit tricky to figure out who to ask your questions to. Here is a brief list of the different contacts you may get in touch with during your studies here and the areas they can help you with.

  • The CMP1 faculty and staff advisor (cs.cmp1@utoronto.ca): questions about your first-year CS courses (CSC110/111), CS programs, and general academic advising for your first year.

  • The CS Undergraduate Program Office (cs.undergrad@utoronto.ca) for any other questions about CS courses or opportunities.

  • Your College Registrar’s Office: questions about tuition and fees, Arts & Science academic policies, degree requirements and course planning, and accessing student supports on campus.

  • Other departments’ undergraduate offices: questions about their specific courses and programs (e.g., contact the Department of Mathematics for information about choosing between MAT137 and MAT157).