From: Mark Tarver
Subject: what should be in a computer science degree?
Date: 
Message-ID: <1182370572.528318.233560@a26g2000pre.googlegroups.com>
Here's a question of you.  What should an ideal CS degree comprise?
Choose 18 core modules over 3 years - what would they be and in what
order? Here's a partial answer.

Year 1

Knowledge Representation (including databases)
- SQL, Codd's Relational Algebra, Semantic Nets, Logic Programming
Functional Programming
Discrete Mathematics
	- logic, set theory, basic complexity theory, BNF notation,
computability
Programming in C++
Web Design and Programming
	- designing web pages and writing scripts
Principles of Programming and Compilation
    - the architecture of the digital computer and the classes
      of languages; techniques for fitting one to the other;
      basic data structures.

After year 1 I found it difficult to prioritise.  Here's a list of
possible entrants.

Numerical Methods
Artificial Intelligence
Machine Learning
Cryptography
Parallel Processing
Expert Systems
Multi Agent Systems
Bioinformatics
Robotics
Vision
Graphics

I'd put an introduction to AI as compulsory.  This leaves 9 courses
unaccounted for.

I think what this shows is that CS as a pure degree does not really
fly.  There's a core of stuff which takes up a year and after that it
seems to me that the range of the field means that the student must
choose where to go next because no one candidate can really claim to
be pre-eminent.   Students graduate with the title 'CS with X'.

What's your opinion?

Mark
www.lambdassociates.org

From: Mark Tarver
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <1182374774.581789.54380@g4g2000hsf.googlegroups.com>
> This leaves 9 courses unaccounted for.

Sorry - 11 courses - even more white space.

Mark
From: Jon Harrop
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <4679e67d$0$8718$ed2619ec@ptn-nntp-reader02.plus.net>
Mark Tarver wrote:
> Numerical Methods
> Artificial Intelligence
> Machine Learning
> Cryptography
> Parallel Processing
> Expert Systems
> Multi Agent Systems
> Bioinformatics
> Robotics
> Vision
> Graphics

Hardware
GPUs
Static type checking, verification and theorem proving
GUI programming
Games programming
Data structures
Algorithms
Concurrency
Ergonomics
Business

> What's your opinion?

Should non-CS degrees contain more CS? For example, should computational
scientists be taught something about data structures and algorithms?

-- 
Dr Jon D Harrop, Flying Frog Consultancy
The OCaml Journal
http://www.ffconsultancy.com/products/ocaml_journal/?usenet
From: Mark Tarver
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <1182404903.571749.86910@c77g2000hse.googlegroups.com>
On 21 Jun, 03:40, Jon Harrop <····@ffconsultancy.com> wrote:
> Mark Tarver wrote:
> > Numerical Methods
> > Artificial Intelligence
> > Machine Learning
> > Cryptography
> > Parallel Processing
> > Expert Systems
> > Multi Agent Systems
> > Bioinformatics
> > Robotics
> > Vision
> > Graphics
>
> Hardware
> GPUs
> Static type checking, verification and theorem proving
> GUI programming
> Games programming
> Data structures
> Algorithms
> Concurrency
> Ergonomics
> Business
>
> > What's your opinion?
>
> Should non-CS degrees contain more CS? For example, should computational
> scientists be taught something about data structures and algorithms?
>
> --
> Dr Jon D Harrop, Flying Frog Consultancy
> The OCaml Journalhttp://www.ffconsultancy.com/products/ocaml_journal/?usenet

I think that anybody doing a science should probably have some
foundation in programming because computeracy is becoming as important
as numeracy.

I thought about the Data Structures and Algorithms idea.  Something
like it has been a traditional staple of many CS degrees.

I think the problem is that algorithms are in a sense what CS is
largely about and there are literally zillions of them.  So a course
devoted specifically to algorithms
really doesn't fly unless you focus on 'algorithms for' - in which
case the course is about a specific area of CS.

Mark
From: Tim X
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <87ejk591b1.fsf@lion.rapttech.com.au>
Mark Tarver <··········@ukonline.co.uk> writes:

> On 21 Jun, 03:40, Jon Harrop <····@ffconsultancy.com> wrote:
>> Mark Tarver wrote:
>> > Numerical Methods
>> > Artificial Intelligence
>> > Machine Learning
>> > Cryptography
>> > Parallel Processing
>> > Expert Systems
>> > Multi Agent Systems
>> > Bioinformatics
>> > Robotics
>> > Vision
>> > Graphics
>>
>> Hardware
>> GPUs
>> Static type checking, verification and theorem proving
>> GUI programming
>> Games programming
>> Data structures
>> Algorithms
>> Concurrency
>> Ergonomics
>> Business
>>
>> > What's your opinion?
>>
>> Should non-CS degrees contain more CS? For example, should computational
>> scientists be taught something about data structures and algorithms?
>>
>> --
>> Dr Jon D Harrop, Flying Frog Consultancy
>> The OCaml Journalhttp://www.ffconsultancy.com/products/ocaml_journal/?usenet
>
> I think that anybody doing a science should probably have some
> foundation in programming because computeracy is becoming as important
> as numeracy.
>
> I thought about the Data Structures and Algorithms idea.  Something
> like it has been a traditional staple of many CS degrees.
>
> I think the problem is that algorithms are in a sense what CS is
> largely about and there are literally zillions of them.  So a course
> devoted specifically to algorithms
> really doesn't fly unless you focus on 'algorithms for' - in which
> case the course is about a specific area of CS.
>

I think I'd have to disagree on your point regarding algorithms. Writing good
algorithms and using appropriate data abstraction are possibly the two key
concepts in programming and fundamental to much of what is done under the label
of computing science. More importantly, many of the finer aspects of algorithms
are not necessarily intuitive. Take a look at some of the algorithms in books
by Knuth, sedgwick, Wirth et. al. - there is lots of meat in these books that
require considerable effort to digest and really appreciate. Many programmers
would not 'discover' these techniques if left to their own devices - they need
to be exposed/taught. Even after 20 years, I will still go back to some of my
texts from these courses for inspiration when working on a difficult problem or
when I need to find a more optimum solution. There is certainly enough content
in this area to fill a semester with content that will provide an important
base for later study or real-world work. 

Data abstraction is another area which could easily fill a single semester.
Look at books like SICP - a large part of the central theme of that book
concerns the importance of deriving the appropriate level of abstraction in
order to obtain an elegant, efficient and maintainable solution. Again, there
is a fair amount of content which is somewhat subtle, but takes considerable
work to fully grasp and be able to apply. 

An important aspect of a comp. sci. degree is to expose the student to the more
subtle aspects of the discipline that wouldn't be easily discovered without
guidance. The study of algorithms is less about specific algorithms to solve
specific problems, but instead about the issues to consider when designing an
algorithm and various techniques which have been extensively analysed and are
well understood that make up valuable techniques/tools that the programmer can
apply. 

Tim

