Great Principles of Computing: Computing for Everyone Mark Guzdial College of Computing/GVU Georgia Institute of Technology A Computer Science Undergraduate Degree is Facing Irrelevancy We’re losing students, at an increasing rate. Women and minority percentage of enrollment dropping High failure rates in CS1 (35-50% or more) Fewer applications into CS “All programming jobs going overseas” Research results: “Tedious,” “boring,” “lacking creativity,” “asocial” All of this at a time when we recognize the critical role of IT in our economy, in all jobs Strategy: Ubiquitous Computing Education Everyone needs computing, and we should be able to teaching computing that everyone cares about. Make computing relevant and accessible to students. Minors, certificates, joint degrees, alternative paths to the major. At Georgia Tech, we do require every student to take an introductory computing course. Used to be just one, based on TeachScheme approach (HTDP) Then came the “Recent Unpleasantness”… CS1315 Introduction to Media Computation Focus: Learning programming and CS concepts within the context of media manipulation and creation Converting images to grayscale and negatives, splicing and reversing sounds, writing programs to generate HTML, creating movies out of Web-accessed content. Computing for communications, not calculation Required course at Georgia Tech for Architecture, Management, and Liberal Arts students; Optional for Biology 121 students in Spring 2003, 303 in Fall ’03, and 395 for Spring ‘04 2/3 female in Spring 2003 MediaComp Teaching computing, not programming These students do not want to learn to program. In fact, some drop as soon as they learn that programming IS still required. We use a data-first approach Real professional computer users are not eager to use the computer They (reluctantly) learn applications and programming because they have data that they want to manipulate Today’s undergrads have digital pictures, sounds, and video We give them the tools to manipulate them. Then we introduce the Great Principles in the task context. Rough overview of Syllabus Defining and executing functions Pictures Sounds Psychophysics, data structures, defining functions, for loops, if conditionals Sampled sounds vs. synthesized, MP3 vs. MIDI Text Psychophysics, data structures, defining functions, for loops, if conditionals Bitmap vs. vector notations Converting between media, generating HTML, database, and networking A little trees (directories) and hash tables (database) Movies Then, Great Principles topics (last 1/3 class) Some Computer Science Topics inter-mixed We talk about algorithms across media We talk about representations and mappings (Goedel) Sampling a picture (to scale it) is the same algorithm as sampling a sound (to shift frequency) Blending two pictures (fading one into the other) and two sounds is the same algorithm. From samples to numbers (and into Excel), through a mapping to pixel colors We talk about design and debugging But they mostly don’t hear us Computer Science Topics as solutions to their problems “Why is PhotoShop so much faster?” “Writing programs is hard! Are there ways to make it easier? Or at least shorter?” Compiling vs. interpreting Machine language and how the computer works Object-oriented programming Functional programming and recursion “Movie-manipulating programs take a long time to execute. Why? How fast/slow can programs be?” Algorithmic complexity Does the class work? In Spring 2003, 121 students (2/3 female), 3 drops Fall 2003, 303 students, 8 drops 60% of students surveyed at end of course say that they want a second course. Women had higher grades and fewer drops than men These are non-majors, who have already fulfilled their requirement We are getting transfers into the CS major. Success Rate Average GT’s CS1 72.2% (2000-2002) Media Computation Spring 2003 Media Computation Fall 2003 88.5% 87.5% What do the Great Principles offer this course? Identifying the principles that we can cover in the course. We chose the ones we did from CC2001’s CS1 requirements and from what fit naturally into a media context. Peter’s lists highlight the important topics that we might cover, that need to be introduced (even for non-majors) Perhaps not all in the first course. What does this course have to offer the Great Principles? Especially for non-CS majors, we can’t separate off programming. Cognitive science: Concrete before abstract These students grapple with what we see as “simple” concepts: Sequencing of operations, iteration, conditionals, indexing (e.g., of arrays) Need to understand what a computer is before they can grasp what a computer enables But we can teach programming as a context for teaching the Principles, not as an end goal. What do the Great Principles offer CS Undergraduate Education? Stop teaching syntax of languages! In the Media Computation class, we never teach else, we only touch on while, and students never make their own classes. We don’t need them for our goals, and they get in the way. If our goal is to teach the Principles, we don’t need every language feature. Our focus in CS1 is not to create programmers! The goal of Introductory CS, like any other Introductory course, is to introduce the Great Principles of the field— NOT create professionals in the discipline! What do the Great Principles offer undergraduate education? Peter’s “Ladder of Expertise” is a very important idea. Our CS undergraduate programs do tend to focus at the middle level. As Peter points out, we do the upper levels a disservice. But we also do the lower levels a disservice. Not everyone needs to be a proficient as a professional programmer! But how much more impact can we as a field have if we can help biologists, architects, and business majors actually understand the Great Principles of computing, as beginner and intermediate programmers?