Computer Science Principles is a 12-part record of the first offering of the University of Washington’s Computer Science Principles course, CSE120 in Winter 2011.
Although it turned out that the first week was completely adequate in my view to excite the students, I stayed with my original plan of emphasizing the breadth of the class. So, they had to program and write an essay in their assignments. In the weekly After Image survey in which students say what they thought of the class, apparently a few thought this was unfair – why isn’t it all programming, they asked?!
Narrative on Week’s Goals
The week’s plan, as described on the class Web site’s calendar page, is:
Week 2 Calendar Entries
The overall goals were a continuation of the first week’s, namely to show an interesting, diverse and substantive class. The first week had built a cohesive group of students; the second week solidified it further. Specifically,
Lecture 10 Jan: A Social Contract The lecture mostly focuses on privacy and ways online behavior – chiefly invasion of privacy – is harmful. It opens with the word “offensensitivity” — a word invented in the Bloom County cartoon, referring to being overly sensitive to offense — and covers how it applies to online discussion groups. (No one in class had ever heard of Bloom County.) Classic Web memes – Star Wars Kid, Numa Numa Guy, and others – led to the definition of privacy and an analysis of online behavior, ending with five things to avoid posting on social network pages.
Assignment 04: Write an essay on the topic, “Is it ever right to post surreptitiously acquired digital content?” where “surreptitiously acquired” was defined to mean gotten without the creator’s knowledge. The essay was to be two pages minimum and received a due-day extension.
Lab 11 Jan: The lab, continuing the binary theme of the previous Friday, introduced counting in binary, number representation, counting in hexadecimal and converting back and forth between them (and decimal).
Lecture 12 Jan: This was the first Processing lecture. The focus was to familiarize students with the Processing language, and to demonstrate writing a few simple programs. These are available on the Class Examples Web page: http://www.cs.washington.edu/education/courses/cse120/11wi/classexamples.html.
Assignment 05: The students were given the code for the cute robot from Reas and Fry’s Getting Started with Processing, and asked to color it in their own style – coloring it was part of the previous lecture – and then make it move across the screen. This was simply to give practice using the system’s IDE.
Lab 13 Jan: This lab was devoted entirely to helping the students with the details of programming in Processing. Both Brandon and Susan attended to help students.
Lecture 14 Jan: Having represented numbers in binary on Tuesday, this lecture was devoted to representing letters in binary. It covered ASCII, UTF-8 and alternative forms of communication. It also treated meta-data briefly, making the point that meta-data uses the same character encoding as the content characters, but was identified by reserved characters, namely < >.
Assignment 06: Students were asked to scan paintings by Piet Mondrian, and then play with a “Mondrian In A Click” site. Next they were to scan paintings by Jackson Pollack, and then play with a “Pollack In A Click” site. Finally, they were to scan paintings by Josef Albers, and then program an “Albers In A Click” site. See the Class Examples Web page.
Screen Shot of Albers In A Click Solution
Assignment 06.1 Extra Credit: To give more practice using the IDE, students were asked to fill in a closed region with space-filling color.
Email 15 Jan: Students were sent a brief email message in binary based on the ASCII encoding of Friday’s lecture.
And How Did It Work?
Again, it was a good week. The class is very cohesive at this point; attendance essentially perfect and students tell me in advance of their absences.
Monday’s lecture on privacy was somewhat surprising in that when asked about various Web memes, only about half of the class was familiar with them. One has the feeling that they are universally known, but apparently not. The discussion was lighter than what one might have expected on such a familiar topic; privacy seemed not to be a burning issue.
Tuesday’s lab ended up stressing conversion between binary and decimal, and less on conversion between binary and hexadecimal, the emphasis that I would prefer. The dynamics in every class are different.
Wednesday’s lecture on Processing gripped the class. They were interested from the start, and stayed interested. There were some questions, but mostly they paid close attention to what I did. I believe they quickly acquired the operational details of setting up a program, highlighted keywords, entering code, testing it, etc. Less effective – naturally – was their acquisition of details of the commands. Another benefit of the early treatment of functions in connection with Lightbot is that there was a general familiarity with appending parentheses to everything. It’s a fun language and they got that right away.
First Processing Assignment: (a) full credit, correct [FN]; (b) on beyond: beam follows cursor, moves right, or left when mouse pressed [RDH].
Thursday’s lab largely confirmed the quick acquisition of Processing basics. Except for a couple of students, everyone completed Assignment 05 by the end of the lab, and were successful. It wasn’t a monumental program, but they’d definitely personalized it. One student pushed well beyond the assignment to add several clever embellishments.
Friday’s lecture held student interest well, though compared to the last two Wednesdays (functional abstraction and Processing) it wasn’t as captivating. They did understand the content based on a few students replying to my weekend binary email with return binary email.
Not all students were successful with the “Albers In A Click” homework. To its credit it is easy to see what is intended. However, as often happens with early programming assignments, students needed to understand several concepts – variables, declarations, random numbers, colors – to be successful at the assignment. I estimate that half did, and most of the rest got some random colors, but didn’t actually get the logic to assign the colors properly. Because it is nearly impossible to gradually introduce programming concepts AND produce interesting assignments right along, based only on the few concepts available, I am still undecided about whether this assignment stays in the curriculum or goes.
The class is rolling and the students seem to be enjoying it. Reportedly, the After Image Survey revealed that the students really enjoyed the Processing material, both class and lab. The fact that it is a fun language has more to do with their liking it than the quality of the classes, I’m sure. Still, you learn more when you like what you’re doing, so I am optimistic that we’ll be able to cover a lot more content as a result. Although the other pilots have chosen to use either Alice or Scratch to teach programming as a “fun” activity, I will continue to advocate for Processing. I am certain that my students see Processing as fun; I conjecture none of them sees it as childish.
How will next week go when the programming gets more challenging?
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:
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.
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
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.