Welcome to CS 17
CS 17/18 is one of two year-long introductory sequences in computer science. On this page you'll find important information related to the fall course, CS 17.
Why CS 17?
In the history of invention there are major milestones like fire, metallurgy, cloth, and calculus. Where does computation fit in? Right up there with the best of them: computers and computation extend into every niche of everyday life and every branch of scholarship. Understanding the key ideas of computation is essential for the informed adult.
CS 17/18 provides an introduction to computation -- how we express computation, writing programs to make computers carry out computation, understanding the difficulty of a particular computation, and knowing some of the limits of computation. Over the course of the year, students learn three languages (Scheme, ML, and Java), each of which introduces a new way of thinking about programming. As we study these languages, we also learn important ideas about computation -- recursion, abstraction, algorithm analysis -- and important current methods, like object-oriented programming.
The course stresses ideas over current technology, aiming to provide understanding that will still be useful to the student decades from now. It's well-suited to those who feel a desire to become familiar with computing, even if they are not planning to concentrate in computer science.
Credits
CS 17/18 has been taught for over ten years, and I wish to extend sincere thanks first to the professors who have made it what it is: from Philip Klein and Leslie Pack Kaelbling, its original proponents and founders, to John "Spike" Hughes, who joined in with zeal. I further wish to thank Shriram Krishnamurthi and Kathi Fisler for sharing with me the knowledge they've acquired during their many years of experience teaching introductory programming.
I would also like to extend a warm thanks to the TAs of yore and the current TA staff. By running labs, holding hours, and grading assignments, they help to keep the students focused and the knowledge accessible. In fixing what needs to be fixed (e.g., reworking assignments as necessary), they all contribute their own lasting improvements to the course.
Two head TAs, in particular, stand out in my mind. Both have decidedly left their mark on the content and the spirit of the course. In 2007, Aleks Bromfield made substantial contributions to the structure and organization of the course and J. Clark Cutler took the lead on writing and rewriting lectures that reflect that new structure and organization. Without these two head TAs, the course content and presentation would not be nearly as coherent as it is today. Students for years to come will reap the benefit of their substantial efforts.
