Feedback wanted on programming introduction (Python in Windows)

James Harris james.harris.1 at googlemail.com
Wed Oct 28 06:29:39 EDT 2009


On 28 Oct, 08:58, "Alf P. Steinbach" <al... at start.no> wrote:
> * tm:
>
> > On 28 Okt., 07:52, "Alf P. Steinbach" <al... at start.no> wrote:
> >> [Cross-posted comp.programming and comp.lang.python]
>
> > Looking at your topic '(Python in Windows)', without taking a
> > glimpse at your actual introduction, I have the following to say:
> > I think it is not a good idea to teach programming with a focus
> > on a specific operating system. Programming should IMHO be taught
> > without reference to an operating system. Otherwise you just teach
> > how to write unportable programs.
>
> I think you're trolling a little. :-)

Whether tm is promoting his own language or not I agree with some of
his comments. I was going to avoid giving any feedback because most of
my thoughts are, I'm afraid, negative but seeing your response to tm
here I changed my mind. You asked for feedback. Hopefully you are
looking for genuine criticism and honest opinions rather than flattery
'cause I'm not going to flatter.

If you want to teach programming then target programming concepts
(albeit using Python as a means to express them) and as tm says, avoid
teaching either a particular OS or a particular set of bundled tools.

If you want to teach programming under Windows then change the title
to say so.

Sorry but I find the overall tone too patronising. Phrases like "send
your browser galloping in the direction of" are offputting. With this
and other phrases it sounds like you are either

1) writing this for young children, or
2) having more fun writing it than your readers will have reading it
or,
3) being self-indulgent and not planning to help others at all.

I know you don't mean any of these. Hopefully you can change the
approach to suit. There are many of these jocular phrases and they
appear in both chapters.

Given that this is a Windows-based course it's good that you include
teaching on Notepad rather than just the IDE.

The x squared graph is a good example to show that some fun can be had
in a small space.

I wouldn't condemn but I would query the use of Activestate's
distribution. A vanilla Python may have been better if you want to
teach transportable skills. Teaching Activestate reminds me of how
Compuserve bundled their own stuff with Internet access so people
thought the Internet was what they saw on Compuserve.

You get way too deep into Python in places (for a beginner's course in
programming). For example, "from now on I’ll always use from
__future__ in any program that uses print."

The MIT course that you mention takes a more apt approach for teaching
*programming*. For example, it explains some things like floating
point numbers in Python not being able to express 0.1 perfectly in
binary but that's appropriate as other languages have the same issue.

As you say, you are an experienced programmer who is learning Python
and the chapters read that way. They rush in to all kinds of gotchas
and mechanisms. Perhaps you should either change it to be a book on
learning Python for experienced programmers (this seems the best
option) or start again and take a different approach.

With what you have written so far your audience seems to be youself
(or someone in your position).

>
> Without reference to an OS you can't address any of the issues that a beginner
> has to grapple with, including most importantly tool usage, without which it's
> not even possible to get started, but also, very importantly, a file system.

There's a difference between referring to an OS and tieing it in
throughout the text which is what I think tm was getting at.

>
> Learning programming without tools and without using files (or only using the
> common denominator for file systems in OSes X, Y and Z) is sort of vacuous...

OSes generally support concepts of files and editors. If you cannot
teach the general concepts make it clear that you are teaching
Activestate Python under Windows.

> In addition there's the motivational factor.
>
> Doing only academic examples, utilizing only a language's more or less portable
> functionality, is very de-motivational, while the opposite is motivational.

The graphics and examples are fun. Be clear about what you are
teaching, though, and who your intended audience is.

...

> >> C++ was way too complex for the novice, JScript and C# suffered from too
> >> fast-changing specifications and runtime environment, Java, well, nothing
> >> particularly wrong but it's sort of too large and unwieldy and inefficient.

Agreed. Python is a good introductory language.

> >> I don't know whether this will ever become an actual book. I hope so!

It's a good start.

>
> >> But since I don't know much Python -- I'm *learning* Python as I write

This and that you are an experienced programmer show in what you have
written. If you don't recast the material for a beginner now it will
only get harder to change the approach later.

...

> Yes, it would be silly to write a book or whatever about Python. This text is
> primarily about programming, at the novice level, not about the Python language.
> The programming language is only a vehicle.

It doesn't seem that way. Whether intended or not the text is about
Python.

...

I don't think you will get my meaning and will want to stick to what
you have started so I'll try to illustrate:

If you really want to teach *programming* start by planning out what
concepts you need to teach. You might come up with a list such as:

1. Values, types, variables, expressions.
2. Immediate and stored operations.
3. Statements, functions, arguments and parameters.
4. Control flow.
5. etc.

Once you have worked out the concepts you want to teach break them
down to key points and then think about how to express them in the
language you have chosen.

If, on the other hand, you want to teach Python to experienced
programmers, carry on as you are doing. Judged from that position I
would rate the text far more positively.

HTH

James



More information about the Python-list mailing list