Feedback wanted on programming introduction (Python in Windows)

Alf P. Steinbach alfps at start.no
Thu Oct 29 13:24:22 EDT 2009


* James Harris:
> 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.

The working title says "in Windows".

But you have a misconception, a false dichotomy.

Learning programming in some concrete environment, which is a practical 
necessity, is not to learn programming for that environment.


> 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.

Ah, don't be so stuffed-up! :-)


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

No, I don't intend to teach Notepad or any editor or IDE.


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

Thanks.


> 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.

ActiveState is simplest to install.

However, given what I've now learned about the current situation wrt. versions 
of Python, where Python 3.x is effectively a new language, and where apparently 
ActiveState has no installer for that, I'm rewriting to use the "official" 
distribution.

It has some bugs in the installer and is in many respects incompatible with the 
information the student can find and will most easily stumble on on the net, 
even the sites that the 3.1.1 documentation links to (e.g. now "tkinter" instead 
of "Tkinter", now "/" does not perform integer division and there goes my 
example of that, so on), but it's a more clean language.


> 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."

Sorry, but I think that hiding such concerns is a real disservice.

Nobody learns to swim by reading.

They can at best learn something /about/ swimming, but not swimming.


> 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.

I believe in mostly going from the concrete to the abstract.

Sometimes theory has to precede the concrete examples.

Sometimes, and most often, theory is best served after having seen what it's all 
about.


> 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.

I'm sorry but the above is not meaningful to me. What gotchas? What "mechanisms"?


> 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.

I'm sorry but this again is not meaningful to me. It seems more like you'd wish 
there was some strong tie-in to an OS somewhere. But have you found one? No. So, 
it's just hogwash.


>> 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.

I'm sorry but you have a misconception about ActiveState. It's not a special 
dialect of the Python language. It's just an installation package.

Anyone is free to install more things with any Python distribution.


>> 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.

Thanks!


> ...
> 
>>>> 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.

What exactly do you think is difficult for a beginner?

I'd like to fix up those parts.

But I find this inconsistent with your comment about starting with theory about 
floating point representations and the like, which *is* difficult for beginners.


> ...
> 
>> 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'm sorry, that's just silly. :-)


> ...
> 
> 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.

Yes, that's a good summary of the so-far-completed part of ch 2. Thanks!


> 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.

It's difficult to understand your point of view. It's inconsistent. The only 
consistency I detect, but this may of course be a false impression, is some kind 
of old-fashioned academic flavor (teaching hard to grok theory first, avoiding 
dirty actual programming, avoiding "jokular" phrases), with the emphasis on a 
surface impression of respectability or something like that  --  and IMHO that's 
only a hindrance for learning.


Cheers,

- Alf



More information about the Python-list mailing list