Experiences/guidance on teaching Python as a first programming language
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
> 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