In Pursuit of Collaborative Dynbooks • Mark Guzdial, guzdial@cc.gatech.edu • Story: – What are Dynabooks and why collaborative? – CoWeb/Swiki and a finding – “Introduction to Media Computation” to push on media composition Alan Kay’s Dynabook (1972) • Alan Kay sees the Computer as Man’s first metamedium – A medium that can represent any other media: Animation, graphics, sound, photography, etc. – Programming is yet another medium • The Dynabook is a (yet mythical?) computer for creative metamedia exploration and reading – Handheld, wireless network connection – Writing (typing), drawing and painting, sound recording, music composition and synthesis – End-user programming Prototype Dynabook (Xerox PARC Learning Research Group) • The Dynabook offered a new way to learn new kinds of things and a better way of learning older things – Learning through creating and exploring media – Knowledge representation (Papert, 1980) – Programming (Kay & Goldberg, 1977) Consider the Dynabook • Early-1970’s were at the start of the “Cognitive Revolution” • Now that we know what we know about learning, do we think that Alan is right? – Will people learn with a Dynabook? – Will it be useful in helping people learn what they want to learn? Do people learn from creating media? • Yes, more than simply watching media – Children building educational software for other kids learn fractions and science (Harel, 1988; Kafai & Harel, 1990) – Students building multimedia end up with higher grades (Hay et al., 1994) • “Multimedia literacy” may be a component of expertise – For example, expert chemists constantly shift between media and representations (Kozma et al., 1996) How well do people learn programming? • Really, really badly • Freshmen and Sophomores at Yale couldn’t handle error conditions in loops in 1982 (Soloway et al.) • Freshmen and Sophomores in 3 countries and 4 institutions can’t build calculators in 2001 (McCracken et al., 2001) • Failure/withdrawl rate in CS1 is double-digits in most institutions – Percentage of women and minorities in CS is falling The role of collaboration • We are social beings – An audience/critic/colleague motivates/inspires/drives us • Constructionism: Building a public representation of one’s knowledge facilitates learning (Papert, 1991; Resnick, Bruckman, Martin, 1996) • Collaboration can even help with learning programming – MOOSE Crossing (Bruckman, 1997) – Harel and Kafai studies Our Goal: Collaborative Dynabooks Hypothesis: Collaboratively creating and exploring multimedia facilitates learning Collaborative Dynabooks • Current work: – CoWeb: Collaborative Websites – Used to support learning, collaboration, and even collaborative multimedia in over 100 classes – Empirical research on learning, collaboration, and cost • Where we’re going: – Multimedia composition for CS Education: “Introduction to Media Composition” CoWeb: Collaborative Websites • Based on Ward Cunningham’s WikiWiki Web – Hence it’s “other” name: Squeak Wiki -> Swiki • Simple system: – It’s a website – Where any user can edit any page (caveat “locks”) – And any user can create new pages In English Composition: Collaborative “Close Reading” Add asterisks for a discussion Does this help with learning? • Compared two composition classes (each taught by Lissa Holloway-Attaway) – One used the CoWeb (n=24) – Other used existing tools (n=25) • Benefits in learning (statistically significant) – CoWeb students wrote better final essays – CoWeb students had better attitudes toward collaboration And at a low cost! • Students, teachers, and system administrators all kept diaries of time spent for class – CoWeb students spent less time than comparison class – Teachers spent no extra time per week – System administrators spent less than 1 hour per term supporting CoWeb Why multimedia composition in Computer Science? • AAUW report: CS classes tend to be overly technical, with little opportunity for creativity • Echoed in recent SIGCSE papers and Unlocking the Clubhouse CS1315 “Introduction to Media Computation” • A new course to meet the “Computing General Literacy” requirement – Georgia Tech requirement of Computing for every major – Only one class currently meets that need: CS1321 Introduction to Computing • Currently the most reviled class on campus • Why? We’re aiming at meeting our students’ needs, but maybe not everyone’s. The Argument: Computation for Communication • All media are going digital • Digital media are manipulated with software • You are limited in your communication by what your software allows – What if you want to say something that Microsoft or Adobe or Apple doesn’t let you say? • Programming is now a communications skill It’s still computer science • For example, all the “under the hood” standard data structures are there still: – Sounds are arrays of samples – Pictures are matrices of pixels – Movies are arrays of pictures! • Complexity: Why do movies process slower than sounds or pictures? – O(n^3) > O(n^2)>O(n) Example: Opening a Picture fp=pickAFile() p=makePicture(fp) show(p) Example: A “Photoshoplike” filter def decreaseRed(pic): for x in getPixels(pic): setRed(x, 0.95 * getRed(x)) Before After (twice) Chromakey • It’s what weather people do • Pose in front of a blue screen • Swap all “blue” for the background Example Solution def chromakey2(source,bg): for p in getPixels(source): if (getRed(p)+getGreen(p) < getBlue(p)): setColor(p, getColor(getPixel(bg, getX(p),getY(p)))) return source Another way of saying the same thing def chromakey(source,bg): # source should have something in front of blue, bg is the new background for x in range(1,source.getWidth()): for y in range(1,source.getHeight()): p = getPixel(source,x,y) # My definition of blue: If the redness + greenness < blueness if (getRed(p) + getGreen(p) < getBlue(p)): #Then, grab the color at the same spot from the new background setColor(p,getColor(getPixel(bg,x,y))) return source Summary • We’ve been exploring collaboration and show some neat benefits • Now we’re pushing on the media part of the Dynabook vision – Lots of research to do: Collaboration here, motivation effects, how much do students learn? Example: Background Subtraction • Let’s say that you want to build a picture of your daughter on the moon. • Take a picture of her against the wall, then just the wall. Example Solution • For each pixel (dot) in the picture – Get the pixel in the picture – Get the pixel in the frame (without the kid) – Are the colors pretty darn close? • Must be where the kid ISN’T, so grab the picture of the moon Example code #Picture with person, background, and newbackground def swapbg(pic1, bg, newbg): for x in range(1, getWidth(pic1)): for y in range(1, getHeight(pic1)): p1px = getPixel(pic1,x,y) bgpx = getPixel(bg,x,y) if (distance(getColor(p1px),getColor(bgpx)) < 15.0): setColor(p1px,getColor(getPixel(newbg,x,y))) return pic1 Why doesn’t it look better? • Can you figure out where the light source was? • The colors on the shirt and the colors of the wall were awfully similar Better Final Essay Performance Overall: More concrete, better references, more authoritative Attitudes toward Collaboration Average scores. All p<0.05 (1=strongly agree, 5=strongly disagree) Programming is a communications skill • If you want to say something that your tools don’t allow, program it yourself • If you want to understand what your tools can or cannot do, you should understand what the programs are doing • If you care about preparing media for the Web, for marketing, for print, for broadcast… then it’s worth your while to understand how the media are manipulated. • PROGRAMMING KNOWLEDGE = FREEDOM What’s computation good for • Computer science is the study of recipes • Computer scientists study… – How the recipes are written (algorithms, software engineering) – The units used in the recipes (data structures, databases) – What can recipes be written for (systems, intelligent systems, theory) – How well the recipes work (human-computer interfaces) Specialized Recipes • Some people specialize in crepes or barbeque • Computer scientists can also specialize on special kinds of recipes – Recipes that create pictures, sounds, movies, animations (graphics, computer music) • Still others look at emergent properties of computer “recipes” – What happens when lots of recipes talk to one another (networking, non-linear systems) KEY: The COMPUTER does the recipe! • Make it as hard, tedious, complex as you want! • Crank through a million genomes? No problem! • Find one person in a 30,000 campus? Yawn! • Process a million dots on the screen or a bazillion sound samples…MEDIA COMPUTATION! Why should you need to study “recipes”? • To understand better the recipe-way of thinking – It’s influencing everything, from computational science to bioinformatics – Eventually, it’s going to become part of everyone’s notion of a liberal education • To work with and manage computer scientists • AND…to communicate! – Writers, marketers, producers communicate through computation “But PhotoShop is great!” • Okay, but so are ProAudio Tools, ImageMagick and the GIMP, and Java and Visual Basic • You can learn lots of tools OR You can learn a key set of tools, and a general set of principles and programming skills AND learn new tools easier