[net.cse] Topics for a Computer Science degree

patrick@mcc-pp.UUCP (Patrick McGehearty) (09/10/86)

I suggest that a 4 yr program should cover a large variety of topics
so that when the student later specializes he/she is aware of the
range of the subject matter (i.e. knows how to start learning more)

I would suggest the following plan for a curriculm:
1st yr: Intro course - basics of programming, what are computers good for
	(including why 0.3+0.7 may not be 1.0)
        Software eng - how to program well, intro to 2-4 languages
2nd yr: Adv. programming - complex data structures, more languages
		last course in art of programming as such, skilled
		programming capability is assumed in later courses.
	Theory of computer science
	These courses should be the "washout" courses.  That is,
	anyone who is successful in these courses should have the
	talent, dedication, interest, or whatever to complete the
	curriculm.  The purpose of putting them here is to let students
	know before they have spent three years whether they should
	continue in computer science.
3rd & 4th yr: more advanced courses such as:
Algorithm Analysis and Numerical Methods
Programming System Construction (ie. compilers, operating systems,
	or database systems - gain knowledge of large system construction
	problems and techniques)
Intro to AI Methods
etc.
There should a common core in the above with room for electives to
provide a variety of skills from new graduates.
I leave it to others to discuss the fine details of the advanced topics.
- Patrick McGehearty

	

skajihar@udenva.UUCP ("Lord of Sith" Kajihara) (09/11/86)

In article <1642@mcc-pp.UUCP> patrick@mcc-pp.UUCP (Patrick McGehearty) writes:
>I suggest that a 4 yr program should cover a large variety of topics
>so that when the student later specializes he/she is aware of the
>range of the subject matter (i.e. knows how to start learning more)

Following this discussion of late, I agree with this idea.  From some people
here in the math and computer science department, I have gotten the idea that
they think that a computer scientist is anyone from a data processor to a
systems analyst and that a broad range of subjects is the worst thing to do.
However, these people are of the idea that an undergraduate will necessarily
go into industry right away.  They do not seem to anticipate their people
going to graduate school.  (These ideas are my own and not the department's).
I, as a physics major, believe that I would have difficulty choosing a field
of study as an undergraduate if all I knew was mechanics.  I advocate the 
broader range of subject matter so that the student knows what the general
field encompasses.  Later on, it would be good to specialize, but those
who do not know how to learn broadly will not know how to do this.

          Scott Kajihara

mc68020@gilbbs.UUCP (Thomas J Keller) (09/12/86)

Once again, we are involved in this silly argument.  A am going to make a few
points in this article, and I am **NOT** planning to pull any punches.  If
you can't take strong statements, quit now.  Comments on my statements are
welcome, flames can be sent to /dev/null (or up your A**E).

1)  There *IS* a difference between Computer Science and Computer Engineering.
    They are separate, but **HIGHLY** congruent fields.  In particular, the
    CS major should have a general understanding of CS topics, with a reasonable
    comprehension of gate-level logic and hardware interfacing considerations.
    CE majors, on the otherhand, need a much more thourough comprehension of
    CS topics.  It is impossible to adequately engineer a machine (for *ANY*
    purpose, if one does not comprehend the purpose and use of the machine to
    be designed.  To argue otherwise is to argue in favor of the increasing
    levels of mediocrity one sees in virtually all fields of endeavor.  It
    is not valid to claim that in as much as a field has grown so large that 
    no one can know everything there is to know of it, that one therefore 
    should learn *ONLY* those small portions necessary to accomplish a given
    task.

2)  People whose goal is to become *programmers* should go to the Control 
    Data Institute, or some such equivalent trade school, where they will
    be taught a programming language or two, *MAYBE* a little math, and
    hopefully a little about data structures.  This will meet their needs.
    **********  S T O P  ********** hampering the Computer Science schools
    with these people!  Due to limited resources, the universities cannot
    provide separate curricula (most can't anyway), and so the *SERIOUS*
    CS students get watered down corses, while the FPA (Future Programmers 
    of America) get courses too complex or advanced for their needs (and 
    usually for their capabilities as well).  Lay off the "elitism" crap,
    too!  Computer Science curricula are, or should be designed to prepare
    COMPUTER SCIENTISTS for their chosen profession.  If other people wish
    to be programmers, more power to them!  The world *NEEDS* more programmers.
    By all means, let us train them well.  But ***DON'T*** screw the CS
    students in the process!

3)  Probably the single most important are of computer sciences right now is
    in research.  We desparately need qualified COmputer Scientists (as opposed
    to mere programmers) to conduct the research which is going to move us 
    into the next few generations of computing.  If we don't stop confusing
    CS curricula with FPA curricula, we are going to fall behind the Japanese
    and a few others once again.  **GROW** up, damn it!

    Now that I've said my piece, leave me be.

-- 

Disclaimer:  Disclaimer?  DISCLAIMER!? I don't need no stinking DISCLAIMER!!!

tom keller					"She's alive, ALIVE!"
{ihnp4, dual}!ptsfa!gilbbs!mc68020

(* we may not be big, but we're small! *)

elg@usl.UUCP (Eric Lee Green) (09/17/86)

In article <905@gilbbs.UUCP> mc68020@gilbbs.UUCP writes:
>
[he states my general thoughts, that a programmer should have some
idea of what hardware does, then:]

>2)  People whose goal is to become *programmers* should go to the Control 
>    Data Institute, or some such equivalent trade school, where they will

