[PRL] Computer science `education'

Joe Marshall jmarshall at alum.mit.edu
Fri Nov 9 15:00:47 EST 2007


I had the experience of interviewing a recent college graduate here at Google.
I was looking forward to it because of the coursework he had taken.  He was
double majoring in Computer Science and Biology with a Neurobiology Focus.

The position the candidate was interviewing for was as an Associate Technology
Manager.  This position is considered semi-technical.  The candidate should have
a good grasp of the technology, but he isn't expected to be a hard-core coder.
The interview process involves several people, and I'm usually the guy
that's supposed
to see if the guy *really* can talk to engineers.  I don't use
`canned' questions,
I like to just talk about random stuff and get an idea if the
candidate is the kind
of person I'd like to work with or not.

This student had a lot going for him:  4.0 GPA in CS, in the Honors program
for CS at his school, he had taken some graduate courses in CS.  Here is
a selected list of courses:

    - Analysis of Programs - Honors
    - Autonomous Multiagent Systems
    - Functional Programming - Honors
    - Operating Systems - Honors
    - Theory in Programming Practice
    - Intro to Artificial Intelligence
    - Compute Architecture I & II - Honors
    - Digital Systems Design
    - Computational Neuroscience (Graduate)
    - Neuronal Systems (Graduate)
    - Organic Chemistry I & II
    - Engineering Physics, Honors (I & II)

As you can see, there are a lot of my favorite topics on that list, so I was
hoping for a fun interview.  Now of course he has only obtained a bachelor's
degree, and he was quite young, but I had a few interview questions for him
of varying degrees of difficulty.

My first question was a bit tricky:  What is Entropy?
Ok, that is a subtle question with a lot of possible answers, but the candidate
should have been exposed to the concept in at least three different ways:  in
Chemistry, it is an important component in driving a reaction.  In physics,
it is a key concept in Thermodynamics.  In computer science, it is a key
concept in information theory.

I got the standard high-school answer that it the `disorder of a system'.  This
is a bit too vague to be either right or wrong, but I was hoping for something
a bit more specifically related to any of the three fields.

I admit that this is a hard question, so I had some easier ones.

My second question was:  Why would I want to program in a functional style?
Given the candidate had a course in functional programming in addition to one
in Analysis of programs, I was hoping this would be an easy one.  The
candidate said that functional programs were easier to parallelize and scale up.
(True, but there are other good reasons.)  I asked why.  I got a vague handwavy
explanation that they could be broken apart in different functions that were
independent, as contrasted to `an iterative' program (I assume he meant
imperative) that had to pass state between the different components.

This was quite disappointing.

I went to my third question:  What is beta reduction?
I hoped that the candidate would be remember this from either the
functional programming
or the Analysis of Programs.  Both of those being honor courses, they couldn't
have failed to at least *mention* alpha and beta transforms.

The candidate had never heard the term before.

I moved on to Artificial Intelligence.  I'm a bit old-school and I
haven't kept up with
the latest and greatest in AI, but there are a few major elements of
classical AI that
people ought to have heard of.  I asked the candidate what `alpha-beta
pruning' was.
He wasn't sure, but he thought it had something to do with narrowing down a game
tree.  I really hope he didn't just infer that from the word `pruning'.

We eventually got around to discussing the candidate's research project.  It was
interesting, and the candidate seemed knowledgable, but this *was* his research
project.

When it came time to write up my thoughts about the candidate I was faced with
a hard decision.  He seemed bright and energetic, yet for all his
computer courses
he seemed very ignorant.  I came away with the impression that the money he
spent on his education was largely wasted.  I'm wondering what he *did* learn.

I decided to recommend against hiring.  He seems like the kind of candidate we
want, but we aren't in the business of education, and we need people who can
hit the ground running.

But this candidate has a 4.0 GPA in an Honors program in computer science!  He
*ought* to be readily employable.

Was I expecting too much?  We're all my questions way too hard?  Or did the
college completely fail in its mission?  Or is the general computer
science curriculum
this bad everywhere?

-- 
~jrm



More information about the PRL mailing list