Experiences/guidance on teaching Python as a first programming language

Rhodri James rhodri at wildebst.demon.co.uk
Tue Dec 10 00:32:12 CET 2013

On Mon, 09 Dec 2013 12:23:41 -0000, Oscar Benjamin  
<oscar.j.benjamin at gmail.com> wrote:

> Some of the objections to the idea that were voiced in the meeting were  
> that:
> 1) Some people felt that Python is not an "industry standard" unlike
> C/C++/Java and that it is not as good for employability.
> 2) Students should learn to program in a statically typed language
> because it leads to good programming discipline.
> 3) Python is too close to Matlab (which is considered essential for
> some industries our students often go in to).
> 4) It is better for students to be introduced to programming with a
> low-level language so that they gain a better understanding of how
> computers "really work".
> 5) Learning to program "should be painful" and we should expect the
> students to complain about it (someone actually said that!) but the
> pain makes them better programmers in the end.

I have taught Python as a first language to 12-15 year old kids, and for  
their purposes (learning how to get computers to do stuff) it was just  
fine.  In particular, it reads easily (as long as you steer clear of funny  
stuff like decorators and metaclasses), so our students found it easier to  
explain to themselves what examples did without all the unusual (in  
English) punctuation getting in the way.

While your students aren't 12-15 year olds, it sounds rather like what you  
want to give them is very similar.  Unlike Computer Science students, they  
don't need to know how computers "really work" (except in the limited  
sense of floating point arithmetic, which is going to give them headaches  
however you introduce it).  What they need is confidence in manipulating  
data and algorithms, and Python's a perfectly good choice for that.

For contrast, my CS degree of >mumble< years antiquity threw a lot of  
different languages at us, usually in pairs, to illustrate different  
concepts.  6502 assembler showed us the basics of how a computer works,  
while System/370 assembler showed how horribly complex those basics can  
get; Pascal and BCPL contrasted rigid typing with practically non-existent  
typing (something Modula-2 and C didn't do nearly as well); and so on and  
so forth.  None of this is stuff your students need for their work, so I  
wouldn't waste time side-tracking them with it.

Rhodri James *-* Wildebeest Herder to the Masses

More information about the Python-list mailing list