-- 
tcross (at) rapttech dot com dot au
From: Mark Tarver
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <1182419288.516382.46420@u2g2000hsc.googlegroups.com>
On 21 Jun, 09:09, Tim X <····@nospam.dev.null> wrote:
> Mark Tarver <··········@ukonline.co.uk> writes:
> > On 21 Jun, 03:40, Jon Harrop <····@ffconsultancy.com> wrote:
> >> Mark Tarver wrote:
> >> > Numerical Methods
> >> > Artificial Intelligence
> >> > Machine Learning
> >> > Cryptography
> >> > Parallel Processing
> >> > Expert Systems
> >> > Multi Agent Systems
> >> > Bioinformatics
> >> > Robotics
> >> > Vision
> >> > Graphics
>
> >> Hardware
> >> GPUs
> >> Static type checking, verification and theorem proving
> >> GUI programming
> >> Games programming
> >> Data structures
> >> Algorithms
> >> Concurrency
> >> Ergonomics
> >> Business
>
> >> > What's your opinion?
>
> >> Should non-CS degrees contain more CS? For example, should computational
> >> scientists be taught something about data structures and algorithms?
>
> >> --
> >> Dr Jon D Harrop, Flying Frog Consultancy
> >> The OCaml Journalhttp://www.ffconsultancy.com/products/ocaml_journal/?usenet
>
> > I think that anybody doing a science should probably have some
> > foundation in programming because computeracy is becoming as important
> > as numeracy.
>
> > I thought about the Data Structures and Algorithms idea.  Something
> > like it has been a traditional staple of many CS degrees.
>
> > I think the problem is that algorithms are in a sense what CS is
> > largely about and there are literally zillions of them.  So a course
> > devoted specifically to algorithms
> > really doesn't fly unless you focus on 'algorithms for' - in which
> > case the course is about a specific area of CS.
>
> I think I'd have to disagree on your point regarding algorithms. Writing good
> algorithms and using appropriate data abstraction are possibly the two key
> concepts in programming and fundamental to much of what is done under the label
> of computing science. More importantly, many of the finer aspects of algorithms
> are not necessarily intuitive. Take a look at some of the algorithms in books
> by Knuth, sedgwick, Wirth et. al. - there is lots of meat in these books that
> require considerable effort to digest and really appreciate. Many programmers
> would not 'discover' these techniques if left to their own devices - they need
> to be exposed/taught. Even after 20 years, I will still go back to some of my
> texts from these courses for inspiration when working on a difficult problem or
> when I need to find a more optimum solution. There is certainly enough content
> in this area to fill a semester with content that will provide an important
> base for later study or real-world work.
>
> Data abstraction is another area which could easily fill a single semester.
> Look at books like SICP - a large part of the central theme of that book
> concerns the importance of deriving the appropriate level of abstraction in
> order to obtain an elegant, efficient and maintainable solution. Again, there
> is a fair amount of content which is somewhat subtle, but takes considerable
> work to fully grasp and be able to apply.
>
> An important aspect of a comp. sci. degree is to expose the student to the more
> subtle aspects of the discipline that wouldn't be easily discovered without
> guidance. The study of algorithms is less about specific algorithms to solve
> specific problems, but instead about the issues to consider when designing an
> algorithm and various techniques which have been extensively analysed and are
> well understood that make up valuable techniques/tools that the programmer can
> apply.
>
> Tim
>
> --
> tcross (at) rapttech dot com dot au- Hide quoted text -
>
> - Show quoted text -

Well, there is a theory of algorithms that belongs to discrete maths
which deals with theories of computability and complexity.
Then there are the algorithms themselves which are scattered over a
vast corpus of areas of human endeavour.   Lastly there is the
question of coding the algorithms into hard code.

The first belongs to discrete maths, the last belongs to teaching
programming languages and the middle one belongs to whatever subject
the algorithm is designed to advance.  What is left?

What criterion can be used to distinguish an algorithm as fundamental
in a way that would justify data structures and algorithms as a
meaningful stand-alone course.  What would be in it in concrete terms?

Mark
From: Stefan Nobis
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <m2fy4lwadw.fsf@snobis.de>
Mark Tarver <··········@ukonline.co.uk> writes:

> What is left?

Hmmm... what about some design principles of algorithms like
branch-and-bound, dynamic programming, approximations etc., together
with some hints and tips how to analyse them.

See it as a bag of inspiration for people who need to create
algorithms for new problems.

Some concrete examples may be Dijkstras shortest path, string matching
(e.g. from Knuth, Morris, Pratt), Kruskals spanning tree, alignments,
Viterbi algorithm, PTAS (polynomial time approximation scheme),
randomized rounding,...

-- 
Stefan.
From: ··············@gmail.com
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <1182450048.029278.284350@k79g2000hse.googlegroups.com>
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.
From: Tim X
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <87645h8nee.fsf@lion.rapttech.com.au>
Mark Tarver <··········@ukonline.co.uk> writes:

> On 21 Jun, 09:09, Tim X <····@nospam.dev.null> wrote:
>> Mark Tarver <··········@ukonline.co.uk> writes:
>> > On 21 Jun, 03:40, Jon Harrop <····@ffconsultancy.com> wrote:
>> >> Mark Tarver wrote:
>> >> > Numerical Methods
>> >> > Artificial Intelligence
>> >> > Machine Learning
>> >> > Cryptography
>> >> > Parallel Processing
>> >> > Expert Systems
>> >> > Multi Agent Systems
>> >> > Bioinformatics
>> >> > Robotics
>> >> > Vision
>> >> > Graphics
>>
>> >> Hardware
>> >> GPUs
>> >> Static type checking, verification and theorem proving
>> >> GUI programming
>> >> Games programming
>> >> Data structures
>> >> Algorithms
>> >> Concurrency
>> >> Ergonomics
>> >> Business
>>
>> >> > What's your opinion?
>>
>> >> Should non-CS degrees contain more CS? For example, should computational
>> >> scientists be taught something about data structures and algorithms?
>>
>> >> --
>> >> Dr Jon D Harrop, Flying Frog Consultancy
>> >> The OCaml Journalhttp://www.ffconsultancy.com/products/ocaml_journal/?usenet
>>
>> > I think that anybody doing a science should probably have some
>> > foundation in programming because computeracy is becoming as important
>> > as numeracy.
>>
>> > I thought about the Data Structures and Algorithms idea.  Something
>> > like it has been a traditional staple of many CS degrees.
>>
>> > I think the problem is that algorithms are in a sense what CS is
>> > largely about and there are literally zillions of them.  So a course
>> > devoted specifically to algorithms
>> > really doesn't fly unless you focus on 'algorithms for' - in which
>> > case the course is about a specific area of CS.
>>
>> I think I'd have to disagree on your point regarding algorithms. Writing good
>> algorithms and using appropriate data abstraction are possibly the two key
>> concepts in programming and fundamental to much of what is done under the label
>> of computing science. More importantly, many of the finer aspects of algorithms
>> are not necessarily intuitive. Take a look at some of the algorithms in books
>> by Knuth, sedgwick, Wirth et. al. - there is lots of meat in these books that
>> require considerable effort to digest and really appreciate. Many programmers
>> would not 'discover' these techniques if left to their own devices - they need
>> to be exposed/taught. Even after 20 years, I will still go back to some of my
>> texts from these courses for inspiration when working on a difficult problem or
>> when I need to find a more optimum solution. There is certainly enough content
>> in this area to fill a semester with content that will provide an important
>> base for later study or real-world work.
>>
>> Data abstraction is another area which could easily fill a single semester.
>> Look at books like SICP - a large part of the central theme of that book
>> concerns the importance of deriving the appropriate level of abstraction in
>> order to obtain an elegant, efficient and maintainable solution. Again, there
>> is a fair amount of content which is somewhat subtle, but takes considerable
>> work to fully grasp and be able to apply.
>>
>> An important aspect of a comp. sci. degree is to expose the student to the more
>> subtle aspects of the discipline that wouldn't be easily discovered without
>> guidance. The study of algorithms is less about specific algorithms to solve
>> specific problems, but instead about the issues to consider when designing an
>> algorithm and various techniques which have been extensively analysed and are
>> well understood that make up valuable techniques/tools that the programmer can
>> apply.
>>
>> Tim
>>
>> --
>> tcross (at) rapttech dot com dot au- Hide quoted text -
>>
>> - Show quoted text -
>
> Well, there is a theory of algorithms that belongs to discrete maths
> which deals with theories of computability and complexity.
> Then there are the algorithms themselves which are scattered over a
> vast corpus of areas of human endeavour.   Lastly there is the
> question of coding the algorithms into hard code.
>
> The first belongs to discrete maths, the last belongs to teaching
> programming languages and the middle one belongs to whatever subject
> the algorithm is designed to advance.  What is left?
>
> What criterion can be used to distinguish an algorithm as fundamental
> in a way that would justify data structures and algorithms as a
> meaningful stand-alone course.  What would be in it in concrete terms?
>

