Welcome to the Harvey Mudd "Introduction to Computer Science" Course Page
This website provides resources for introducing computer science to a variety of audiences with different backgrounds and interests. The materials can be used "as-is" to teach a semester-long course or the constituent modules can be used to build new courses or integrate new concepts and applications into existing courses.
These materials were originally designed for use in a first-year college-level computer science course for science and engineering students (including prospective computer science students). To date, however, some of them have been adapted for use with high school students, humanities and social science undergraduate students, community college students, and information technology graduate students.
Background
Every first-year student at Harvey Mudd College, irrespective of their intended major, takes an introductory computer science course as part of the college's Core Curriculum.
Through 2005, the introductory computer science course was a traditional Java-based CS1 programming course. While students learned to program in Java, the course did not expose them to computer science as an intellectually rich discipline, its broad applications, and its impact on society. Thus, we redesigned the course into a new one that would:
Develop programming and problem-solving skills useful across engineering, mathematics, and the natural sciences;
Provide a coherent, intellectually compelling picture of computer science to all students; and
Capture the interests of a diverse group of students and encourage them to take additional courses in computing and pursue a computing-related major.
Our new course CS1 course, called "CS 5" at Harvey Mudd and nicknamed "CS for Scientists", has been taught since Fall 2006. Approximately 160 Harvey Mudd students take this course each fall. In addition, a substantial number of students (including non-science majors) from our sister Claremont Colleges enroll in this course each year, e.g., about 80 in fall 2012.
Some distinguishing features of this course are:
The course uses Python rather than Java. Python's relatively simple syntax permits us to spend more time teaching concepts and less time teaching syntax. Moreover, Python has relatively little "black box" syntax (e.g. "public static void main");
The course emphasizes recursion and functional-style programming concepts early and imperative and object-oriented concepts later in the course. This helps to "level the playing field" and allows students to write relatively powerful programs with relatively little syntax;
The course uses a variety of existing packages and libraries, providing students with the ability to write useful and compelling applications for web applications, scientific computing, computer graphics, among others;
In order to demystify the inner workings of a computer, the course includes a module on digital logic, the von Neumann architecture, and assembly language programming;
In order to provide students with a sense of some of the intellectual challenges in the field, the course gently exposes students to theoretical ideas including analysis of algorithms, intractability, and uncomputability; and
The course provides a wide array of application areas, some choices of problems, and a choice of capstone project at the end of the term.
There are currently three versions of this course:
CS 5 "Gold" (our school colors are Gold and Black) is designed for students with no prior computing background
CS 5 "Black" is designed for students with some prior computing background (e.g. self-taught programming or a high school programming course)
CS 5 "Green" is designed for students with an interest in the applications of computing to the biosciences
While the majority of our students take CS 5 "Gold", all three versions of the course provide the same foundational computing content and prepare students to enter our second computer science course. Rather than exploring additional computer science topics, CS 5 "Black" examines additional application areas (e.g. in cryptography and steganography and computer graphics) while CS 5 "Green" uses biology as its context rather than the broader context in the sciences and engineering that are used in CS 5 "Gold" and "Black".