First-year computer science courses at the University of Waterloo will undergo a major revision in fall 2008. CS at UW is part of the Faculty of Mathematics, and all Math students (including not only CS and traditional Math students, but accountants, actuaries, statisticians, and many others) take two courses in CS as part of their core requirements, but they have typically had a choice of courses depending on interest and experience. For the first time in fall 2008, all of the first-term courses will use the programming language Scheme.
The course aimed at CS majors, CS 135, has been running as an alternative for four years now, attracting both CS students and other Math students. Scheme is a functional programming language with simple syntax, which permits the course to focus on ideas instead of language details, and gives the students a simple model of the meaning of a program. The PLT Scheme software (DrScheme), specifically designed for education, permits students to start in a simple teaching language with targetted error messages and move upward through language levels of increasing complexity.
CS 135 is followed by CS 136 which introduces C and covers notions of efficiency, scalability, and what actually happens at the machine level in both languages. The goal of CS 136 is to provide a firm foundation for subsequent study in computer science.
Making its debut in fall 2008 will be CS 115, aimed at non-CS majors. This covers about two-thirds of CS 135, with more examples and less formality. It is followed by CS 116, which covers selected topics from the rest of CS 135 and CS 136, but using Python. Students who find this material to their taste can follow up with CS 136 and other CS major courses.
Waterloo has had advanced math courses taken by the top 10% of students for decades, but never an advanced CS course. CS 145 will also debut in fall 2008. It will feature a highly conceptual approach to topics from CS 135 and CS 136, also using Scheme and C; students will proceed to second-year CS courses in the winter term of first year. The use of Scheme means that the prerequisites for the course are aptitude and an open mind, rather than prior experience.
The choice of three related entry points offer students flexibility (all courses are open to all students, and they can move up or down easily in the first few weeks) as well as a distinctive approach with proven effectiveness. The skills involved in expressing computation using Scheme as well as C or Python translate well to the many languages students may find themselves using in the workplace, and students in all of these courses get a representative look at important themes of computer science which they may choose to explore in followup courses.