I obviously don't get where your coming from as I don't see things as being so
clearly delineated as you seem to. I also find it a little hard to quantify
precisely why I think a course on algorithms and data abstraction is important,
partially because I've never considered it as not being important and partially
because I can still remember how much I learnt from such a course and that much
of what I learned was not self evident initially (i.e. I doubt I would have
made the same discoveries or obtained the same level of understanding if I
hadn't done a course) and feel that I'm not that different from others who
would enrol in such a degree. . At the same time, I feel you could also make
similar claims concerning courses you would include, such as computability and
Cobb's relational algebra - these could (and sometimes are) covered in discrete
math courses. On some levels, many of these divisions are arbitrary and you
will often find overlap because things just don't fit into neat little boxes. 

I guess at some levels, a specific course on algorithms and data abstraction
provides the bridge between the highly theoretical (normally covered in
discrete maths) and the actual coding (possibly covered in courses on
programming [1]. In many respects, a course on algorithms is about how to
design efficient, elegant and robust algorithms. Specific examples in general
areas or of solutions that are particularly elegant or efficient are used, but
as examples rather than just rote learning. such a course is the bit that falls
between the theoretical and concrete coding. 

As to specific content - well, I think thats pretty easy because its been done
time and time again. There are hundreds of books out there that deal only with
algorithms and there not purely mathematical analysis or specific to a
particular area or even specific to coding in aparticular language. The index
of any such text would likely give a good outline of what would be covered in
such a course. 

to my way of thinking, the fact there are conferences, special interest groups
and journals that deal specifically with algorithms indicates that it is a
fairly well defined specialty area within comp. sci, even if I don't have the
eloquence or intelligence to clearly articulate the reasons. I wish I had my
course notes so that I could go back and look at exactly what the content was
as the one thing I do remember is that it was a course I found intresting,
enlightening and far more beneficial than other courses, such as Databases and
relational algebra, which I always found simple, self evident and uninteresting
(despite the fact it has been a large part of what I have done in my career).

Tim

[1] It is possible some of the difference here is more about differences in
definition. for example, when I did my Comp. Sci. degree, we didn't have any
courses in programming per se. There was a 1 semester course in Pascal
programming at the beginning of the degree, which also covered other basic
concepts, such as what was a computer, the history of computing, networks,
compilers etc - all quite broad and shallow). After that time, nearly all of us
stopped using pascal and started using whatever language we liked - for me it
was C. Programming was not considered particularly interesting - it was just
the tool used to do the more interesting stuff and it was the responsability of
the student to learn how to use their preferred tool adequately. 



-- 
tcross (at) rapttech dot com dot au
From: Eric Eide
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <ywrtzt1s850.fsf@peoa.flux.utah.edu>
"Mark" == Mark Tarver <··········@ukonline.co.uk> writes:

	Mark> Here's a question of you.  What should an ideal CS degree
	Mark> comprise?  [...]
	Mark> 
	Mark> I think what this shows is that CS as a pure degree does not
	Mark> really fly.  There's a core of stuff which takes up a year and
	Mark> after that it seems to me that the range of the field means that
	Mark> the student must choose where to go next because no one candidate
	Mark> can really claim to be pre-eminent.  Students graduate with the
	Mark> title 'CS with X'.

If you are interested in the design of undergraduate CS curricula, you should
look at the one developed by the faculty of Georgia Tech:

	<http://www.cc.gatech.edu/education/what-is-threads>

Best wishes ---

Eric.

-- 
-------------------------------------------------------------------------------
Eric Eide <·····@cs.utah.edu>  .         University of Utah School of Computing
http://www.cs.utah.edu/~eeide/ . +1 (801) 585-5512 voice, +1 (801) 581-5843 FAX
From: Steven Haflich
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <oOqei.15410$2v1.13580@newssvr14.news.prodigy.net>
Mark Tarver wrote:
> Here's a question of you.  What should an ideal CS degree comprise?
> Choose 18 core modules over 3 years - what would they be and in what
> order? Here's a partial answer.

A properly-sane, self-reflective universe would not offer degrees in 
computer science.  Indeed, a properly-sane, self-reflective universe 
would not even have computer science.
From: Mark Tarver
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <1182419461.065464.131470@c77g2000hse.googlegroups.com>
On 21 Jun, 09:38, Steven Haflich <····@alum.mit.edu> wrote:
> Mark Tarver wrote:
> > Here's a question of you.  What should an ideal CS degree comprise?
> > Choose 18 core modules over 3 years - what would they be and in what
> > order? Here's a partial answer.
>
> A properly-sane, self-reflective universe would not offer degrees in
> computer science.  Indeed, a properly-sane, self-reflective universe
> would not even have computer science.

Yes; this is a coherent view.  The argument goes that a computer is
just a tool to do things like a pen and does not deserve a science
any more than we have a 'pen science' which deals with all the things
that can be written with a pen.

Mark
From: Tim X
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <871wg58m8o.fsf@lion.rapttech.com.au>
Mark Tarver <··········@ukonline.co.uk> writes:

> On 21 Jun, 09:38, Steven Haflich <····@alum.mit.edu> wrote:
>> Mark Tarver wrote:
>> > Here's a question of you.  What should an ideal CS degree comprise?
>> > Choose 18 core modules over 3 years - what would they be and in what
>> > order? Here's a partial answer.
>>
>> A properly-sane, self-reflective universe would not offer degrees in
>> computer science.  Indeed, a properly-sane, self-reflective universe
>> would not even have computer science.
>
> Yes; this is a coherent view.  The argument goes that a computer is
> just a tool to do things like a pen and does not deserve a science
> any more than we have a 'pen science' which deals with all the things
> that can be written with a pen.
>

I'm sorry, but I find that a ludicrous analagy/comparison. If it were true, it
would mean that we already know and understand without exception all aspects of
everything possible with a computer. Ignoring concepts like quantum computers,
we still haven't got definitive knowledge on things like the best way to
represent knowledge or store/retrieve even basic data. The area of AI is full
of problems that have not been solved and while some may argue that perhaps
they are unsolvable, nobody has been able to conclusively prove this either. 

There is a big difference between the concept of computing science and the
concept of the computer. A computer is just a tool, but what is possible with
that tool is what computing science is all about. 

If it is necessary to argue from the perspective of tools, then it would be
more accurate to argue that computing science is a tool in the same way that
mathematics is a tool. 

If on the other hand, your issue is that the term computing science is wrong
because you don't beleive it is a science in the sence that physics, or
chemistry is considered a science, then your argument is more about
terminology, in which case it falls into the same bucket as arguments about the
term political science or social science, which I find to be irrelevant and
uninteresting as they are just labels. 

Tim

-- 
tcross (at) rapttech dot com dot au
From: Mark Tarver
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <1182441002.079668.100400@q69g2000hsb.googlegroups.com>
> I'm sorry, but I find that a ludicrous analagy/comparison. If it were true, it
> would mean that we already know and understand without exception all aspects of
> everything possible with a computer.

Well actually the aspect of the analogy you are attacking is probably
the very part
where it works best.  For we do *not* already know and understand
without exception all aspects of
everything that can be written with a pen.

I would go further and suggest that CS as a degree scheme is a
hangover from a past of 40 years ago when a lot of CS departments were
founded.  At that time computers were largely engaged in either
numerical analysis or data processing or language design/OS with some
eccentric Lispers holed up at MIT forcing unnatural acts on
underpowered and helpless machines ;)  Ignoring the last group there
was something reasonable about creating CS as a science of these three
areas.

What happened after that was that computing exploded past its
boundaries and has now permeated so many areas of human endeavour
(biology, chemistry, engineering, physics, medicine ...) that CS as a
straight degree does not make sense now.  It was only because of a
temporary failure of imagination that it ever seemed that such a
heterogenous tool could define a unified science.  We did not
appreciate that the computer could be as versatile as the pen.

Mark
From: Jon Harrop
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <467af29d$0$8742$ed2619ec@ptn-nntp-reader02.plus.net>
Mark Tarver wrote:
>> I'm sorry, but I find that a ludicrous analagy/comparison. If it were
>> true, it would mean that we already know and understand without exception
>> all aspects of everything possible with a computer.
> 
> Well actually the aspect of the analogy you are attacking is probably
> the very part
> where it works best.  For we do *not* already know and understand
> without exception all aspects of
> everything that can be written with a pen.

Nice. :-)

-- 
Dr Jon D Harrop, Flying Frog Consultancy
The OCaml Journal
http://www.ffconsultancy.com/products/ocaml_journal/?usenet
From: Tim X
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <87wsxw7eqg.fsf@lion.rapttech.com.au>
Mark Tarver <··········@ukonline.co.uk> writes:

> Subject: Re: what should be in a computer science degree?
>
>> I'm sorry, but I find that a ludicrous analagy/comparison. If it were true, it
>> would mean that we already know and understand without exception all aspects of
>> everything possible with a computer.
>
> Well actually the aspect of the analogy you are attacking is probably
> the very part
> where it works best.  For we do *not* already know and understand
> without exception all aspects of
> everything that can be written with a pen.
>

You are still mixing up application with theoretical understanding. 

