Introduction to Media Computation

advertisement
Media Computation as An
Approach to Motivate and Retain
Computing Students:
Inventing a new approach to
computing education at Georgia Tech
Mark Guzdial
School of Interactive Computing
College of Computing
Georgia Institute of Technology
Story




Where have all the students gone?
Teaching Computing for Everyone
First course: Introduction to Media Computation
 It’s about context
 What students do in it
Second course: Representing Structure and Behavior
 Using Disney’s Wildebeests and Villagers,
as a context for learning data structures
Beyond the two courses: A path into CS


A context in our CS1
Applying contexts more broadly: Threads™
Where have all the students gone?

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 to Asia.”
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


Hypothesis:
Economy (1st order) and Curriculum (2nd
order)

Our computing curriculum has never been
attractive.


For years, software engineering was a
pathway to wealth (not just jobs)


It is designed for the sole purpose of producing
software engineers.
People will go through a lot for wealth.
Dot-com bust plus off-shoring =>
it’s not about wealth.

Recent uptick: “Google buys YouTube for $2B”
Strategy:
Make CS education ubiquitous

Motivate students to care about the broad
range of what is computing.



Create contextualized courses, minors, and nontraditional paths into CS
Make it relevant, social, and creative.
By doing this, we give CS majors their
reasons to be there,
and discover new CS majors.
Our Three CS1’s



CS1301 Introduction to Computing
Traditional CS1 for our CS majors, Science
majors (math, physics, psychology, etc.).
Trialing this semester: All robotics.
CS1371 Computing for Engineers
CS1 for Engineers. Same topics as CS1321,
but using MATLAB with Engineering
problems in homework and examples.
CS1315 Introduction to Media Computation
What Georgia Tech Teaches
CS1315 (Media
Computation
CS1 in Python)
CS1316
(Structure &
Behavior—
Multimedia data
structures in
Java)
CS2260:
Media Device
Architectures
CS1301
Intro to
Programming in
Python for CS
majors
CS1331
CS1+2 in
Java
CS1332
Data
Structures
and
Algorithms in
Java
CS2110
(Low-level
programming in C)
CS1371
(Computing for
Engineering in
MATLAB (only))
CS1372
Algorithm
Design in C
Institute for Computing
Education (ICE@GT)
Summer Workshops
for High School
Teachers: Media
Computation CS1 in
Java
Media Computation:
Teaching in a Relevant Context

Presenting CS topics with
media projects and
examples





Iteration as creating negative
and grayscale images
Indexing in a range as
removing redeye
Algorithms for blending both
images and sounds
Linked lists as song fragments
woven to make music
Information encodings as
sound visualizations
Examples of Student Work
SoupAudio
Collage
CanonLinkedList of
(MIDI) Music
Overall Results

Average CS1 success pre-MediaComp:
Average 72.8%
In MediaComp (51% female):
Average 84% (as high as 90%)




Similar results at Gainesville, U.Ill-Chicago (76% => 91%),
ANU
Specific majors more dramatic:
Management majors’s success rate 49% => 88%
Students are excited, and becoming CS majors, CS
minors, CS teachers, and Computational Media
majors (nearly 200, 25% female)
MediComp students succeed in traditional CS
classes.
Student voices



Intro CS student (female): “I just wish I had more
time to play around with that and make neat effects.
But JES [IDE for class] will be on my computer
forever, so… that’s the nice thing about this class is
that you could go as deep into the homework as you
wanted. So, I’d turn it in and then me and my
roommate would do more after to see what we could
do with it.”
High School teacher: “This was the best (noncollege credit) workshop I have ever taken.”
Students in multimedia data structures: “Data
structures is an important step. Use of media! It
makes it fun.”
CS1315 Introduction to Media
Computation

Average 400/term



Overall, CS1315 has been 51% female
Required in Architecture, Management, Ivan Allen College
of Liberal Arts, and Biology
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
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)
Rough overview of Syllabus
for CS1315 (CS1)


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
Trees, hash tables
Movies
Then, Computer Science topics (last 1/3 class)
Computer science inter-mixed

We talk about algorithms
across media



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.
We talk about representations
and mappings (Goedel)

From samples to numbers
(and into Excel), through a
mapping to pixel colors
Computer science topics
as solutions to their problems

“Why is PhotoShop so much faster?”



“Movie-manipulating programs take a long time to
execute. Why? How fast/slow can programs be?”


Algorithmic complexity
“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
“What do other languages look like?”

