This paper presents a thorough evaluation of CS for Scientists, a CS 1 course designed to provide future scientists with an 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. We summarize the past year's worth of assessments of student learning, retention, and affect -with particular attention paid to women's voices. Where possible, we contrast these student measures with those from a traditional, imperative-first CS1 that this new course replaced. The data thus far suggest that CS for Scientists significantly improves students' understanding of CS, its applications, and practice.
Categories and Subject Descriptors
K.3.2 [Computers and Education]: Computer Science Education
General TermsMeasurement, Design, Human Factors Keywords CS 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., [29][31]. As George Johnson put it, "All science is computer science." [17] To leverage CS's growing importance, in 2006 we replaced our traditional, Java-based, objects-late CS 1 course with a Pythonbased, breadth-first course nicknamed CS for Scientists [1]. Our goal was to create a curriculum "suitable for any student intending to major in science or engineering (including CS students)." [26] In particular, we hoped this new offering would (1) develop programming and problem-solving skills useful across engineering, mathematics, and the natural sciences, (2) attract students to continue with CS, and (3) provide a coherent, intellectually compelling picture of CS, even as final CS course.
Context and Related WorkIt is a wonderful time to teach CS 1! Curricular innovations within introductory CS are inspiring and numerous. Many of these experiments draw strength in a similar manner: by weaving a thematic structure amid introductory CS topics [15] [28]. Yet these experiments, both new and old, tend to be service courses rather than CS per se, e.g., they do not contribute to a CS degree. Courses like [8] and [30] present facets of CS to specialists in other disciplines. Our course, on the other hand, represents a full-fledged CS 1 designed to generate interest in and prepare students for additional courses within the field.Pedagogically popular styles of CS 1, such as imperative-first or objects-first [10], all make the implicit assumpt...