The mechanics of how a pen works is well understood and it makes no sense to
have a 'pen science' as there is not enough uncertainty regarding how a pen
works to justify such a discipline. The same cannot be said regarding the
computer. We are still developing our knowledge regarding computer
architecture, instruction sets, programming languages, compiler design, data
representation, storage, retrieval and processing, knowledge representation,
induction, AI, theorem proving, graphics processing and rendering, natural
language understanding, speech synthesis, software engineering, computer human
interfaces, robotics, real time signal processing etc. All of these areas are
not specific to any other established discipline, though they certainly have
some cross-over. However, I don't see this as being much different to physics,
which has a very strong mathematical element - in some institutions, Physics is
part of mathematics or maybe part of a school of physical sciences, in other
institutions, it is a stand-alone school which has little interaction with the
school of mathematics. Physics also permeates many other disciplines, but is
rightfully considered a discipline in its own right. 


If you insist on arguing along the 'pen science' line and focusing on what you
can do/write with the pen, then we do actually have a 'pen science', it is
called litrature and you can do a degree in it (all the way through to
completing a doctor of philosophy). 

> I would go further and suggest that CS as a degree scheme is a
> hangover from a past of 40 years ago when a lot of CS departments were
> founded.  At that time computers were largely engaged in either
> numerical analysis or data processing or language design/OS with some
> eccentric Lispers holed up at MIT forcing unnatural acts on
> underpowered and helpless machines ;)  Ignoring the last group there
> was something reasonable about creating CS as a science of these three
> areas.
>
> What happened after that was that computing exploded past its
> boundaries and has now permeated so many areas of human endeavour
> (biology, chemistry, engineering, physics, medicine ...) that CS as a
> straight degree does not make sense now.  It was only because of a
> temporary failure of imagination that it ever seemed that such a
> heterogenous tool could define a unified science.  We did not
> appreciate that the computer could be as versatile as the pen.
>

Again, you are mmixing up application with theoretical understanding of the
underlying principles. I also suspect you are confusing computing science with
a degree that enables you to become a programmer. If all you are interested in
is programming, then computing science is *not* the right degree (though you
will likely learn how to program well as a side effect, just like you will
likely end up with a good grasp of maths after doing a physics degree. In fact,
I don't believe programming is a University degree - programming is rapidly
becoming the equivalent of a modern trade and could easily be taught in a
technical college, like motor mechanics, plumbing or carpentry. 

Computing science is not about programming per se. It is about the underlying
principles and extending our understanding of what can and cannot be done
together with developing our understanding in order to identify the best
approaches. It is precisely due to this research and growth in knowledge that
computers have permiated some many areas and other disciplines. 

Originally, you posted with an argument that you felt there wasn't enough
substance within the area of computing science to justify it as a degree or
discipline in its own right. You provided a list of courses (9 or so?) and then
ran out of others and use this to justify your position that computing science
as a discipline canot be justified. Others have posted additional topic areas
that on the whole are often seen as part of a comp sci degree. I pointed out
that your list also ignored the dependency relationships between some topics
and the fact that you had combined too much into some of them for a single unit
course. I also added that a good computing science degree should also include
units that would facilitate someone becoming a good computer scientist, such as
skills in research methodologies, technical writing analysis and critical
thinking etc. Once you consider all of these points, not only do you have
enough units to fill a three year 18 point Comp. Sci degree, I suspect you will
also have scope for choice/specialisation in the third year units and you will
not be able to complete all the units possible. 

I am curious regarding your motivation for your standpoint. Did you find your
computing science degree 'light' on content and felt it was padded in order to
justify it as a discipline? Alternatively, if you don't have or have never
studied computing science, what are you basing your opinion on, speculation?
I'm interested because my experience was that Comp. Sci degree had more
substance than the previous two degrees I did (BA, BSocSci), was one I found
the most challenging and the one I was always disapointed that there were units
I was interested in which I just couldn't fit into my degree until I did my
postgraduate studies. However, I have observed a rather disturbing trend within
many comp sci degrees that has moved the content towards what I would classify
as information technology rather than cmputing science. If your experience has
been with this sort of degree, then I can totally understand where your coming
from. In this case, the problem isn't that there isn't sufficient substance to
justify comp science as a discipline in its own right, but rather the
discipline has been perverted in order to attract more students (for more
money) and content has been 'softened. I don't believe 'Information Technology"
has sufficient substance to be a University degree in its own right and that
what is normally covered in an information technology degree is more aligned
with knowledge required for working in the field - trade knowledge - the srot
of stuff that would have been taught at a technical college rather than a
university. However, while we still have things to learn or theories to
prove/disprove in areas such as compiler design, knowledge representation, AI,
language design/implementation, parallel and distributed processing, signal
processing and communication, data visualisation, refinement of various
algorithmic approaches, such as those used for genetic, evolutionary
algorithms, systolic arrays, neural networks etc, then there is sufficient
justification for the discipline and an associated degree.

Having said all of this, I should also state that I believe the terminology or
division is quite arbitrary. Only a few hundred years ago, we didn't have the
distinction between arts and sciences - everything prety much fell under the
banner of philosophy (hence Dr of Philosophy rather than Dr of computing
Science, or Dr of Physics etc). These are artificial constructs which are
created to make communication easier. However, I do believe there is still
sufficient substance that can be labelled under computing science to justify it
as a discipline. To put it another way, if you were interested in computers and
what can and cannot be done and what is and is not possible, what other area
could you enrol in that would give you just that exposure? Possibly it cold be
a degree in maths (though I'm not sure how well things like computer architecture,
human computer interfaces, communications etc would fit within Maths because
they incorporate other disciplines as well)). In this case, you would end up
with a B maths with a major in computing science - which amounts to the same
thing as a B comp sci, just with a diffrerent name and as I've said before,
names/labels are essentially boring and uninterresting. 

It should be noted that many Universities are moving to a model where you do
not have degrees in specific areas like Computing science. Instead you have
either a Bachelor of Arts or a Bachelor of Sciences with majors in a specific
area. However, this is not about lack of substance to justify area specific
degrees. Its about economic rationalism and strategies to reduce running
costs/overheads through the simplification of business process, rules and
regulations. 

Tim


-- 
tcross (at) rapttech dot com dot au
From: ········@netscape.net
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <1182510376.881495.31140@o61g2000hsh.googlegroups.com>
On Jun 22, 1:14 am, Tim X <····@nospam.dev.null> wrote:
> Mark Tarver <··········@ukonline.co.uk> writes:
> > Subject: Re: what should be in a computer science degree?
>
> >> I'm sorry, but I find that a ludicrous analagy/comparison. If it were true, it
> >> would mean that we already know and understand without exception all aspects of
> >> everything possible with a computer.
>
> > Well actually the aspect of the analogy you are attacking is probably
> > the very part
> > where it works best.  For we do *not* already know and understand
> > without exception all aspects of
> > everything that can be written with a pen.
>
> You are still mixing up application with theoretical understanding.
>
> The mechanics of how a pen works is well understood and it makes no sense to
> have a 'pen science' as there is not enough uncertainty regarding how a pen
> works to justify such a discipline.

  That's obviously where CS people fail to understand the
  computers and the real world. Since pen science is why it was
engineers
  that invented credit cards, and CS students well work
  with pens.






 The same cannot be said regarding the
