Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.milw.wisc.edu!bionet!apple!voder!pyramid!leadsv!laic!nova!darin From: darin@nova.laic.uucp (Darin Johnson) Newsgroups: comp.edu Subject: Re: Which language to teach first? Message-ID: <645@laic.UUCP> Date: 2 Aug 89 18:07:42 GMT References: <3876@shlump.nac.dec.com> <791@dms.UUCP> Sender: news@laic.UUCP Reply-To: darin@nova.UUCP (Darin Johnson) Organization: Lockheed AI Center, Menlo Park Lines: 51 IMVHO, there are two types of beginning 'programming' classes. The first type is the type often taught at community colleges, or in math or engineering. The purpose of this type of course is prepare the student for programming in the real world, or for later classes that will require programming. The second type is the first (or nearly first) class in computer-science. In this type, the student is expected to learn programming concepts, with less emphasis on silly details. For the first type of course, a language should be chosen that will probably be used later in the students career, or that is used on the departments computers. For an engineering department, FORTRAN may be a good choice, since it will likely be used in later courses, and will inevitably be used after graduation. For a general course, probably Pascal, since it is widely available. Students who get good at Pascal can always move up to Modula-II later in life to get real work done. C will probably confuse the issue. Programming languages likely to be run into in later careers (non-CS careers) will probably look similar to Pascal, such as DBaseIII, etc. Stuff like Scheme, Smalltalk, etc., are probably a bad way to go. Remember, the majority of these students will not be able to just pick up a new language and learn it. For the second type of course, you should pick a language that enforces or encourages what you are trying to teach. Students who finish this course will probably be expected to learn a variety of languages, so they should learn techniques that will help no matter what they use later. IMHO, this class should be taught concurrently with a basic CS course (boolean logic, high-level computer organization, etc.). The language chosen should be powerful enough to get simple jobs done with little coding (no PL/I here), demonstrate higher level techniques simply (such as recursion, sets, possibly pointers), and have user definable data structures. Pascal would also be good for this, despite the bad rap it gets. Pascal would also go good for students going into AI also (I see a bunch of AI researchers that are lost when they have to use a traditional language). Scheme would be a good choice. It doesn't hurt to use a language that won't be used in other courses, since it gives a broader view of languages. Definately, don't allow students to graduate having used only one language, or they will get the impression that that language is the best tool for all jobs. In my beginning class, I learned UCSD Pascal (at UCSD of course :-). The thing I liked best looking back, were the builtin 'turtle'-graphics. This allowed us to get reasonably complex programs done before learning how to get around IO. We learned recursion early on, by drawing fractal trees, etc. You could see on the screen what recursion did, and where you went wrong. Later, I was a proctor/assistant in that class, and in another class that used Pascal on non-graphics terminals. When teaching recursion, the students with the graphics learned it much easier than those who only had a bunch of numbers as output. Darin Johnson (leadsv!laic!darin@pyramid.pyramid.com) We now return you to your regularly scheduled program.