into a course. Similarly, no one questions the value of emphasizing testing—the question is how to get students to take it seriously.
Instructors respond that even if we
agreed with the recommendations,
time constrains how much one class
can cover. A typical undergraduate
workload of four courses per term and
a 50-hour workweek gives students
about 12 hours per week per course,
including lectures, labs, exams, and so
forth. This works out to approximately
120 hours per quarter to 180 hours per
semester, or just three to four weeks
for a full-time developer!
A Classroom opportunity:
Agile Development
The Agile Manifesto signaled a paradigm shift for many software applications. This approach embraces change
as a fact of life; small teams of developers continuously refine a working
but incomplete prototype until the
customer is happy with the result, with
the customer offering feedback with
every iteration. Agile emphasizes
Test-Driven Developmentc (TDD) to reduce
mistakes, which addresses industry’s
request to make testing a first-class citizen; user storiesd to reach agreement
and validate customer requirements,
which addresses working with nontechnical customers; and velocitye to
measure progress. The Agile software
philosophy is to make new versions
available every two weeks. The assumption is basically continuous code
refactoring over its lifetime, which develops skills that can also work with
legacy code. Clearly, small teams and
multiple iterations of incomplete prototypes could match the classroom.
Note that we do not tell students
that Agile is the only way to develop
software; indeed, we explain Agile is
inappropriate for safety-critical apps,
for example. We believe that new pro-
gramming methodologies develop
and become popular in response
c In TDD you first write a failing test case that
defines a new feature, and then write code to
pass that test.
d A user story is a few nontechnical sentences
that captures a feature the customer wants to
include in the app.
e Velocity is calculated by estimating units of
work per user story and then counting how
many units are completed.
the only hope for
addressing all the
concerns from
industry within
the course time
constraints is to use
a highly productive
programming
framework.
to new opportunities, so we tell students to expect to learn new methodologies and frameworks in the future.
Our experience is that once students
learn the classic steps of software development and have a positive experience in using them via Agile, they will
use these key software engineering
principles in other projects no matter which methodology is used (see
Figure 5).
A Classroom target for the Post-
PC era: “i Do and i understand”
To motivate students, it is helpful to
use a platform that allows them to create compelling apps. In this emerging
post-PC era, mobile applications for
smartphones and tablets and Software
as a Service (SaaS) for cloud computing
are both compelling. ( 50,000 students
are evidence that SaaS is indeed compelling.) As you can teach the principles with either target, given the time
constraints mentioned earlier, why
not pick the platform that has the most
productive tools? Our view is that the
only hope for addressing all the concerns from industry within one course
is to use a highly productive programming framework.
Our experience is that the Rails ecosystem has by far the best tools to support test-driven development, behavior-driven design, and Agile processes,
many of which are made possible by
intellectually deep Ruby language features such as closures, higher-order
functions, functional idioms, and
Calendar
of Events
May 15–17
Computing frontiers
Conference,
Caligari, Italy,
Sponsored: SIGMICro,
Contact: John feo,
email: john.feo@pnl.gov,
Phone: 509-375-3768
May 15–16
Workshop on Software and
Compilers for embedded
Systems,
Sankt Goar, Germany,
Contact: Henk Corporaal,
email: h.corporaal@tue.nl
May 16–21
The 9th Annual Conference on
Theory and Applications on
Models and Computation,
Beijing, China,
Contact: li Angsheng,
email: angsheng@ios.ac.cn
May 21–24
6th International Conference
on Pervasive Computing
Technologies
for Healthcare,
San Diego, CA,
Contact: Dr. rosa I. Arriaga,
email: arriagea@cc.gatech.edu
May 21–25
Shape Modeling International,
College Station, TX,
Contact: ergun Akleman,
email: ergun.akleman@gmail.
com,
Phone: 979-845-6599
May 21–25
The 2012 International
Conference on Collaboration
Technologies and Systems,
Denver, Co,
Contact: Geoffrey fox,
email: gcfexchange@gmail.com
May 22–25
International Working
Conference
on Advanced Visual Interfaces,
Capri Islands (Naples), Italy,
Contact: Tortora Genoveffa,
email: tortora@unisa.it
May 23–25
euro-American Conference on
Telematics and Information
Systems,
Valencia, Spain,
Contact: Samper J. Javier,
email: jjsamper@uv.es