Providing a context to motivate non majors into computing
Download
1 / 42

Providing a Context to Motivate Non-Majors Into Computing - PowerPoint PPT Presentation


  • 197 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Providing a Context to Motivate Non-Majors Into Computing' - cameo


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Providing a context to motivate non majors into computing l.jpg

Providing a Context to Motivate Non-Majors Into Computing

Mark Guzdial

College of Computing/GVU

Georgia Institute of Technology


Story l.jpg
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 l.jpg
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 l.jpg
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 l.jpg
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 l.jpg
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


Slide7 l.jpg
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 l.jpg
The Challenge

  • In order to motivate students to care about computing, we need to make it

    • relevant,

    • social, and

    • creative


Contextualized cs1 l.jpg
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 l.jpg
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


Start of term survey what is computer science l.jpg

The audiences for these classes come in with different preconceptions.

Start of term survey:What is Computer Science?


Particular focus introduction to media computation l.jpg
Particular Focus: preconceptions.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 l.jpg
Motivating the Computing preconceptions.

  • 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.


Slide15 l.jpg

def clearRed(picture): preconceptions.

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 l.jpg
Use a loop! preconceptions.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 l.jpg
Recipe to Increase the Volume preconceptions.

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 l.jpg
Generalizing Algorithms preconceptions.

  • 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 l.jpg
Scaling the picture down preconceptions.

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 l.jpg
Scaling the picture up preconceptions.

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 l.jpg
Recipe for halving the frequency of a sound preconceptions.

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 l.jpg
Compare these two preconceptions.

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 l.jpg
Both of them are preconceptions.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.


Using your personal pictures l.jpg
Using your preconceptions.personal pictures


And messin with them l.jpg
And preconceptions.messin’ with them


Relevance through data first computing l.jpg
Relevance through Data-first Computing preconceptions.

  • 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 l.jpg
Rough overview of Syllabus preconceptions.

  • 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 l.jpg
Computer science as a solution to preconceptions.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 l.jpg
Assignments encourage learning in social contexts preconceptions.

  • 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 l.jpg
Assignments encourage creativity preconceptions.

  • 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 l.jpg
First Homework assignment preconceptions.

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 l.jpg
Homework #3: Make a collage with images that you modify preconceptions.by code only—any images you want


End of term results l.jpg
End of term results preconceptions.

  • 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 mediacomp survey what do you like about the class l.jpg
Midterm MediaComp Survey: far?”“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 l.jpg
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 l.jpg
Non-major students computingwant 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 l.jpg
Where we’re going next computing

  • 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 l.jpg
Conclusions computing

  • 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 l.jpg
Acknowledgements computing

  • 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 l.jpg
For further information computing

  • Course CoWeb: http://coweb.cc.gatech.edu/cs1315

  • Where we planned the course:http://coweb.cc.gatech.edu/mediaComp-plan

  • [email protected]


ad