What do CS students learn?
On May 23, I gave a presentation at Sun about computer science students,
and how a company can engage with them ( href="http://sun.feedroom.com/?fr_story=FRdamp273695">audio | href="http://horstmann.com/presentations/sun-2008-05-22">slides). Here
are some of the questions that I was asked, and the answers that I gave (or
wish I had given), and a question that I wish I had been asked.
What can we do to get more students to use OpenSolaris?
style="float: right; margin-left: 1em;" width="220" height="220" />(Asked by two people in
marketing who were eager to give me installation DVDs.) Ugh, that's not easy.
What's in it for the students? It is hard enough to get them to install
Linux. Suggestion #1: Work with a professor who teaches operating systems to
develop some modules where students use and modify OpenSolaris. Suggestion
#2: Why be fixated on DVDs? Give students remote access to Solaris virtual
machines to solve a problem that they have, namely to host their JSP/JSF
applications. (Just to really rub this in: it would be a double
win. Right now, students flock to PHP in their software engineering
projects because someone hosts that, even though they'd prefer to work with
Meta-observation: Students are no different from anyone else. To reach
them, you've got to solve their problems.
What math do computer science students learn these days?
height="95" />It varies by institutions, but typically it is 1-2 semesters of
calculus and a semester each of discrete math, linear algebra, and
statistics. Unfortunately, that's not really enough discrete math to get good
at it. I'd rather trade a semester of calculus for another semester of
discrete math. Provided it is taught by someone who understands computer
If Java were to fade away in CS departments, what would be the cause?
(Asked by Alex Buckley,
after I stated that currently Java is by far the most commonly used language
for introductory and advanced CS courses.) Microsoft has been trying for
years to push C# instead of Java, with very limited success. Switching from
C++ to Java solved a huge problem that professors had—students couldn't
get their projects done because they wasted endless hours chasing pointer
bugs. And it gave a rich set of libraries for GUIs, database programming,
networking, etc. etc. Switching to C# would give you just about the same
thing, and if there is anyone who ought to know about switching costs, it is
/>There is some unhappiness about Java in the first course—see
One pain point is
public static void main. It is tough to
explain this to a beginner, when in Python you can just write
Some departments have switched to Python as a first language, but it
hasn't been a huge trend. Really, the problem isn't that
is annoying, it is that
boring. Switching to Python doesn't solve that. There have been many success
stories with libraries, tools, and environments (such as href="http://www.youtube.com/watch?v=lXOyd68saIM">Alice 3), almost all of
them in good old Java.
What can we do about the lack of interest in a computer science
There has been a tremendous drop (about 50%) in computer science
enrollment after the dot-com bust. ( href="http://www.mndaily.com/articles/2008/03/11/72166082">This article
has better graphs than my slides.) The conventional wisdom is that the CS1
course is dull, and after a few weeks of
Hello, World and
computing the digits of π, students see the benefits of a career in
divorce law. The canonical solution is to make CS1 more engaging, by showing
that computer science is so much more than just programming. (Check out
Jeanette Wing from the NSF in href="http://www.npr.org/templates/story/story.php?storyId=88154024">this NPR
segment) But I am not so sure. In February, href="http://www-cs-faculty.stanford.edu/~eroberts/">Eric Roberts gave a
great presentation at a CS education conference about surveying freshmen at
Standford. They came in droves to the CS1 course and gave it great ratings.
What did they like best? They loved programming. And then
they enrolled in some dull course that was a requirement for investment
What is to be done? Paying software as well as investment bankers would
certainly solve the problem. But if we want to rely on the folks who do it
because they love it, then we need to get more people in middle and high
school to love math, science, and engineering.
What is the computer industry doing to push for better education?
Sadly, not much. On the way to my talk, I listened to
href="http://www.kqed.org/epArchive/R805221730">NPR. John McCain was in
Silicon Valley, meeting with the CEOs of software companies. What did they
tell him? That they had a single big issue on their collective minds: To raise
the H-1B visa quota.