> computer. We are still developing our knowledge regarding computer
> architecture, instruction sets, programming languages, compiler design, data
> representation, storage, retrieval and processing, knowledge representation,
> induction,AI, theorem proving, graphics processing and rendering, natural
> language understanding, speech synthesis, software engineering, computer human
> interfaces, robotics, real time signal processing etc. All of these areas are
> not specific to any other established discipline, though they certainly have
> some cross-over. However, I don't see this as being much different to physics,
> which has a verystrongmathematical element - in some institutions, Physics is
> part of mathematics or maybe part of a school of physical sciences, in other
> institutions, it is a stand-alone school which has little interaction with the
> school of mathematics. Physics also permeates many other disciplines, but is
> rightfully considered a discipline in its own right.
>
> If you insist on arguing along the 'pen science' line and focusing on what you
> can do/write with the pen, then we do actually have a 'pen science', it is
> called litrature and you can do a degree in it (all the way through to
> completing a doctor of philosophy).
>
>
>
>
>
> > I would go further and suggest that CS as a degree scheme is a
> > hangover from a past of 40 years ago when a lot of CS departments were
> > founded.  At that time computers were largely engaged in either
> > numerical analysis or data processing or language design/OS with some
> > eccentric Lispers holed up at MIT forcing unnatural acts on
> > underpowered and helpless machines ;)  Ignoring the last group there
> > was something reasonable about creating CS as a science of these three
> > areas.
>
> > What happened after that was that computing exploded past its
> > boundaries and has now permeated so many areas of human endeavour
> > (biology, chemistry, engineering, physics, medicine ...) that CS as a
> > straight degree does not make sense now.  It was only because of a
> > temporary failure of imagination that it ever seemed that such a
> > heterogenous tool could define a unified science.  We did not
> > appreciate that the computer could be as versatile as the pen.
>
> Again, you are mmixing up application with theoretical understanding of the
> underlying principles. I also suspect you are confusing computing science with
> a degree that enables you to become a programmer. If all you are interested in
> is programming, then computing science is *not* the right degree (though you
> will likely learn how to program well as a side effect, just like you will
> likely end up with a good grasp of maths after doing a physics degree. In fact,
> I don't believe programming is a University degree - programming is rapidly
> becoming the equivalent of a modern trade and could easily be taught in a
> technical college, like motor mechanics, plumbing or carpentry.
>
> Computing science is not about programming per se. It is about the underlying
> principles and extending our understanding of what can and cannot be done
> together with developing our understanding in order to identify the best
> approaches. It is precisely due to this research and growth in knowledge that
> computers have permiated some many areas and other disciplines.
>
> Originally, you posted with an argument that you felt there wasn't enough
> substance within the area of computing science to justify it as a degree or
> discipline in its own right. You provided a list of courses (9 or so?) and then
> ran out of others and use this to justify your position that computing science
> as a discipline canot be justified. Others have posted additional topic areas
> that on the whole are often seen as part of a comp sci degree. I pointed out
> that your list also ignored the dependency relationships between some topics
> and the fact that you had combined too much into some of them for a single unit
> course. I also added that a good computing science degree should also include
> units that would facilitate someone becoming a good computer scientist, such as
> skills in research methodologies, technical writing analysis and critical
> thinking etc. Once you consider all of these points, not only do you have
> enough units to fill a three year 18 point Comp. Sci degree, I suspect you will
> also have scope for choice/specialisation in the third year units and you will
> not be able to complete all the units possible.
>
> I am curious regarding your motivation for your standpoint. Did you find your
> computing science degree 'light' on content and felt it was padded in order to
> justify it as a discipline? Alternatively, if you don't have or have never
> studied computing science, what are you basing your opinion on, speculation?
> I'm interested because my experience was that Comp. Sci degree had more
> substance than the previous two degrees I did (BA, BSocSci), was one I found
> the most challenging and the one I was always disapointed that there were units
> I was interested in which I just couldn't fit into my degree until I did my
> postgraduate studies. However, I have observed a rather disturbing trend within
> many comp sci degrees that has moved the content towards what I would classify
> as information technology rather than cmputing science. If your experience has
> been with this sort of degree, then I can totally understand where your coming
> from. In this case, the problem isn't that there isn't sufficient substance to
> justify comp science as a discipline in its own right, but rather the
> discipline has been perverted in order to attract more students (for more
> money) and content has been 'softened. I don't believe 'Information Technology"
> has sufficient substance to be a University degree in its own right and that
> what is normally covered in an information technology degree is more aligned
> with knowledge required for working in the field - trade knowledge - the srot
> of stuff that would have been taught at a technical college rather than a
> university. However, while we still have things to learn or theories to
> prove/disprove in areas such as compiler design, knowledge representation,AI,
> language design/implementation, parallel and distributed processing, signal
> processing and communication, data visualisation, refinement of various
> algorithmic approaches, such as those used for genetic, evolutionary
> algorithms, systolic arrays, neural networks etc, then there is sufficient
> justification for the discipline and an associated degree.
>
> Having said all of this, I should also state that I believe the terminology or
> division is quite arbitrary. Only a few hundred years ago, we didn't have the
> distinction between arts and sciences - everything prety much fell under the
> banner of philosophy (hence Dr of Philosophy rather than Dr of computing
> Science, or Dr of Physics etc). These are artificial constructs which are
> created to make communication easier. However, I do believe there is still
> sufficient substance that can be labelled under computing science to justify it
> as a discipline. To put it another way, if you were interested in computers and
> what can and cannot be done and what is and is not possible, what other area
> could you enrol in that would give you just that exposure? Possibly it cold be
> a degree in maths (though I'm not sure how well things like computer architecture,
> human computer interfaces, communications etc would fit within Maths because
> they incorporate other disciplines as well)). In this case, you would end up
> with a B maths with a major in computing science - which amounts to the same
> thing as a B comp sci, just with a diffrerent name and as I've said before,
> names/labels are essentially boring and uninterresting.
>
> It should be noted that many Universities are moving to a model where you do
> not have degrees in specific areas like Computing science. Instead you have
> either a Bachelor of Arts or a Bachelor of Sciences with majors in a specific
> area. However, this is not about lack of substance to justify area specific
> degrees. Its about economic rationalism and strategies to reduce running
> costs/overheads through the simplification of business process, rules and
> regulations.
>
> Tim
>
> --
> tcross (at) rapttech dot com dot au- Hide quoted text -
>
> - Show quoted text -
From: Jon Harrop
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <467b85f0$0$8720$ed2619ec@ptn-nntp-reader02.plus.net>
Tim X wrote:
> ...litrature...

:-)

-- 
Dr Jon D Harrop, Flying Frog Consultancy
The OCaml Journal
http://www.ffconsultancy.com/products/ocaml_journal/?usenet
From: Tim X
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <87wsxv8ir1.fsf@lion.rapttech.com.au>
Jon Harrop <···@ffconsultancy.com> writes:

> Tim X wrote:
>> ...litrature...
>
> :-)
>
Obviously should have been literature.

What would we do without your so valuable contributions John! If only I had
learnt #F I'd be a better speller!

Tim

> -- 
-- 
tcross (at) rapttech dot com dot au
From: Jon Harrop
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <467c958b$0$8729$ed2619ec@ptn-nntp-reader02.plus.net>
Tim X wrote:
> What would we do without your so valuable contributions John! If only I
> had learnt #F I'd be a better speller!

Surely you mean Camel? ;-)

