On Sat, 18 Aug 2001, Derek Peschel wrote:
I never said that fancy macros were for beginners! I
was just pointing out
the extreme case of what you can do with a good macro processor. The
beginners WILL probably want to use the PRINT macro, however.
I apologize. I was under the [apparently mistaken] impression that we
were talking about beginners.
Also, I mentioned languages with embedded assemblers,
and that might be a
useful way to teach assembler -- by ignoring it at first and then using it
in small pieces.
That might be very interesting.
In the 60s, it was commonplace to teach EAM (punch card devices), then
machine language, then assembly language, then high level languages!
I had been doing some EAM work and a little Fortran before I had my first
course. After a semester of EAM, they let us do 1401 machine language (on
a 1620 with an emulator!), then 1401 assembvly language, then Fortran
(PDQ!), and Cobol.
Now,...
I tell my students to learn a high level language before taking [PC]
Assembly language (that it is NOT the easiest way to learn what a program
is, etc.) I start them off with trivial stuff using the 'A' command in
DEBUG. Once they are writing programs that are long enough that it is
annoying to have to insert a line, then I introduce them to the assembler
(MASM 1.0 - 6.0, CHASM, A86, etc.) Starting in DEBUG is largely because
of the excessive amount of overhead in MASM. I have them writing .COM
files for most of the semester.
In the C class, I let them use whatever compilers they own, but encourage
them (non-subtly) to use Turbo-C (on the machines in the lab), in order to
let them start writing programs WITHOUT spending the first half of the
course on MAKE files, project files, etc.
In every programming language, the FIRST assignment that I give is to
write a program to put their name on the screen. It is not intended to
teach them anything significant about algorithms, data structures, nor
machine architecture. It is only to familiarize them with the tools.
I knew one teacher whose first assignment involved a FOR loop. Her
students were unable to coherently describe whether difficulties that they
had were with the compliler or with their programming logic. Virtually
none of her students made it to a second course.
It is important to differentiate between how a student should be
introduced to their first experience in programming v what they should be
taught later.
A number of years ago, UC Berkeley switched from using Pascal, to using
Scheme (a Lisp derivative) for the first programming course for
undergraduates. Soon after, they declared that they expected all of their
students to already know C before their arrival!
I once hired one of their graduates. I fired him a few weeks later. He
was unable to write a trivial program to print 3-up mailing labels from a
name/address data file, because he couldn't figure out any way to do 3-up
labels without knowing how to make the printer return to the top of the
page!
--
Grumpy Ol' Fred cisin(a)xenosoft.com