[comp.edu] CS-1

thssccb@iitmax.IIT.EDU (catherine c bareiss) (04/19/89)

I am designing a beginning programming course.

The structure is to be as follows:
       One day a week, a lecture on a topic (using psuedo code).
	    One this day, all students would attend.
       The second day of the week, the class would be broken into different
	    languages where syntax would be taught.
       The third day would be a lab day where they would learn on the 
	    computer.

I am looking for a list of topics to cover in the first day.
I am also looking for text books if any have been developed for this.
Any recommendations would be very helpful.


By the way, this is my first posting to the net, so I hope everything
is right.

Thanks in advance

Cathy Bareiss

ciriello@lafcol.UUCP (Patrick Ciriello II) (04/27/89)

Was the text book I used as a freshman at Drew University.  It is very
well organized, and has very good examples.  I believe that it is
currently in it's second edition.

For more info, contact BBURD@DRUNIVAC over BITNET.  He will know more of
the particulars (where to get it, etc).

The course that used this book was in intro course designed for those
who were going to be CS majors.  If your course is for non-majors, this
may be a little more than you need.

Pat Ciriello II
Supervisor of Networking and Tech. Services
Lafayette College

weyrich@csun1.UUCP (Orville Weyrich) (05/01/89)

From article <2130@iitmax.IIT.EDU>, by thssccb@iitmax.IIT.EDU (catherine c bareiss):
> I am designing a beginning programming course.
> The structure is to be as follows:
>        One day a week, a lecture on a topic (using psuedo code).
> 	    One this day, all students would attend.
>        The second day of the week, the class would be broken into different
> 	    languages where syntax would be taught.

I would suggest that
you look into the book
"Programming Principles: An Introduction"
by John Motil,
which was originally published by 
Allyn and Bacon
but which I think is now being published by
William C. Brown.

This text separates the theoretical discusion
from the syntax discussion very nicely, and
I like the content.

There is probably also a Modula-2 version of the
book out now, but I am not sure that the
separation of the theory and of the syntax
is as pronounced.

-- 
Orville R. Weyrich, Jr.          | UUCP    : ...gatech!csun1!weyrich
Department of Computer Science   | INTERNET: weyrich@csun1.cs.uga.edu
University of Georgia            |
Athens, GA 30602 USA             | MA BELL : (404) 542-1082

nick@cs.hw.ac.uk (Nick Taylor) (05/03/89)

In article <2130@iitmax.IIT.EDU> thssccb@iitmax.IIT.EDU (catherine c bareiss) writes:
>I am designing a beginning programming course.
>
>The structure is to be as follows:
>       One day a week, a lecture on a topic (using psuedo code).
                                              ^^^^^^^^^^^^^^^^^

Is this a good idea? I know it is becoming more and more common to do this
but I harbour deep suspicions that it might actually make the learning task
more confusing. I would be interested in people's comments on the use of
pseudo-code as an aid to programming language teaching - especially for
teaching a first language.

