From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_00,INVALID_MSGID, RATWARE_MS_HASH,RATWARE_OUTLOOK_NONAME autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 109fba,baaf5f793d03d420 X-Google-Attributes: gid109fba,public X-Google-Thread: 103376,97188312486d4578 X-Google-Attributes: gid103376,public X-Google-Thread: 1014db,6154de2e240de72a X-Google-Attributes: gid1014db,public X-Google-Thread: fc89c,97188312486d4578 X-Google-Attributes: gidfc89c,public From: "Tim Behrendsen" Subject: Re: What's the best language to start with? [was: Re: Should I learn C or Pascal?] Date: 1996/07/29 Message-ID: <01bb7da1$323102a0$96ee6fcf@timhome2>#1/1 X-Deja-AN: 170944579 references: <01bb73e3.1c6a0060$6bf467ce@dave.iceslimited.com> <1996Jul20.124025.122789@kuhub.cc.ukans.edu> <01bb7b06$311fabc0$87ee6fce@timpent.airshields.com> content-type: text/plain; charset=ISO-8859-1 organization: A-SIS mime-version: 1.0 newsgroups: comp.lang.c,comp.lang.c++,comp.unix.programmer,comp.lang.ada Date: 1996-07-29T00:00:00+00:00 List-Id: Robert Dewar wrote in article ... > Tim recommends > > "Assembly -> C [non-GUI] -> C-GUI -> C++ > > All the rest of the languages are variations on the same theme. > Here's my rationale ... > > Assembly: Learn what's *really* going on. The most important." > > I strongly disagree. A student treading this path will have a hard time > learning what abstraction is all about. Teaching abstraction is the > biggest challenge in teaching at an elementary level. It is possible > to recover from a (mis)education that follows the path above, but > very difficult for most people. I arrived at this conclusion based on the students that were coming to me to be hired. I give a standard test to all my applicants that tests two primary attributes, 1) How well they understand what's *really* going on; the best programmers have a solid foundation. 2) How well the can take a problem they've (probably) never seen before and generate a solution. I was shocked at the results. I had people with Masters and Doctorates who were completely incapable of creating new solutions that they had never seen before. I had people, with *degrees* now, tell me "convert argument to binary" as one of the steps on a logical operation problem! The latter are people who are ground in the "abstraction" of an integer, but are completely clueless that the computer works in binary. How can a student get a full-blown degree, and not understand a computer works in binary? It's like graduating someone with a writing degree who is illiterate. This is what convinced me that our CS education is being done completely wrong. I've said this before [excuse my repetition]; it would be as if EE students were taught IC design in the first course, and were only given resisters, capacitors, ohm's law, etc. in their senior year, almost as an afterthought! Bottom line, a student cannot fundamentally understand an abstraction until they understand the abstraction in terms of the fundamental components of programming; again: Move, Arithmetic, Test, Branch, and Logicals. CS is currently taught the way you describe. Why do you think it's so hard to teach abstractions at the elementary level? It's because the students get so wrapped up in the fancy terminology, they don't see that its really all smoke and mirrors, and the concepts are very, very basic. If it's expressed in fundamental ways, it's very easy to see what abstractions are really saying in *real* terms. I have seen it! Teaching CS the way you describe it is producing brain damage of the highest degree. -- Tim Behrendsen (tim@airshields.com)