-- 
Dr Jon D Harrop, Flying Frog Consultancy
The OCaml Journal
http://www.ffconsultancy.com/products/ocaml_journal/?usenet
From: Malcolm McLean
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <zLqdnavFv4-wsePbnZ2dnUVZ8sOonZ2d@bt.com>
"Tim X" <····@nospam.dev.null> wrote in message
> Mark Tarver <··········@ukonline.co.uk> writes:
>
> Again, you are mmixing up application with theoretical understanding of 
> the
> underlying principles. I also suspect you are confusing computing science
> with a degree that enables you to become a programmer. If all you are
> interested in is programming, then computing science is *not* the right
> degree (though you will likely learn how to program well as a side effect,
> just like you will likely end up with a good grasp of maths after doing a
> physics degree. In fact, I don't believe programming is a University 
> degree > - programming is rapidly becoming the equivalent of a modern 
> trade and
> could easily be taught in a technical college, like motor mechanics,
> plumbing or carpentry.
>
Everyone has contempt for programming.

Big companies say "we think that programming is a realtively low-level 
activity. We make formal specs of business requirements, you see, and the 
programmers just code them up.
Somewhere in the transition from formal spec to working program, reality 
hits. That is why most big IT projects fail.

Universities tend to say "programming, not theoretical enough". There is 
something in this. Languages and interfaces change all the time. However you 
must learn some of them to make things work, just as you must learn lab 
techniques to do biochemistry.

Finally, a lot of people think that because they can write a few lines of 
BASIC, they know it all. In an sense, they do. You can achieve anything you 
want with a few simple constructs. However actually organising a large 
program is not trivial. It is engineering, not mechanics.

-- 
Free games and programming goodies.
http://www.personal.leeds.ac.uk/~bgy1mm
From: Pascal Bourguignon
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <87myyphgu2.fsf@thalassa.lan.informatimago.com>
"Malcolm McLean" <·········@btinternet.com> writes:

> "Tim X" <····@nospam.dev.null> wrote in message
>> Mark Tarver <··········@ukonline.co.uk> writes:
>>
>> Again, you are mmixing up application with theoretical understanding
>> of the
>> underlying principles. I also suspect you are confusing computing science
>> with a degree that enables you to become a programmer. If all you are
>> interested in is programming, then computing science is *not* the right
>> degree (though you will likely learn how to program well as a side effect,
>> just like you will likely end up with a good grasp of maths after doing a
>> physics degree. In fact, I don't believe programming is a University
>> degree > - programming is rapidly becoming the equivalent of a
>> modern trade and
>> could easily be taught in a technical college, like motor mechanics,
>> plumbing or carpentry.
>>
> Everyone has contempt for programming.

Yeah!  If you feel vengeful, start programming robots.

-- 
__Pascal Bourguignon__                     http://www.informatimago.com/

NOTE: The most fundamental particles in this product are held
together by a "gluing" force about which little is currently known
and whose adhesive power can therefore not be permanently
guaranteed.
From: Tim X
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <87ps3k763l.fsf@lion.rapttech.com.au>
"Malcolm McLean" <·········@btinternet.com> writes:

> "Tim X" <····@nospam.dev.null> wrote in message
>> Mark Tarver <··········@ukonline.co.uk> writes:
>>
>> Again, you are mmixing up application with theoretical understanding of the
>> underlying principles. I also suspect you are confusing computing science
>> with a degree that enables you to become a programmer. If all you are
>> interested in is programming, then computing science is *not* the right
>> degree (though you will likely learn how to program well as a side effect,
>> just like you will likely end up with a good grasp of maths after doing a
>> physics degree. In fact, I don't believe programming is a University degree >
>> - programming is rapidly becoming the equivalent of a modern trade and
>> could easily be taught in a technical college, like motor mechanics,
>> plumbing or carpentry.
>>
> Everyone has contempt for programming.
>

If you believe from what I wrote I have contempt for programming your wrong.
I've been programming for over 20 years and on the whole enjoy it more than any
other job I've done. I also don't have contempt for carpenters, plumbers or
mechanics - they too have a skill. To assume anyone who suggests that
programming should be taught at a technical college rather than as a
degree because they have contempt of programming is both assuming too much and
denigrates technical colleges and the people who studied there. I also think
its a little arrogant to assume programming has to be taught at University. 

A computing science degree is not about programming - programming is the tool
used and should not be the focus of the degree. While I know that many
Universitys do these days run courses on things like Java programming, this is
really quite a recent development (mostly a response to industry/government
pressure and an attempt to appeal to prospective students to earn more money).
Computing science is supposed to focus on the 'science' aspect of computing -
finding solutions to questions that have not been adequately answered, testing
hypothesis, extending our knowledge and techniques through research and
experimentation. Its not about how to write a Java class, interface python with
TK, develop web apps with Ruby or creating a shopping cart in perl. 


> Big companies say "we think that programming is a realtively low-level
> activity. We make formal specs of business requirements, you see, and the
> programmers just code them up.
> Somewhere in the transition from formal spec to working program, reality hits.
> That is why most big IT projects fail.
>

Well, having worked on a reasonable number of big projects and a few little
ones and having worked at all levels from project management to bottom rung
programmer, I'd argue its a lot more complex than that. However, I cannot think
of a single project I worked on that failed because of poor programmers.
Failures are far more commonly due to poor project management, poor
specification, creeping scope, unrealistic timelines and unrealistic
expectations. In my experience, poor programming usually doesn't become evident
until later, after the project has completed and is usually results in
maintenance cost blowouts. 

In all the time I've been programming, probably about 80% of the software I've
worked on has been quite basic with respect to programming skills. The overall
system may be complex due to the number of modules, complexity of business
rules, data models etc. However, once you break it down into the code
components, they are on the whole quite trivial. These days with the faster
CPUs and networks, cheaper storage and significantly increased memory combined
with high level languages with extensive libraries and APIs, the average
programmer does very little that could be considered complex or requiring
extensive knowledge of number theory, computability, the halting problem,
solutions to the dining philosopher's problem or defining new logics to deal
with the frame problem in planning. 

How many young programmers today have written something as basic as a quicksort
algorithm or defined a new hashing function with a specific collision
resolution implementation? I'm not saying there aren't programmers that do this
sort of thing for fun, but few of them do it for work. Of course, I am also
referring to the type of programming that is most common - there are still
islands of programmers working on tough problems or in demanding environments
that need high level computer science backgrounds, but these are the exception
rather than the norm.
 

> Universities tend to say "programming, not theoretical enough". There is
> something in this. Languages and interfaces change all the time. However you
> must learn some of them to make things work, just as you must learn lab
> techniques to do biochemistry.

Ironically, nearly all the lab technicians I've met have learnt their skills at
a technical college. The few I've met that have relevant degrees ended up
becoming lab techs because they couldn't get work in research etc. 

However, I don't totally disagree with what you wrote. I do think that a
computing science degree does put you in a strong position to more easily adapt
to changes. After 20 years, the stuff I learnt in my post grad units on
computer architecture is only now beginning to become outdated. For years, I
was amazed at how easily I was able to adapt to developments in this area
because I had studied them (albeit at a theoretical level in most cases).
Others I worked with who had not done that level of study often found adapting
to these innovations difficult and sometimes time consuming. I would certainly
argue that just teaching someone how to program in X isn't sufficient - X will
be different next year, so what you really need are the skills that will allow
you to adapt to these changes. However, I can't see why that cannot be taught
in a technical college or why it has to be or can only be taught at a
University level.   

> Finally, a lot of people think that because they can write a few lines of
> BASIC, they know it all. In an sense, they do. You can achieve anything you
> want with a few simple constructs. However actually organising a large program
> is not trivial. It is engineering, not mechanics.
>

I agree that managing a large program takes skill. However, I've yet to see any
University course that teaches this skill. The software engineering courses I
did were probably the most useless of any of the courses I did. My experience
employing graduates is that they have absolutely no skill in this area - in
fact, they tend to have no skill at working on any reasonably complex system.
On the whole, their programming experience can be described as showing
potential, but no experience past working on course 'assignment' type problems.
Graduates are rarely aware of maintenance issues and the importance of writing
clear code that others can understand and maintain. They often find it
extremely difficult to get up to speed on a code base that has evolved over
time and which they didn't write from scratch etc. As programmers, comp. Sci
graduates tend to be pretty poor (which is not to say they are not smart - just
inexperienced). This is not surprising - comp. Sci is not about programming.
Furthermore, most academics have little experience as programmers (in the sense
of real world programmers). some are very gifted, but many are very average and
have never worked on anything other than code for various research projects,
which can be large and complex, but often developed over a long period of time
with lots of their own input). 

I suspect that if more programmers learnt their skills in a technical college
where the emphasis was on programming and taught by people with real world
programming experience, we would likely see an improvement in the skills of
graduate programmers. What I'm not sure about is whether these programmers
would hit a plateau sooner than those with a comp. sci background or whther
this would result in a lack of specialised programmers that had the skills for
working on really hard problems. 

My main point I guess is that I think there is a case for both comp. sci and
for technical college programming and that the two have different objectives.
maybe it could be considered in a similar way to electricians and electrical
engineers. both have skills, both are worthy and legitimate occupations and
both have different requirements. It makes no sense forcing someone who just
wants to be a programmer to do computing science just as it makes no sense
making someone who wants to be an electrician do electrical engineering. 

Arguing that programming can only be taught at University is ignoring the fact
it rarely is and to some extent, is probably being a bit precious. 

Tim
-- 
tcross (at) rapttech dot com dot au
From: ctnd
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <1182566623.173695.89540@m36g2000hse.googlegroups.com>
On Jun 21, 10:51 am, Mark Tarver <··········@ukonline.co.uk> wrote:
> On 21 Jun, 09:38, Steven Haflich <····@alum.mit.edu> wrote:
>
> > Mark Tarver wrote:
> > > Here's a question of you.  What should an ideal CS degree comprise?
> > > Choose 18 core modules over 3 years - what would they be and in what
> > > order? Here's a partial answer.
>
> > A properly-sane, self-reflective universe would not offer degrees in
> > computer science.  Indeed, a properly-sane, self-reflective universe
> > would not even have computer science.
>
> Yes; this is a coherent view.  The argument goes that a computer is
> just a tool to do things like a pen and does not deserve a science
> any more than we have a 'pen science' which deals with all the things
> that can be written with a pen.
>
> Mark

Is that relevant to the topic or is that just your way of saying
you've read SICP?
From: fireblade
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <1182433604.184954.224420@c77g2000hse.googlegroups.com>
On Jun 20, 10:16 pm, Mark Tarver <··········@ukonline.co.uk> wrote:
> Here's a question of you.  What should an ideal CS degree comprise?
> Choose 18 core modules over 3 years - what would they be and in what
> order? Here's a partial answer.
>
> Year 1
>
> Knowledge Representation (including databases)
> - SQL, Codd's Relational Algebra, Semantic Nets, Logic Programming
> Functional Programming
> Discrete Mathematics
>         - logic, set theory, basic complexity theory, BNF notation,
> computability
> Programming in C++
> Web Design and Programming
>         - designing web pages and writing scripts
> Principles of Programming and Compilation
>     - the architecture of the digital computer and the classes
>       of languages; techniques for fitting one to the other;
>       basic data structures.
>
> After year 1 I found it difficult to prioritise.  Here's a list of
> possible entrants.
>
> Numerical Methods
> Artificial Intelligence
> Machine Learning
> Cryptography
> Parallel Processing
> Expert Systems
> Multi Agent Systems
> Bioinformatics
> Robotics
> Vision
> Graphics
>
> I'd put an introduction to AI as compulsory.  This leaves 9 courses
> unaccounted for.
>
> I think what this shows is that CS as a pure degree does not really
> fly.  There's a core of stuff which takes up a year and after that it
> seems to me that the range of the field means that the student must
> choose where to go next because no one candidate can really claim to
> be pre-eminent.   Students graduate with the title 'CS with X'.
>
> What's your opinion?
>
> Markwww.lambdassociates.org

Year 1:


1. Introduction to Coomon Lisp - Gentle  Introduction to symbolic
computation
2. Being a lisper - various sorces (about posting in comp.lang.lisp ,
finding libraries, using irc channel lisp, and of course history of
lisp)
3. Advanced Common lisp - Ansi Common Lisp
4. Common Lisp in practice - Practical Common Lisp
5. Lisp macros - On Lisp
6  Lisp condition system - various sources

Year 2.

1. Common Lisp object system - Object-oriented programming in Common
LISP : a programmer's guide to CLOS
2. Web programming in Common Lisp - introduction to development with
lisp web libraries (Hunchentoot, UCW,AllegroServe..)
3. Lisp database backends - introduction to development with lisp
database libraries (CLSQL, CommonLispPrevalence, AllegroCache etc)
4. Lisp GUIs - introduction to development with lisp GUI libraries
(CLIM, Celltk, CAPI etc..)
5. Lisp & AI  I - Paradigms of artificial intelligence programming :
case studies in Common Lisp

Year 3.

1. Genetic programming - Genetic Programming (Koza), Handbook of
Genetic Algorithms (Davis)
2. Compiling Lisp -  LISP in Small Pieces
3. Lisp & AI II - Artificial Intelligence - A Modern Approach
4. AOP - The Art of the Metaobject Protocol
5. Modern lisp libraries - asdf,cells, closer,  Qi, Iterate,
Series,...


Slobodan Blazeski
From: Mark Tarver
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <1182443188.313081.124210@q75g2000hsh.googlegroups.com>
On Jun 21, 2:46 pm, fireblade <·················@gmail.com> wrote:
> On Jun 20, 10:16 pm,Mark Tarver<··········@ukonline.co.uk> wrote:
>
>
>
>
>
> > Here's a question of you.  What should an ideal CS degree comprise?
> > Choose 18 core modules over 3 years - what would they be and in what
> > order? Here's a partial answer.
>
> > Year 1
>
> > Knowledge Representation (including databases)
> > - SQL, Codd's Relational Algebra, Semantic Nets, Logic Programming
> > Functional Programming
> > Discrete Mathematics
> >         - logic, set theory, basic complexity theory, BNF notation,
> > computability
> > Programming in C++
> > Web Design and Programming
> >         - designing web pages and writing scripts
> > Principles of Programming and Compilation
> >     - the architecture of the digital computer and the classes
> >       of languages; techniques for fitting one to the other;
> >       basic data structures.
>
> > After year 1 I found it difficult to prioritise.  Here's a list of
> > possible entrants.
>
> > Numerical Methods
> > Artificial Intelligence
> > Machine Learning
> > Cryptography
> > Parallel Processing
> > Expert Systems
> > Multi Agent Systems
> > Bioinformatics
> > Robotics
> > Vision
> > Graphics
>
> > I'd put an introduction to AI as compulsory.  This leaves 9 courses
> > unaccounted for.
>
> > I think what this shows is that CS as a pure degree does not really
> > fly.  There's a core of stuff which takes up a year and after that it
> > seems to me that the range of the field means that the student must
> > choose where to go next because no one candidate can really claim to
> > be pre-eminent.   Students graduate with the title 'CS with X'.
>
> > What's your opinion?
>
> > Markwww.lambdassociates.org
>
> Year 1:
>
> 1. Introduction to Coomon Lisp - Gentle  Introduction to symbolic
> computation
> 2. Being a lisper - various sorces (about posting in comp.lang.lisp ,
> finding libraries, using irc channel lisp, and of course history of
> lisp)
> 3. Advanced Common lisp - Ansi Common Lisp
> 4. Common Lisp in practice - Practical Common Lisp
> 5. Lisp macros - On Lisp
> 6  Lisp condition system - various sources
>
> Year 2.
>
> 1. Common Lisp object system - Object-oriented programming in Common
> LISP : a programmer's guide to CLOS
> 2. Web programming in Common Lisp - introduction to development with
> lisp web libraries (Hunchentoot, UCW,AllegroServe..)
> 3. Lisp database backends - introduction to development with lisp
> database libraries (CLSQL, CommonLispPrevalence, AllegroCache etc)
> 4. Lisp GUIs - introduction to development with lisp GUI libraries
> (CLIM, Celltk, CAPI etc..)
> 5. Lisp & AI  I - Paradigms of artificial intelligence programming :
> case studies in Common Lisp
>
> Year 3.
>
> 1. Genetic programming - Genetic Programming (Koza), Handbook of
> Genetic Algorithms (Davis)
> 2. Compiling Lisp -  LISP in Small Pieces
> 3. Lisp & AI II - Artificial Intelligence - A Modern Approach
> 4. AOP - The Art of the Metaobject Protocol
> 5. Modern lisp libraries - asdf,cells, closer,  Qi, Iterate,
> Series,...
>
> Slobodan Blazeski- Hide quoted text -
>
> - Show quoted text -

They'll certainly graduate knowing Lisp!  Whether anybody would employ
them however ... ;)

I think your course is long on packages but a bit weak on theory and
applications.  They probably need a procedural language just to know
how the rest of the world lives.

Alternatively they could end up as some obscure Himalyan order of
monks burning incense to John McCarthy as a reincarnation of the
Buddha ;).

