Re: what should be in a computer science degree?
- From: "ricky.clarkson@xxxxxxxxx" <ricky.clarkson@xxxxxxxxx>
- Date: Thu, 21 Jun 2007 18:20:48 -0000
I think a problem with University education (there are lots more) is
that there is no cohesion between modules.
1st year:
* Low-level Software - assembler, microcode, and an in-depth study of
ONE modern processor.
* Robotics - make a small hardware device with a sensor of some sort
and some mechanical movement, control it (wirelessly?) from a
computer, using a LOGO-like environment.
* Operating System Management - install and configure an OS from
scratch, and write a device driver for the aforementioned hardware
device, to be able to read data from it as a source of entropy (like /
dev/urandom).
* Java Programming - a GUI app that can control the hardware device,
and a software simulation thereof.
* Web Programming - a web app, using a sprinkling of Ajax, that can
interact with the GUI app to control multiple hardware devices at
once.
2nd year, 1st semester:
* Introduction to Lisp (of course).
* Source code management (svn and darcs should cover enough bases).
* Algorithms and analysis thereof (including profiling running code).
* Security - don't dodge the maths here, computer science grads should
be the ones who invent the next algorithms, not the ones who dodge the
maths.
2nd year, 2nd semester:
* Smalltalk, Python, Ruby. All in one module. Write web apps.
* Distributed Computing - how Google works, MapReduce, Beowulf.
* Virtualisation - vmware, etc. - setting up OSs so that users cannot
harm each other (being fork-bomb proof, etc.), including environments
that don't (seem to) need virtualisation, such as PHP.
* OOP and Patterns - mainly in Java but with examples in the other
languages too (to demonstrate the fact that patterns can disappear
when languages are more flexible).
* Business Models of Software - BSD, GPL, proprietary, mixes of those,
AdSense, etc. Contribute something to an open source project.
Final year:
* Scala, Haskell, Erlang, ML - how pure FP may be more important in a
world where state is more expensive than CPU.
* Macrology - a nice use case might be to plug Lisp into a parser and
a generator for another language such as Java, to implement macros for
a lesser language.
* 3D Graphics - from first principles up to scene-building, maybe
scripting in something like Second Life.
* Sound - software that can do *something* with MP3s. For example,
find all MP3s that don't have any fade out or space at the end - these
are likely to be either tracks intended to be mixed or incomplete
downloads. Another possible is software that can interact with your
favourite music downloading tool (itunes, limewire, BT..) to a) let
you download music that your friends like, and b) let you download
music that is similar to stuff you already have.
I think the final year needs a large project of the student's own
design, too. Something that can never be done perfectly, e.g.,
software that can deconstruct an MP3 into sheet music, or an
environment for a programming language. I don't see any reason why
money couldn't be involved for this, like the Google Summer of Code,
but, well, not in summertime.
.
- References:
- what should be in a computer science degree?
- From: Mark Tarver
- Re: what should be in a computer science degree?
- From: Jon Harrop
- Re: what should be in a computer science degree?
- From: Mark Tarver
- Re: what should be in a computer science degree?
- From: Tim X
- Re: what should be in a computer science degree?
- From: Mark Tarver
- Re: what should be in a computer science degree?
- From: Stefan Nobis
- what should be in a computer science degree?
- Prev by Date: Re: sbcl's asdf-install doesn't seem to respect asdf:*central-registry*
- Next by Date: Re: The Lisp experience - 19-year old college student asks for help in #lisp, has to wait half an hour for a response; asks in #python, gets the answer in 6 minutes. Gives up on Lisp... "I'll wait for Arc, thanks."
- Previous by thread: Re: what should be in a computer science degree?
- Next by thread: Re: what should be in a computer science degree?
- Index(es):
Relevant Pages
|