TITLE: SIGCSE DAY 0 -- Media Computation Workshop
AUTHOR: Eugene Wallingford
DATE: March 10, 2010 8:35 PM
[A transcript of the
Table of Contents]
I headed to SIGCSE a day early this year in order to
participate in a couple of workshops. The first draw
was Mark Guzdial's and Barbara Ericson's workshop
to teach introductory computing to both CS majors
and non-majors. I have long been a fan of this work
but have never seen them describe it. This seemed
like a great chance to learn a little from first
principles and also to hear about recent developments
in the media comp community.
Because I taught a
CS1 course in Java,
using media comp four years ago, I was targeted by
other media comp old-timers as a media comp old-timer.
They decided, with Mark's blessing, to run a parallel
morning session with the goal of pooling experience
and producing a resource of value to the community.
When the moment came for the old-timers to break out
on their own, I packed up my laptop, stood to leave
-- and stopped. I felt like spending the morning as
a beginner. This was not an entirely irrational
decision. First, while I have done Java media comp,
I have never worked with the original Python materials
or the JES programming environment students use to do
media comp in Python. Second, I wanted to see Mark
present the material -- material he has spent years
developing and for which he has great passion. I
love to watch master teachers in action. Third, I
wanted to play with code!
Throughout the morning, I diddled in JES with Python
code to manipulate images, doing things I've done
many times in Java. It was great fun. Along the way,
I picked up a few nice quotes, ideas, and background
I also learned about
work at Indiana University to port media computation
to Scheme. This is the second such project I've
heard of, after
Sam Rebelsky's work
at Grinnell College connecting Scheme to Gimp.
Late in the morning, we moved on to sound. Mark
demonstrated some wonderful tools for playing with
and looking at sound. He whistled, sang, hummed,
and played various instruments into his laptop's
microphone, and using their MediaTools (written
in Squeak) we could see the different mixes of
tones available in the different sounds. These
simple viewers enable us to see that different
instruments produce their own patterns of sounds.
As a relative illiterate in music, I only today
understood how it is that different musical
instruments can produce sounds of such varied
The best quote of the audio portion of the morning
was, "Your ears are all about logarithms." Note
systems with halving and doubling of frequencies
across sets of notes is not an artifact of culture
but an artifact of how the human ear works!
This was an all-day workshop, but I also had a
role as a
at the New Educators Roundtable in the afternoon,
so I had to duck out for a few hours beginning with
lunch. I missed out on several cool presentations,
including advanced image processing ideas such as
and embossing, but did get back in time to hear
how people are now using media computation to teach
data structures ideas such as linked lists and
graphs. Even with a gap in the day, this workshop
was a lot of fun, and valuable as we consider
expanding my department's efforts to teach
computing to humanities students.
- Mark: "For liberal arts students and business
students, the computer is not a tool of calculation
but a tool of communication.
- The media comp data structures book is built
largely on explaining the technology needed to
create the wildebeest stampede in
The Lion King.
(Check out this
which contains a description of the scene in the
section "Building the Perfect Wildebeests".)
- We saw code that creates a grayscale version of
an image attuned to human perception. The value
used for each color in a pixel weights its original
values as 0.299*red + 0.587*blue + 0.114*green.
This formula reinforces the idea that there are
an infinite number of weightings we can use to
create grayscale. There are, of course, only a
finite number of grayscale versions of an image,
though that number is very large: 256 raised to
a power equal to the number of pixels in the
- After creating several Python methods that modify
an image, non-majors eventually bump into the
need to return a value, often a new image.
Deciding when a function should return a value
can be tough, especially for non-CS folks. Mark
uses this rule of thumb to get them started:
"If you make an image in the method, return
- Mark and Barb use
Making of "The Matrix"
to take the idea of chromakey beyond the example
everyone seems to know, TV weather forecasters.
- Using mirroring to "fix" a flawed picture leads
to a really interesting liberal arts discussion:
How do you know when a picture is fake? This is
a concept that every person needs to understand
these days, and understanding the computations
that can modify an image enables us to understand
the issues at a much deeper level.
- Mark showed an idea proposed to him by students
at one of his workshops for minority high school
boys: when negating an image, change the usual
255 upper bound to something else, say, 180.
This forces many of the resulting values to 0
and behaves like a strange posterize function!