Media as a Context for Learning Computation Mark Guzdial College of Computing/GVU Story • Computer science education is in a sorry state – That’s a serious problem for GVU • The challenges we need to face • The argument for a course in digital media • Description of the course that’s on-going now Computer Science Classes Today • CS1 is one of the most despised courses for non-majors • CS retention rates are lower than the rest of campus – 65% for 1995 cohort, vs. 73% for Engineeering • Drop-out rates near 50% at many institutions • Female enrollment in CS is dropping nationally – At Georgia Tech, we’re below the average Why? • “Tedious,” “boring,” “lacking creativity,” “asocial” • CS culture seems most attractive to white males. CS Freshmen Majors, Fall 2001 Number Female Male AfricanAmerican Hispanic Caucasian Total 38 303 15 SAT avg (combined) 1342 1371 1349 2 233 341 1350 1379 1368 Why should GVU care? • What is our vision of computation and new media? • Should people just consume media? Or should they understand it? And even be able to create it? In Alan Kay’s vision of the computer, the Dynabook, programming itself is a medium The best uses for our technologies will come from others • Thomas Edison vs. D.W. Griffith • If we want our technologies to become useful, they have to get out of our hands. • It can’t be just through applications – That presumes that we the researchers know how the technologies should be used. – Suggestion: D.W. Griffith knew things that Edison didn’t. Why should anyone care? • In 1961, Alan Perlis argued that computer science is more important in a liberal education than calculus • Calculus is about rates, and that’s important to many. • Computer science is about process, which is important to everyone The Challenges • We have to motivate non-CS students to care about computing • We have to make it social, creative, exciting, and not tedious – Which is how many of us already see Computing, but that’s not getting communicated Our Attempt: Introduction to Media Computation • A course for non-CS and non-Engineering majors – International Affairs, STAC, Architecture, Management, Biology, etc. • 120 students this semester, planning 400-600 in the Fall – 2/3 female in this semester’s CS1315 • Focus: Learning programming within the context of media manipulation and creation Motivating the Computing • As professionals, these students will often the use the computer as a communications medium. • All media are going digital, and digital media are manipulated with software. • Knowing how to program, then, is a communications skill. Programming as a Communications Skill • Knowing how to program means to understand one’s tools. – Maybe means can transfer tool skills more easily – Students already telling us that they’re excited to learn how PhotoShop works. • And it means that, if you have to, you may be able to grow your own Programming as Communicating Process • A program is a succinct, executable process description • That makes valuable for explaining process – We use examples from Biology and Management to make this point Python as the programming language • Huge issue • Use in commercial contexts authenticates the choice – IL&M, Google, Nextel, etc. • Minimal syntax • Looks like other programming languages – Potential for transfer How the class was developed • Created in response to “recent unpleasantness” – On-line surveys, meetings with students – Inspired in part by ECE’s DSP First • Developed with an advisory board from across campus: Psych, HPS, Math, ECE, CETL • Trialed in faculty workshop in mid-December Course Objectives • Students will be able to read, understand, and modify programs that achieve useful communication tasks – Not programming from a blank piece of paper • Students will learn what computer science is about, especially data representations, algorithms, encodings, forms of programming. • Students will learn useful computing skills, including graphing and database concepts Use a loop! Our first picture recipe def decreaseRed(picture): for p in getPixels(picture): value=getRed(p) setRed(p,value*0.5) original Used like this: >>> file="/Users/guzdial/mediasources/barbara.jpg" >>> picture=makePicture(file) >>> show(picture) >>> decreaseRed(picture) >>> repaint(picture) A Sunset-generating function • How do we turn this beach scene into a sunset? • What happens at sunset? – Tried increasing the red, but that failed. – New Theory: As the sun sets, less blue and green is visible, which makes things look more red. A Sunset-generation Function def makeSunset(picture): for p in getPixels(picture): value=getBlue(p) setBlue(p,value*0.7) value=getGreen(p) setGreen(p,value*0.7) def clearRed(picture): for pixel in getPixels(picture): setRed(pixel,0) def greyscale(picture): for p in getPixels(picture): redness=getRed(p) greenness=getGreen(p) blueness=getBlue(p) luminance=(redness+blueness+greenness)/3 setColor(p, makeColor(luminance,luminance,luminance)) def negative(picture): for px in getPixels(picture): red=getRed(px) green=getGreen(px) blue=getBlue(px) negColor=makeColor(255-red,255-green,255-blue) setColor(px,negColor) Using your personal pictures And messin’ with them Data-first • Real users come to a user with data that they care about, then they (unwillingly) learn the computer to manipulate their data as they need. • CS1315 can work the same. – Students can bring their pictures, sounds, and movies as starting points for manipulations. Rough overview of Syllabus • Defining and executing functions • Pictures – Psychophysics, data structures, defining functions, for loops, if conditionals • Sounds – Psychophysics, data structures, defining functions, for loops, if conditionals • Text – Converting between media, generating HTML, “flattening” media and saving to a database • Movies • Then, Computer Science Computer science as a solution to their problems • Writing programs is hard! Are there ways to make it easier or shorter? – Functional programming and recursion – Object-oriented programming • Movie-manipulating programs take a long time to execute. Why? – Algorithmic complexity • Why is PhotoShop so much faster? – Compiling vs. interpreting Assignments encourage collaboration • Homework are all collaborative • Quizzes are preceded by nearlyidentical, collaborative pre-quizzes • Two “take-home exams” (programming assignments) are non-collaborative Assignments encourage creativity • For several homework, the task is to manipulate media in some way, but we don’t care what media – Creating a collage, building an animation • Encouraging homework results to be posted to CoWeb in galleries • Purchasing Webcams to loan to students to create their own media These aren’t CMU CS undergrads • We’re realizing that these students are not like the ones in the Fisher & Margolis class. • Students who can get into CMU’s CS program (often the “computer experts” in their families and schools) are not the same as non-CS and non-Engineering students at Georgia Tech. – “I type the command and nothing happens. The Enter key?” – “Do I need a Zip disk to unpack a zip file?” Tying it back to student goals and GVU • Working with Jay Bolter (jay.bolter@lcc.gatech.edu) and Diane Gromala’s new course LCC 3404e Designing for the Internet – Aimed at Freshmen and Sophomores – Students learn to analyze and design Web sites – Approach combines: • Visual design principles • Information architecture and HCI • CS1315 teaches the students’ the technologies, LCC3404e teaches them how to use the technology to communicate. Assessing the effort • Comparing CS1321, COE1361, and CS1315 in terms of learning and motivation, broken out by gender and major • Observational study of student performance to understand problems and strategies • Interview study of impact on women Summary • CS Education is in a sorry state, and fixing it is important to us and others • Media Computation may be a useful context to motivate student performance • Our class is aimed at addressing the challenges we’ve identified, and we’re trying it now Acknowledgements • Course materials development: Jason Ergle, Claire Bailey, David Raines, Joshua Sklare, Adam Wilson, Andrea Forte, Mark Richman, Matt Wallace, Alisa Bandlow. • Assessment: Andrea Forte, Rachel Fithian, Lauren Rich • Thanks to Bob McMath and the Al West Fund, to GVU and CoC, and the National Science Foundation For further information • Course CoWeb: http://coweb.cc.gatech.edu/cs1315 • Where we planned the course: http://coweb.cc.gatech.edu/mediaComp -plan • guzdial@cc.gatech.edu def chromakey(source,bg): for x in range(1,getWidth(source)): for y in range(1,getHeight(source)): 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