Experiences/guidance on teaching Python as a first programming language

Chris Angelico rosuav at gmail.com
Wed Dec 11 03:43:52 EST 2013


On Wed, Dec 11, 2013 at 7:34 PM, Devin Jeanpierre
<jeanpierreda at gmail.com> wrote:
> On Tue, Dec 10, 2013 at 2:02 PM, Ethan Furman <ethan at stoneleaf.us> wrote:
>> Doesn't sound like they do, as that's causing plenty of problems.  In
>> today's world that level of knowledge isn't always necessary, especially if
>> your degree is not in CS.  One of the (many) nice things about Python is one
>> doesn't need to know that stuff to Get Things Done.
>
> You don't need to know how to use the brakes to drive to Wal-Mart,
> either. "Get Things Done" is not the one and only goal. It ignores
> productivity, correctness, ethics... It isn't a bad thing to learn
> things that are unnecessary to get the bare minimum accomplished.

When you tell a story, it's important to engage the reader from the
start. Sometimes that means starting the story in the middle of the
action, and filling in the important-but-less-exciting details later,
when they mean something. [1] Teaching a skill often hits the same
sorts of issues. Rather than explain "This is how to manipulate
registers in a CPU", explain "This is how to print Hello World to the
console" and worry about what exactly the console is (and how
redirection affects it) later. My tutorial on assembly language
programming did the same, though it used a one-character-output
operation so it printed a single asterisk to standard out. (Manually
setting CPU register AX to 0200 and DX to 002A, placing an INT 21
command in memory, and single-stepping it.) Learning how all that
functions - or even what the INT opcode means - came later. Start with
something visible and engaging.

After that, learn/teach as much background as is of interest, and
improve skills. But start with something that gets something done.

[1] http://tvtropes.org/pmwiki/pmwiki.php/Main/InMediasRes

ChrisA



More information about the Python-list mailing list