Part 0: Pre-Launch of UW’s Computer Science Principles

The pre-launch is perhaps best described chronologically, giving an opportunity to briefly cover the background. Those familiar with the AP CS Principles effort can skip directly to UW Preparations below.

AP CS Principles Background

What Is It? AP Computer Science Principles (will one day be) a high school course covering the principles of the field known in the US as Computer Science. The course will also be preparation for an Advanced Placement exam developed and administered by College Board (CB, hereafter) and taken by graduates of the class in order to receive course credit or placement for the material in college. An Advanced Placement test already exists in Computer Science for students who have studied the Java programming language (AP CS Java, hereafter); that course and exam will remain as is. AP CS Principles is targeted at all students, not just those who are self-motivated enough to study a programming language.

Why Do It? The public discussion of AP CS Principles has identified a long list of motivations for its creation. Find them at http://csprinciples.cs.washington.edu.

Personally, two motivations have driven my participation. First, I think computation is fascinating (and in many instances beautiful), and it seems that more people should take pleasure from it. I am always eager to explain computers and computation, geeky as that may sound.

Second, I have believed since the NRC’s Fluency Report came out that the best way to present our field to the world – both to techies and non-techies alike – is for it to be taught as a high school science class. CS is rarely taught in high school; the courses called “computer science” are usually not part of the science curriculum at all, but are career development classes: Apps courses that are peers of Shop not Physics. (Most are so “non academic” that the NCAA doesn’t accept them for sports eligibility.) Because many students, having received their first exposure to “serious science” in a high school class, go on to further study in the field, it seemed that a Fluency-grade CS class could be an attractor. And it might eliminate the “nerds only” stigma that seems to taint AP CS Java. The AP CS Principles course presents exactly the right opportunity.

