shaffer@operations.dccs.upenn.edu (Earl Shaffer) (07/15/87)
I have a questions which should stir up a debate. Which language should be taught first in the Computer Science track for incoming freshman? We are assuming that is possible to teach almost any (exceptions: Snobol, C++, Forth, etc.) and that it is phyiscally possible to teach any language (example: CICS COBOL, Burroughs Super Algol). The point of all of this is that back when I was in school, Pascal had just replaced Basic as the languages *generally* taught first in a CSC 101 type class. I hear that 'C' has gained in popularity enough that schools are using C rather than Pascal for intro courses. Remember, this is the course that will teach all the bad habits we learned from our first language(s)! (happy face) For example, I still use "I" for counters because I learned Fortran first. (yech!) Well, what do all of you think? (flames to /dev/null) cheers, ============================================================================== Earl Shaffer - University of Pennsylvania - Data Communications Department "Time was invented so that everything wouldn't happen at once." Steven Wright ==============================================================================
jholbach@wright.EDU (Jim Holbach) (07/16/87)
in article <1472@super.upenn.edu.upenn.edu>, shaffer@operations.dccs.upenn.edu (Earl Shaffer) says: > Xref: wright soc.college:94 comp.edu:381 > > I have a questions which should stir up a debate. > > Which language should be taught first in the Computer Science > track for incoming freshman? > English. J. Holbach
gcm@mtgzz.UUCP (g.c.mccoury) (07/16/87)
In article <1472@super.upenn.edu.upenn.edu>, shaffer@operations.dccs.upenn.edu (Earl Shaffer) writes: > Which language should be taught first in the Computer Science > track for incoming freshman? > > Remember, this is the course that will teach all the bad habits we > learned from our first language(s)! (happy face) For example, I > still use "I" for counters because I learned Fortran first. (yech!) Anybody know if they are still teaching Fortran as the intro CS class at Penn State these days? Just wonderin because it was such a *fun* class for me at the time ;-) Right after this class came IBM 360/370 assembler - this class really thinned out the crowd :-} From your local PSU graduate..... /*************************************************************************** * * * e N Grover McCoury * * B o ATT Laboratories(?) [was ISL] * * y r m a l ?? ...!ihnp4!mtgzz!gcm * * h * * W I refuse to have a battle of wits * * with an unarmed person... * * * ****************************************************************************/
credmond@orchid.UUCP (07/17/87)
In article <1472@super.upenn.edu.upenn.edu> shaffer@operations.dccs.upenn.edu.UUCP (Earl Shaffer) writes: > >Remember, this is the course that will teach all the bad habits we >learned from our first language(s)! (happy face) For example, I >still use "I" for counters because I learned Fortran first. (yech!) > And you think that's bad? (Another round of old-timer stories.) *I* learned my first bits of programming in a language called FORGO, which seems to have disappeared from the face of the earth. I think it must have been a subset of FORTRAN II. Probably explains why I ended up majoring in English and political science!
elg@killer.UUCP (Eric Green) (07/18/87)
in article <1472@super.upenn.edu.upenn.edu>, shaffer@operations.dccs.upenn.edu (Earl Shaffer) says: > Xref: killer soc.college:939 comp.edu:480 > > I have a questions which should stir up a debate. > > Which language should be taught first in the Computer Science > track for incoming freshman? Scheme, of course! With _Structure and Interpretation of Computer Programs_ out there, why bother with squashing semi-colons in Pascal, fer chrissakes? I spent most of my freshman year hitting errors like these: procedure barf (j:array[1..20] of char); .... if x > y and y < z then begin ... end; else ..... Whoobay. I can think of funner things to do! Was almost a relief to learn PL/1 -- just put a semicolon at the end of each line, and it's happy as a lamb (note that this was before Unix and "C" became popular). As for learning "C" as the first language... "C" has a fairly complex syntax, too. For example, if a freshsman first sees for(i=0;i<limit;i++) puts(trash[(i<maximum)?i:0]); "uh....... gee, does that work?" Much easier to just wrap parentheses around everything and forget totally about such nasty things... -- Eric Green elg%usl.CSNET Ron Headrest: A President {cbosgd,ihnp4}!killer!elg for the Electronic Age! Snail Mail P.O. Box 92191 Lafayette, LA 70509 BBS phone #: 318-984-3854 300/1200 baud
dnk@bucsb.bu.edu.UUCP (Danny Kumamoto) (07/19/87)
In article <145@wright.EDU> jholbach@wright.EDU (Jim Holbach) writes: >in article <1472@super.upenn.edu.upenn.edu>, shaffer@operations.dccs.upenn.edu (Earl Shaffer) says: >> Xref: wright soc.college:94 comp.edu:381 >> >> I have a questions which should stir up a debate. >> >> Which language should be taught first in the Computer Science >> track for incoming freshman? >> > > English. > > > >J. Holbach > Right on! English, English and more English, and throw in some extra grammar and writing classes (e.g., technical writing). -- Danny ARPANET: dnk@bucsb.bu.edu BITNET: cscjfsn@BOSTONU CSNET: dnk%bucsb@bu-cs UUCP: ..!harvard!bu-cs!bucsb!dnk Phone: (617) 547-5033 Voice: "Hey Danny" will do USnail: 14 Laurel St., Cambridge, MA 02139, U.S.A. "Joy is in the ears that hear." -- Saltheart Foamfollower
paradis@encore.UUCP (Jim Paradis) (07/20/87)
In article <1472@super.upenn.edu.upenn.edu> Earl Shaffer writes: >Which language should be taught first in the Computer Science >track for incoming freshman? > >Remember, this is the course that will teach all the bad habits we >learned from our first language(s)! (happy face) For example, I >still use "I" for counters because I learned Fortran first. (yech!) Believe it or not, at MIT they teach Lisp in their intro-CS course! (6.001 for you techies out there). When I was a froshling they used a strange dialect called Ulisp that ran on a DEC-20. By the time I left they were using Scheme on HP micros, and I think they'll be doing that for a while. Anyway, one of the reasons that they did this was because a LOT of MIT CS majors already had played with computers before coming to MIT, and so were chock-full of bad habits from their various "first languages". By using a language unlike anything most anyone had seen before, they hoped to be able to start on a cleaner slate. Of course, that didn't prevent ME from speaking Lisp with a heavy Fortran accent for a while... but I got over it eventually. +----------------+ Jim Paradis linus--+ +--+-------------+ | Encore Computer Corp. necntc--| | | E N C O R E | | 257 Cedar Hill St. ihnp4--+-encore!paradis | +-------------+--+ Marlboro MA 01752 decvax--| +----------------+ (617) 460-0500 talcott--+ You don't honestly think ENCORE is responsible for this??!!
rterrell@ncoast.UUCP (Roger Terrell) (07/21/87)
>Which language should be taught first in the Computer Science >track for incoming freshman? Modula-2 is an excellent language; it is useful for teaching structured programming techniques, is a high-level language (but can also do low-level things), etc. If one learns Modula-2 *properly*, then one has also learned good software developement too. It is much better than C (only my opinion) for these things, and certainly better than pascal. As powerful as Ada, but much easier to use and easier to learn. Roger Terrell Muskingum College UUCP: ...cbosgd!musky2!terrell CSNet: ccterrell%muskingum.edu@relay.cs.net
talbot@tc.fluke.COM (Todd Smith) (07/23/87)
In article <3263@ncoast.UUCP> rterrell@ncoast.UUCP (Roger Terrell) writes: >>Which language should be taught first in the Computer Science >>track for incoming freshman? > >Modula-2 is an excellent language; Indeed. Rumor has it that, begining this fall, Stanford will begin teaching Modula-2 in place of Pascal in it's 'Intro to Software Engineering' courses (CS 106A & B). Why? Because Modula-2 is much better than Pascal when it comes to modules and modular programming (In our implementation anyway) and these courses (esp. B) are *very* module oriented. Todd INTERNET: talbot@tc.fluke.COM, talbot@portia.stanford.edu UUCP: {uw-beaver, sun}!fluke!talbot
jcz@sas.UUCP (John Carl Zeigler) (07/24/87)
I have recently been convinced that the introductory language courses in Computer Science should teach C, Fortran, and Pascal. Lisp and Assembly should be demonstrated, but perhaps no assignments given. ONLY the languages' basic syntax differences and a discussion of the different problems the languages were developed to solve would Two or three simple assignments in each language would be presented. Later courses could deal with more theoretical differences, but a background in several languages and some discussion of the motivations behind their designs would more benficial than studying one particular language. At NCSU, we had a sequence of 3 hour courses that taught fundamental concepts, with many 1 hour courses to chose from that covered individual languages. All fundamental courses used PL/I (bleaaaa!), then later Pascal (arf, arf). In general, project courses allowed any language available to be used. -- --jcz John Carl Zeigler SAS Institute Inc. Cary, NC 27511 (919) 467-8000 ...!mcnc!rti!sas!jcz
roz@l.cc.purdue.edu (Vu Qui Hao-Nhien) (07/25/87)
In article <145@wright.EDU> jholbach@wright.EDU (Jim Holbach) writes: >in article <1472@super.upenn.edu.upenn.edu>, shaffer@operations.dccs.upenn.edu (Earl Shaffer) says: >> I have a questions which should stir up a debate. >> >> Which language should be taught first in the Computer Science >> track for incoming freshman? > English. Right. And maybe even, God forbid, grammar and paragraph development too !! It's true that many CS majors can't talk/write properly, but I guess the damage is usually not hereditary and won't go past one generation so it's OK :-) Anyhow, to get back to the real meaning of the original article, at Purdue, the intro course for CS majors (CS 230) teaches Pascal and C. They have always been teaching Pascal, and they don't want students of about the same class going on totally different tracks. Personally, I like that approach of teaching lisp if your students have all had programming experience and picked up bad habits here and there. -- "I tawt I taw a tootty tat" Hao-Nhien Q. Vu (pur-ee!l.cc.purdue.edu!vu) (vu@l.cc.purdue.edu) [That's "ell", not "one"]
aaz@i.cc.purdue.edu (Pete-Bob) (07/27/87)
In article <558@l.cc.purdue.edu> roz@l.cc.purdue.edu.UUCP (Vu Qui Hao-Nhien) writes: >In article <145@wright.EDU> jholbach@wright.EDU (Jim Holbach) writes: >>in article <1472@super.upenn.edu.upenn.edu>, shaffer@operations.dccs.upenn.edu (Earl Shaffer) says: >>> Which language should be taught first in the Computer Science >>> track for incoming freshman? >> English. >Right. > >Anyhow, to get back to the real meaning of the original article, at >Purdue, the intro course for CS majors (CS 230) teaches Pascal and C. >They have always been teaching Pascal, and they don't want students of >about the same class going on totally different tracks. > >"I tawt I taw a tootty tat" >Hao-Nhien Q. Vu (pur-ee!l.cc.purdue.edu!vu) > (vu@l.cc.purdue.edu) > [That's "ell", not "one"] When did Purdue start teaching C in their intro CS course (cs230)? Last I had heard, it consisted entirely of Pascal. Many of the courses at Purdue, even in the upper-division, require that students use Pascal. (For ease in compiling and grading) In fact, until recently, none of the C.S. courses taught C to undergraduates. They had to learn it on their own or take it from the EE department. (As I did.) Pete Apple aaz@i.cc.purdue.edu
jsnyder@uw-june.UUCP (J. R. Snyder) (07/29/87)
In article <1317@sputnik.COM> talbot@tc.fluke.COM (Todd Smith) writes: >In article <3263@ncoast.UUCP> rterrell@ncoast.UUCP (Roger Terrell) writes: >>>Which language should be taught first in the Computer Science >>>track for incoming freshman? >> >>Modula-2 is an excellent language; > >Indeed. Rumor has it that, begining this fall, Stanford will begin teaching >Modula-2 in place of Pascal in it's 'Intro to Software Engineering' courses >(CS 106A & B). The University of Washington made this switch several years ago. >Why? Because Modula-2 is much better than Pascal when it >comes to modules and modular programming (In our implementation anyway) and >these courses (esp. B) are *very* module oriented. Yup, those are the reasons, among others. Another way of saying it is that Modula supports abstract data types better than Pascal. (So does Ada, but it's clearly not suitable as a first tongue for many reasons.) jsnyder@june.cs.washington.edu.arpa John R. Snyder {ihnp4,decvax,ucbvax}!uw-beaver!jsnyder Dept. of Computer Science, FR-35 University of Washington 206/543-7798 Seattle, WA 98195
mikey@rocky.STANFORD.EDU (Mike Yang) (07/29/87)
In article <2893@uw-june.UUCP>, jsnyder@uw-june.UUCP (J. R. Snyder) writes: > In article <1317@sputnik.COM> talbot@tc.fluke.COM (Todd Smith) writes: > >Why? Because Modula-2 is much better than Pascal when it > >comes to modules and modular programming (In our implementation anyway) and > >these courses (esp. B) are *very* module oriented. > > Yup, those are the reasons, among others. Another way of saying it is that > Modula supports abstract data types better than Pascal. (So does Ada, > but it's clearly not suitable as a first tongue for many reasons.) > Actually, Todd's information was a little out of date. Stanford was going to switch to Modula-2, but has now decided to switch to Ada (yeech) as the first language taught later next year. Apparently, the Assistant Chairman for Undergraduate Education at Stanford's CS department feels that Modula-2 is on its way out. I wonder if he's aware of the many reasons why Ada is clearly not suitable as a first tongue... - Mike
jsnyder@uw-june.UUCP (J. R. Snyder) (07/30/87)
In article <455@rocky.STANFORD.EDU> mikey@rocky.STANFORD.EDU (Mike Yang) writes: >Actually, Todd's information was a little out of date. Stanford was going >to switch to Modula-2, but has now decided to switch to Ada (yeech) as >the first language taught later next year. > >Apparently, the Assistant Chairman for Undergraduate Education at Stanford's >CS department feels that Modula-2 is on its way out. I wonder if he's >aware of the many reasons why Ada is clearly not suitable as a first >tongue... > Stanford may be a special case here. My original comments about the unsuitability of Ada were the product of a thought experiment in which I tried to imagine explaining (or avoiding having to explain) concepts like overloading, generic packages, internal vs. external representations of data structures, and the like, to the same bemused sophomores at the University of Kansas to whom I, once upon a time, could hardly convey an understanding of where to put the "begins" and "ends" in Pascal programs. (I am assuming that we're talking about a small subset of Ada and don't need to give ourselves nightmares by including rendezvous in the above laundry list.) If the folks at Stanford think that their students can handle it, I'm not in a position to contradict them. I'm confident (pace Dijkstra) that a really good teacher can teach good programming practice even with Fortran or Basic, but that's getting away from the original question. It does seem to me irrelevant that Modula may be "on its way out." On its way out of where? Certainly no one has ever been able to argue that Modula-specific knowledge was going to be of any use to the student outside the academic environment. (Much better to teach Lisp, as someone suggested.) The issue is whether or not another language better supports the learning (I almost said teaching) of what we currently see as fundamental to good programming practice. I hope we are making these decisions rationally and not just jumping on bandwagons. I certainly hope that no one decides they have to have Ada just because Stanford has it. jsnyder@june.cs.washington.edu.arpa John R. Snyder {ihnp4,decvax,ucbvax}!uw-beaver!jsnyder Dept. of Computer Science, FR-35 University of Washington 206/543-7798 Seattle, WA 98195
ann@decwrl.DEC.COM (Ann Mei Chang) (07/30/87)
After talking to some people at work about the relative virtues of Ada, Pascal, and Modula-2 as an intro programming language, I have become more convinced that Stanford has made a reasonable choice in selecting Ada as its intro language. From what I gather, Ada contains all the "good" features that one would look for in a structured programming language. Of course, it contains many other more complex/confusing features, but these would be most likely avoided and discouraged in an intro course. The major advantage both Ada and Modula-2 have over Pascal is the concept of modules. Ada may also be considered a more reasonable language to teach than Modula-2 because it is well supported, and much "real" work has been done on it. One problem I think the department was worried about with Modula-2 was that they weren't sure if they could get a good compiler. I believe that Ada compilers are easy to come by, and the army will even give it to colleges for free. I guess my conclusion is that Ada is at least a reasonable choice for an intro language, provided that certain features are avoided. In addition, it is a reasonable language to use in some later classes for covering such issues as concurrent programming (for which Stanford has used Ada and C this past year). By the way, CS majors at Stanford are also exposed to and write programs in a number of languages other than the "intro" language. Although a single language, Pascal in the past, is often chosen for large projects, the core sequence for CS majors includes work in Lisp, Prolog, C, assembly language, and possibly others to a lesser degree.
dbcooper@violet.berkeley.edu.UUCP (07/31/87)
I think that covering `just the important parts' of Ada, and assigning `just the best parts' of several different languages in one term, are essentially the same thing: Feature Use 101. This approach to teaching programming is what concentrating on names and dates is to teaching history -- superficial, and encouraging of plug-in responses rather than thought and analysis. I can't understand why it is thought that programming badly in n languages would be preferable to programming well in one. Certainly, when a language is too brain-damaged to illustrate the currently major ideas of programming (like, say, BASIC or COBOL), then teaching only a single, simple language causes problems. However, a language like Modula-2 represents essentially the best-known solution to an extremely large class of programming problems. Its difficulty over Pascal, say, is in proportion to the increased ability it allows. On the other hand, while Ada solves a larger class of problems, it does so only at the expense of a considerably more complex solution set. As long as we remain willing to change the introductory language every so often (and not just reupholster it, a la FORTRAN) it seems reasonable to spend a term or two giving students the chance to learn the use of a single language well. There is plenty of time in later terms to introduce special-purpose languages, or languages that encompass a different world view. Maybe one question will help put this in perspective: Whose code would you rather read? That of someone who has learned the accessible parts of Ada (plus a few new features from last week)? That of someone who knows the high points of languages X, Y, and Z? Or that of somebody who is reasonably proficient in \all/ of one general-purpose language?
elg@killer.UUCP (Eric Green) (08/01/87)
in article <455@rocky.STANFORD.EDU>, mikey@rocky.STANFORD.EDU (Mike Yang) says: > > Apparently, the Assistant Chairman for Undergraduate Education at Stanford's > CS department feels that Modula-2 is on its way out. I wonder if he's > aware of the many reasons why Ada is clearly not suitable as a first > tongue... Hmm: Some reasons: * SCale: ADA is *HUGE*. So huge that it will CERTAINLY bog down freshmen... if Pascal causes "cancer of the semicolon", Ada causes "syntax overload explosion". Related to which: * Ambiguous syntactic requirements. There's usually four or five different ways to declare any given Ada data structure, all correct. For example, "junk: array(1..20) of integer;" "junk: array(integer range 1..20) of integer;" etc....... at least the syntactic requirements of a language such as Pascal or Modula ][ aren't so confusing to poor frosh. I must admit to being biased. USL uses Ada for two of its introductory CS courses (Pascal for the first, the rest in Ada), and frankly, I despise the language -- but then, that might be the "C"/assembler hacker talking. Still, recalling the talk of many years ago about the impossiblity of verifying the correct operation of the compiler because the language was so complex, what do they think that the language complexity does to the PROGRAMMER'S reliability?!. -- Eric Green elg%usl.CSNET Ollie North for President: {cbosgd,ihnp4}!killer!elg A man we can believe (in). Snail Mail P.O. Box 92191 Lafayette, LA 70509 BBS phone #: 318-984-3854 300/1200 baud
beth@brillig (Beth Katz) (08/01/87)
One practical reason for not using Ada as the first language is that most students run their programs through the compiler over and over again to get rid of syntactic and semantic bugs. You need fast compilers with descriptive error messages to handle this type of load. You also need a compiler that will not swamp your machine right before assignments are due. And that compiler should be affordable and available on the machines you use for classes. Although I haven't checked into Ada compilers lately (I'm not teaching Ada now, and the Ada compiler I am using for research works well on the Vax and Sun), I don't think you'll find an Ada compiler today that meets those requirements. The best (and closest to correct) Ada compilers are not cheap, and they tend to run on Vaxes. When I taught an upperlevel course on software design and development with Ada, we had to use a research machine because there wasn't a compiler available for our usual teaching machines (IBM 4341 and Sperry 1100 whatever). To keep the class from overwhelming the Vax, we limited simultaneous Ada compiles for class members (and kept it lower than we probably needed to, but that was the agreement). I thought the error messages were pretty good, but some of my students complained. Although I use both Ada and C for my own work, I don't believe either is the best language for a first programming class. I tend to prefer Maryland's approach to teaching the mathematical foundations of programming with a small subset of a language. Mastery of English (or one's native language) is essential. Beth Katz Dept. of Computer Science Univ. of Maryland - College Park beth@brillig.umd.edu