* James Harris:
On 28 Oct, 08:58, "Alf P. Steinbach" <al...@start.no> wrote:
* tm:

On 28 Okt., 07:52, "Alf P. Steinbach" <al...@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
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to