This paper describes an introductory CS course designed to provide future scientists with a one-semester overview of the discipline. The course takes a breadth-first approach that leverages its students' interest and experience in science, mathematics, and engineering. In contrast to many other styles of CS 1, this course does not presume that its students will study more computer science, but it does seek to prepare them should they choose to do so. In addition to describing the curriculum and resources, we summarize our preliminary assessments of this course and a comparison with the more traditional, imperativefirst introduction it replaced. The data thus far suggest that this CS for Scientists course improves our students' understanding of CS, its applications, and practice.
KeywordsCS for scientists, introductory CS, CS 1 assessment
CS FOR SCIENTISTSScrutiny seems an unavoidable fate for introductory computer science. In a field as dynamic as CS, we who teach CS0 and CS1 should strive to remain relevant and current. At the same time, we try to retain those topics and skills that enable our students to cope with next year's changes as well as last year's. This balance is particularly delicate when designing introductory CS for scientists. The evolving impact of CS on all scientific disciplines has been dramatic and well documented, e.g., [27] [29]. As George Johnson put it, "All science is computer science." [17] In contrast, many scientific programs of study present facets of CS only as needed: programming skills and styles may derive from a particular language or environment, e.g., Matlab or LabView. This approach presumably keeps such programs relevant and up-to-date, but it emphasizes particular tools over the broader computational skills so vital in all areas of science today.To leverage CS's growing importance, we replaced our traditional CS 1 course with a breadth-first version nicknamed CS for Scientists in 2006 [1]. Our goal was to create a curriculum "suitable for any student intending to major in science or engineering (including CS students)." [24] In particular, we hoped this new offering would (1) develop programming and problemsolving skills useful across engineering, mathematics, and the natural sciences, (2) attract students to continue studying CS, and (3) provide a coherent, intellectually compelling picture of computer science, even as final CS course.
Context and Related WorkIt is a wonderful time to teach CS 1! Curricular innovations within introductory CS are both inspiring and numerous. Many of these experiments draw strength in a similar manner: by weaving a thematic structure amid introductory CS topics [22][15]. One of the most widespread of these themes for introductory CS is media computation [14][20]. Other themes now scaffolding CS1 include games [3][13][18][30], robotics [5], computer vision [21], and art [12][25]. In each of these cases, the thematic overlay tends to pull away from CS and toward the specifics of the course's theme. Throughout CS for Scientists we strove to kee...