CS 145: Designing Functional Programs (Advanced Version)

For Prospective Students

What is the difference between CS 145 and CS 135?

CS 145 is an advanced-level 1A Faculty of Mathematics core course, like Math 145 and Math 147. It is aimed at the top students in the Faculty of Mathematics. It covers the concepts that CS 135 does, but in a different order and at a more rapid pace, using more abstractions and fewer (usually different) examples, and taking more care to illustrate connections between CS and mathematics. It also introduces a number of enrichment topics that are not covered in CS 135.

What do I need in order to take CS 145?

The main qualifications for CS 145 are ability to reason and think abstractly, and enthusiasm for learning.

Good English reading and listening comprehension skills, and the ability to take notes, are also important.

Why should I take CS 145 if it is not required?

You should take it if you enjoy problem-solving and challenges, if you prefer being pointed in the right direction to being led in the right direction, and if you can take initiative in learning instead of waiting to be told what to do.

Will a CS 145 credit give me any advantage in the future?

A mark of 70 or higher in CS 145 enables you to take CS 146 (other students, including those who have completed CS 135 with an excellent record, require instructor consent for CS 146). But taking CS 145 and CS 146 will not allow you to take other courses earlier than if you had taken CS 135 and CS 136. It is best to think of CS 145 and CS 146 as enrichment opportunities rather than as vehicles for more rapid advancement.

What if I am not a CS major?

In the past, a significant fraction of the CS 145 class (sometimes more than half) have not been CS majors. Good students in other majors (even outside the Faculty of Mathematics) can benefit from a more mathematical treatment of this material.

How will I know that CS 145 is right for me?

This is tricky, because some students will have the right qualities and not realize it, while others will think they do but don't.

One indicator is good marks in all high school courses, not just math and science. Unfortunately, grading standards vary by teacher and by school, and high marks are not necessarily an indicator of ability. Some students, as Paul Lockhart says, are "just very good at following directions". Low marks could also be due to poor assessment, inadequate motivation, or resentment of makework.

Standardized tests and nationwide math contests offer more consistency, but are sometimes too based on the rote application of technique or on prior knowledge of the class of problems (such as can be gained by coaching).

You do not need to be an excellent, or even average, coder. There are several key ideas in the course, and if these key ideas are understood and applied, students will be very successful. The choice of programming language is also intended to "level the playing field" between novice programmers and more experienced programmers.

If you can think logically, apply deductive and inductive reasoning, manage your time well, pay attention to details, and most of all, not be afraid to try out things that might not work as intended, this course is for you.

Do I need prior experience in programming to take CS 145?

No. In fact, prior experience can be a drawback if it closes your mind to new ways of doing things. CS 145 is unlike anything you will have seen in high school. The following course, CS 146, moves towards more conventional notions of computing, but it does so with the perspectives and skills gained in CS 145. You should read this brief note for students with prior computing experience.

How do I get into CS 145?

Pre-enrollment for Math core courses takes place in the summer. At that time, students who score above a certain threshold on the Euclid math contest (80 for Fall 2024), Canadian Senior Math Contest (CSMC) (45 for Fall 2024), or who have earned 50 in the Senior Canadian Computing Competition (CCC) may pre-enroll themselves into CS 145. Students who do not meet the above cutoffs can request to be put on a waitlist through the Math Undergrad Office (MUO).

After the course selection period (mid-to-late June), there will be a sample assignment sent to all interested students in the course. The objective of the sample assignment is to help students to make an informed decision about enroling in the course. This sample assignment will not be graded and will not be counted in any way in the course grade. Students may contact the instructor if they have additional questions or wish to verify their understanding of the sample assignment.

If you wish to ask any questions regarding your particular situation, please e-mail the instructor.

It is best to apply early so that you can be transferred into CS 145 before the second phase of pre-enrollment (for elective courses) later in the summer. Transfers can be effected later, but become more difficult.

What if I start in CS 145 but decide it is not for me?

You can transfer from CS 145 to CS 135 at any time up to the end of the sixth week of classes. The submission/grading mechanisms and marking rubrics are different in CS 135, so there will be more work for you to do to catch up after the transfer. This is best done, if you are going to do it, as soon as possible.

What if I start in CS 135 and decide it is too easy and want to switch into CS 145?

CS 135 deliberately starts off slowly and carefully, and ramps up later in the term; CS 145 starts off more rapidly, in part to give students enough information to make up their minds about it, and in part because the first midterm is scheduled after only a few weeks of lecture. The transfer is thus difficult, but it is possible (if there is room); the earlier the better.

 

Last modified on Friday, 21 June 2024, at 12:30 hours.