Week 1: Start of Class

The first day of class always brings a certain level of excitement, and January 3, 2011, start of UW’s Winter Quarter, was no exception. My classroom changed, and despite having checked online that it had an “electronic podium,” that is, the necessary A/V controls to conduct a class in the 21st century, I got to class to find a rat’s nest of cables and clickers in a “distance learning” lecture room designed about 1970. Failing to grock the setup quickly enough to deliver electronically – I’m not sure I would have ever gotten it – I resorted to a “chalk talk.” Not my plan, but stuff happens.

Narrative on Week’s Goals

The week’s plan, as described on the class Web site’s calendar page, is:

Week 1 Calendar entries

Week 1 Calendar: Lectures, Assignments, Due Dates

My over-riding goals for the first week were to set behaviors, to attract interest, and to demonstrate the spread of activities that will characterize the whole class. Specifically,

Lecture 3 Jan: A standard overview lecture in which the course is described, including the fact that most of the information is on the Web page, http://www.cs.washington.edu/education/courses/cse120/11wi/. In terms of setting behaviors, I emphasized my responsibilities to the students and theirs to me.

Assignment 01: “Play” (== program) Lightbot 2.0 through the introductory exercises http://armorgames.com/play/6061/light-bot-20 and the first 3-4 recursion exercises.

Lab 4 Jan: This first lab had two very different goals. The first was for the students to write an essay on “Their Values and Why They’re Important”. The motivation for doing this comes from an article in Discovery Magazine about results from a University of Colorado study on raising women’s scores in introductory physics classes:


(Thanks to co-piloter Beth Simon for calling attention to this article!) Having no idea if it would contribute to a successful class, but not seeing any way in which it could be harmful, I assigned this as the first activity in the first lab. The other part was to learn about FTP and file servers in the .washington.edu domain.

Lecture 5 Jan: Having played Lightbot 2.0 the class was ready for a lecture on what programming is. Many features of programming – you’re commanding an agent and you must think from its point of view – are evident from the experience and are easily highlighted as a result. The crescendo of the lecture was a discussion of functional abstraction, a topic that I regard as “hard to get across” in the Fluency class, but building on Lightbot, it was now straightforward to introduce. We’ll be back to it in the future.

Assignment 02: Revise the Lightbot game to use symbolic instructions rather than icons, and solve a few new problems. This is an off-line exercise and required the students to examine the correctness issues by hand.

Lab 6 Jan: The plan for this lab was to review FTP (a notoriously difficult concept in my experience) and to practice using FTP by posting a prepared Web page. The Web page, which was XHTML, is set up to be a portfolio of their class work. We don’t do HTML, but I wanted to make the point that there is nothing mysterious about computing and even things you have no real knowledge of can make a certain amount of sense if you just take a look and use your head. Students modified the page to reflect their persona, rather than my example persona.

Lecture 7 Jan: “The glorious story of the triumph of 0 and 1” was the topic, and it emphasized digitization going back to Hollerith. Using the technology as the theme, the lecture covered “game changing” milestones in computing: machines processing digital information, computers, transistors and ICs created with photolithography, personal computers, Internet, WWW. At the end we discussed various manifestations of digital information, ranging from “sidewalk memory” to the encoding of a CD ROM.

Assignment 3: Continuing the symbolic form of the Lightbot game, students developed named functions (Lightbot 2.0 has only two functions F1 and F2) to solve (off-line again) small problems. The end goal was to solve one of the exercises from the first assignment, but directing the Lightbot to do a Moonwalk after completing each intermediate goal. [As TA Brandon pointed out, Michael Jackson’s Moonwalk is not part of the life experience of these students.]

And How Did It Work?

Overall, I believe the first week went great! Starting with Lightbot 2.0 was extremely successful (co-Piloter Jody Paul also used it to good effect)! The students universally like it, and said how enjoyable it was in their end-of-the-week After Image survey. For me it is convenient way to get students into programming quickly. In terms of setting behaviors, I think we did fine there, though we stumbled on Thursday.

Monday’s lecture was an unplanned chalk talk, and in retrospect, I think that may have been better. It allowed a much more informal discussion of the course. We introduced ourselves, saying a few words including a favorite food. (I got my first laugh when I said I liked fresh anchovies on potato chips, which wasn’t a joke, but the truth; the closest anyone came to eating anchovies was one woman [HAC] who liked Caesar salad dressing … I’ve got a lot to teach!) One caveat about the chalk talk style is that I don’t think the verbal presentation was sufficient for the two slides: My Responsibilities To You, and Your Responsibilities To Me.

The first assignment’s Lightbot 2.0 contributed to teaching computational thinking in one unexpected way. If computational thinking is summarized as the habits of mind of computational thinkers, then one habit must be a confidence and willingness to figure things out on your own. Lightbot was assigned without introduction. Many students reported in the reflective survey afterward of having been very confused initially, then figured things out thanks to the tutorial nature of the game, stumbled in some places, but pushed forward, completing all of the requested work and finding it enjoyable; nearly all did at least 3 recursion problems. What a fun setting to be successful at figuring things out. Though I didn’t recognize this feature quickly enough to reinforce it, I would next time.

Tuesday’s 15 minute, “My values and why they are important” writing exercise produced a few unexpectedly thoughtful essays, which were fun to read. Whether the exercise will affect the students in any way is unknowable. Curiously, all students included (and usually started off with) the importance of family. When I (verbally) introduced the assignment, I mentioned that value first, though I mentioned a couple of others. Family is important for most people, of course, but its universality and first place setting caused me to wonder if somehow giving the assignment had affected the result.

Wednesday’s lecture on the basics of computing, including remarks on functional abstraction, was rewarding to give, and held the students full attention. Apparently many mentioned it positively in the After Image survey.

Thursday’s lab, which was to be a review of FTP followed by students using FTP to post a pre-written “portfolio” Web page (which they customized for themselves), was not that successful. My original intent – to get them to deal with code they didn’t understand much about, but by looking at it closely, be successful at modifying it for their purposes – was not the problem. They all did that.

The problem was that many students got lost in the weeds – the problem had too many components. I had them modify the page using a text editor (Notepad++) rather than WYSIWYG facilities, they were to import a picture to use on the page, they needed to make 4-6 modifications to the page, and (it was an FTP exercise) there was the usual confusion about where is the file I’m looking at. Add to this an unknown “gotcha” involving how UW allocates Web space to “plain” students vs “employee” students, and you have a mess. None of this was beyond them, and more than 3/4 of the students were successful, but I want to avoid chaos so early in the term. It’s still a good lab (I’ll do it again), but it’s probably the wrong day for it.

Friday’s lecture was strong, though after Wednesday, my expectations were too high. Students were for the most part engaged. On impulse I picked apart the information content in the “one if by land, two if by sea” signaling mechanism used in Paul Revere’s ride, and quickly realized not all students are familiar with it. (It’s still a good example, but the point arises one week later, so I won’t do it again.)

The week ends with students filling out the After Image survey in which they report on the material they found most engaging and interesting, what was difficult or frustrating, and any other comments that they want to make about the class. These have been structured to be anonymous to me, but Susan reads them and gives me an anonymized summary. Like me, the students enjoyed the first week.

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.