[PRL] Computer science `education'

Sam TH samth at ccs.neu.edu
Fri Nov 9 17:54:39 EST 2007


So, I had what I thought (and still think) was an excellent
undergraduate education.  However, at the end of that education, I had
not:

- ever learned anything about alpha-beta pruning
- learned the term beta-reduction for function application (or at
least, I don't think I did)
- learned anything beyond the high-school answer about entropy

The final question was about why someone would want to program
functionally.  I might have had an answer for this, but it wouldn't
have been much better than your candidate's.  I don't think
undergraduates should be able to spout the contents of "Why Functional
Programming Matters" on demand  - the language I used most at the end
of my undergraduate career was Python.

I guess what I'm saying is I'm glad I'm in grad school, since Google
certainly wouldn't have hired me.

sam th

On Nov 9, 2007 3:00 PM, Joe Marshall <jmarshall at alum.mit.edu> wrote:
> 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
>
> _______________________________________________
> PRL mailing list
> PRL at lists.ccs.neu.edu
> https://lists.ccs.neu.edu/bin/listinfo/prl
>



-- 
sam th
samth at ccs.neu.edu



More information about the PRL mailing list