Actually, I think one of the biggest problems is that people are NOT
learning how to program. At some schools, one can graduate with honors
without ever having to write a program more sophisticated than "Hello
World".  And the results are sometimes ludicrous. I remember some of
the AI/Cognitive Science guys presenting all sorts of fuzzy fuddled
ideas that were in no shape or form capable of being modeled by
current machines. A whole generation of researchers seems to have
digressed into abstract thinking as their sole form of thought, and
have no idea how to turn their neat idea into a neat hack.

>3)  Probably the single most important are of computer sciences right now is
>    in research.  We desparately need qualified COmputer Scientists (as opposed
>    to mere programmers) to conduct the research which is going to move us 
>    into the next few generations of computing.  If we don't stop confusing
>    CS curricula with FPA curricula, we are going to fall behind the Japanese

Sounds like the above problem. Research requires abstract knowledge
and the ability to think. Computer science research, however, involves
one more thing: mapping that thought onto either real or imagined
hardware. That was the breakthrough of the Turing Machine -- Turing
took an abstract concept, counting theory, and mapped it onto a
machine. Basically, that is one of the primary differences between CS
and Math. 

I do agree with the thoughts about Freshman and Sophomore curriculums,
however. For example, asking students to recognize an expression,
without first teaching them something about finite state recognizers
and other theory of that nature, is simply ludicrous. You're teaching
the students to just sit down at the terminal and fiddle around till
something works, you're not teaching them Computer Science.
-- 

      Eric Green {akgua,ut-sally}!usl!elg
        (Snail Mail P.O. Box 92191, Lafayette, LA 70509)

  -- Tengo lo mismo que doy y solo sirve al presente.     

mc68020@gilbbs.UUCP (Thomas J Keller) (09/18/86)

In article <923@usl.UUCP>, elg@usl.UUCP (Eric Lee Green) writes:
> In article <905@gilbbs.UUCP> mc68020@gilbbs.UUCP writes:
> >
> [he states my general thoughts, that a programmer should have some
> idea of what hardware does, then:]
> 
> >2)  People whose goal is to become *programmers* should go to the Control 
> >    Data Institute, or some such equivalent trade school, where they will
> 
> Actually, I think one of the biggest problems is that people are NOT
> learning how to program. At some schools, one can graduate with honors
> without ever having to write a program more sophisticated than "Hello
> World".  And the results are sometimes ludicrous.
> have no idea how to turn their neat idea into a neat hack.

   Whoa!  I have not said that Computer Scientists should not learn to program!
   On the contrary, I concur most heartily with the suggestion that CS people
   are not being taught adequate programming skills.  What I am trying to get 
   across here is that there are people who are going to be "programmers" and
   there are people who are going to be computer scientists.  They are headed
   into two very different realities, and require different training.

> 
> >3)  Probably the single most important are of computer sciences right now is
> >    in research.  We desparately need qualified COmputer Scientists (as opposed
> >    to mere programmers) to conduct the research which is going to move us 
> >    into the next few generations of computing.  If we don't stop confusing
> >    CS curricula with FPA curricula, we are going to fall behind the Japanese
> 
> Sounds like the above problem. Research requires abstract knowledge
> and the ability to think. Computer science research, however, involves
> one more thing: mapping that thought onto either real or imagined
> hardware. That was the breakthrough of the Turing Machine -- Turing
> took an abstract concept, counting theory, and mapped it onto a
> machine. Basically, that is one of the primary differences between CS
> and Math. 
> 

   Ok, but as above, I haven't said that CS researchers shouldn't have a 
   solid grounding in programming skills, which is the primary element 
   necessary to the mapping to which you refer, and which *IS* essential
   in some research.  Bear in mind, however, that there are areas of 
   CS research where conventional programming methodology is not appropriate,
   or even applicable.  CS people need to be taught to work with the abstract
   as well as the concrete.

> I do agree with the thoughts about Freshman and Sophomore curriculums,
> however. For example, asking students to recognize an expression,
> without first teaching them something about finite state recognizers
> and other theory of that nature, is simply ludicrous. You're teaching
> the students to just sit down at the terminal and fiddle around till
> something works, you're not teaching them Computer Science.
> -- 

   Indeed.  I took several upper division "specialization" courses, such as
   Compiler Design and Construction or Operating Systems Design in which a
   significant number of the students, all of whom had allegedly completed 
   the pre-requisite coursework, were unfamiliar with such concepts as 
   pointers (in PASCAL or C).  Concepts such as vertical and horizontal 
   microcode were dismissed as "so many buzzwords" by these students.  *CHOKE*

   I believe that CS people need some knowledge of hardware.  I do not believe
   that they necessarily need to be able to design their own digital circuits,
   however.  I do believe that CS people are a different breed from 
   "programmers", and that *VERY* early on in the curriculum their paths must
   diverge, and radically.

   I cannot speak for any other campus, but at the school *I* attended, a
   graduate with a CS degree was a programmer, and not a highly qualified one
   at that.  Between lack of resources, muddled curricular goals and an 
   inability to identify students with the talent and skills form those without,
   the department managed to turn out a large group of marginally trained
   programmers.  Not a single Computer Scientist has yet to come out of that
   school, nor is one likely to.

-- 

Disclaimer:  Disclaimer?  DISCLAIMER!? I don't need no stinking DISCLAIMER!!!

tom keller					"She's alive, ALIVE!"
{ihnp4, dual}!ptsfa!gilbbs!mc68020

(* we may not be big, but we're small! *)