Mark
From: Jon Harrop
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <467af269$0$8742$ed2619ec@ptn-nntp-reader02.plus.net>
Mark Tarver wrote:
> They'll certainly graduate knowing Lisp!  Whether anybody would employ
> them however ... ;)

Of course not, they wouldn't know OCaml. ;-)

-- 
Dr Jon D Harrop, Flying Frog Consultancy
The OCaml Journal
http://www.ffconsultancy.com/products/ocaml_journal/?usenet
From: fireblade
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <1182497698.239929.177430@n60g2000hse.googlegroups.com>
On Jun 21, 11:43 pm, Jon Harrop <····@ffconsultancy.com> wrote:
> Mark Tarver wrote:
> > They'll certainly graduate knowing Lisp!  Whether anybody would employ
> > them however ... ;)
>
> Of course not, they wouldn't know OCaml. ;-)
>
> --
> Dr Jon D Harrop, Flying Frog Consultancy
> The OCaml Journalhttp://www.ffconsultancy.com/products/ocaml_journal/?usenet

Implement a Sieve of Eratosthenes finding all prime numbers up to a
given number:

(defun sive (n)
..
(sieve 11)
=>(2 3 5 7 11)

Slobodan Blazeski

My apologies to those who like Java, C#, PHP, Delphi, Visual Basic,
Perl, Python, Ruby, COBOL, F#, Ocaml or any other language. I know you
think you  know a better language than lisp. All I can say is I do,
too!
From: fireblade
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <1182496982.700273.66390@c77g2000hse.googlegroups.com>
On Jun 21, 6:26 pm, Mark Tarver <··········@ukonline.co.uk> wrote:
> On Jun 21, 2:46 pm, fireblade <·················@gmail.com> wrote:
>
>
>
>
>
> > On Jun 20, 10:16 pm,Mark Tarver<··········@ukonline.co.uk> wrote:
>
> > > Here's a question of you.  What should an ideal CS degree comprise?
> > > Choose 18 core modules over 3 years - what would they be and in what
> > > order? Here's a partial answer.
>
> > > Year 1
>
> > > Knowledge Representation (including databases)
> > > - SQL, Codd's Relational Algebra, Semantic Nets, Logic Programming
> > > Functional Programming
> > > Discrete Mathematics
> > >         - logic, set theory, basic complexity theory, BNF notation,
> > > computability
> > > Programming in C++
> > > Web Design and Programming
> > >         - designing web pages and writing scripts
> > > Principles of Programming and Compilation
> > >     - the architecture of the digital computer and the classes
> > >       of languages; techniques for fitting one to the other;
> > >       basic data structures.
>
> > > After year 1 I found it difficult to prioritise.  Here's a list of
> > > possible entrants.
>
> > > Numerical Methods
> > > Artificial Intelligence
> > > Machine Learning
> > > Cryptography
> > > Parallel Processing
> > > Expert Systems
> > > Multi Agent Systems
> > > Bioinformatics
> > > Robotics
> > > Vision
> > > Graphics
>
> > > I'd put an introduction to AI as compulsory.  This leaves 9 courses
> > > unaccounted for.
>
> > > I think what this shows is that CS as a pure degree does not really
> > > fly.  There's a core of stuff which takes up a year and after that it
> > > seems to me that the range of the field means that the student must
> > > choose where to go next because no one candidate can really claim to
> > > be pre-eminent.   Students graduate with the title 'CS with X'.
>
> > > What's your opinion?
>
> > > Markwww.lambdassociates.org
>
> > Year 1:
>
> > 1. Introduction to Coomon Lisp - Gentle  Introduction to symbolic
> > computation
> > 2. Being a lisper - various sorces (about posting in comp.lang.lisp ,
> > finding libraries, using irc channel lisp, and of course history of
> > lisp)
> > 3. Advanced Common lisp - Ansi Common Lisp
> > 4. Common Lisp in practice - Practical Common Lisp
> > 5. Lisp macros - On Lisp
> > 6  Lisp condition system - various sources
>
> > Year 2.
>
> > 1. Common Lisp object system - Object-oriented programming in Common
> > LISP : a programmer's guide to CLOS
> > 2. Web programming in Common Lisp - introduction to development with
> > lisp web libraries (Hunchentoot, UCW,AllegroServe..)
> > 3. Lisp database backends - introduction to development with lisp
> > database libraries (CLSQL, CommonLispPrevalence, AllegroCache etc)
> > 4. Lisp GUIs - introduction to development with lisp GUI libraries
> > (CLIM, Celltk, CAPI etc..)
> > 5. Lisp & AI  I - Paradigms of artificial intelligence programming :
> > case studies in Common Lisp
>
> > Year 3.
>
> > 1. Genetic programming - Genetic Programming (Koza), Handbook of
> > Genetic Algorithms (Davis)
> > 2. Compiling Lisp -  LISP in Small Pieces
> > 3. Lisp & AI II - Artificial Intelligence - A Modern Approach
> > 4. AOP - The Art of the Metaobject Protocol
> > 5. Modern lisp libraries - asdf,cells, closer,  Qi, Iterate,
> > Series,...
>
> > Slobodan Blazeski- Hide quoted text -
>
> > - Show quoted text -
>
> They'll certainly graduate knowing Lisp!  Whether anybody would employ
> them however ... ;)
>

