On Thu, 31 Mar 2005 13:56:59 -0600, Jeremy Fowler JFowler@westrope.com wrote:
assembler... ;-) Learn from the inside out!
More than one reputable instructor actually prefers this method, of using assembler to teach programming. It's very informative of how programs work, after all. If you intend to take such a route, you'd have to pick up the books "Art of Computer Programming." I haven't read the books, but I've read of them and if I understand correctly, he introduces a computing machine similar to a MIPS machine and creates a low level programming language around them.
Certainly, students who learn ASM first will pick up on how new langauges translate to ASM faster than without. With careful instruction, it should be just as easy to learn on a z80 as say, LOGO. The very most important aspect, and the one that most often damns LOGO, is that you have an adept instructor who's knowledge encompasses and surpasses the book and the topic. LOGO was designed for elementary students, and I would argue that it does a very good job at it, but the important lessons of programming go untaught by the majority of elementary teachers who use the system.
Choosing the language of instruction largely depends on your goals. Some people want to impart the undying constants of a programming language, though they usually fail, because programming languages are as varied as the forms of human expression. Narrowing that down to teaching students impartive language techniques, you should probably look for a language without too many confusing "because I said so, and we'll see why later" aspects. This pretty much rules out Java, and C++, which is also compounded by pointers.
Reguardless of the language, the basic topics (more of a bare minimum) you should cover when teaching programming languages should be:
I. Arithmetic (including booleans and comparitive logic) II. Variables & Datatypes III. Control Flow A. Functions B. Conditionals (If Then Else) C. Iteration (While/For/Loops) D. Recursion
Any decent cirriculum woul probably include arrays, strings and maybe some basic data structures. But the above outline can be done in C, python, java, ruby, perl, or Caml, to varying degrees. Some languages are more explicit than others about datatypes, but if you don't understand them you'll almost invariably come up against a wierd problem you don't quite understand.
If the instructor or the audience cares about viability of the language, then perhaps you're best of making Java programmers. It seems to have the best usability for the "because smarter people know when you can do this differently" ratio. But it requires you at least touch on the following:
* Objects * Exceptions * Permission types (i think i just made name that up, but basically, public/private/protected)