JavaScript introduction
Success Rates for Specific
Majors
Success rates in traditional CS1 for students in various majors average
Fall ’99 to Fall ’02, compared to Spring ’03 to Fall ’05 in Media
Computation.
Example Collage
Code
def hw3():
venice1=makePicture(getMediaPath("venice.jpg"))
print venice1
venice2=makePicture(getMediaPath("venice.jpg"))
print venice2
venice3=makePicture(getMediaPath("venice.jpg"))
print venice3
venice4=makePicture(getMediaPath("venice.jpg"))
print venice4
venice5=makePicture(getMediaPath("venice.jpg"))
print venice5
venice6=makePicture(getMediaPath("venice.jpg"))
print venice6
canvas=makeEmptyPicture(640,480)
print canvas
IncreaseRed(venice1)
targetX=1
for sourceX in range(1,getWidth(venice1),3):
targetY=1
for sourceY in range(1, getHeight(venice1),3):
px=getPixel (venice1, sourceX, sourceY)
cx=getPixel (canvas, targetX, targetY)
setColor(cx,getColor(px))
targetY=targetY +1
targetX=targetX +1
IncreaseBlue(venice2)
targetX=128
for sourceX in range(1, getWidth(venice2),3):
targetY=96
for sourceY in range(1, getHeight(venice2),3):
px=getPixel (venice2, sourceX, sourceY)
cx=getPixel (canvas, targetX, targetY)
setColor(cx,getColor(px))
targetY=targetY +1
targetX=targetX +1
negative(venice3)
targetX=1
for sourceX in range(1, getWidth(venice3),3):
targetY=192
for sourceY in range(1, getHeight(venice3),3):
px=getPixel (venice3, sourceX, sourceY)
cx=getPixel (canvas, targetX, targetY)
setColor(cx,getColor(px))
targetY=targetY +1
targetX=targetX +1
greyScaleNew(venice4)
targetX=128
for sourceX in range(1, getWidth(venice4),3):
targetY=288
for sourceY in range(1, getHeight(venice4),3):
px=getPixel (venice4, sourceX, sourceY)
cx=getPixel (canvas, targetX, targetY)
setColor(cx,getColor(px))
targetY=targetY +1
targetX=targetX +1
IncreaseGreen(venice5)
targetX=1
for sourceX in range(1, getWidth(venice5),3):
targetY=384
for sourceY in range(1, getHeight(venice5),3):
px=getPixel (venice5, sourceX, sourceY)
cx=getPixel (canvas, targetX, targetY)
setColor(cx,getColor(px))
targetY=targetY +1
targetX=targetX +1
targetX=256
for sourceX in range(1, getWidth(venice6),3):
targetY=192
for sourceY in range(1, getHeight(venice6),3):
px=getPixel (venice6, sourceX, sourceY)
cx=getPixel (canvas, targetX, targetY)
setColor(cx,getColor(px))
targetY=targetY +1
targetX=targetX +1
mirrorVertical(canvas)
show(canvas)
return(canvas)
def IncreaseRed (venice1):
for pixel in getPixels(venice1):
myred = getRed(pixel)
setRed (pixel, myred * 1.5)
def IncreaseBlue(venice2):
for pixel in getPixels(venice2):
myblue = getBlue(pixel)
setBlue (pixel, myblue * 1.5)
def IncreaseGreen(venice5):
for pixel in getPixels(venice5):
mygreen = getGreen(pixel)
setGreen (pixel, mygreen * 1.5)
def greyScaleNew(venice4):
for px in getPixels(venice4):
newRed = getRed(px) * 0.299
newGreen = getGreen(px) * 0.587
newBlue = getBlue(px) * 0.114
luminance = newRed+newGreen+newBlue
setColor(px,makeColor(luminance,luminance,luminance))
…
Follow-up Survey:
Did it have a lasting impact?


In Spring 2004, conducted an email survey
with students from Spring 2003 (n=120) and
Fall 2003 (n=303) students.
59 responses


11 (19%) had written a Python program on their
own since the class had ended.
27% had edited media that they hadn’t previously.
“Did the class change how you
interact with computers?”


20% said no.
80% said yes, but it was also more about changing
how they thought about computers.



“Definitely makes me think of what is going on behind the scenes
of such programs like Photoshop and Illustrator.”
'I understand technological concepts more easily now; I am more
willing and able to experience new things with computers now’
'I have learned more about the big picture behind computer
science and programming. This has helped me to figure out how
to use programs that I've never used before, troubleshoot
problems on my own computer, use programs that I was already
familiar with in a more sophisticated way, and given me more
confidence to try to problem solve, explore, and fix my computer.’
Second course: CS1316 “Representing
structure and behavior”


