No Slide Title

Download Report

Transcript No Slide Title

Programming and the CS Curriculum:
The More Things Change . . .
Eric Roberts
Professor of Computer Science, Stanford University
Past Chair of the ACM Education Board
FLICS
Swarthmore College
November 6, 2008
The Pipeline Paradox in Computing
• The computing industry offers some of the best employment
opportunities for college graduates in the United States today:
– The number of jobs in the domestic software industry are at an all-time
high and are projected to grow dramatically over the next decade.
– Salaries for newly minted B.S. graduates in Computer
Employment Science are
high, sometimes exceeding the $100,000 mark. (thousands)
Growth
Top 10 job growth categories (2006-2016)
2006
2016
– In
2005,systems
Money
rated software
1.
Network
andmagazine
data communications
analysts engineer
262as the
402number
53.4 one
job in America.
2. Personal and home care aides
767
1,156
50.6
–
Employment
in
this
area
is
vital
for
national
competitiveness.
3. Home health aides
787
1,171
48.7
4.
Computer software engineers, applications
507
733
44.6
• At
same
time, and
student
interest in these71 disciplines
5. the
Veterinary
technologists
technicians
100
41.0has
plummeted.
The
Computing Research Association
(CRA)
6. Personal financial
advisors
176
248
41.0
Google and Facebook are fighting hard to hire this year’s
estimates
that computing
enrollments
by3almost
7. Makeup
theatrical
and performance
2
39.8 50
crop of artists,
computer
science graduates,
we’ve heard, andhave fallen
ground zero is Stanford. Most of the class of 2008 already
percent
since
their
peak
in is2000.
8. Medical
assistants
465
148
35.4
have job
offers even
though
graduation
months away.
•
Last year, salaries of up to $70,000 were common for the
9. Veterinarians
best students. This year, Facebook is said to be offering
ThisSubstance
decline
has
been
more
rapid
$92,000,
and
Google
increasedeven
some
offers
to $95,000
10.
abuse
andhas
behavioral
disorder
counselors
62
84
35.0
among
women
83
112
34.3and
to get their share of graduates. Students with a Master’s
minority
students,
reducing
diversity
as theProjections:
pool shrinks.
in
Computer
Science
are of
being
offered
as much
as
Source: U.S.degree
Department
of Labor,
Bureau
Labor
Statistics,
Employment
2006-16, December 2007.
$130,000 for associate product manager jobs at Google.
Degree Production vs. Job Openings
160,000
140,000
120,000
100,000
Ph.D.
Master’s
Bachelor’s
Projected job openings
80,000
60,000
40,000
20,000
Engineering
Physical Sciences
Biological Sciences
Computer Science
Sources: Adapted from a presentation by John Sargent, Senior Policy Analyst, Department of Commerce, at the
CRA Computing Research Summit, February 23, 2004. Original sources listed as National Science
Foundation/Division of Science Resources Statistics; degree data from Department of Education/National
Center for Education Statistics: Integrated Postsecondary Education Data System Completions Survey;
and NSF/SRS; Survey of Earned Doctorates; and Projected Annual Average Job Openings derived from
Department of Commerce (Office of Technology Policy) analysis of Bureau of Labor Statistics 2002-2012
projections. See http://www.cra.org/govaffairs/content.php?cid=22.
The Need for Greater Understanding
I have not seen a compelling narrative for the decline in student interest.
— Bill Gates, Stanford University,
February 19, 2008
• The failure of universities to produce a sufficient number of
graduates with the necessary computing skills is now widely
recognized as a crisis in both academia and industry.
• Unfortunately, the underlying causes for the decline in student
interest are not well understood. Although several theories
seek to explain the decline in student interest, they do not
provide a comprehensive explanation of student behavior.
• These slides represent an early attempt toward developing a
“compelling narrative” of the sort Bill Gates described during
his visit to Stanford. That narrative is as yet incomplete, and I
welcome any comments and criticism.
Why this Paradox?
1. Fears about the long-term economic stability of
employment in the computing industry continue to have a
profound effect on student interest in our discipline.
2. The kind of exposure students get to computing at the
elementary and secondary level tends to push people
away from the discipline long before they reach the
university.
3. The image of work in the field—and, more importantly,
all too much of the reality of work in the field—is
unattractive to most students and no longer seems fun,
particularly in comparison to other opportunities that
bright students might pursue.
4. The university curriculum is somehow broken and needs
a radical overhaul.
The Curriculum Has a Second-Order Effect
• The computing curriculum as traditionally implemented has
deficiencies and can always be improved.
• As an explanation for declining enrollments, however, the
“curriculum is broken” theory has serious shortcomings:
1. It cannot explain why enrollments have varied so much over time.
2. It fails to account for the fact that institutions saw a similar loss of
enrollment even when their curricula were different. Most of the
proposed curriculum improvements were in place somewhere in
2000-01, but declines occurred everywhere. The resurgence of
enrollment in the last year also seems independent of curriculum.
3. Students decide to avoid computing long before they have any
idea what the university curriculum is.
The Curriculum Has a Second-Order Effect
3. Students decide to avoid computing long before they have any
idea what the university curriculum is.
Source: Higher Education Research Institute at UCLA, 2005
The Curriculum Has a Second-Order Effect
• The computing curriculum as traditionally implemented has
deficiencies and can always be improved.
• As an explanation for declining enrollments, however, the
“curriculum is broken” theory has serious shortcomings:
1. It cannot explain why enrollments have varied so much over time.
2. It fails to account for the fact that institutions saw a similar loss of
enrollment even when their curricula were different. Most of the
proposed curriculum improvements were in place somewhere in
2000-01, but declines occurred everywhere. The resurgence of
enrollment in the last year also seems independent of curriculum.
3. Students decide to avoid computing long before they have any
idea what the university curriculum is.
4. Students who take our courses tend to like them but still shy away
from the computer science major.
Students Like Our Courses But Go Elsewhere
Gateway Gateway
Course for
Course
Management
for Computer
ScienceScience
& Engineering
Computer Science
Management Science & Engineering
student
flow
Why this Paradox?
1. Fears about the long-term economic stability of
employment in the computing industry continue to have a
profound effect on student interest in our discipline.
2. The kind of exposure students get to computing at the
elementary and secondary level tends to push people
away from the discipline long before they reach the
university.
3. The image of work in the field—and, more importantly,
all too much of the reality of work in the field—is
unattractive to most students and no longer seems fun,
particularly in comparison to other opportunities that
bright students might pursue.
The Real Image Problem
http://www.youtube.com/watch?v=CmYDgncMhXw
The Reality Is Also a Problem
Has anyone considered the possibility that it’s just not fun anymore?
—Don Knuth, October 11, 2006
• Students at Stanford have expressed the following concerns:
– Long hours with little chance for a balanced life
– A less pleasant social milieu than other occupations
The Code-Rush Syndrome
The Reality Is Also a Problem
Has anyone considered the possibility that it’s just not fun anymore?
—Don Knuth, October 11, 2006
• Students at Stanford have expressed the following concerns:
– Long hours with little chance for a balanced life
– A less pleasant social milieu than other occupations
– A sense that success in programming is possible only for those
who are much brighter than they see themselves to be
– Work that is often repetitive and unchallenging, particularly
when it involves maintaining legacy technology
– Programming has become more difficult than it used to be
– No chance for a lasting impact because of rapid obsolescence
– Fears that employment with an individual company is dicey even
though opportunities are good in the industry as a whole
– Frustration at being managed by nontechnical people who make
more money but are not as bright (Dilbert’s boss)
Dilbert’s Boss Has More Appeal than Dilbert
Everyone knows who the pointy-haired boss is, right? I think most people
in the technology world not only recognize this cartoon character, but
know the actual person in their company that he is modelled upon.
— Paul Graham, May 2002
But the Reality Is Also a Problem
Has anyone considered the possibility that it’s just not fun anymore?
—Don Knuth, October 11, 2006
• Students at Stanford have expressed the following concerns:
– Long hours with little chance for a balanced life
– A less pleasant social milieu than other occupations
– A sense that success in programming is possible only for those
who are much brighter than they see themselves to be
– Work that is often repetitive and unchallenging, particularly
when it involves maintaining legacy technology
– Programming has become more difficult than it used to be
– No chance for a lasting impact because of rapid obsolescence
– Fears that employment with an individual company is dicey even
though opportunities are good in the industry as a whole
– Frustration at being managed by nontechnical people who make
more money but are not as bright
– A perception that programmers are definitely on the labor side of
the labor/capital divide
The Capital-Labor Divide
Capital
Labor
Dangerous Trends
We have met the enemy and he is us.
— Walt Kelly
• As an illustration of this trend, consider the following post that
appeared on SIGCSE-MEMBERS on August 14, 2006:
I have an idea for a panel that I’d like to organize for SIGCSE’07. I’m asking for
volunteers (or nominations of others) to serve on the panel. The panel I’d like to
organize would have a title something like:
“Alternative Models for a Programming-lite Computer Science Curriculum”
The theme of the panel would be to share ideas and thoughts on how we might
reduce (or eliminate) the emphasis on programming within a computer science
curriculum. The basic idea is to cause discussion centered on the knowledge and
skills students of tomorrow will need in the global economic workspace and the
implications for the CS curriculum. As more and more aspects of software
development of “offshored”, what kind of curriculum would allow a student to be
successful in the IT field?
Industry Is Not Amused
• Every technical person in the industry with whom I’ve spoken
is horrified by the prospect of reducing the emphasis on
programming in the undergraduate curriculum.
• At an ACM Education Council meeting in September 2007, a
panel of technical people from companies like Microsoft,
Google, Amazon, and Boeing were united in their concern
about the scarcity of competent software developers. I have
summarized their position as “the computing curriculum is not
nearly as broken as it seems likely to become.”
• Employers in developed countries with high-tech sectors are
desperate for more people with programming talent. In his
keynote at ITiCSE 2007 in Dundee, Scottish entrepreneur Chris
van der Kuyl said that the lack of programming talent was the
greatest limiting factor in the industry. He called it coding.
Industry Reports a Labor Shortage
— April 28, 2005
Gates Cites Hiring Woes, Criticizes Visa Restrictions
By David A. Vise
Microsoft Corp. Chairman Bill Gates said yesterday the software giant is having
enormous difficulty filling computer jobs in the United States as a result of tight visa
restrictions on foreign workers and a declining interest among U._S. students in computer
science.
<tab>Speaking on a technology panel at the Library of Congress, Gates said a decline in the
number of U._S. students pursuing careers in science and technology is hurting Microsoft
in the short run, and could have serious long-term consequences for the U._S. economy if
the problem is not addressed.
<tab>“We are very concerned that the U._S. will lose its competitive position. For
Microsoft, it means we are having a tougher time hiring,” Gates said. “The jobs are there,
and they are good-paying jobs, but we don’t have the same pipeline.”
http://www.washingtonpost.com/wp-dyn/content/article/2005/04/27/AR2005042702241.html
There Are Also Contrary Arguments
— January 26, 1998
Now Hiring! If You’re Young
By Norman Matloff
DAVIS, Calif—Readers of recent reports about a shortage of computer programmers
would be baffled if they also knew that Microsoft hires only 2 percent of its
applicants for software positions. Even among those applicants whom Microsoft
invites to its headquarters for interviews, according to David Pritchard, the director of
recruiting, the company makes offers to only one in four.
<tab>You don’t have to be a “techie” to see that such a low ratio, typical for the
industry, contradicts the claims of a software labor shortage. If companies were that
desperate, they simply could not be so picky.
http://query.nytimes.com/gst/fullpage.html?res=9E0CE6DF123BF935A15752C0A96E958260
Matloff argues that there is no programmer shortage. The only
clear conclusion one can draw from the data is that companies
perceive a shortage in applicants who pass their quality threshold.
And Closer to Home
In the July 2008 Communications
of the ACM, Villanova professor
Stephen Andriole and I debated
the relevance of programming in
the computing curriculum. Steve
argues that the commodification
of enterprise software means that
there is no longer as much need
for programming expertise in that
sector. I respond that this sector
is only one of many, and that the
overall demand for people with
programming not only remains
large, but continues to grow.
Programming Remains Central
• Calls to “reduce or eliminate” programming from computing
curricula arise from some undeniable assumptions:
– There are more jobs in IT that don’t require programming.
– Programming is not particularly popular with students today.
– Offshoring of programming jobs has increased.
• Unfortunately, this analysis ignores the following equally valid
propositions:
–
–
–
–
There are more jobs in IT that do require programming.
Programming has historically been what attracts students the most.
Globalization has created more IT jobs in India/China and the U.S.
Offshoring exists largely because of a shortfall of skilled employees.
A Thought Experiment about Offshoring
• Suppose that you are Microsoft and that you can hire a
software developer from Stanford whose loaded costs will be
$200,000 per year. Over in Bangalore, however, you can hire a
software developer for $75,000 per year. Both are equally
talented and will create $1,000,000 annually in value. What do
you do?
• Although the developer in Bangalore has a higher return, the
optimal strategy is to hire them both. After all, why throw away
$800,000 a year?
• Any elementary economics textbook will explain that one hires
as long as the marginal value of the new employee is greater
than the marginal cost. The essential point is that companies
seek to maximize return, and not simply to minimize cost.
Critical Observations about Software
1. Software development is an extraordinarily difficult task,
exceeding in complexity most other engineering work.
That difficulty, moreover, is intrinsic to the discipline and
is not likely to change in the foreseeable future.
2. Despite advances in tools and methodologies (and
because of those advances to some extent), software
development and software education have become more
difficult over the history of the field.
3. Software development requires people with an unusual
combination of skills. Those people are in short supply,
but their economic value is enormous. Experienced
programmers differ in productivity by several orders of
magnitude.
Critical Observations about Software
1. Software development is an extraordinarily difficult task,
exceeding in complexity most other engineering work.
That difficulty, moreover, is intrinsic to the discipline and
is not likely to change in the foreseeable future.
2. Despite advances in tools and methodologies (and
because of those advances to some extent), software
development and software education have become more
difficult over the history of the field.
3. Software development requires people with an unusual
combination of skills. Those people are in short supply,
but their economic value is enormous. Experienced
programmers differ in productivity by several orders of
magnitude.
Essential and Accidental Complexity
To see what rate of progress one can
expect in software technology, let us
examine the difficulties of that
technology. Following Aristotle, I divide
them into essence, the difficulties
inherent in the nature of software, and
accidents, those difficulties that today
attend its production but are not
inherent. . . .
The complexity of software is an
essential property not an accidental one.
Hence, descriptions of a software entity
that abstract away its complexity often
abstract away its essence.
—Fred Brooks
“No Silver Bullet”
IEEE Computer, April 1987
Critical Observations about Software
1. Software development is an extraordinarily difficult task,
exceeding in complexity most other engineering work.
That difficulty, moreover, is intrinsic to the discipline and
is not likely to change in the foreseeable future.
2. Despite advances in tools and methodologies (and
because of those advances to some extent), software
development and software education have become more
difficult over the history of the field.
3. Software development requires people with an unusual
combination of skills. Those people are in short supply,
but their economic value is enormous. Experienced
programmers differ in productivity by several orders of
magnitude.
The March of Progress
1536 pages
911 pages
266 pages
274 pages
Sobering Thoughts
• There are more public methods in the java and javax
package hierarchies than there are words in Jensen and Wirth’s
Pascal User Manual and Report. The amount of explanation
once deemed sufficient to teach the standard introductory
programming language is thus no longer sufficient for an index
of the operations available today.
• Typical software today exists at a level of scale and complexity
that would have been unthinkable a generation ago. The most
common operating system used in mobile phones, for example,
contains approximately 100 million lines of code.
• Given the scale of modern software systems, it is typically
impossible for students to develop projects as extensions to
existing code frameworks. An academic term is now barely
sufficient to understand what is already there, leaving no time
for further development?
An Illustrative Example
In their book Java Puzzler, Josh Bloch and
Neal Gafter pose a variety of puzzles to test
the reader’s understanding of Java, including
the following:
Students are regularly taught that the statements
x++;
and
x += 1;
are equivalent.
In Java, describe a situation in which the first
statement is legal, but not the second. How
about the other way around?
Java Scoping
If you execute the
program shown at
the right in Java,
what output will it
generate? Why?
public class ScopeTest {
public static void main(String[] args) {
C1 obj = new C2();
System.out.println(obj.fn(obj));
}
}
class C1 {
public static final int N = 1;
public int fn(C1 obj) {
return 10 + obj.N;
}
}
class C2 extends C1 {
public static final int N = 2;
public int fn(C1 obj) {
return 20 + obj.N;
}
}
Critical Observations about Software
1. Software development is an extraordinarily difficult task,
exceeding in complexity most other engineering work.
That difficulty, moreover, is intrinsic to the discipline and
is not likely to change in the foreseeable future.
2. Despite advances in tools and methodologies (and
because of those advances to some extent), software
development and software education have become more
difficult over the history of the field.
3. Software development requires people with an unusual
combination of skills. Those people are in short supply,
but their economic value is enormous. Experienced
programmers differ in productivity by several orders of
magnitude.
Variations in Programmer Productivity
• In 1968, a study by Sackman, Erikson, and Grant revealed that
programmers with the same level of experience exhibit variations
of more than 20 to 1 in the time required to solve particular
programming problems.
• More recent studies [Curtis 1981, DeMarco and Lister 1985,
Brian 1997] confirm this high variability.
• Most industry insiders believe that the productivity variance is
even higher today. In 2005, Google’s VP for Engineering, Alan
Eustace, told The Wall Street Journal that one top-notch engineer
is worth 300 times or more than the average.
The Microsoft Programming Personae
Microsoft’s cultural lore defines three types of programmers:
Mort is your most common developer, who doesn’t have a CS
background, may even be a recent newcomer, and doesn’t quite
understand what the computer is doing under the covers, but who
writes the dinky IT programs that make businesses run. Elvis, more
knowledgeable, cares about code quality, but has a life too. Einstein
writes some serious-ass piece of code like device drivers, wants to
get things done, needs to be able to go low level and high level,
needs a language without restrictions to get his job done.
— Wesner Moise, “Who are you? Mort, Elvis or Einstein,” September 25, 2003
http://wesnerm.blogs.com/net_undocumented/2003/09/who_are_you_mor.html
For the most part, Microsoft (along with
Google and other first-rank companies)
are seeking to hire the Einsteins, which
explains the low hiring ratio.
Productivity Variations Are Common
• The idea that individuals might differ in productivity by two or
more orders of magnitude initially seems hard to believe.
• In fact, such differences in effectiveness occur across a range of
occupational categories:
–
–
–
–
–
–
Mathematicians
Creative artists (writers, composers, poets, painters)
Performers (musicians, actors)
Motion picture directors
Financial wizards, CEOs
Professional athletes
• No one achieves mastery in any of these fields on the basis of
raw talent alone. Training and practice are essential.
• This fact suggests that the education of software developers
may need to adopt pedagogical strategies from these disciplines.
Paul Graham’s Hackers and Painters
When I finished grad school in computer science I went to
art school to study painting. A lot of people seemed surprised
that someone interested in computers would also be
interested in painting. They seemed to think that hacking and
painting were very different kinds of work—that hacking
was cold, precise, and methodical, and that painting was the
frenzied expression of some primal urge.
<tab>Both of these images are wrong. Hacking and painting
have a lot in common. In fact, of all the different types of
people I’ve known, hackers and painters are among the most
alike.
<tab>What hackers and painters have in common is that
they’re both makers. Along with composers, architects, and
writers, what hackers and painters are trying to do is make
good things.
http://www.paulgraham.com/hp.html
Paul Graham
(photo by Niall Kennedy)
Dick Gabriel’s Proposal for a Software MFA
Softwareapt
education
todaycan
is be
embodied
Computer
Another
comparison
found ininthe
creative Science
writing
and ItSoftware
programs,
supplemented
by
arts.
is entirelyEngineering
possible to become
an extraordinary
writer
informal
mentoring
on the
job. and
I find
this and
approach
by
one’s self,
by simply
writing
reading,
many
unsatisfactory.
development
is a way
performance
excellent
writers Software
progress this
way. A faster
to gain
exhibiting skills
developed
an individual—often
in
competence
is through
a Masterbyof Fine
Arts program, which
groups
of teams
in order
to achieve
is
designed
to rapidly
increase
one’s the
skillsscale
and ofto software
get one
required. toInbring
this way,
software
is like
putting
prepared
to bear
criticaldevelopment
thinking to the
process
of
on a play, which
requires Some
the skills
and that
performances
continuing
improvement.
believe
all aspectsofofa
number of
people
in tandem
on stage
and behind
software
design
andworking
development
are really
engineering
or
the scenes.disciplines
Such skillswhere
can bethe
developed
in isolation
through
scientific
models of
engineering
and
practice apply,
with other
even by
putting
in
science
and Iamateurs
will notorquarrel
with
themon
norplays
try to
public without
any training
convince
them otherwise.
. . . at all. But how much faster
could
be is
developed
educational
that
<tab>
Thistalent
proposal
predicatedinona the
belief that program
being a good
recognizeddesigner
that writing
software has
enoughtalent,
of an and
arts-like
software
and developer
requires
that
performance
programliken
was the
tailored
to it?of
talent
can be component
developed. that
We the
explicitly
practice
software to the practice of fine art.
http://www.dreamsongs.com/MFASoftware.html
Dick Gabriel
software wizard
prizewinning poet
Alternative Models of Software Education
Although Dick Gabriel’s model of an MFA
in software is worth investigating, it may be
more appropriate to create “conservatories”
for the teaching of software arts, similar to
music conservatories. One possibility might
be some sort of New England Conservatory
of Coding. (Or
Or perhaps
perhaps a Hogwarts School
for Software Wizardry.)
Wizardry.
SEMESTER AT C++
SEA
Another model might be to create intensive
programs that encourage students to focus on
the art of software development, in much the
same way that programs like the University
of Virginia’s Semester at Sea program offers
a concentrated immersion in oceanography,
geography, and cultural anthropology.
Three Student Personae
Taking a cue from Microsoft’s classification of programmers, it
is interesting to think about different students that computer
science attracts:
• In the boom years, we tended to attract the entrepreneur, lured by
the dream of start-up riches. That student now heads for finance.
• Most academic programs tend to focus on creating the engineer,
but that lifestyle strikes today’s students as boring.
• We need to attract the artist—someone who can appreciate the
passion, beauty, joy, and awe that make our field exciting.
And consider not only how much easier
it is to find female artists to serve as
role models but also how much easier it
is to convince women that the lifestyle
of an artist might be attractive.
Georgie
Dora
Mary
Frida
Emily
Carrington
Cassatt
O’Keeffe
Kahlo
Carr
Knuth’s Turing Award Lecture (1974)
Implicit
in these remarks
is began
the notion
that there
is
When
Communications
of the ACM
publication
in 1959,
something
undesirable
an area
of human
that is
the members
of ACM’sabout
Editorial
Board
made activity
the following
classified
andescribed
“art”; it has
be a Science
before
it has any
remark as as
they
the to
purposes
of ACM’s
periodicals:
real stature. On the other hand, I have been working for more
“If 12
computer
programming
to become
important
than
years on
a series ofis books
calledan “The
Art of
part of computer
researchPeople
and development,
a transition
Computer
Programming.”
frequently ask
me why I
of programming
fromin an
to apeople
disciplined
science
picked
such a title; and
factartsome
apparently
don’t
must be
believe
thateffected.”
I really did so, since I’ve seen at least one
bibliographic reference to some books called “The Act of
<tab>Such a goal has been a continually recurring theme during
Computer Programming.”
the
ensuing years; for example, we read in 1970 of the “first
<tab>In this talk I shall try to explain why I think “Art” is the
steps
towardword.
transforming
the art
into a
appropriate
I will discuss
whatofit programming
means for something
science.”
we have
actually
succeeded
in making
to be an Meanwhile
art, in contrast
to being
a science;
I will
try to
our
discipline
a
science,
and
in
a
remarkably
simple
examine whether arts are good things or bad things; and Iway:
will
merely
by
deciding
to
call
it
“computer
science.”
try to show that a proper viewpoint of the subject will help us
all to improve the quality of what we are now doing.
<tab>
http://doi.acm.org/10.1145/361604.361612
Don Knuth
ACM Turing Award
1974
What We Need To Do
• Recognize that the problems extend well beyond the university.
• Press government and industry to improve computing education
at the K-12 level, possibly through public-private partnerships.
• Take creative steps to bolster both the image and the reality of
work in the profession.
• Make it clear to students (as well as faculty) that programming
remains essential to much of the work in the field.
• Emphasize the “beauty” of programming by focusing more
attention on software as an art.
• Explore new styles of pedagogy that are more finely attuned to
artistic domains.
Beauty is truth, truth beauty, that is all
Ye know on earth, and all ye need to know.
— John Keats, “Ode on a Grecian Urn,” 1819
The End