420 likes | 662 Views
Providing a Context to Motivate Non-Majors Into Computing. Mark Guzdial College of Computing/GVU Georgia Institute of Technology. Story. Georgia Tech and the challenge of teaching programming to everyone Contextualized CS as a way of motivating the study of computer science
E N D
Providing a Context to Motivate Non-Majors Into Computing Mark Guzdial College of Computing/GVU Georgia Institute of Technology
Story • Georgia Tech and the challenge of teaching programming to everyone • Contextualized CS as a way of motivating the study of computer science • What does contextualized CS look like? • Introduction to Media Computation as an example • Assessment results from three different CS1’s • Where we’re going next
Georgia Tech • Georgia Institute of Technology • 28% female overall • Colleges: Computing (11% female undergrad), Engineering, Ivan Allen (Liberal Arts), Sciences, Management, Architecture
Universal requirement of computing • Georgia Tech requires a course in computing of every student. • Consider computing a necessary prerequisite in a technological institution. • Only a single course has been available: CS1321 Introduction to Computing • Developed for our majors • Uses Scheme with the text How to Design Programs
Universal access to computing • In 1961, Alan Perlis argued that computer science should be part of a liberal education. • Explicitly, he argued that all students should learn to program. • Consider a contrast with Calculus • Calculus is about rates, and that’s important to many. • Computer science is about process, which is important to everyone • The best uses of technology are going to come from outside of computer science. • If we want computing technologies to become useful, they have to get out of our hands.
How close are we to being able to teach everyone CS? • Not very:CS1 is one of the most despised courses for non-majors • At many departments, CS retention rates are lower than the rest of campus • At Georgia Tech: 65% for 1995 cohort, vs. 73% for Engineeering • Drop-out rates in CS1 near 50% at many institutions • At Georigia Tech: 28% WFD (Withdrawl, F, or D rate) typically; but with some spikes. • Female enrollment in CS has been dropping nationally
Why? • Several recent studies and books claim that CS instruction tends to dissuade anyone but white males • “Tedious,” “taught without application relevance,”“boring,” “lacking creativity,” “asocial”
The Challenge • In order to motivate students to care about computing, we need to make it • relevant, • social, and • creative
Contextualized CS1 • During Spring 2003, Georgia Tech offered three different CS1 courses: • CS1321: Traditional CS1 (n=127, in section studied) • COE1361: Computing for Engineers (n=75) • Same conceptual content as CS1321 but in MATLAB and Java with data-first applications. • CS1315: Introduction to Media Computation (n=121) • Introduction to programming and computing concepts, using media manipulation as a context.
Assessment • Led by Ph.D. student Andrea Forte • With Lauren Rich (Undergrad) and Rachel Fithian (MS HCI) • Surveys in all three courses: Beginning, midterm, and final survey • Interviews with students in CS1 and MediaComp • Demographic data
The audiences for these classes come in with different preconceptions. Start of term survey:What is Computer Science?
Particular Focus: Introduction to Media Computation • 121 students in Spring 2003,with 300 planned for Fall 03 and 450 for Spring 04 • 2/3 female in Spring 2003 MediaComp • Focus: Learning programming and CS concepts within the context of media manipulation and creation • Converting images to greyscale and negatives, splicing and reversing sounds, writing programs to generate HTML, creating movies out of Web-accessed content.
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.
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)
Use a loop!Our first picture recipe original def decreaseRed(picture): for p in getPixels(picture): value=getRed(p) setRed(p,value*0.5) Used like this: >>> file="/Users/guzdial/mediasources/barbara.jpg" >>> picture=makePicture(file) >>> show(picture) >>> decreaseRed(picture) >>> repaint(picture)
Recipe to Increase the Volume def increaseVolume(sound): for sample in getSamples(sound): value = getSample(sample) setSample(sample,value * 2) Using it: >>> f="/Users/guzdial/mediasources/gettysburg10.wav" >>> s=makeSound(f) >>> increaseVolume(s) >>> play(s) >>> writeSoundTo(s,"/Users/guzdial/mediasources/louder-g10.wav")
Generalizing Algorithms • We talk about algorithm complexity later in the course, after the media is done. • We talk about different approaches to the same problem, where the criteria might be aesthetics or correctness, instead of speed or size • For example, generating greyscale • During the media, we point out similar themes in different functions. • We refer to them as “sub-recipes”
Scaling the picture down def copyBarbsFaceSmaller(): # Set up the source and target pictures barbf=getMediaPath("barbara.jpg") barb = makePicture(barbf) canvasf = getMediaPath("7inX95in.jpg") canvas = makePicture(canvasf) # Now, do the actual copying sourceX = 45 for targetX in range(100,100+((200-45)/2)): sourceY = 25 for targetY in range(100,100+((200-25)/2)): color = getColor(getPixel(barb,sourceX,sourceY)) setColor(getPixel(canvas,targetX,targetY), color) sourceY = sourceY + 2 sourceX = sourceX + 2 show(barb) show(canvas) return canvas
Scaling the picture up def copyBarbsFaceLarger(): # Set up the source and target pictures barbf=getMediaPath("barbara.jpg") barb = makePicture(barbf) canvasf = getMediaPath("7inX95in.jpg") canvas = makePicture(canvasf) # Now, do the actual copying sourceX = 45 for targetX in range(100,100+((200-45)*2)): sourceY = 25 for targetY in range(100,100+((200-25)*2)): color = getColor(getPixel(barb,int(sourceX),int(sourceY))) setColor(getPixel(canvas,targetX,targetY), color) sourceY = sourceY + 0.5 sourceX = sourceX + 0.5 show(barb) show(canvas) return canvas
Recipe for halving the frequency of a sound This is how a sampling synthesizer works! def half(filename): source = makeSound(filename) target = makeSound(filename) sourceIndex = 1 for targetIndex in range(1, getLength( target)+1): setSampleValueAt( target, targetIndex, getSampleValueAt( source, int(sourceIndex))) sourceIndex = sourceIndex + 0.5 play(target) return target Here are the pieces that do it
Compare these two def copyBarbsFaceLarger(): # Set up the source and target pictures barbf=getMediaPath("barbara.jpg") barb = makePicture(barbf) canvasf = getMediaPath("7inX95in.jpg") canvas = makePicture(canvasf) # Now, do the actual copying sourceX = 45 for targetX in range(100,100+((200-45)*2)): sourceY = 25 for targetY in range(100,100+((200-25)*2)): color = getColor( getPixel(barb,int(sourceX),int(sourceY))) setColor(getPixel(canvas,targetX,targetY), color) sourceY = sourceY + 0.5 sourceX = sourceX + 0.5 show(barb) show(canvas) return canvas def half(filename): source = makeSound(filename) target = makeSound(filename) sourceIndex = 1 for targetIndex in range(1, getLength( target)+1): setSampleValueAt( target, targetIndex, getSampleValueAt( source, int(sourceIndex))) sourceIndex = sourceIndex + 0.5 play(target) return target
Both of them are sampling • Both of them have three parts: • Setting up the objects: Source and target • A loop where samples or pixels are copied from one place to another • To decrease the frequency or the size, we take each sample/pixel twice • In both cases, we do that by incrementing the index by 0.5 and taking the integer of the index • Finishing up and returning the result • Making it better: Averaging/blurring to smooth the result There are serious algorithm issues here, but it’s not sorting.
Relevance through Data-first Computing • 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. • MediaComp works the same. • We use pictures of students in class demonstrations. • Students do use their own pictures as starting points for manipulations. • Some students reversed sounds looking for hidden messages. • They started doing this in the second week • How often do students use their second week of CS1 on their own data? • How does that change the students’ relationship to the material? • In COE course, 30% of the students reported at midterm that they had used some of the course content.
Rough overview of Syllabus • Defining and executing functions • Pictures • Psychophysics, data structures, defining functions, for loops, if conditionals • Bitmap vs. vector notations • Sounds • Psychophysics, data structures, defining functions, for loops, if conditionals • Sampled sounds vs. synthesized, MP3 vs. MIDI • Text • Converting between media, generating HTML, database, and networking • Movies • Then, Computer Science
Computer science as a solution to their problems • “Writing programs is hard! Are there ways to make it easier? Or at least shorter?” • Object-oriented programming • Functional programming and recursion • “Movie-manipulating programs take a long time to execute. Why?” • Algorithmic complexity • “Why is PhotoShop so much faster?” • Compiling vs. interpreting • Machine language and how the computer works
Assignments encourage learning in social contexts • Homework are all collaborative • Quizzes are preceded by nearly-identical, collaborative pre-quizzes • Two “take-home exams” (programming assignments) are non-collaborative
Assignments encourage creativity • For several homeworks, the task is to manipulate media in some way, but we don’t care what media • For example, creating a collage or building an animation • Encouraging homework results to be posted to CoWeb (collaborative website) in galleries
First Homework assignment Homework 1: Write a program named hw1 to accept a picture as input, and change its pixels as follows: • Set the green component to 125% of its current value • Decrease the blue by 25% • Decrease the red by 75%
Homework #3: Make a collage with images that you modify by code only—any images you want
End of term results • Of the 121 students who started, only three dropped MediaComp. • When asked “What part of this class should not change?” • 19% of MediaComp students mentioned the CoWeb • 20% mentioned “collaboration” in some form
Midterm survey: “What do you like best about this class so far?”
Midterm MediaComp Survey:“What do you like about the class?” • “I like the feeling when I finally get something to work.” • “Very applicable to everyday life.” • ‘I dreaded CS, but ALL of the topics thus far have been applicable to my future career (& personal) plans—there isn't anything I don't like about this class!!!”
Non-majors surprised to find that they like contextualized computing • Interviewer: Has this class changed your opinion of computer science? • MediaComp Student (female): Yes, I’m not intimidated by it anymore. My mom was so surprised when I told her I want to be a TA she almost fell on the floor, ‘cause she’s heard me complain for years about taking this class and now I want to go do it to myself again!
Non-major students want to learn about computing • From an interview with an Engineering student in traditional CS1: “I think if anything [should be required] it should be the second one [course], like Java. A lot of people know that Scheme isn’t used and so a lot of people want to copy the homework and get through it. They’re not very motivated. I’ve heard that Java and C and all those, they are different, and I’d like to learn C and Java and all that.”
Where we’re going next • This was only the pilot. We should still be skeptical. • Where do these students go next? • Does MediaComp influence how they use computing in their own major? • Does it influence any of them to take more CS? • How does it change as it goes out beyond? • Spring ’04: Others teaching it at Tech. • Already being trialed elsewhere (at Gainesville College) • How well does Python transfer to other languages and contexts? • Exploring a high school version of the course.
Conclusions • Our classes are driving people away from computer science. • Part of the problem is that we are too abstracted away from the relevant problem domains. • We are not Mathematics. • These students won’t use Calculus every day,But they will use Computing. • We have to teach better. • Contextualized CS seems to be leading to more motivation and better performance. • Hard issues here: • Budgets and teaching loads—”for non-majors?!?” • But it may be our greatest impact as a discipline—extending CS beyond our borders.
Acknowledgements • Course materials development: Jason Ergle, Claire Bailey, Ellie Harmon, Toby Ho, David Raines, Joshua Sklare, Adam Wilson, Andrea Forte, Mark Richman, Matt Wallace, Alisa Bandlow, Keith McDermott, Derek Chambless, Larry Olson, Eric Mickley, Lauren Biddle. • Assessment: Andrea Forte, Rachel Fithian, Lauren Rich • Thanks for support • to Vice-Provost Bob McMath and the Al West Fund, • to GVU and the College of Computing, 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