[dundee] No wonder CompSci grads are unemployed

Rick Moynihan rick.moynihan at gmail.com
Tue Nov 2 23:13:55 UTC 2010


On 2 November 2010 18:00, Robert Ladyman <it at file-away.co.uk> wrote:
> This might ring a bell with some of you (or perhaps that should be "wring
> able")
>
> http://www.theregister.co.uk/2010/11/01/comp_sci_graduates_need_more_skills/

Yes, it's a common problem, where universities are far more interested
in teaching "what industry wants", rather than the science behind it.
The big problem being, they don't actually end up teaching much of
anything, and the only industry they ask* are large corporations who
benefit from competition for jobs in a market of homogeneous
expertise, as wages are kept low.

This said, I disagree with how Java is held up as an exemplar here...
As Java is arguably a great teaching language, it's free and
opensource (GPL'd), it has many good tools and IDE's, and resources to
facilitate learning.  It's also a reasonably good OOP language, and
doesn't have the plethora of syntax and keywords (that don't really
add much) that languages like C# have.  In addition it has a wide
domain of suitability from the server to desktop, to mobile devices
like Android.  I'd certainly sooner teach students to learn Java than
C++ (which is a real mess), provided of course that they also learnt
C.

Students would be much better served learning C (for low level
programming), Java for basic Object Orientated Design, a functional
language like Scheme, Haskell, ML or (dare I say it Clojure
(especially if they've learnt Java)), which is picked here is largely
academic depending on which parts of CS the educators want to dwell
on....  Oh and did I mention Prolog?  Kids should definitely learn
that!

Languages like Python and Ruby might make a suitable teaching
replacement for Java, depending on the course, but they're not used as
widely... consequently it might be harder for educators to tailor them
to their needs...  This said if the focus was something like web
programming then I might reconsider.

Despite my dwelling on the language issue though, it's really not the
issue; the point is you need to really learn the key concepts;
data-structures, algorithms, abstraction etc...  The languages
selected should support this, and try and stay out of the way as much
as possible...  except for where the problems are part of the learning
process... e.g. when teaching low-level concepts, memory management
problems should perhaps be expected... However when you're trying to
learn design patterns, should students really need to worry themselves
with copy constructors, memory deallocation and Makefiles?

* Where 'ask' means looking at Job adverts.

R.



More information about the dundee mailing list