Nick Taylor   "Life... Don't talk to me about life!" - Marvin BSP, PA, PD(LHS)
Department of Computer Science                JANET : NICK@UK.AC.HW.CS
Heriot-Watt University                      ARPANET : NICK@CS.HW.AC.UK
79 Grassmarket         /\    /  o    __   /_   UUCP : ...!UKC!CS.HW.AC.UK!NICK
Edinburgh EH1 2HJ     /  \  /  /   /     /__)   Tel : +44 31 225 6465 Ext. 532
United Kingdom       /    \/  (_  (___  /  \    Fax : +44 31 449 5153

brian@cat28.CS.WISC.EDU (Brian Miller) (05/05/89)

In article <2394@brahma.cs.hw.ac.uk> nick@cs.hw.ac.uk (Nick Taylor) writes:
>In article <2130@iitmax.IIT.EDU> thssccb@iitmax.IIT.EDU (catherine c bareiss) writes:
>>I am designing a beginning programming course.
>>
>>The structure is to be as follows:
>>       One day a week, a lecture on a topic (using psuedo code).
>                                              ^^^^^^^^^^^^^^^^^
>
>Is this a good idea? I know it is becoming more and more common to do this
>but I harbour deep suspicions that it might actually make the learning task
>more confusing. I would be interested in people's comments on the use of
>pseudo-code as an aid to programming language teaching - especially for
>teaching a first language.

I agree.  Pseudo-code is a waste of time.  Teach the language and its
principles (sp?).  My assembly language teacher spent a week-and-a-half
outlining a hypothetical computer and no one in the class appreciated it.
Remember, pseudo-code in any form is itself a descriptive language.  This
means you have to spend time to familiarize your students with _it_, as
well as the real language.  If you think that it is important that the
students see that language X (the real language you may teach) is not
the _only_ way to talk to a computer or to outline an algorithm, then
introduce them to a second real language a well.  The more real world you
give your students, the less pissed-off the hard to please ones will be
and the more awakened the "slow" ones will be.

rang@cpsin3.cps.msu.edu (Anton Rang) (05/05/89)

In article <2680@puff.cs.wisc.edu> brian@cat28.CS.WISC.EDU (Brian Miller) writes:

   In article <2394@brahma.cs.hw.ac.uk> nick@cs.hw.ac.uk (Nick Taylor) writes:
   >In article <2130@iitmax.IIT.EDU> thssccb@iitmax.IIT.EDU (catherine c bareiss) writes:
   >>I am designing a beginning programming course.
   >>
   >>The structure is to be as follows:
   >>       One day a week, a lecture on a topic (using psuedo code).
   >                                              ^^^^^^^^^^^^^^^^^
   >
   >Is this a good idea? I know it is becoming more and more common to do this

   I agree.  Pseudo-code is a waste of time.  Teach the language and its
   principles (sp?).

I disagree, at least in part; perhaps my understanding of pseudo-code is
different from yours.  Teaching a *flexible* method of pseudo-coding is
basically equivalent to teaching top-down design principles.
  Now, I've seen classes which put a particular style of pseudo-code on a
pedestal (the intro to BASIC course here, for one); that seems a little
ridiculous to me.  (Their idea of pseudo-code is making up new keywords for
BASIC statements...well, almost.)
  Pseudo-code should be a way to design algorithms and programs without having
to worry about the syntactic sugar or limitations of a particular language.
For instance, consider this pseudo-code for a merge sort:

	Merge sort routine (one parameter, some data to sort).
	  1. If there is only one item to sort, just return (already sorted).
	  2. Split the data into two sets.
	  3. Sort each set, using the merge sort routine recursively.
	  4. Join the two sets together.

  This is my conception of what pseudo-code *should* be like.  This can be
treated like an outline, with more detailed instructions added for each part
(i.e. 4a, 4b, etc. detailing the final join operation).  More and more detail
can be added, perhaps including information about the data structures chosen,
until it is detailed enough to easily turn into code:

	Merge sort routine (one parameter, a linked list).
	  1. If there is only one item to sort, just return (already sorted).
	    a. Check if the next-item pointer of the list's head is nil.
	    b. Just return if it is; if not, go on.
	  2. Split the data into two sets.
	    a. Set up two empty temporary lists.
	    b. Go through the input, one item at a time.
	      (i) Add it to either list (alternate between them).
	...

  Again, flexible pseudo-code is good--it prevents the student from having to
worry about details like "how do I test if there is only one item?" or "how to
I find a value in a record when I have a pointer to it?" until they actually
write the routine.  Now, what passes for pseudo-code in many textbooks is much
too strict for this; I think it constrains creativity (though no more than
forcing students to implement an algorithm directly in some language).
  Just my thoughts...

		Anton

+---------------------------+------------------------+-------------------+
| Anton Rang (grad student) | "VMS Forever!"         | VOTE on	         |
| Michigan State University | rang@cpswh.cps.msu.edu | rec.music.newage! |
+---------------------------+------------------------+-------------------+
| Send votes for/against rec.music.newage to "rang@cpswh.cps.msu.edu".   |
+---------------------------+------------------------+-------------------+

pilgrimk@lafcol.UUCP (Kenwyn A. Pilgrim) (05/05/89)

(Nick Taylor) writes:
# >       One day a week, a lecture on a topic (using psuedo code).
# 
# Is this a good idea? I know it is becoming more and more common to do this
# but I harbour deep suspicions that it might actually make the learning task
# more confusing. 

Here's my $0.17:

What should be emphasized is the technique used in producing the solution
(in psuedo code) and not the language specifics on how to implement
the solution. Esp. when dealing with the C language. 
Pascal usually closely resembles the psuedo code but there may be
times when psuedo code does a better job of clarifying things than Pascal
jargon. Never made my learning task any more confusing. Actually 
clarified it (esp. in case of recursive sol'ns!)

So what did I just say? I'm all for psuedo-code!

And thanks to ABHAY SAWANT (sp?) for posting that TSR.TPU. 
I'm looking forward to using it.

-Kenwyn

stephen@ziebmef.uucp (Stephen M. Dunn) (05/05/89)

   We at McMaster University used Oh! Pascal, 2nd ed., for our second-
year course (a second course, the first being in FORTRAN).  I found the
book to be fairly useful, although it is aimed more at a first course,
which is what the original poster had in mind.

   In the introduction, Doug Cooper (co-author with Michael Clancy gives
two electronic addresses:  dbcooper@BERKELEY and ucbvax\!dbcooper.  Don't
ask me if either works.  He suggests that errors in the book or suggestions
be sent to him; he probably wouldn't mind an enquiry that may lead to 
higher sales, though.

Regards, Stephen

-- 
-------------------------------------------------------------------------------
! Stephen M. Dunn              stephen@ziebmef.UUCP ! DISCLAIMER:  Who'd ever !
! (I am currently pondering a witticism to go here) ! claim such dumb ideas?  !
-------------------------------------------------------------------------------

balcer@demon.siemens.com (Marc J Balcer) (05/05/89)

In article <2394@brahma.cs.hw.ac.uk> nick@cs.hw.ac.uk (Nick Taylor) writes:
>In article <2130@iitmax.IIT.EDU> thssccb@iitmax.IIT.EDU (catherine c bareiss) writes:
>>       One day a week, a lecture on a topic (using psuedo code).
>
>Is this a good idea? ...
>but I harbour deep suspicions that it might actually make the learning task
>more confusing... 

After about 4-5 weeks in the introductory Pascal course,
I'll start using a pseudocode when explaining algorithms.
Example:

    set total to zero
    for every element in table do
	add its value to the total
	write the value
    end
    print the total

Invariably there will be the student(s) who have not yet
mastered even the most fundamental detail of Pascal syntax
and many others for whom the syntax is not "second nature."
Some will copy down the pseudocode word-for-word and then
type it in and try to run it.  (It happens)  

It's very difficult for students, when confronted with
several very similar notations, to keep straight "this is
design language," "this is Pascal," "this is Scheme."

Now in a Data Structures or Compiler Design class, there's
usually very little problem with using pseudocode.  It's a
convenient, informal shorthand.  These students have
mastered the syntax of their programming language.

>... an aid to programming language teaching - especially for
>teaching a first language.
>

Many of us who teach programming (er, I mean "introductory
computer science") courses have struggled with this.  It
would certainly be nice to have students who complete the
first year of CS able to:

    -	see a computer as more than just a "Pascal box"

    -   think about a problem at a more abstract level than the
	implementation language 

    -	see Computer Science as more than "just learning
	languages"

yet also able to plan and write clear, coherent programs.

One popular approach is to teach the course either
"language-free" or using several languages at once.  We
justify this by saying (and rightly so) that a computer
scientist must be capable of working with several different
notations.  BUT can we expect that every student will be
immediately capable of making these kinds of "context
switches?"  I'm not sure.

---------------------------------------------------------------------------
Marc J. Balcer
[balcer@demon.siemens.com]
Siemens Research Center, 755 College Road East, Princeton, NJ 08540

brian@cat50.CS.WISC.EDU (Brian Miller) (05/05/89)

In article <1035@lafcol.UUCP> pilgrimk@lafcol.UUCP (Kenwyn A. Pilgrim) writes:
>Here's my $0.17:
>Pascal usually closely resembles the psuedo code but there may be
>times when psuedo code does a better job of clarifying things than Pascal
>jargon.

I see your $.17 and raise you $.05:    :-)

If that really is the case (and I agree that it is), then
academic languages like pascal still have a ways to go
in my book.

ciriello@lafcol.UUCP (Patrick Ciriello II) (05/06/89)

In article <2394@brahma.cs.hw.ac.uk>, nick@cs.hw.ac.uk (Nick Taylor) writes:
> In article <2130@iitmax.IIT.EDU> thssccb@iitmax.IIT.EDU (catherine c bareiss) writes:
> >I am designing a beginning programming course.
> >
> >The structure is to be as follows:
> >       One day a week, a lecture on a topic (using psuedo code).
>                                               ^^^^^^^^^^^^^^^^^
> 
> Is this a good idea? I know it is becoming more and more common to do this
> but I harbour deep suspicions that it might actually make the learning task
> more confusing. 

Well, if you write your pseude code so that it is OBVIOUSLY english (
i.e. using full sentences, etc) then I don't think the students would
become confused.  They are learning and idea without the mechanics.
On the other hand, you might want to incorporate the Reserved Words of
the language to be taught inside your 'english' ( which may have to be
fudged a little ) so that while they are learning the ideas on the
surface, they are also becoming familiar with the specific mechanics
associated with that particular language.

Pat (the Dragon that is WHITE)

Disclaimer: I have no idea what I am talking about .. press 'n' now ....

rg@psgdc (Dick Gill) (05/06/89)

In article <2394@brahma.cs.hw.ac.uk> nick@cs.hw.ac.uk (Nick Taylor) writes:
>In article <2130@iitmax.IIT.EDU> thssccb@iitmax.IIT.EDU (catherine c bareiss) writes:
>>I am designing a beginning programming course.
>>
>>The structure is to be as follows:
>>       One day a week, a lecture on a topic (using psuedo code).
>                                              ^^^^^^^^^^^^^^^^^
>
>Is this a good idea? I know it is becoming more and more common to do this
>but I harbour deep suspicions that it might actually make the learning task
>more confusing....

I started programming in the 60's when it was a good deal more
*art* than *science* !:-) and have a couple of thoughts on
the topic.  

It is important that the begining programmer understand  that
the first step in writing software is to structure a clear and
logical solution to the problem begin solved.  This exercise
involve primarily logic and imagination, and is largely
independent of the language used to write the program.  A pseudo
code that stresses the logical steps being performed could be
very useful here, particularly if it keeps the students from
rushing to write *real* programs before they have figured out
how to solve the problem!

-- 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Dick Gill     Professional Solutions Group   (703)761-1163   ..uunet!psgdc!rg
The quality of the circus here in Washington depends on the clowns you elect.

art@buengc.BU.EDU (A. R. Thompson) (05/07/89)

In article <206@psgdc> rg@psgdc.UUCP (Dick Gill) writes:
>[...]
>It is important that the begining programmer understand  that
>the first step in writing software is to structure a clear and
>logical solution to the problem begin solved.

It has been my experience that the biggest difficulty beginners have is
learning how to state the problem clearly and concisely.  I have found
that once students grasp the idea of clean problem statement that the
solutions come rather easily.

ciriello@lafcol.UUCP (Patrick Ciriello II) (05/08/89)

In article <206@psgdc>, rg@psgdc (Dick Gill) writes:
> In article <2394@brahma.cs.hw.ac.uk> nick@cs.hw.ac.uk (Nick Taylor) writes:
> >In article <2130@iitmax.IIT.EDU> thssccb@iitmax.IIT.EDU (catherine c bareiss) writes:
> >>I am designing a beginning programming course.
> >> [ stuff deleted ]
 
> I started programming in the 60's when it was a good deal more
> *art* than *science* !:-) and have a couple of thoughts on
> the topic.  

I consider programming more of an art than a science myself.
I compare writning a large system to the writing of a symphony.

> It is important that the begining programmer understand  that
> the first step in writing software is to structure a clear and
> logical solution to the problem begin solved.
>  [stuff deleted]

Absolutely.  Understanding the way to approach a problem and solve it is
much more important that learning the syntax of a particular language.

Perhaps that is where CSCI course need to be bolstered up.  More problem
solving and less 'programming'.

Of course, you need both, but I wonder where the emphasis should really
be?

Pat ( the DRAGON that is WHITE )

diluthr@sdrc.UUCP (Dan Luther) (05/08/89)

In article <2790@buengc.BU.EDU>, art@buengc.BU.EDU (A. R. Thompson) writes:
> In article <206@psgdc> rg@psgdc.UUCP (Dick Gill) writes:
> >[...]
> >It is important that the begining programmer understand  that
> >the first step in writing software is to structure a clear and
> >logical solution to the problem begin solved.
> 
> It has been my experience that the biggest difficulty beginners have is
> learning how to state the problem clearly and concisely.  I have found
> that once students grasp the idea of clean problem statement that the
> solutions come rather easily.

This is so true.  At Cal. State Chico where I got my degree, the initial CS 
class (read 'thinner class') was assembly language programming (two thirds of 
the initial enrollment had dropped by the final).  One of the reasons this class
was so tough was beacause, in the words of my TA 'it's really two classes in 
one, problem solving AND assembly language programming'.  He was right on the 
target!

Although I liked the class, I think the problem with tying a programming 
language to the process of learning to solve problems places artificial 
constraints on the student.  IMHO it would be more benificial to teach the 
student good problem solving skills independant of a computer language (BTW
Kepner Tregoe does a very good job of teaching structured problems solving
techniques).  I believe that once the students have developed good problem
solving skills, programming then becomes more a matter of taking advantage of
the features of a specific language to implement the solution (on a side note,
in an ideal environment part of the process would be determining *which* 
programming language was best suited to the particular *solution*)

Going back to my original reason for responding, as A.R. Thompson writes, yes
I'd say 50 to 75 percent of problem soving skill comes from proper explicit 
problem definition.

 
And to address another thread, if you are going to teach students how to solve 
problems with computers, use an 'english' style psuedo code.  Worry about the 
programming mechanics later.

	Dan Luther
	uunet!sdrc!diluthr
	(513) 576-2452 (w)

Disclaimer: I am not associated with K.T. in any way, shape, or form, other
than having had the pleasure of attending one of their classes and being very 
pleased and impressed.

xpress@Portia.Stanford.EDU (Brad Hochberg) (05/09/89)

Some classes here at Stanford use Doug Cooper's Condensed Pascal.  It is a 
compressed and revised Oh! Pascal!.  Plus it includes the complete Standard
Pascal User Reference Manual.  It is generally aimed more to students who have
had a little prior programming experience whereas Oh! Pascal! is geared a
little more towards beginners.  They are both excellent.  Personally I prefer
Condensed Pascal.  Plus it is a great reference guide.

--Brad


-- 
Brad Hochberg              | "The only time I show any consistency these days
Stanford University        |  days is when I'm making a cup of tea."
xpress@portia.stanford.edu | --Mats Wilander, after getting bounced in the
                           |   in the first round of the WCT Finals in Dallas

duncan@dduck.ctt.bellcore.com (Scott Duncan) (05/09/89)

In article <1085@lafcol.UUCP> ciriello@lafcol.UUCP (Patrick Ciriello II) writes:
>
>I consider programming more of an art than a science myself.
>I compare writning a large system to the writing of a symphony.

Depending on how large you mean, I do not know that any symphony was ever
written by a team of people, but most large software systems are not the work
of a single individual -- though much of the vision might be, I agree.  The
problems in large system development are those brought about through the com-
munication needed between groups of people, assuming certain levels of compe-
tence or experience.  (The individual differences between programmers which
studies by Curtis, Sheppard, et al, have demonstrated also tend to wash out,
according to Belady and Lehman, the larger the project gets.)

>             Understanding the way to approach a problem and solve it is
>much more important that learning the syntax of a particular language.
>
>Perhaps that is where CSCI course need to be bolstered up.  More problem
>solving and less 'programming'.
>
>Of course, you need both, but I wonder where the emphasis should really be?

Clearly on the former.  I have taught students who were taking a second or
third language and who told me they "knew how to program" already.  They did
some of the more careless and sloppy work as well as having had some of the
least ingenious solutions.  They're goal was to "get done" with the course be-
cause they just "needed another language credit" to graduate.

Programming is the easy part.

Speaking only for myself, of course, I am...
Scott P. Duncan (duncan@ctt.bellcore.com OR ...!bellcore!ctt!duncan)
                (Bellcore, 444 Hoes Lane  RRC 1H-210, Piscataway, NJ  08854)
                (201-699-3910 (w)   201-463-3683 (h))

duncan@dduck.ctt.bellcore.com (Scott Duncan) (05/09/89)

In article <16007@bellcore.bellcore.com> I wrote:
>
>                            They're goal was to "get done" with the course be-
                             ^^^^^^^
>cause they just "needed another language credit" to graduate.

God help me for that one...well, it was early in the morning after working late
at night, etc., etc.  Sorry folks...

Speaking only against myself, of course, I am...
Scott P. Duncan (duncan@ctt.bellcore.com OR ...!bellcore!ctt!duncan)
                (Bellcore, 444 Hoes Lane  RRC 1H-210, Piscataway, NJ  08854)
                (201-699-3910 (w)   201-463-3683 (h))

reggie@dinsdale.nm.paradyne.com (George W. Leach) (05/09/89)

In article <1989May4.225626.657@ziebmef.uucp> stephen@ziebmef.UUCP (Stephen M. Dunn) writes:

>   We at McMaster University used Oh! Pascal, 2nd ed., for our second-
>year course (a second course, the first being in FORTRAN).  I found the
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^
>book to be fairly useful, although it is aimed more at a first course,
>which is what the original poster had in mind.


     This is exactly the same sequence of courses that I took as an
undergrad back in the mid 70's.  Is this still the order in which
most CS programs teach introductory level programming?  I would have
thought by now that FORTRAN would not be the first language taught.
I attended an engineering school where everyone learned FORTRAN as
a first programming course.  Pascal was introduced in the Intro to
CS course.

George

George W. Leach					AT&T Paradyne 
.!uunet!pdn!reggie				Mail stop LG-129
reggie@pdn.paradyne.com				P.O. Box 2826
Phone: (813) 530-2376				Largo, FL  USA  34649-2826

reggie@dinsdale.nm.paradyne.com (George W. Leach) (05/09/89)

In article <715@sdrc.UUCP> diluthr@sdrc.UUCP (Dan Luther) writes:

>This is so true.  At Cal. State Chico where I got my degree, the initial CS 
>class (read 'thinner class') was assembly language programming (two thirds of 
              ^^^^^^^^^^^^^
>the initial enrollment had dropped by the final).  One of the reasons this
>class was so tough was beacause, in the words of my TA 'it's really two
>classes in one, problem solving AND assembly language programming'.  He was
>right on the target!


      It is not clear to me exactly what type of course this is.  If this
was the initial PROGRAMMING class, then I can see why so many people dropped
out of the program :-)  It might give one the impression that assembly is
what CS is all about!


      I am hoping that the initial CS class was not the first time the
students in the program had been exposed to programming and problem
solving.




George W. Leach					AT&T Paradyne 
.!uunet!pdn!reggie				Mail stop LG-129
reggie@pdn.paradyne.com				P.O. Box 2826
Phone: (813) 530-2376				Largo, FL  USA  34649-2826

diluthr@sdrc.UUCP (Dan Luther) (05/10/89)

In article <6086@pdn.paradyne.com>, reggie@dinsdale.nm.paradyne.com (George W. Leach) writes:
> In article <715@sdrc.UUCP> diluthr@sdrc.UUCP (Dan Luther) writes:
> 
> >This is so true.  At Cal. State Chico where I got my degree, the initial CS 
> >class (read 'thinner class') was assembly language programming (two thirds of 
>               ^^^^^^^^^^^^^
> >the initial enrollment had dropped by the final).  One of the reasons this
> >class was so tough was beacause, in the words of my TA 'it's really two
> >classes in one, problem solving AND assembly language programming'.  He was
> >right on the target!
> 
> 
>       It is not clear to me exactly what type of course this is.  If this
> was the initial PROGRAMMING class, then I can see why so many people dropped
> out of the program :-)  It might give one the impression that assembly is
> what CS is all about!
> 
> 
>       I am hoping that the initial CS class was not the first time the
> students in the program had been exposed to programming and problem
> solving.
> 
Sorry, I'm pretty sure you had to have taken a 'high' level programming 
language (COBOL, FORTRAN, PASCAL) already.  So it wasn't the first CS class you 
had to take.  I was likening it to CHEM 1A for science majors, it's a 
degree requirement that *everyone* in the program will eventually have to 
take.  It's a pre-requisiste for *most* of the the other classes in the program. 
There were some programming classes that you could take at just about any time,
but if you were serious about the major, you had to pass this class.  I think 
a lot of the students were *considering* a CS major.  If they were ideed 
serious, they usually took it again later (I knew one woman to who took it 
three times before she passed, she ended up doing well in the program, she 
just had s slow start).

