tive impact on teaching program de-
sign,” Krishnamurthi says. “The best
program design methods we have right
now focus on data-driven design, which
derive from the structure of data.”
Additionally, Python has limited sup-
port for testing, he says. Even though it
has professional testing libraries, he
says they can be “onerous for beginning
students; the language provides no na-
tive support for it, which makes the user
interface of testing significantly weaker
than it should be.” Testing is not just a
matter of finding bugs, he adds. “It also
guides students towards the design of
solutions and greatly affects how one
views debugging. Thus, another vital
design and development methodology
is taken away.”
Lastly, Python lacks static types,
says Krishnamurthi, which “is a cen-
tral point in teaching programming,
and should not be put off for too long.
Python offers no good means for
teaching this.”
Guo says he got some backlash
from older colleagues who do not
view Python as a serious program-
ming language, along with comments
that it is not as “industrial strength”
as other languages. One comment
he received after posting his blog on
the topic is that Python is a dynami-
cally typed language and “There’s
fair amount of instructors who prefer
statically typed languages, like Java,”
Guo says. “So they aren’t as happy
about this new movement.”
Mark Guzdial, a professor in the
School of Interactive Computing at
Georgia Tech, says Guo’s research not-
withstanding, Java is still the most pop-
ular introductory programing language
in the U.S. Guo “constrained his search
to top U.S. universities,” Guzdial says,
“and in general, if you look at book
sales, Java is still the most common
[language taught] and C++ is second.”
Yet, Guzdial agrees that if someone
lacks any prior programming experi-
ence, Python is a good language with
which to start. “There’s a significant
amount of evidence that graphical
programming languages are easier
for people to get started with than tex-
tual,” he says. “If you understand vari-
ables in Scratch, it’ll be easier to un-
derstand variables or conditionals or
loops in Python.”
Like Krishnamurthi, Guzdial thinks
Python may broaden the scope of
people being able to code. “It is easier
and more accessible and … you can get
more done in fewer lines of code.”
Matt Guthmiller, a sophomore ma-
joring in electrical engineering and
computer science at MIT, says he was
not terribly surprised by Guo’s find-
ing. Guthmiller took his first Python
class as a freshman at MIT, but he al-
ready knew how to code in C, C++, and
JavaScript. “It definitely seems to make
a lot of sense as an introductory tool
because it’s easy to learn, with lots of
functionality built in, and you can do
things that in other languages you’d
have to build yourself, and [in Python]
they’re provided for you.”
He likes that Python allows you
summarize a list of data in one line
of code, whereas in other languages it
would take multiple lines. “You have
to think about the order you want to
iterate these items and implement
namurthi, a professor of computer
science at Brown University, acknowl-
edges Python has many nice features.
“It offers a pleasant syntax, a large set
of libraries, and an interaction loop …
all of which are very useful for teaching.
Compared to the noise and complex-
ity of Java, it is indeed a very nice step
forward.” He agrees Python has made
people feel more comfortable about ex-
posing programming to a much broad-
er audience of students.
“There are many students I would
not dream of teaching Java to that I
would happily show Python.” That
said, however, it does not take long to
discover Python’s weaknesses, Krish-
namurthi notes. Among them are that
“Creating non-trivial data structures
is onerous, because Python does not
provide straightforward means for
creating new structured data. You
have to understand a bunch of unre-
lated concepts, like classes, and their
onerous syntax and tricky semantics,
which greatly reduces the benefit of
simplicity that Python was supposed
to offer.”
Because of this, he believes more
and more curricula are ditching the
idea of structured data—one of the cen-
tral concepts in computer science—
and doing one of two things: shaping
their curriculum to avoid them, or
pushing students to encode more-
structured data in less-structured for-
mats provided by default in Python.
“This lack of data structuring and
classification has a significant nega-
“Choosing Python
is the modern
equivalent of the
old adage, ‘nobody
ever got fired for
buying IBM.’”
30
25
20
15
10
5
0
Python Java MATLAB C C++ Scheme Scratch
Number of top 39 U.S. computer science departments
that use each language to teach introductory courses
Analysis done by Philip Guo ( www.pgbovine.net) in July 2014, last updated 2014-07-29