What is computer science? The study of how process and data can be digitized and automated. Science? It’s not about the natural world. It does involve experimentation, model-building, and inquiry. Math? Closest, except… Engineering? We build things: Important, big, useful things. All our human processes are Engineering. We in computer science continue to argue about what we are and how we should be classified. One reason for the confusion is that we are many things, including not just all categories of STEM, but also new forms of media, expression, and literacy.
Victims of our Own Success Computer science is not about using programs. Good human-computer interface design makes CS invisible. Students believe CS is about using Photoshop and Microsoft Office. So much of what we teach is seen as “irrelevant, tedious, and boring.” Our students have rarely seen any computer science when entering our classes. Thus, our content is invisible, and what we are teaching is inherently abstract. But students build on their prior knowledge, and assume that that CS is about what they know: using applications. Thus, multiple studies (including one by Yasmin) point out that students see what we teach as “irrelevant, tedious, and boring.”
Challenges of Computing Education Enrollment has declined. CS in the Western world is virtually all White or Asian male. Majority female in Islamic world. Programming is our most powerful tool, yet we don’t know how to teach it well. Every major study of programming competence in 30 years encounters a floor effect. Success rates in introductory courses are 50-70% worldwide. Not surprisingly, students are avoiding something they see as tedious, boring, and irrelevant. Enrollment has declined (visit next slide), just as the US Bureau of Labor Statistics points out that computing will be the fastest growing segment of jobs in the next 10 years. Computing is the ONLY STEM discipline where the Dept. of Ed predicts too few graduates over the next ten years to fulfill the jobs predicted by BLS. Computing is virtually all white/Asian male – about 90%. Reversed in Islamic World. Qatar CS is 70% female. It’s a cultural decision. Programming is what many people associate with CS classes. Studies of practitioners show that programming’s “passion, beauty, joy, and awe” is what drew them in. But it’s what students find tedious, and we don’t know how to teach it. McCracken study: 24%. Lister: 40%. Tew, new data.
US Enrollment in CS 2010 CRA Taulbee Survey of PhD-granting institutions
Challenges of Computing Education What we teach is too useful. We know little about learning concepts, because we (and our students) focus on skills. Creates opportunities for developing world…which influences opinion in developed world. We mostly teach how to be a professional software engineer. There are three times as many non-professionals who program: Badly, inefficiently, with little knowledge. We need to be able to teach others about computing, such as high school teachers. Students who do take our classes expect to get jobs after the first semester. Employers want our students immediately. Creates huge demand to be vocationally driven. No studies of computing CONCEPTS in the literature. This demand creates opportunity for the developing world, which creates negative opinions in developed world. Surveys in US, students and parents say: “All CS jobs are going to China and India.” Our computing education expertise is in creating software engineers. Yet, even more demand for SOME CS knowledge (not professional, not mastery) outside of software engineering. End-user programmers outnumber professionals. They program badly, inefficiently, creating bugs, causing loss of productivity. They find info on the Web, and they search for it badly. Brian Dorn’s study. We need to be able to teach others about computing.
What works in computing education Teaching in an application context provides relevance. Higher pass rates. Our tools are nearly-infinitely malleable. We can change the interface, but not the cognitive task. It’s always about runnable models executed by another agent. In my work, I have been exploring teaching computer science to non-majors by having them write software to do tasks they recognize as valuable computation: Creating Photoshop filters, manipulating sounds, implementing digital video effects. We are having big impacts on success rates. Our tools are nearly-infinitely malleable, but we can only motivate the task. The underlying task of writing programs is still the enormous challenge of creating and debugging “runnable models” (Collins) executed by another, alien agent (the computer) who is not human, has different knowledge than you, and is incomprehensibly fast.
One-class CS1: Pass (A, B, or C) vs. WDF (Withdrawal, D or F) Success Rates in CS1 from Fall 1999 to Spring 2002 (Overall: 78%) Architecture 46.7% Biology 64.4% Economics 53.5% History 46.5% Management 48.5% Public Policy 47.9% At Georgia Tech, everyone takes an intro course in CS. For four years, we taught everyone with same class. Actually, quite good pass rates, compared to many others in CS. Over on the non-Engineering side of campus, these are the pits. And the women are failing or withdrawing. in greater numbers than the men.
Media Computation: Teaching in a Relevant Context Presenting CS topics with media projects and examples Iteration as creating negative and grayscale images Indexing in a range as removing redeye Information encodings as sound visualizations Creative, open-ended assignments. We decided to teach 3 different courses: One for CS majors around robots, another for Engineers using an Engineering-specific programming language, and I developed the Media Computation version. It’s the same CS1 content, but by manipulating media, with opportunities for creativity in open-ended assignments. def clearRed(picture): for pixel in getPixels(picture): setRed(pixel,0) 8
Results:CS1“Media Computation” Change in Success rates in CS1 “Media Computation” from Spring 2003 to Fall 2005 (Overall 85%) Architecture 46.7% 85.7% Biology 64.4% 90.4% Economics 54.5% 92.0% History 46.5% 67.6% Management 48.5% 87.8% Public Policy 47.9% 85.4% Dramatic improvement in pass rates. Women do BETTER than men.
Wide range of tools and contexts Alice, Scratch, Greenfoot, Pleo Dinosaurs, Electric Pickles In CS Ed, we are creating new tools and new contexts to motivate programming. In Scratch and Alice, programming is drag-and-drop, no syntax to type. We find that Girl Scouts love to program robots and create “electric pickles” in Pico Crickets. We merge Alice with Media Computation so that students can program Alice characters in real-world settings. But the underlying task of defining process remains the same. We can motivate students to tackle the task. But cognitive task remains the same.
Where we need Learning Sciences help Teaching the teachers. Challenge of CS10K with no infrastructure, no trappings of teacher identity. Defining CS PCK. Measuring knowledge. Why care? It’s about equity. NSF has set out a national challenge: CS10K, to have 10,000 high school CS teachers ready to teach Advanced Placement exam in CS in 10,000 schools by 2015. We have 2K today. How do we grow all those teachers? There are few certifications/endorsements, few states have approved CS curricula, only Georgia and TX recognize AP CS as meeting high school graduation requirements. We are not even sure what makes for good CS teaching. What is computer science pedagogical content knowledge? How do we build the methods courses for these teachers? We have no reliable and valid measure of CS concept or skill knowledge. Allison Tew is building the first. Why should all of you care? Jane Margolis argues that it’s a matter of equity. In SitSE, she shows that there are large structural hurdles blocking the way of AA teens from studying CS in LA high schools. They are stuck in the shallow end of the economic pool without knowledge of computing. How do we grow computing education to give everyone a crack at this growing segment of our economy? Thank you.