So I shouldn't have indicated that is was the 'initial' CS class.  It was more 
like one of the initial classes for the degree requirement chain.  Sorry.

But I hope that doesn't invalidate the point I was trying to make, and that is
(good) problem solving skills are to important to be *bundled* with a 
programming language.  Teach them in a language independant class.

Dan

diluthr@sdrc.UUCP (Dan Luther) (05/10/89)

> 
> But I hope that doesn't invalidate the point I was trying to make, and that is
> (good) problem solving skills are to important to be *bundled* with a 
                                    ^^too
> programming language.  Teach them in a language independant class.

Sheesh, wake up you dummy (slap!).

880716a@aucs.UUCP (Dave Astels) (05/11/89)

In article <1085@lafcol.UUCP> ciriello@lafcol.UUCP (Patrick Ciriello II) writes:
>
>Absolutely.  Understanding the way to approach a problem and solve it is
>much more important that learning the syntax of a particular language.

This is fine for begining 'programmers' but they shouldn't be given the idea
that you can't start coding until you understand the problem and its solution.
If this was the case no research would ever get done.  In some fields (AI in
particular) the problem becomes understood better by trying to solve it.

Exploritory programming?  It definately has its place.  Of course only with a
good interactive environment (i.e. Smalltalk, Lisp...)