Driving question:
“How did the
wildebeests
stampede in The
Lion King?”
31 students, 75%
female, 91%
success rate.
Connecting to the Wildebeests
It’s all about data structures
Rough Syllabus for CS1316


Weeks 1-4: Recreate media computation in Java
(Images, sounds, turtles, MIDI).
Linked lists of MIDI.


Linked lists and trees of images.


Goal: Creating flexible structures for design
Scene graph as first tree.
Linked lists and trees of sampled sounds.

Recursive traversals.
Swan
Bells
Canon
Fur Elise
Syllabus (continued)


Generalized lists and trees.
Graphical User Interfaces as
trees



Predator-prey, disease
propagation
UML (design notation) and
reuse
gal1rightface.jpg
gal1right2.jpg
Mapping Simulations to
Animation

Layout managers as renderers
Continuous Simulations



Finally! The wildebeests and
villagers
Discrete Event Simulation

Stacks and queues are natural
here
gal1rightface.jpg
gal1right1.jpg
HW2: Create a collage, but must
use turtles
Steve Frederick
Georgia Institute of Technology
Priya Harshini
Georgia Institute of Technology
Steve Frederick
Georgia Institute of Technology
Do the two semesters prepare
students for a regular CS course?
- CS1322 was our previous CS2 for CS majors.
Success
TOTAL
#
Fail
From 1321 (CS1 for CS)
78.1%
21.9%
333
From 1371 (From Engineering)
72.7%
27.3%
681
From 1316 (From CS1315)
60.0%
40.0%
20
An alternative path, a minor,
and a new degree

The two courses (Introduction to Media Computation
and Representing Structure and Behavior) are now
accepted as a valid path for CS students.



Margolis and Fisher’s “alternative path”
Defined a CS minor
Created new BS in Computational Media


Joint with School of Literature, Communications, and
Culture
58 majors in first year, 24% female
Nearly 200 majors today, still about ¼ female
A Context for CS1 for CS
majors: Robotics


Microsoft Research has funded the
Institute for Personal Robotics in
Education
 Tucker Balch, Directing
Monica Sweat developing GT’s
CS1
 Joint between Bryn Mawr and
Georgia Tech
 http://www.roboteducation.org
Goal is to develop a CS1 and CS2
with robotics as the context.
 HW2: Recursively follow a light
 CS2: Add a camera
Developing Threads™:
Carrying Context to the Degree Level


A new conceptualization for an undergraduate
degree.
We defined 8 “Threads” which together define
Computing:


Computing and Media, People, Platforms, Computational
Modeling, Information Internetworking, Intelligence,
Embodiment, and Foundations
The courses within each are “core” CS (some),
advanced/new CS, and some non-CS (e.g., Psychology in
People Thread)
Threads™ as a Degree

Our BS in Computer Science is defined as any two
Threads.


Advantages:




28 possible paths to a degree now.
Clearly says what CS is. It isn’t just programming.
Clear differentiator for students.
 It’s not just India’s or China’s CS
Explains why students take any particular course
Consider the possibilities if all degrees were
Threaded.

Interdisciplinary degrees became easier and more
interesting.
Summary

It is time to fix the curriculum of Computer Science.


Media Computation is a powerful context to motivate
student retention and learning.


CS for everyone is a useful goal.
Our two courses having an impact on recruitment and
retention.
Bottom line: Context is a win.



Media is a great context.
We’re trying robotics next.
Could be biology/bioinformatics, Facebook graphs, etc.
Acknowledgements




Faculty Collaborators: Barbara Ericson, Charles Fowler
(Gainesville)
Course Materials Development: Adam Wilson, Jason Ergle,
Claire Bailey, David Raines, Joshua Sklare, Mark Richman, Matt
Wallace, Alisa Bandlow, Ellie Harmon, Yu Cheung Ho, Keith
McDermott, Eric Mickley, Larry Olson, Lauren Biddle
Assessment: Andrea Forte, Allison Tew, Rachel Fithian, Lauren
Rich, Heather Perry, Ellie Harmon, Bob Amar, Rachel
Knickmeyer, Allison Tew, Lana Yarosh
Thanks to Bob McMath and the Al West Fund, to GVU and CoC,
to the students who participated in our evaluation, and to the
National Science Foundation
Thank you!
Mark Guzdial
http://www.cc.gatech.edu/~mark.guzdial
http://coweb.cc.gatech.edu/csl
For more on MediaComp approach
(including papers, software, and
slides):
http://coweb.cc.gatech.edu/mediaCompplan
Media Computation Teachers’ Site:
http://coweb.cc.gatech.edu/mediaCompteach
Download