Experiences/guidance on teaching Python as a first programming language

Grant Edwards invalid at invalid.invalid
Tue Dec 17 17:59:01 CET 2013

On 2013-12-17, Wolfgang Keller <feliphil at gmx.net> wrote:

>> I was also taught C as an undergrad but having already learned Java, C
>> and C++ before arriving at University I found the C course very easy
>> so my own experience is not representative. Many of the other students
>> at that time found the course too hard and just cheated on all the
>> assignments (I remember one students offering to fix/finish anyone's
>> assignment in exchange for a bottle of cider!).
> The problem with the C class wasn't that it was "hard". I had passed my
> Pascal class, which taught nearly exactly the same issues with
> "straight A"s before (without ever having writeen any source code ever
> before). And by standard cognitive testing standards, I'm not exactly
> considered to be an idiot.

I agree that C is a awful pedagogical language.  When I was in
university, the first language for Computer Science or Computer
Engineering students was Pascal.  After that, there were classes that
surveyed Prolog, SNOBOL, LISP, Modula, APL, FORTRAN, COBOL, etc.  If
you were an "other" engineering/science major, you learned FORTRAN
first (and last).  I think there may also have been some business
types who were taught BASIC.

C wasn't taught at all.  When I graduated and started doing real-time
embedded firmware, the choices were Generally C or Pascal.  The first
projects I did were in Pascal, but I learned C because the development
host was a PDP-11 running Unix and I needed to write some small (non
embedded) utilities.  Today, all my embedded work is in C.  Python
fell out of style for some reason, but (with a few extensions) it was
a fine language for embedded work as well.

I've always thought C was a great language for low-level, bare-metal,
embedded stuff -- but teaching it to first or second year computer
science students is just insane.  C has a certain minimalist
orthogonality that I have always found pleasing.  [People who smile
wistfully when they think about the PDP-11 instruction word layouts
probably know what I mean.]

But, exposure to C should wait until you have a firm grasp of basic
algorithms and data structures and are proficient in assembly language
for a couple different architectures.  Ideally, you should also have
written at least one functioning compiler before learning C as well.

Grant Edwards               grant.b.edwards        Yow! Maybe we could paint
                                  at               GOLDIE HAWN a rich PRUSSIAN
                              gmail.com            BLUE --

More information about the Python-list mailing list