-Dave

Standard disclaimers about this being my own opinions...

reggie@dinsdale.nm.paradyne.com (George W. Leach) (05/11/89)

In article <717@sdrc.UUCP> diluthr@sdrc.UUCP (Dan Luther) writes:
 
>> But I hope that doesn't invalidate the point I was trying to make, and that is
>> (good) problem solving skills are to important to be *bundled* with a 
>                                    ^^too
>> programming language.  Teach them in a language independant class.

>Sheesh, wake up you dummy (slap!).

    Thats ok.


    Your point is well taken.  I would like to further add that problem
solving should be stressed in any and all programming courses.  It is a
difficult skill to teach, especially in one course.  It is an acquired
skill more than one that is taught.  And that just takes time.  Unfortunately,
in many introductory level programming courses you will find people for
whom it will be the *only* programming course they ever take.  So the
first course needs to pay special attention to this topic.


George W. Leach					AT&T Paradyne 
.!uunet!pdn!reggie				Mail stop LG-129
reggie@pdn.paradyne.com				P.O. Box 2826
Phone: (813) 530-2376				Largo, FL  USA  34649-2826

kwan@maui.cs.ucla.edu (Edmund Kwan) (05/12/89)

In article <1866@aucs.UUCP> 880716a@aucs.UUCP (Dave Astels) writes:
>In article <1085@lafcol.UUCP> ciriello@lafcol.UUCP (Patrick Ciriello II) writes:
>>
>>Absolutely.  Understanding the way to approach a problem and solve it is
>>much more important that learning the syntax of a particular language.
>
>This is fine for begining 'programmers' but they shouldn't be given the idea
>that you can't start coding until you understand the problem and its solution.
		      ^^^^^^
