Follow us on Twitter at http://twitter.com/blogCACM
The Communications Web site, http://cacm.acm.org,
features more than a dozen bloggers in the BLOG@CACM
community. In each issue of Communications, we’ll publish
selected posts or excerpts.
Judy Robertson
Reflections on
Using App Inventor
to Teach First-Year
Programming
http://bit.ly/1comZhZ
February 21, 2014
Every so often, I take the plunge and
completely revamp the courses I
teach. This year, after some nagging
from students that they really wanted
to learn more about mobile app development, I decided to introduce
Android development to my first-year
programming class.
In the first semester, our first-years
learn logic, an introduction to Java,
a study skills course, and my course,
which is called Interactive Systems.
I designed Interactive Systems to
be a fun introduction to program-
ming where the students come up
with creative design ideas, attempt
to implement these ideas, tie them-
selves in knots adjusting their plans,
and generally come to grips with in-
dependent learning. Previously, the
bit.ly/MJ0jfC) seemed like a good ap-
proach, so my co-instructor Gudmund
Grov ( http://bit.ly/1n2Kpu8) and I de-
cided to adopt it. It is a Scratch-like
visual programming environment
that targets Android. Better still, it
has a wealth of ready-developed, peda-
gogically sound teaching materials,
such as Course in a Box ( http://bit.ly/
No9jb7). I like the flipped classroom
model in which the students read text-
book chapters, tried lab exercises, and
then came to lectures to consolidate
underlying concepts.
The practical examples that come
in the textbook are well structured
and easy to follow. The students liked
them, but were not particularly chal-
lenged by them (in fact, I have seen a
10-year-old whiz through the same ex-
ercises). Sometimes the students told
me they worked through the exercises
mechanically, without really absorbing
the material.
The real challenge came when we
asked the students to come up with
their own ideas for an app and imple-
ment it over the next 10 weeks. It can be
difficult for students to estimate how
difficult a task will be. The representa-
tion and features of the App Inventor
interface make certain tasks (which
would be hard for beginners in an or-
dinary development environment)
trivial. For example, working with data-
bases and using QR codes are both easy
and quick to accomplish. Other tasks
are almost impossible in App Inventor,
or are tedious to achieve. It was there-
fore hard to guide students on how am-
bitious they should be in their designs.
students made an interactive 3D pet
in Second Life ( http://bit.ly/1fCDLu3),
but as much as I loved seeing their
pets, I could not escape the feeling
that Second Life was getting old and
creaky. I wanted some other environ-
ment where the students could build
something visual and immediate,
something motivating, something of
which they could be proud. Develop-
ing Android applications seemed to fit
the bill, but only if I could find a way to
pitch it at the correct level.
As in many universities, our first-years have a range of programming
experience when they come to us: people who have never programmed before, Visual Basic hackers, increasingly Scratch adepts, and the inevitable
few whose first words were in syntactically correct C. It can be difficult to
find the correct pace. It seemed unfair
to the novices to expect them to learn
Android development at the same
time they learned the basics of Java in
my colleagues’ classes, yet I wanted
them to have some early successes in
programming. App Inventor (http://
Rethinking How
to Teach Programming
to Newcomers
Judy Robertson reviews what happened when she decided
to introduce Android development into the curriculum for
first-year computer science students.
DOI: 10.1145/2591203 http://cacm.acm.org/blogs/blog-cacm