The Computer Science Department offers three possible CS courses for incoming students intending to major in Computer Science: CSC108H, CSC148H, and CSC150H.
CSC108H1 Introduction to Computer Programming assumes no programming experience at all, and is taught in the programming language Python. Students typically take CSC108H in the fall term and then CSC148H in the winter term.
CSC148H Introduction to Computer Science is taught in the programming language Java in the fall term, and Python in the winter term. It assumes knowledge of subprograms, loops, conditionals, parameter passing, arrays, algorithms such as searching and sorting, objects, and classes.
CSC150H Accelerated Introduction to Computer Science assumes knowledge of procedural programming in a language such as Turing, C, or Scheme -- subprograms, parameter passing, loops, conditionals, searching, and sorting -- and teaches the object-oriented ideas from CSC108H (classes, objects, methods and fields, and program design). CSC148H and CSC150H end at the same point, and often share a final exam.
This year is a transition year: we are replacing Java with Python throughout the first year, and teaching Java at the beginning of second year. Python is a clean programming language suitable for teaching, but unlike teaching languages like Scheme and Turing, it is widely used in industry; for example, it is one of the three languages approved for use at Google, and is used at NASA and Industrial Light & Magic. Python is growing in popularity as an introductory teaching language, and first-tier universities such as MIT are using it in their introductory programming courses.
Here are some suggestions on how to choose.