a course that no faculty cared about.
Courses just offered as a “service” get
less attention. By putting all students
in one class, it is in everyone’s interest
to ensure the class is good.
The class received significant faculty interest and used innovative curricula. We started out using Shackelford’s
pseudocode approach to learning. 7
Faculty in the other majors complained
about students not gaining experience
debugging programs. We later moved
to Felleisen et al.’s How to Design Programs text using Scheme. 4 These were,
and are, approaches for teaching computing that have been successfully used
at many institutions.
By 2002, however, CS1321 may have
been the most hated course on campus. From 1999 to 2002, the overall
success rate (leaving the course with
an A, B, or C—not counting those students who received a D, a failing grade,
or withdrew from the course) was 78%.
That’s not too bad for an introductory computing course. 1 However,
this was a course with everyone in it.
When we examine those majors where
a computing requirement is atypical,
we see 46.7% of architecture students
succeeding each semester, 48.5% in
management, and 47.9% in public
policy. We failed more than half of the
students in those majors each semester; females failed at nearly twice the
rate of males. Statistics like these are a
concern for both the Georgia Tech and
the College of Computing—it hinders
our relations with the rest of campus
when computing is the gatekeeper
holding back their students.
Around this time, several studies
were published critiquing computing
courses, including the AAUW’s
Tech-Savvy report2 and Unlocking the Clubhouse by Margolis and Fisher. 6 These
reports describe students’ experiences
in computing as “tedious,” “asocial,”
and surprisingly, “irrelevant.” A 2002
task force, chaired by Jim Foley, found
similar issues at Georgia Tech. How
could computing be “irrelevant” when
it pervades so much of our world? Perhaps the problem was that our course
had little connection to the computing
in our students’ world. While students
are amazed at the Web, handheld video
We chose to teach
computing in terms
of practical domains
(a “context”) that
games, and smartphones, most introductory courses introduce students to
the computing concepts behind these
wonders with Fibonacci numbers and
the Towers of Hanoi. What students
saw as computing was disconnected
from what we showed them in our computing class.
We adopted an approach that we call
contextualized computing education.
We chose to teach computing in terms
of practical domains (a “context”) that
students recognize as important. The
context permeates the course, from
examples in lecture, to homework assignments, and even to the textbooks
specially written for the courses. We
decided to teach multiple courses, to
match majors to relevant contexts.
In spring 2003, the College of Computing began offering three different
introductory computing courses. The
first was a continuation of CS1321,
aimed at computing and sciences majors. The second was a new course for
students in the College of Engineering, with much the same content, but
in MATLAB and using an engineering
context. The third was a new course for
students in the colleges of liberal arts,
architecture, and management using a
context of manipulating digital media.
The engineering course was developed jointly with faculty from the
schools of aerospace, civil, mechanical,
and chemical engineering. Several faculty members in these schools had already started developing an alternative
to CS1321, using MATLAB, a common
programming language in engineering.
Their model involved small classes in a
closed lab working on real engineering
problems. That course was prohibitively expensive to ramp up to over 1,000
engineering students each semester.
The engineering faculty worked with
David Smith of the College of Computing to create a course that used their
examples and MATLAB, but taught the
same computing concepts as CS1321.
The course around “media computation” was built with an advisory board
of faculty from the colleges of liberal
arts, architecture, and management.
The board’s awareness and support
for the course was important in getting
the course approved as fulfilling the
computing requirement in programs
of those colleges. The advisory board
favored a programming language that
was perceived as being easy to learn
but was not associated with “serious”
computer science. We chose the Python implementation, over concerns
about both Scheme and Java.
Media computation is the context of
how digital media tools like Photoshop
and GIMP work. We created cross-plat-form libraries to manipulate pixels in
a picture and samples in a sound. We
taught, for example, iterating across
an array by generating grayscale and
negative versions of an image and array
concatenation by splicing sounds. We
were able to cover all the introductory
computing concepts using media examples. In their homework, students
created pictures, sounds, HTML pages,
and animations. We created an integrated development environment that
provided the media functions as well
as tools for inspecting pictures and
impact of contextualized
Faculty and students are happier with
the new courses. The success rates rose
above 80% in both the engineering and
media courses. When comparing success rates to those same majors mentioned previously, we found the average
success rate in the first two years for architecture students rose to 85.7%, management to 87.8%, and public policy to
85.4% per semester. The media computation course has been majority female, and women succeed at the same
or better rates than the male students.
Similar improvements in success rates
in media computation courses have
been seen among underrepresented
groups at other campuses. 8
New opportunities appear on campus when all students succeed at com-