Re: what should be in a computer science degree?



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.

.



Relevant Pages

  • Re: SPITBOL or SNOBOL4 in OS X unix layer?
    ... > I am a long-time user of the old-fashioned programming language package ... > MaxSPITBOL, an implementation of the text-oriented language SPITBOL, ... > But SPITBOL has had several unix implementations over the years. ... When you download it, open a Terminal window and cd to the directory ...
    (comp.sys.mac.system)
  • Re: Python obfuscation
    ... Ben Sizer wrote: ... I don't know if you can download it any more to test ... > as not 'thiscall'/static member functions, const declarations, etc. ... 68K machine language is fairly straightforward. ...
    (comp.lang.python)
  • Re: how run linux from CD, porblem is very problematic
    ... different CD's one is the debian installer CD part 1 and the second one ... What is your local language? ... that i can't use linux. ... I have a broadband connection 256kbs and i get to download only at ...
    (comp.os.linux.setup)
  • Re: Group Policy Software Installation
    ... Did you download the correct version (with respect to language)? ... EVERYBODY / Full Control share permissions and make it something like ... The .msi is located on a share with Everyone-full control ...
    (microsoft.public.windows.server.active_directory)
  • Uninstall driver
    ... Find the name of the company for the hardware device you ... are trying to install and go to their website. ... Download ... the latest driver there! ...
    (microsoft.public.security)