hgoldber@polyob.UUCP (A1 harry goldberg ) (02/17/86)
*** REPLACE THIS LINE WITH YOUR MESSAGE *** am interested to hear pros and conss about using pascal as the language in which to teach introductory programming
jbs@mit-eddie.UUCP (Jeff Siegal) (02/21/86)
In article <109@polyob.UUCP> hgoldber@polyob.UUCP (A1 harry goldberg ) writes: >*** REPLACE THIS LINE WITH YOUR MESSAGE *** >am interested to hear pros and conss about using pascal as the >language in which to teach introductory programming My opinion is that you shouldn't really be emphasizing the programming language itself all that much anyway. Students who want to get into the details of a particular language can do so on their own. Instead, teach general techniques of good software development (design, modularity, documentation, etc.). As for which programming language to use, it really depends on what facilities you have available. What coices to you have? Many courses which have chosen to teach Pascal have done so as an alternative to BASIC, which sounds like a good idea to me. There are other (besides Pascal) reasonable choices though. For a new (I think) idea in progressive teaching, how about using 3 or 4 languages, and allowing students to use whichever one they feel most comfortable with (for projects and exam questions, etc.). Jeff Siegal - MIT EECS
jxs7451@ritcv.UUCP (02/21/86)
In article <109@polyob.UUCP> hgoldber@polyob.UUCP (A1 harry goldberg ) writes: >am interested to hear pros and conss about using pascal as the >language in which to teach introductory programming Here at RIT they use Pascal in the introductory computer courses for both comp sci/related stuff, and the introductory stuff for everyone else ("everyone at RIT has computer experience"). The courses are obviously much different, but Pascal is probably a good choice because of it's typing, which introduces a little disipline. Also for some unknown reason most of the freshman comp sci's start with something called karel the robot, which is a Pascal like waste of time. As far as Pascal goes, it is alright, but can anyone suggest anything better? jeff "in sunny downtown Rochester"(or something like that) UUCP: {allegra,seismo}!rochester!ritcv!jxs7451 CSNET: jxs7451%rit@csnet-relay.ARPA BITNET: JMS7451@RITVAXC
crocker@ihwpt.UUCP (ron crocker) (02/21/86)
> *** REPLACE THIS LINE WITH YOUR MESSAGE *** > am interested to hear pros and conss about using pascal as the > language in which to teach introductory programming I think PASCAL is a good choice for an introductory programming language, but others are fine. What PASCAL offers that some other languages do not is: 1) recursion This is a nice thing for introductory classes. I remember when I took CS 121 at the U of I we used PL/I and used the recursive features of the language to implement a recursive solution to the Tower of Hanoi problem and implement a simple recursive descent parser (although we didn't know that was what we were doing). 2) strong type checking This will help keep these new programmers in line. (Just imagine a new programmer with C!) 3) data structures. By having an introduction to simple data structures early can help with more complicated structures later. PASCAL offers a fairly flexible method for implementing data structures. PASCAL has drawbacks (I/O for one) but is a better choice than BASIC for an introductory course, in my opinion. Ron Crocker AT&T Bell Laboratories Naperville-Wheaton Road Naperville, IL 60566 Opinions expressed are mine alone and have nothing to do with my employer or their agents.
manis@ubc-cs.UUCP (Vince Manis) (02/21/86)
Perhaps this discussion belongs in net.cse, but... It may be reasonable to teach introductory MIT students four languages, but our students have difficulty with one. At present, our first year sequence (two terms) covers Pascal and Intel 8080 assembly language (three weeks or so, for computer organisation concepts, rather than assembly language skill). Even that is really pushing it. As far as I can see, introductory programming courses teach almost nothing about program design, whether or not one spends the entire time teaching program design. The reality seems to be that students ignore all the stuff you want them to learn, and learn syntax instead. It's only once they've actually tried to write large programs by hacking, and failed, that they're ready to listen to our remarks on software design. If we teach four languages rather than one, all we end up doing is confusing them on syntax. Until this year, our first year sequence included a unit on Fortran, which had the effect of causing students to be unable to write Pascal on the final exam. One might argue that Fortran's semantics are too similar to those of Pascal, and that one should try a completely different language, such as Lisp or Prolog. Maybe so, but shouldn't one try to teach how to do something well before trying to teach completely different technologies? (Perhaps Lisp is the right introductory language; my objections are on aesthetic grounds, and therefore not terribly debatable.) Back to Pascal: this year I switched my second year data structures/program design course from Pascal to Modula-2. I've been very happy about the results. But I still believe that at present Pascal is the right introductory language, not primarily because of its merits (the only advantage of Pascal over Modula-2--for rank beginners--is the simpler I/O in Pascal), but because of its acceptance: * Pascal is the language used by the U.S. Advanced Placement program; * zillions of textbooks; * lots of very good implementations, including Turbo Pascal, IBM Pascal/VS, and DEC VAX Pascal. The average introductory student has no longterm commitment to computer science, so one ought to teach him/her a directly usable skill; that means teaching a language s/he has heard of.
mark@nyit.UUCP (Mark Smith) (02/22/86)
> am interested to hear pros and conss about using pascal as the > language in which to teach introductory programming The Pascal Language, I believe, was created as a teaching language. In that job, it has become remarkably widespread. But I have always disliked it as a first language for the computer science major. For those students who are to go on to become `computer people' I have always favored assembly language as the first language. Why you ask? Well, it was my first language that I learned. When it came time to learn other languages `the jump' to a higher level was easier then `the jump' from a high level language to a low level. I attribute this to the fact that assembly language forces you to understand what is going on. I can't remember how many times, first time Pascal programmers, gave me the impression that they really did not know what memory was. For those students who are not destined to be computer science majors, and for those students who have already been introduced to programming, the Pascal language is great. -- Mark Smith NYIT Computer Graphics Laboratory Old Westbury, New York ...{philabs,sbcs}!nyit!mark
deb@gt-cmmsr.UUCP (Deborah Jackson) (02/22/86)
In article <247@mit-eddie.UUCP> jbs@eddie.UUCP (Jeff Siegal) writes: >In article <109@polyob.UUCP> hgoldber@polyob.UUCP (A1 harry goldberg ) writes: >>*** REPLACE THIS LINE WITH YOUR MESSAGE *** >>am interested to hear pros and conss about using pascal as the >>language in which to teach introductory programming > >Jeff Siegal - MIT EECS writes: >Instead, teach general techniques of good software development >(design, modularity, documentation, etc.). ***** BRAVO!! ****** > >For a new (I think) idea in progressive teaching, how about using 3 >or 4 languages, and allowing students to use whichever one they feel >most comfortable with (for projects and exam questions, etc.). > The main problem with using multiple languages in an intro course is time. By forcing too many languages at the students the general principals of software development get lost because the students end up spending far too much time trying to learn the syntax and semantics of each language. The other problem is that throwing more than a couple languages at intro students tends to confuse them...Not to mention the headaches the poor graders would have! -- _______ Deborah J. Jackson Georgia Tech, School of Electrical Engineering, Atlanta, GA 30332 (404)894-3058 uucp: ...!{akgua,allegra,hplabs,ihnp4,seismo,ulysses}!gatech!gt-eedsp!deb ^^^^^
bzs@bu-cs.UUCP (Barry Shein) (02/23/86)
>For a new (I think) idea in progressive teaching, how about using 3 >or 4 languages, and allowing students to use whichever one they feel >most comfortable with (for projects and exam questions, etc.). > >Jeff Siegal - MIT EECS Obviously you were expecting this...This has been done, I believe Eliot Organick wrote a big CS textbook that was intended to be an intro course book and was used at University of Utah. According to a friend of mine who went there (quite a while ago! 10+ yrs) that is exactly what the course was, topics were taught in the language thought appropriate (I believe among the languages were fortran, basic, snobol and lisp.) I agree, an intro course should be a survey course. It should be shallow and a good intro into 'the great ideas' of the field just like any intro course in the sciences (bio, phys, chem etc). Some programming should be taught as in any good intro lab course (laboratory practices and methods, remember intro chem, bio...) I have always thought it unfortunate that the emphasis here has been (in the past anyhow, haven't kept up with the intro courses lately) Programming in Pascal 101 rather than Computer Science 101 (also known as "Shuffle the semi-colons till it stops complaining 101".) Personally, I hate Pascal and consider it the scourge of computer science, if I had to choose one language I would go with either C or Lisp. The former because it is a traditional, ALGOL-like language which higher-ups seem to like in an intro programming language (ie. just enough like Pascal to sell the idea) and it doesn't have all the Pascal brain-damage (for starters there are lots of big systems written in C, can't barely say the same for Pascal, there's a reason for that, like strong typing for weak minds philosophy.) I would go for LISP because it's easy to get into, a reasonable interpreter works well with an editor, debugger and tracer. More of a lab environment, less of a core-dump environment, there's plenty of time for that later (tho on UNIX/4.2 dbx makes all this a bit better.) Lisp dialects could be considered tho not sure why exactly except that Sussman et al's book using Scheme has great potential to base a course on, and a good text is a great place to start designing a course. If only they would listen...oh well, I teach the C and UNIX/sys courses. -Barry Shein, Boston University
ark@ut-sally.UUCP (Arthur M. Keller) (02/23/86)
I have decided to step into the fray here. (1) The object of an introductory course that includes programming is to teach problem solving techniques using a computer. Teaching a programming language is a necessary vehicle for this (unless you wish only to use canned programs, and even there you have some sort of language). (2) There is the choice to teach only one programming language or to teach multiple ones. To me the major choices (of categories) are to teach a primitive language (Fortran or Cobol), an Algol-based language (C, Pascal, Modula-2, Ada), an interactive language (BASIC, APL), functional language (LISP, Scheme), other (Smalltalk, Logo). [Sorry if you don't like my taxonomy.] Traditionally, intro courses have switched from teaching primitive languages to Algol-based languages, with an occasional intermediate stage at PL/I (kind of Algol-like). Recent experimentation has been done in teaching Lisp or Lisp-dialects (Scheme). Most of the Logo and Basic teaching is done at earlier grade levels than college. Other than the college level, Pascal is mainly taught at the late High School level (with part of the reason for its use being the AP exam in CS). One argument is that teaching multiple language paradigms will give students a better feeling for what Computer Science is all about. A counterargument is that it may overwhelm the students, the students may not yet be ready to make the distinctions necessary when several languages are taught, and that little depth may be possible, especially in a quarter course. (3) Regardless of the choice of a single language or multiple languages (preferably with different paradigms), one of them is likely to be first. Of all the Algol-based languages, Pascal is currently the best introductory teaching language in my opinion. C suffers from lack of enforced discipline that is very useful for beginning programmers. Besides, C is advocated primarily by UNIX users, and the error message "Segment fault, core dumped" is not my idea of a user friendly error message that would help a novice programmer find the error in the program. I don't know anyone who seriously suggests teaching Ada as a first language (they should be punished by having to teach Ada to Cobol programmers). Modula-2 is a good "contender for the title" and may become the language of choice once (1) it is standardized including support modules, (2) it is as widely available as Pascal, and (3) there are enough Modula-2 based intro programming textbooks so that you can choose one using a teaching approach you agree with. Also note that once you have learned Pascal, it is relatively simple to learn another Algol-based language. Many advocates of Lisp as a first language argue that it facilitates teaching some more advanced topics, such as recursion, earlier than Algol-based languages. They also like the simplicity of the syntax and that programs and data are uniform (built out of the same list structures, if you will). There are several popular varieties of Lisp, somewhat mutually incompatible, and Lisp is not universally available, and using Lisp requires use of an interactive system. [While I believe that every student learning intro CS should be given sufficient access to an interactive computer system, the lack of available facilities at some institutions preclude this.] Perhaps Common Lisp will win out, or maybe it will be just one more variant of Lisp. There are also fewer intro textbooks on Lisp than on Pascal, but that will make the selection process that much easier (or perhaps that much more frustrating). I think that the jury on Lisp vs. Algol-based language (really Pascal) is still out. (4) My opinions? I'm glad you asked that question. I believe in teaching Pascal as a first programming language. Other language paradigms can be taught in a programming languages survey course. Of course, I have a vested interest; I am author of "A First Course in Computer Programming Using Pascal" (McGraw-Hill, 1982; second edition in progress). Arthur -- ------------------------------------------------------------------------------ Arpanet: ARK@SALLY.UTEXAS.EDU UUCP: {gatech,harvard,ihnp4,pyramid,siesmo}!ut-sally!ark
bzs@bu-cs.UUCP (02/24/86)
From: manis@ubc-cs.UUCP (Vince Manis) >The average introductory student has no longterm commitment to computer >science, so one ought to teach him/her a directly usable skill; that means >teaching a language s/he has heard of. This is the attitude I object to that leaves us nowhere in Computer Science Education. I believe one has to abandon the job training mentality and just teach their subject on the sole assumption that everyone in the room is there to build a foundation for computer science. If that necessitates opening a different course for 'programming', so be it. It has been an unfortunate fallacy that has been pushed on Computer Science Departments that one can simultaneously teach an introductory CS course and a terminal, one-shot programming course and do both well. The result, as can be predicted, is to end up with a bunch of bored to death non-CS people and a bunch of CS students who end up believing that CS is a process of getting the syntax errors out (shuffling the semi-colons as I like to call it.) I am sympathetic, here at BU there is constant discussion between CS and Engineering (the former is in the College of Liberal Arts, the latter is a school unto itself) as to whether or not the intro CS courses' curriculum is properly fulfilling general engineering requirements. Needless to say it causes strange things to happen in the curriculum for CS and, I believe, ultimate dissatisfaction for both parties. It is my firm belief that: a) College is not job-training in such a direct manner as emphasizing programming right from the start implies. b) Computer Science is not programming, nor is it not not programming (double negative intentional.) Programming is simply a critical lab skill that may take more than one intro course to develop properly and should be nurtured within the context of the big picture, not as an end unto itself. My opinions, I believe, make more sense when compared to other sciences. One does not teach an intro course in glassware and centrifuging in a chemistry department nor expect people after a year of intro chem to be able to get a job at General Foods or the Public Health service doing product testing. Intro physics is not confused with engineering, intro Math with accounting or actuarial skills. As absurd as these comparisons appear I am certain that these same attitudes are held in regards to computer science, that we teach programming because it is a fast road to a good job. Unfortunately that is not true, even if a year of programming were emphasized I believe a rational survey of the jobs it opens up would reveal that although the starting salaries and job openings may seem high, the advancement etc is comparable with that of many white collar jobs which do not require any specific college skills, unless the individual is unusually talented in which case all bets are off in either case. A $25K job to start may seem like heaven to a new graduate, but at 30 years old and having moved all the way to $35K they will start to realize that the success was short-lived and illusory, that they should have nurtured something in college beyond such a specific talent as programming (again, I am talking averages here which is much more likely to be a Cobol programmer in a big IBM shop than a Steve Wozniak or Bill Joy that every kid who learns a little programming thinks is their fate, it just aint so, and without a broad education in the issues it is much harder to advance.) -Barry Shein, Boston University
brad@looking.UUCP (Brad Templeton) (02/24/86)
I hate Pascal as much as anybody who's had to implement one, but I will second it as the choice for an introductory course. Your audience in an introductory course is quite broad. Some are going on to further education in CS. Others want something they can use. If you give them fortran or cobol, you won't give much in the way of CS concepts to those going on. If you give them something unusual like lisp, they will have trouble using their lisp skills in the real world. You need something that's widely accepted, fairly standardized (at some level) and that contains the basic concepts you want to deal with in a complete degree program. This leaves you with C and Pascal. Pascal was designed for teaching, and much of what is wrong with it is that people have forgotten this. (Although I will never forgive writeln myself) If you put Pascal in a nice interactive environment (like mine; plug, plug, plug) this is your only choice. This is not a statement to be proud of, necessarily. Nonetheless, what is being used in the real world does control what can be taught to some exent. -- Brad Templeton, Looking Glass Software Ltd. - Waterloo, Ontario 519/884-7473
schuh@geowhiz.UUCP (David Schuh) (02/24/86)
In article <717@ihwpt.UUCP> crocker@ihwpt.UUCP (ron crocker) writes: >> *** REPLACE THIS LINE WITH YOUR MESSAGE *** >> am interested to hear pros and conss about using pascal as the >> language in which to teach introductory programming > >I think PASCAL is a good choice for an introductory programming >language, but others are fine. What PASCAL offers that some other >languages do not is: >1) recursion > ... >2) strong type checking > ... >3) data structures. By having an introduction to simple data > ... >PASCAL has drawbacks (I/O for one) but is a better choice than >BASIC for an introductory course, in my opinion. > >Ron Crocker > Folks interested in which language to use in introductory classes, might recall that Pascal was disigned specifically as an instructional language intended to promote the good programing practices we all know and love. I started out with BASIC and have given much thought to whether that was the right choice as an intro class and language. The answer I reached is that it was not. If I were teaching an intro class intended for cs majors I would avoid like the plague BASIC or any language that has things like self declarations, or lack of self defined data structures value/formal parameters, strong type checking or procedures/functions etc ... . Sure pascal has drawbacks, especially if your undertaking vlarge projects (standard pascal at least) and its string manipulations are somewhat stilted. It wasnt really intended as a systems language but its popularity became so great that people used it anyway. Hence several versions with extensions to make those things possable. However these restrictions are probably a blessing for for beginning programers. So my recomendation is pascal with a strong emphasis on good programing practices. -- dave schuh !uwvax!schuh PS. Well a language pascal like benifits would also be suitable (modula perhaps) Just avoid Basic and fortran for sure.
lear@topaz.RUTGERS.EDU (eliot lear) (02/24/86)
Barry Shein @ Boston University writes: > I agree, an intro course should be a survey course. It should be shallow > and a good intro into 'the great ideas' of the field just like any intro > course in the sciences (bio, phys, chem etc). Some programming should be > taught as in any good intro lab course (laboratory practices and methods, > remember intro chem, bio...) At Rutgers, our intro class IS an Introduction to Computer Science. We do some minor programming in PASCAL but the emphasis is not placed on programming at all. If your intro course is a survey course for languages, you waste too much time teaching the languages instead of giving the students a good taste of Computer Science. In fact, since I've been at Rutgers, the intro course has always used a computer with software that would make it easiest to program in. For example, when I got here the course was on Teraks using the Cornell PL/CS Synthesizer, which uses templates. In 1984, the CS111 and CS112 moved to Mac Pascal. The idea was that the student should NOT play 'Shuffle the semi-colon' yet get the strong type checking needed for beginning programmers. > Personally, I hate Pascal and consider it the scourge of computer science, > if I had to choose one language I would go with either C or Lisp..... > ..... I would go for LISP because it's easy to get into, a reasonable > interpreter works well with an editor, debugger and tracer. The problem I have with LISP is that it involves recursion, a subject that most of the people here were not very comfortable with until after their intro course. C, however, would not be a bad idea - especially if you do not want to waste time in the future explaining the quirks of that language. It is a lower level language in many ways but it still supports the higher level operations. However, you lose with weak type checking. > I have decided to step into the fray here. ARK @ SALLY.UTEXAS.EDU adds: > (1) The object of an introductory course that includes programming is to > teach problem solving techniques using a computer. Teaching a programming > language is a necessary vehicle for this (unless you wish only to use > canned programs, and even there you have some sort of language). I am glad you did. This is exactly my point. At Rutgers we have two survey courses involving languages - one for non-majors that teaches BASIC, a text formatter, and a spread sheet; and the other is a 300 level course that discusses in depth the structure/uses/limitations of various languages. The idea behind the first is to give the person who doesn't use a computer a chance to discover its usefulness. The reason the second course is 300 level is that by this point, the student is expected to be able to grasp languages faster. In the past, this course has covered SNOBOL, LISP, SETL, and PROLOG in depth while glancing over other languages. My point is that the introductory course should NOT be a language survey course and it should use a language that has a strong enough back- bone that it will catch silly mistakes and leave student to worry about the logical errors. Later on (s)he can pick up as many languages as (s)he wants. That knocks C out of the water and since I don't consider recursion an introductory idea, that knocks out lisp too. As far as assembly language is concerned, I have a feeling I would have become a better programmer if I got an intense shot of assembly first but I doubt I would have gotten an introduction to the analysis of algorythms in the process. Also, one of the most important topics in our intro classes is that of data structures. eliot lear [lear@topaz.rutgers.edu] [{allegra,seismo}!topaz!lear]
laura@hoptoad.uucp (Laura Creighton) (02/26/86)
In article <4253@ut-sally.UUCP> ark@sally.UUCP (Arthur M. Keller) writes: > >I have decided to step into the fray here. > >(1) The object of an introductory course that includes programming is to >teach problem solving techniques using a computer. Teaching a programming >language is a necessary vehicle for this (unless you wish only to use >canned programs, and even there you have some sort of language). I am not sure that this is the actual goal of introductory programming courses. I know introductory courses which teach ``what is a function'' and ``what is a loop'' and ``what is an if-then-else'' and ``what is a linked list''. For a great many people, especially those who have only a passing interest in computer science but think that having ``a few computer courses'' will help them be better economists (or whatever it is that they *are* interested in) this is about all that they can handle. I don't consider this ``problem solving'' -- just like learning how to recognise and use a saw and hammer doesn't make you a carpenter. I also think that it is far more important to teach your course in a language for which there is an excellent text book than to teach your course in a ``better'' language. -- Laura Creighton ihnp4!hoptoad!laura utzoo!hoptoad!laura sun!hoptoad!laura laura@lll-crg.arpa
robt@molihp.UUCP (Robert L Thurlow) (02/26/86)
[] In article <497@looking.UUCP> brad@looking.UUCP (Brad Templeton) writes: >I hate Pascal as much as anybody who's had to implement one, but I will >second it as the choice for an introductory course. > I also cast my vote for Pascal, but think that more exposure is to other languages is necessary, especially to an assembly language. I learned Algol-W and FORTRAN first and got an idea about algorithms, and then engineering gave a feel for limited resources with assembly language on an 8080 (gack, barf, even worse than an 8088! :-) with almost no memory. Then I got into Pascal, 'C' and the other things, and I found I had a lot more respect and understanding for the machine and the problems you can get into. What highlighted this was the System/370 assembler they throw in at the end of the second-year computer science courses at UBC; a large portion of the class were fighting just to get the concepts of memory and registers straight while the engineers were basking in the luxury of the architecture compared to the 8080. (Hey, Al, this thing does floating point math! All by itself! :-) Most of the class was fuzzy about looking around for the resources you have and using them properly, anf this was only due to lack of exposure to what is REALLY going on under there. If your teaching Pascal can spit out assembly code, perhaps showing the students what it looks like would help. # UUCP : ...!ubc_vision!molihp!robt Robert Thurlow # <DISCLAIMER : my thoughts are my own, and are void where prohibited by law.> # "There was something fishy aboout the butler. I think he was a Pisces, # # probably working for scale." - Nick Danger #
bert@ucla-cs.UUCP (02/27/86)
> > Personally, I hate Pascal and consider it the scourge of computer science, > if I had to choose one language I would go with either C or Lisp. The > former because it is a traditional, ALGOL-like language which higher-ups > seem to like in an intro programming language (ie. just enough like Pascal > to sell the idea) and it doesn't have all the Pascal brain-damage (for starters pascal is a much better choice as a first language. it would be cruel to teach C to anyone who has not already passed two courses in heiroglyphics..
ark@ut-sally.UUCP (Arthur M. Keller) (02/27/86)
In article <557@hoptoad.uucp> laura@hoptoad.UUCP (Laura Creighton) writes: >In article <4253@ut-sally.UUCP> ark@sally.UUCP (Arthur M. Keller) writes: >>(1) The object of an introductory course that includes programming is to >>teach problem solving techniques using a computer. Teaching a programming >>language is a necessary vehicle for this (unless you wish only to use >>canned programs, and even there you have some sort of language). > >I am not sure that this is the actual goal of introductory programming courses. >I know introductory courses which teach ``what is a function'' and >``what is a loop'' and ``what is an if-then-else'' and ``what is >a linked list''. For a great many people, especially those who have >only a passing interest in computer science but think that having ``a few >computer courses'' will help them be better economists (or whatever it >is that they *are* interested in) this is about all that they can handle. > >I don't consider this ``problem solving'' -- just like learning how to >recognise and use a saw and hammer doesn't make you a carpenter. I >also think that it is far more important to teach your course in a >language for which there is an excellent text book than to teach your >course in a ``better'' language. >-- >Laura Creighton >ihnp4!hoptoad!laura utzoo!hoptoad!laura sun!hoptoad!laura >laura@lll-crg.arpa I did not mean to imply that every intro computing/programming course teaches problem solving using a computer. However, when I teach intro CS, that is what I teach. There are several parts to problem solving: (1) analysis of the problem, (2) having sufficient knowledge of useful and relevant tools, (3) choosing the relevant tools for the problem, and (4) applying the relevant tools to solve the problem at hand. Number (2) can be further divided into three parts: (2a) having a list of tools, (2b) knowing what each tool does, (2c) and knowing how to use it. Teaching "what a loop is" is essentially teaching (2b). But you don't really understand it unless you also know (2c). The only wait to learn (2c) is to practice doing (4). I claim that this paradigm is useful outside of computer science, but is well illustrated in CS; you need to master it to master a CS course involving significant programming. Learning more about steps (1), (3), and (4) are very useful to anyone, even if you never interact in any way with a computer again. Steps (2) are necessary to apply the other steps to the discipline of computer science, and they are the ones that depend significantly on the programming environment (not just the language) that the students use. Learning how to recognize and use a hammer and saw does not make you any more a carpenter than taking an intro CS course involving programming makes you a programmer. But not any less either. Learning how to use a hammer involves banging nails into things. To motivate it, maybe you build a doghouse or something. How is that different from writing toy programs to solve toy problems? When I teach intro CS, I tell my students that this one course will not make them "programmers". (On the other hand, how many people build things at home on weekends just from the knowledge gained in one semester shop class in high school?) I agree with the importance of a good book. (After all, I think I wrote one.) But don't underestimate the importance of a good environment: programming language, debugging tools, operating system environment, etc. I believe that there will be a choice of Modula2 intro programming books wwithin a few years. "When the only tool you have is a hammer, it is tempting to think of everything else as a nail." Arthur -- ------------------------------------------------------------------------------ Arpanet: ARK@SALLY.UTEXAS.EDU UUCP: {gatech,harvard,ihnp4,pyramid,siesmo}!ut-sally!ark
jimb@tekcbi.UUCP (Jim Boland) (02/27/86)
In article <497@looking.UUCP>, brad@looking.UUCP (Brad Templeton) writes: > I hate Pascal as much as anybody who's had to implement one, but I will > second it as the choice for an introductory course. > > > Pascal was designed for teaching, and > much of what is wrong with it is that people have forgotten this. > (Although I will never forgive writeln myself) >From: latham@bsdpkh.UUCP (Ken Latham) >Ah yes.... PASCAL.... >Why PASCAL ....? > I think this is the real point ... The compiler has to be > so strict as to not let the student get too inventive ... > like C ... The objective is to learn Algoritmic Representation > not the language. > Even though the language keeps a tight reigh it also has a > sufficient array of types ( structures, pointers, sets, etc.) > and an expressive enough syntax and semantics to do just about > anything. > There I admit I am a C programmer (and Computer Scientist) > that actually LIKES PASCAL!!! I have had to learn and use various languages while in school (BASIC, FORTRAN) and later on jobs. I hve programmed in Basic, Basic+, Pascal, and C. Each language has it's good points and bad points. Each has merits. Basic is quite easy to learn and do things. However, I sure don't like to look at code I didn't write or haven't seen for a year and try to figure out what the heck is going on. With all the line numbers and goto's and gosub's, one can get lost real fast. Then along came Pascal. I sure didn't like it at first. However, after using it for a while, I started to see real merits in it, particularly in reviewing code at a later date or trying to see what someone else had done. I have no real problems with that. Then along came C. I like the way some things are done and I like what I can do with it. Yes, I currently am a C programmer, also. However, I must say that if I had my choices, I believe I would lean more towards Pascal. But then, I have been programming Pascal since 1975. If I had been programming C since then, and started Pascal recently, I would probably prefer C. Sorry, It doesn't work the same for Basic. I started that around 1970. And nope, I would never prefer it over C or Pascal. (Except for a few applications) If you are just passing through a course, will only program for 3 months and never do it again, Basic is probably sufficient.
kay@warwick.UUCP (Kay Dekker) (02/28/86)
In article <4253@ut-sally.UUCP> ark@sally.UUCP (Arthur M. Keller) writes: >I have decided to step into the fray here. Same here. Normally, I'd stay away from this sort of discussion as it invariably becomes "religious", but the following comment made me feel like doing a little evangelizing... >I don't know anyone who seriously suggests >teaching Ada as a first language (they should be punished by having to >teach Ada to Cobol programmers). Gag me (as I believe the idiom is) with a spoon! I don't understand why, if Pascal could be considered as an introductory language, Ada should be regarded as worse. I often hear the complaint "But Ada is so *huge* and *complicated*!". Maybe, if you look at the complete language. However, there is a subset of Ada which is remarkably Pascal-like: if one ignores tasking, and the rest of the "further on in the book" stuff, there remains a simple, elegant, Algol-like language which should be as comprehensible to a beginning programmer as Pascal is, if not more so. And it doesn't have the quirks which make Pascal difficult to explain. Have you ever tried to explain Pascal I/O to beginners? I have, and I can't say it sounds entirely convincing. But then I *like* Ada. So you can disregard the above as "religious" if you want. Kay. -- Virtue is its own punishment. ... mcvax!ukc!warwick!kay
sean@ukma.UUCP (Sean Casey) (02/28/86)
*** The following comments are my OPINION, I am allowed it...anyone *** *** who would disagree with this please route all @#$%^&* to /dev/null. *** Pascal as an introductory language? Yes, good choice. What I hate to see is when BASIC is used as a first language. One learns to use gotos and all the other slimy things that BASIC forces you to use and then has to unlearn them to use languages like Pascal or C effect- ively. Why bother to use BASIC in the first place? I remember my first CS class, taught with BASIC...learned to use gotos and all those neat little things. Then came the second class, taught with Pascal. At first I was befuddled. "Variable types? There are more than two?" "Procedures?" "Parameters?" It took me longer to unlearn BASIC than it did to learn Pascal. Once I learned to use all that Pascal had to offer, I honestly thought that my first semester had been wasted. Many will argue for using C as a first language...it would be a good choice too, but it may be a little cryptic for a BEGINNING student. Pascal uses more english-like syntax than does C. Pascal has much more rigid type checking than does C. Pascal's pointers might not be as powerful as C's, but they are easier to learn. Besides, all the things that one might learn using Pascal can be easily used in C. C offers even more for the advanced student to take advantage of, but maybe too much for a novice. There are cons for Pascal too. String handling isn't great (in most dialects), declarations may be too lengthy for some...there are probably more that I am unaware of, due to the fact that I don't have the experience with other languages that I do with Pascal. All-in-all though I think Pascal would make the better choice...CERTAINLY better than BASIC, and only better than C in that it might be a little easier to learn, but not better on a whole. Keith Hatfull (mailing from Sean's account) -- ------------------------------------------------------------------------------- Sean Casey UUCP: sean@ukma.uucp CSNET: sean@uky.csnet University of Kentucky ARPA: ukma!sean@anl-mcs.arpa Lexington, Kentucky BITNET: sean@ukma.bitnet "Who's `we', sucker?"
ark@ut-sally.UUCP (Arthur M. Keller) (03/01/86)
In article <528@tekcbi.UUCP> jimb@tekcbi.UUCP (Jim Boland) writes: >If you are just passing through a course, will only program for 3 months and >never do it again, Basic is probably sufficient. I suppose that if you are just passing through foreign language literature course, will only read foreign literature for 3 months and never do it again, foreign language newspapers are probably sufficient. I don't buy that. If you are taking a 3 month course and will never directly apply the knowledge, then learning concepts is probably the most important because you will forget the details. It is easier to learn the concepts of programming (the basis for learning Computer Science, but not *all* of CS) using Pascal as many are simply not expressible in Basic. (Don't bug me about Turing equivalence, and I won't ask you to write a universal Turing machine in Basic.) On the other hand, if you are teaching a "computer literacy" course, that is, a primarily non-programming course, it may be worthwhile to use Basic because the start up costs are low, programming is a minor part of the course, and you are not attempting to teach programming concepts but rather have the students write a few trivial programs. Pascal is also a problem for students who have not yet mastered high school algebra and who may be able to manage some simple Basic programs. Probably better to teach them Logo or Karel the Robot. Arthur -- ------------------------------------------------------------------------------ Arpanet: ARK@SALLY.UTEXAS.EDU UUCP: {gatech,harvard,ihnp4,pyramid,seismo}!ut-sally!ark
gast@ucla-cs.UUCP (03/03/86)
>In article <109@polyob.UUCP> hgoldber@polyob.UUCP (A1 harry goldberg ) writes: >am interested to hear pros and conss about using pascal as the >language in which to teach introductory programming What language should be used depends on who is taking the course. If the course is programming for poets then Pascal or BASIC are fine. They are essentially teaching languages. If the course is for computer science majors then I would vote for Algol 68 or Lisp or Prolog. Algol 68 is much better than Pascal because it is much more general. It doesn't restrict the programmer to write in a manner such that a one pass compiler can be used. It is orthogonal and general. Structs (records) can be returned by a function, for example. (Pascal does not allow this). Mode (type) equivalence is not by name as it is in Pascal. Thus, it is possible to write a generalized sort routine. How do you teach someone to write a sort routine in Pascal? Only a few ideas have to be learned, not a complex set of rules and regulations. One example is the idea of the equivalence of expressions and statements. Students can think about problem solving, not syntax. In the upper division programming languages course at UCLA, the language the students like best is Algol 68. Is there any wonder why? Finally, HOW DO YOU EXPECT STUDENTS TO WRITE ORTHOGONAL AND GENERAL PROGRAMS IF THE LANGUAGE THEY ARE USING IS NON-ORTHOGONAL? David Gast {ihnp4, ucbvax}!ucla-cs!gast gast@ucla-locus.arpa P.S. The argument is that there are not enough textbooks or compilers is not valid. If 10,000 professors started clammoring for Algol 68 textbooks and complilers, they would appear. Even Joe "I don't know Anything" Technical writer would write a book on Algol 68.
ark@ut-sally.UUCP (Arthur M. Keller) (03/04/86)
In article <433@snow.warwick.UUCP> kay@warwick.UUCP (Kay Dekker) writes about my disparaging remarks on teaching Ada as a first language. The main issue appears to be that if you restrict yourself to the features of Pascal when teaching Ada, what's wrong with using Ada syntax and an Ada compiler? Pascal can run on lots of environments rather efficiently. I am not convinced that the typical Ada compiler will compile a Pascal-like program as quickly and running as fast as a Pascal compiler for the same machine would do to the Pascal program. Pascal is a simple yet powerful language. It has most of the features you would want to use when teaching intro CS and programming using the Algol-based language paradigm. Most corresponding things in Ada are more complex and have the potential for confusing novices. I cannot believe that learning Ada as a second language after Pascal will disadvantage a programmer over learning Ada as a first language; I think it would be an advantage. >Have you ever tried to explain Pascal I/O to beginners? I have, and I can't >say it sounds entirely convincing. I have done it reasonably successfully in class and in my book. Have you ever tried to explain Ada I/O to programmers new to Ada, let alone novices to programming? Arthur -- ------------------------------------------------------------------------------ Arpanet: ARK@SALLY.UTEXAS.EDU UUCP: {gatech,harvard,ihnp4,pyramid,seismo}!ut-sally!ark