[Edu-sig] Re: College CS courses

Matthias Felleisen matthias@rice.edu
Mon, 16 Apr 2001 11:18:59 -0500 (CDT)


  > From: "Alan Gauld" <agauld@crosswinds.net>
  > Date: Sun, 15 Apr 2001 18:45:19 +0500
  > 
  > I guess thats where I see a movement in CS. It used to be 
  > about much more: about the ability to compute with a 
  > machine. It included the operation and networking of 
  > computing hosts as well as the construction of software. 
  > It was also concerned about novel ways to compute - for 
  > example large parallel arrays - nobody seems to teach
  > these anymore and yet in industry they are more widely 
  > used than ever, but with an ever decreasing number of 
  > grads who know even what they are, far less how to use 
  > them...

Correct. CS should, and does, teach automata, logic, type theory, and other
stuff. Most grads, and most industry people, preach that this is useless
until they realize that something like JAVA is a snapshot of the state of 
CS from 1985 (According to Gosling). 

  > Now I don't expect colleges to simulate that with 
  > 27,000 files but the principles could be tought, 
  > illustrated and even demonstrated surely? How many 
  > grads today even know how to write a makefile that 
  > could distribute a build?

Yeap. Rice's Zwanepoel was one of the very first in the mid 80s to turn
make files into distributed, optimistically parallelizing tools. I teach 
stress testing, but I admit that I don't stress test building a program. 

We build our programs and docs over night on large servers. 

  > I think many CS departments have lost sight of the 
  > fact that industrial computing requires more than 
  > a kind of super PC user/hobbyist.

YES!

  > 
  > One reason I wrote my online tutor and book was 
  > that too many of the summer break grads we get 
  > think that they can only programme in language 
  > X, I was trying to show that programming is 
  > pretty much the same in any language (especially 
  > if they are imperative in style).

Wrong. Consider JAVA and an implementation that uses a copy gc. You're much
better off using functional patterns than old-style imperative "this works
in any programming language" style "programming." (Sorry I can only put
quotes around this word .. I don't consider it programming when someone can
form a phrase in Python or Scheme or Java and the phrase "accomplishes"
something. "But it works" is the biggest lie in computing.)

Unless you learn to program functionally, you will never understand how to
build such programs. 

-- Matthias