>If this was the case no research would ever get done.  In some fields (AI in
>particular) the problem becomes understood better by trying to solve it.
								^^^^^

Coding without understanding the problem & its solution(s) (Code and Fix 
Approach) is a no-no according to my Software Engineering class.  We should
definitely not teach beginning programmers to hack out a program in Pascal
rather than to design a solution and then implement it in Pascal.

Perhaps you are talking about prototyping?

Seems to me that students don't ever need to develop prototypes in their
classes (or maybe all they do is develop prototypes).

manis@faculty.cs.ubc.ca (Vincent Manis) (05/12/89)

In article <23855@shemp.CS.UCLA.EDU> kwan@cs.ucla.edu (Edmund Kwan) writes:
>Coding without understanding the problem & its solution(s) (Code and Fix 
>Approach) is a no-no according to my Software Engineering class.  We should
>definitely not teach beginning programmers to hack out a program in Pascal
>rather than to design a solution and then implement it in Pascal.

Having taught both, I'm not entirely sure that Software Engineering and
Computer Science are the same thing. In fact, I'm pretty sure that the
reverse is true.

Software engineering, like all forms of engineering, relies upon the
application of fairly well-understood principles to problems. The goal is to
produce something which works, with as little uncertainty as possible. 
Whether it's a bridge or a program, we want a reliable product, as close
to budget and deadline as possible. (Incidentally, it has always amazed me 
how people will hire `programmers' who know nothing about software design,
but would rather like to learn. I'd never hire an architect or a lawyer that
way...) 

Introductory computer science is much more of a laboratory science. Students
are supposed to learn concepts, primarily by experimentation. The goal is
not the program, but the increased understanding of the subject. Naturally,
students will be encouraged to program well; but, then, one of the reasons
I got out of chemistry was my tendency to break anything made out of glass.

There is no claim that `science' is better than `engineering' here. However,
I don't think it makes sense to teach engineering prior to teaching sound
science.

A propos this topic, if you haven't already done so, read the `ACM Task
Force on the Core of Computer Science' report in the January CACM. It will
change your paradigm of computer science completely. 
____________  Vincent Manis                    | manis@cs.ubc.ca
___ \  _____  The Invisible City of Kitezh     | manis@cs.ubc.cdn
____ \  ____  Department of Computer Science   | manis%cs.ubc@relay.cs.net
___  /\  ___  University of British Columbia   | uunet!ubc-cs!manis
__  /  \  __  Vancouver, BC, Canada V6T 1W5    | (604) 228-2394
_  / __ \  _ 
____________  "I'm not making this up, you know!" -- Anna Russell
             
              

880716a@aucs.UUCP (Dave Astels) (05/13/89)

In article <23855@shemp.CS.UCLA.EDU> kwan@cs.ucla.edu (Edmund Kwan) writes:
>
>Perhaps you are talking about prototyping?

I guess I am.  My area of interest (Natural Language) seems to be one of
"this sounds like it will work, let's try it!"

Also, I am a self-taught hacker.  As such I haven't much use for 'by the book'
software engineering.  If it feels right try it.  It's called creativity (as
opposed to rote design).  Although in a well defined domain like CS-1 level,
this approach isn't needed, and a good grounding on methodical problem
solving is required (at least for the first year CS students that I've seen).
But on the other hand, they shouldn't be limited in their problem solving
techniques.  Sometimes a shot in the dark pays off.