Teaching Software Engineering to Over 30,000 Students

Monday, May 7, 2012 - 3:27pm


Wednesday, May 23, 2012
3:30 – 4:30 PM
Computer Science Conference Room, Harold Frank Hall Rm. 1132

HOST: Ben Hardekopf

SPEAKER: Armando Fox
Adjunct Associate Professor, UC Berkeley

Title: Teaching Software Engineering to Over 30,000 Students


Via a remarkable alignment of technologies, including cloud computing,
software as a service (SaaS), and Agile development, the future of
software has been revolutionized in a way that is also a much better
match to the classroom than earlier software development methods. Over
the past 3 years we have been reinventing UC Berkeley’s undergraduate
software engineering course to cross the long-standing chasm between
what many academic courses have traditionally offered and the skills
that software employers expect in new hires: enhancing legacy code,
working with nontechnical customers, and effective testing. “Two-pizza”
teams of 4 to 6 students create and deploy a prototype of a
customer-specified app (primarily nonprofits) on the public cloud using
the Rails framework and Agile and Extreme Programming (XP) techniques,
including user stories and behavior-driven design to reach agreement
with the customer, test-driven development to reduce mistakes, and four
2-week iterations during which they continuously refine the prototype
based on customer feedback. The iterative process allows students to
experience the entire software lifecycle–requirements gathering,
testing, development, deployment, and enhancement–multiple times during
a 14-week semester.

Because of Rails’ first-rate tools for testing and code quality,
students learn by doing rather than listening, and instructors can
concretely measure student progress. We also successfully repurposed
these tools to support nontrivial machine grading of complete
programming assignments, allowing us to scale the on-campus course from
35 to 115 students and offer a Massively Open Online Course (MOOC) to
over 35,000 students.

Our experience has been that students love the course because they learn
real-world skills while working with a real customer,
instructors love it because students actually practice what they learn
rather than listening to lecture and then coding the way they always
have, and employers love it because students acquire vital skills
missing from previous software engineering courses.

We are hoping for curricular technology transfer by recruiting a dozen
universities to participate in a Beta test for Fall 2012.


Armando Fox is an Adjunct Associate Professor at UC Berkeley and a
co-founder of the Berkeley AMP Lab, a new project that combines cloud
computing, applied machine learning and crowdsourcing to tackle big-data
problems. During his previous time at Stanford, he received teaching
and mentoring awards from the Associated Students of Stanford
University, the Society of Women Engineers, and Tau Beta Pi Engineering
Honor Society. He was named one of the “Scientific American 50″ in 2003
and is the recipient of an NSF CAREER award and the Gilbreth Lectureship
of the National Academy of Engineering. In previous lives he helped
design the Intel Pentium Pro microprocessor and founded a successful
startup to commercialize his UC Berkeley dissertation research on mobile
computing. He received his other degrees in electrical engineering and
computer science from MIT and the University of Illinois and is an ACM
Distinguished Member.