Re: what should be in a computer science degree?



On 21 Jun, 09:09, Tim X <t...@xxxxxxxxxxxxxxx> wrote:
Mark Tarver <dr.mtar...@xxxxxxxxxxxxxx> writes:
On 21 Jun, 03:40, Jon Harrop <j...@xxxxxxxxxxxxxxxxx> 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

.



Relevant Pages

  • Re: why learn C?
    ... programming beginner. ... Any language that allows subroutines is procedural based. ... you can learn about algorithms and data structures ...
    (comp.lang.c)
  • Re: what should be in a computer science degree?
    ... Games programming ... scientists be taught something about data structures and algorithms? ... foundation in programming because computeracy is becoming as important ... I thought about the Data Structures and Algorithms idea. ...
    (comp.lang.lisp)
  • Re: How to solve for smallest and largest int?
    ... generate a simple algorithm has no business trying to learn Ada. ... then recommended Basic or C as a first language. ... lot of bad programming practices using Basic. ... Algorithms interact with data structures to produce programs. ...
    (comp.programming)
  • Re: what should be in a computer science degree?
    ... Games programming ... scientists be taught something about data structures and algorithms? ... Take a look at some of the algorithms in books ... concepts, such as what was a computer, the history of computing, networks, ...
    (comp.lang.lisp)
  • Re: Sin & Cos speed worries
    ... execution time of the algorithms. ... Unfortunetly some of the algorithms that my group has developed are ... in "Programming Pearls" (or in "More Programming ... dividing by a constant inside a loop, ...
    (sci.math.num-analysis)