The Process. The project to create a computer science course for general students began in 2008 (http://csprinciples.org). The name adopted for the course by the project investigators was Computer Science Principles (CSP, here after). Seven big ideas and six computing practices were developed as defining goals for the course. The big ideas and practices were vetted in several iterations with the CS community. From these guiding principles, a document called Claims and Evidence (C&E here after) was developed that more specifically defines the intended content of CSP. At the time of this writing, refinement of the C&E document is continuing.

In Spring 2010 five schools were chosen to pilot a course implementing the content during the academic year 2010/2011. Each instructor was to develop a curriculum based on the guiding documents that is illustrative of a college course teaching Computer Science Principles and appropriate for their campus.  The schools and the instructors are:

  • University of North Carolina at Charlotte, Tiffany Barnes
  • University of California, Berkeley, Daniel Garcia
  • Metropolitan State College of Denver, Jody Paul
  • University of California, San Diego, Beth Simon
  • University of Washington, Larry Snyder

Because of local conditions, the courses were not offered simultaneously: MSCD, UCB and UCSD offered the course in the fall term; UW and UCSD are offering it in Winter quarter, and UNCC is offering it in Spring semester.

This blog describes the experiences of the UW offering.

Next Steps. There are two threads that proceed from the completion of the pilots: an academic “next steps”, and an adoption “next steps”.

Academically, the plan is for high schools to pilot the class during the 2011/2012 academic year; each of the current piloters is working with one or more high school teachers. Additionally, more colleges and universities will pilot the class next year as well. During the 2012/2013 academic year additional pilots, both high school and college are planned. After the curriculum has stabilized, the CB will begin developing pilot exams. The expectation is that the first AP CS Principles exam will be offered in 2014 or 2015.

The “adoption” thread concerns commitments by North American computer science departments to endorse the AP CS Principles course, and to commit to giving students who pass the exam either credit or placement at their institution. The process of adoption has two parts. First, the guiding documents of the project (Seven Big Ideas, Six Computing Practices and C&E) will be circulated to CS department chairs early in 2011 to get their feedback and input regarding the content. This ensures that the planned content reflects a broad consensus of the field. Second, following the content review, CS department chairs will be asked to send (an electronic) letter attesting to their endorsement of the effort and stating that their institution will give successful test takers credit and/or placement. The current status of the adoption thread can be found at http://csprinciples.cs.washington.edu

Preparations for UW’s Class

Creating a class that is specified only by “guiding principles” is both exhilarating and challenging. I did it one other time, just prior to the publication of the “Fluency Report” in Spring quarter 1999. The National Research Council’s report, Being Fluent with Information Technology (National Academy Press, 1999 and available at http://www.nap.edu/openbook.php?isbn=030906399X) was requested by Bill Wulf when he was Assistant Director for CISE at the National Science Foundation. Known widely as the “FIT Report” (for Fluency with IT), the study’s recommendations were the first attempt to specify the “computer science content that the general public should know?” It continues to be the guiding document underpinning a large number of college FITness courses for general students.

The UW Fluency course overlaps with the CS Principles at about the 80% level, but they have different emphases. When I describe the difference, I label Fluency as “Computing for the Citizen” and CS Principles as “Computing as a Science.” They share many concepts like data representation and many capabilities like programming, but the former emphasizes practical issues like how to manage the security on your computer, while the later goes more deeply into computation to cover, for example, recursion. The bottom line is that when the AP CS Principles course is fully developed and the exam exists, students that pass it should be excused from a standard Fluency course.

Although the overlap is substantial between the two courses, I chose not to use Fluency as a basis for CSP, choosing instead to develop it from first principles (NPI).

CS Principles Course. The class didn’t get approved until a few days prior to the start of the term, but when it finally emerged, it could be described by the following catalog entry:

Course Number: CSE 120

Course Title: Computer Science Principles

Offering [pilot]: Winter, 2011

Lectures [50 minutes]: Monday, Wednesday, Friday 12:30-1:20, LOW 216

Labs [closed, 50 minutes]: Tuesday, Thursday 12:30-1:20; MGH 044

Credit Hours: 5

Fulfills Requirements: Quantitative and Symbolic Reasoning

Pre-requisites: None

Description: Fundamentals of computer science essential for educated people living in the 21st C, taught with two concurrent themes. Creativity Theme topics: Computing as a creative activity, processing of data creates knowledge, abstraction, levels of abstraction, managing complexity, , computational thinking, programming (in the Processing language) debugging. Principles Theme topics: Data and information, algorithms, basic ideas behind technologies including computers, networks, search engines, and multimedia. Social uses and abuses of information, and the foundations of privacy are also included.

The programming languages had initially been Processing and Python, but eventually it seemed that all of the necessary programming concepts were available in Processing.

Finding Students. So, who takes an unapproved, single-offering experimental course? No one unless there is some effort made to solicit students. The key property is the “experimental” aspect, because it requires that the class include a good representation of women and under-represented minorities. (A major goal of the project is to present a class engaging enough to under represented groups to attract them to the field.) Listing the class among UW’s course offerings permits no selectivity – any student with the pre-requisites (there are none) can take the class, possibility filling it with a biased population. (The first Fluency offering was “rich” in seniors because they registered first in the term it was offered, and the course quickly filled up.) So, we used a “by permission of the instructor” approach.

Since qualified students cannot be denied access, the way to “improve” the representation in class is to advertise appropriately. We used the following channels:

  • We contacted the advising staffs for appropriate campus units (Freshman Advising, Office of Minority Affairs and Diversity Advising, etc.), providing a Web site explaining the course to the advisors, a flier, a link to an electronic version of the flier (http://www.cs.washington.edu/homes/snyder/pilot/CSPflyer.html), and an application.
  • Two weeks of advertising on the “Puzzles Page” of the Student Newspaper, the “Daily.”
  • Email requests to campus organizations (e.g. Society of Hispanic Engineers) asking that the membership be made aware of the flier and application.
  • Development of a short “pitch” on why to take this class, http://www.cs.washington.edu/education/courses/cse120/11wi/story.html
  • Redirection from the Fluency Course (CSE/Info 100) when it filled up.

By whatever means, these mechanisms attracted about 70 applicants.

Not all applicants were qualified for the class. Students were not admitted if they had taken or were concurrently taking a CSE course in which programming is taught, nor if they were graduate students (really, 3 applied!). All other students were admitted, though not all of them ultimately registered. The result was a first day class of 22 students. It’s an ideal class size. (Despite the small size, the curriculum is designed to scale.)

Diversity. The advertising effort seems to have paid off. Of course, we are not allowed to know the race or ethnicity of specific students, but the summary statistics for the class are available. Of the 22 students

  • 11 are women
  • 9 are Caucasian, 1 “not indicated,” meaning the rest are students of color
  • 5 official Under-Represented Minorities, 1 American-Indian (apparently not an official URM), 4 Asian + 2 presumably Asian international students
  • All but 4 are freshmen or sophomores

(“Asian” is not considered to be an under-represented population for purposes of this study, or at Washington, for that matter.)

Teaching Staff: By being a pilot course, the class enjoys substantial teaching support. The Teaching Assistant is Brandon Blakeley, a UW CSE Graduate Student. In addition, I am working with Susan Evans, a high school teacher working at the Technology Access Foundation where she is focused on STEM education and teacher training. (In the summer I also worked on course development with Hélène Martin.)

Course Design. As I read the materials that guide our curricula, I decided that the course needed two threads: One could be called the creativity theme, the other called the principles theme. (These correspond roughly to capabilities and concepts, respectively, in the Fluency world.) Weaving the two threads together presents a significant challenge, and as the first day of class approached, it continued to be unclear how best to do so.

In addition to the two threads, a major criterion for “success” with the course is the degree to which it engages all students. What constitutes “engaging” is obviously a very personal matter. Making the class fun is desirable, of course, and likely to contribute to the goal, but I believe it is just as important to be interesting and appropriately challenging.

How these components manifest themselves in the course is the subject for future posts.

Leave a Reply

Your email address will not be published. Required fields are marked *