> I think your course is long on packages but a bit weak on theory and
> applications.  They probably need a procedural language just to know
> how the rest of the world lives.
>
> Alternatively they could end up as some obscure Himalyan order of
> monks burning incense to John McCarthy as a reincarnation of the
> Buddha ;).
>
> Mark- Hide quoted text -
>
> - Show quoted text -

OK

Year 3:
..........
6. Procedural & cripled OO programming  - Crush course on C,C++, Java
& PHP.

Year 4:

1. Microeconomics
2. Marketing
3. Small business
4. Founding your own start up - - various articles ( Paul Graham,Joel
Spolsky, etc)
5. Lean software Development-Lean software Development & Implementing
lean software development(Mary Poppendieck, Tom Poppendieck)
6. Software Architecture - Big Ball of Mud (Brian Foote),Essential
Sotware Architecture (Ian Gorton)

If there is no job they will make their own companies. Some of them
will make a fortune the rest will be happy earning for living doing
something they love.

Slobodan Blazeski


My apologies to those who like Java, C#, PHP, Delphi, Visual Basic,
Perl, Python, Ruby, COBOL, F#, Ocaml or any other language. I know
you
think you  know a better language than lisp. All I can say is I do,
too!
From: Tim X
Subject: Re: what should be in a computer science degree?
Date: 
Message-ID: <87bqf9suqe.fsf@lion.rapttech.com.au>
Mark Tarver <··········@ukonline.co.uk> writes:

> Here's a question of you.  What should an ideal CS degree comprise?
> Choose 18 core modules over 3 years - what would they be and in what
> order? Here's a partial answer.
>
> Year 1
>
> Knowledge Representation (including databases)
> - SQL, Codd's Relational Algebra, Semantic Nets, Logic Programming
> Functional Programming
> Discrete Mathematics
> 	- logic, set theory, basic complexity theory, BNF notation,
> computability
> Programming in C++
> Web Design and Programming
> 	- designing web pages and writing scripts
> Principles of Programming and Compilation
>     - the architecture of the digital computer and the classes
>       of languages; techniques for fitting one to the other;
>       basic data structures.
>
> After year 1 I found it difficult to prioritise.  Here's a list of
> possible entrants.
>
> Numerical Methods
> Artificial Intelligence
> Machine Learning
> Cryptography
> Parallel Processing
> Expert Systems
> Multi Agent Systems
> Bioinformatics
> Robotics
> Vision
> Graphics
>
> I'd put an introduction to AI as compulsory.  This leaves 9 courses
> unaccounted for.
>
> I think what this shows is that CS as a pure degree does not really
> fly.  There's a core of stuff which takes up a year and after that it
> seems to me that the range of the field means that the student must
> choose where to go next because no one candidate can really claim to
> be pre-eminent.   Students graduate with the title 'CS with X'.
>
> What's your opinion?
>

Firstly, I think you have put too much into the first year or that the number
of topics being covered means that the students will only end up with a very
shallow and broad exposure. The various topics are not totally independent and
therefore should be in some sort of sequence so that you have a level of
assumed knowledge for each topic. I also don't agree with courses based on
specific languages, such as your proposed programming in C++. to my way of
thinking, a comp. sci degree isn't meant to teach yo how to program in a
specific language, but rather provide you with the skills to allow you to
easily adapt to using any language - when a comp sci degree does rteach a
language, the motivation should be to provide a tool to demonstrate the ideas
and principals developed in other course units (i.e. a tool to aid learning). I
also think you have missed a couple of important areas, but you may have
thought of these as part of other topics you have listed. some of the things
I'd include are,

- Algorithms, searching, sorting, big O
- Abstraction and Abstract Data types
- Human and computer Interfaces
- Software Engineering, project management 
- Graphics, fractals etc.
- Data compression
- Assembly language
- Compilers and Language design 

I also think its a mistake to have degrees that only include courses that are
highly specific to the discipline. For example, graduates should also leave
with skills in 

- verbal and oral communication, technical writing etc. 
- critical thinking, analysis, hypothesis testing and formulating well
  structured arguments. 
- research methodologies

as most graduates will also need to work within the real world and as the
majority of programmers tend to work in areas relating to business, finance
etc, basic knowledge of accounting, economics, politics etc is also an asset.
any courses that assist in things like requirement specification, identifying
and extracting key information, business process analysis and improvement etc
will also be useful. 

-- 
tcross (at) rapttech dot com dot au