[Tutor] louis renton

dn PythonList at DancesWithMice.info
Sun Jan 22 19:17:35 EST 2023


On 22/01/2023 15.05, paulf at quillandmouse.com wrote:
> On Sun, 22 Jan 2023 14:43:27 +1300
> dn via Tutor <tutor at python.org> wrote:
> 
> [snip]
> 
>>>
>>> A good and simple reference is important. Matter of fact, I've found
>>> Google to be invaluable. If you can't find it in your reference
>>> easily, Google it, and you'll find explanations and simple code
>>> examples. I'm relatively new to Python, and that's how I've done
>>> it. Also, there is a good reference for Python and its libraries on
>>> line. Look for it.
>>
>> Google is NOT a reference. What you will find listed is a collection
>> of web-pages. Whether they are accurate or otherwise good or bad is
>> open to question! See also: copying code from StackOverflow.
>>
> 
> Opinions apparently vary. I've found tons of useful explanations and
> working code from Google and Stackoverflow. "How to fetch a string from
> the user in Python" on Google yields useful help. Obviously, you have
> to copy or mimic and test to make sure stuff works.

+1 but.........
in order to decide if it is worth copying in the first place, and later 
to "test", one first needs a basis of knowledge.

Some dispute this, saying that as long as they know where to find facts 
(Google?) why bother to learn them. However, learning is more than 
"facts". Per the OP's "hands on", it is knowing how to use what you 
know/can find-out, and actually proving that by doing-so.

Question: if needed an operation, would you prefer a graduate of 
Med.School, or someone who is picking-up brain-surgery from different 
web-sites recommended by the GOOG?


Learning to fetch a string is a great illustration of two aspects:

1 it is an isolated fact, ie input(); and being told, use:

     result = input( "prompt" )

doesn't teach much about strings or the likely constructs to do with and 
'around' the uses of input(). Thus, isolated cf cohesive leads into 
asking: "what if I want to fetch an integer?". 'Stack-Overflow Driven 
Development' requires another search. Agreed, some answers do provide 
width and depth, but others stick strictly to the narrow question. If it 
were a cohesive lesson on terminal-input (as was one of my 
coaching-sessions at the local-PUG a few months back) then it would 
cover the above, including an explanation of the word "prompt", the 
building of a loop to cover mistakes in input (eg "ten" instead of a 
number), and what is/how to handle EOD through semaphore-values or the 
use of control-keys (which vary by OpSys). Chalk and cheese!

2 having completed a structured course, few of us remember everything - 
and few courses cover 'everything'. In addition, it may be that we work 
on Python, but don't use specific facilities for a long period. So, it 
IS useful to have a reminder: 'how do I use range() but not starting 
from zero?'. This is where having your own study notes, downloading 
"cheat sheets", or using Stack-Overflow (or this Mailing List's 
Archives) can be a 'treasure trove' (of knowledge) - and all without 
disturbing one's colleagues' concentration/"flow"!

Have a look through some of my posts here. Partially because many don't 
know 'enough' to be able to frame a question without leaving-out 
necessary facts or leaving things open-ended; you will see that I 
frequently add reading references. Something to use to answer the 
question-posed, something for later, or something that is irrelevant to 
the poster's needs. Who knows? How to tell in-advance?
(same conundrum faces courseware and book-authors!)


>> A formal curriculum such as an on-line course or even a text-book has
>> been designed to introduce topics in manageable chunks, to build upon
>> existing knowledge, and thus to show how 'it all' hangs-together.
> 
> Doubtless a formal course of study is useful. However, my experience
> with academic texts (including those from my college years) has been
> less than stellar. My college calculus text was nearly unreadable, and
> I did well in high school math up through analytic geometry. This is
> partly why Amazon allows you a look into the book before you buy it,
> because a lot of them are just garbage. I've known plenty of academics
> who couldn't think their way out of a crossword puzzle.

+1
FWIW, I completely agree with you: some academics have no idea how to 
teach - and I had trouble with Calculus 101, too.

You'll be familiar with the old adage: "you can't judge a book by its 
cover". Your local Librarian (note the title-case, and please be aware 
that some staff in a library are "Library Assistants") will be happy to 
discuss exactly this point: how readable is this book (for my level of 
expertise in the topic); and its related consideration: how applicable 
is this book to my own intentions, eg 'Python for Network Admin' cf 
'Python for Machine Learning'.

With books, courses, etc (including YouTube 'training videos'), just as 
with so many other aspects of life, there is no such thing as a "silver 
bullet"! One of the (possibly 'the') most popular Internet courses for 
learning to program[me] is offered by a 'top' US institution, but I look 
at the antiquated training techniques they use and wonder where the last 
fifty (or more) years went? Yet, they have higher (since first offered 
to-date total) attendance (- haven't compared success/pass-rates though 
- aspects of high drop-out rates, and attempting to counter same, a 
current research effort to which @Leam alludes, elsewhere).


The yawning gulf in the above observations, is that if "academics" 
produce a range of work varying from 'impenetrable' to 'made it so 
easy', what is the equivalent success/failure measure for YouTube videos 
or web-posts? There are many 'experts' (largely self-appointed, ie no 
job application to an institution's employment panel, and with no 
editorial oversight or even a colleague's advice like a 'code review') 
who post material which seems to say far more about them than it does 
about Python (and not always in a good way, if we are judging an ability 
to impart information, use time efficiently, whilst also enthusing, etc, 
etc).

There are some which are downright wrong - and therefore damaging. There 
are some which are truly excellent.
(next proverb: sorting the wheat from the chaff!)

Knowing something, and then being able to impart such knowledge to 
others, are quite different things!


In short, we're back to the curation of material, firstly to assure 
quality, and secondly, to assemble some applicable sequence of 'chunks' 
of coverage to facilitate learning and ensure a reasonably/practically 
cohesive pattern of knowledge. Followed by an assessment of the material 
vis-a-vis one's personal needs and interests.

In the case of complete ignorance about Python, pretty much any course 
or book which 'looks good' (per above, see also @Leam's list of 
reputable publishers from his experience) is a place to start. Once the 
new-learner has picked-up built-in types, functions, loops, etc (the 
'core' of the language if you will*; (s)he is much better-equipped to 
review alternate materials - even to the point of 'dropping' the first 
and promoting him-/her-self to something heading-off in a more 
appropriate application of the language (for example).

* and the subject of another local initiative called: "The When of Python"


In the case of the OP:
- proving one's learning by challenging yourself to produce some "hands 
on" application of new-knowledge is by-far the best way to 
learn/re-inforce new-knowledge
- the phrase "learn to code" seems wider than "Python". Perhaps then, 
something which introduces computing or computer science may be more 
appropriate, eg Harvard CS50 (https://cs50.harvard.edu/x/2023/) which 
introduces ComSc "(Two thirds of CS50 students have never taken CS 
before.)" and in terms of programming languages introduces C, Python, 
SQL, and HTML5 with the aim of providing just-enough knowledge to 
facilitate a person's (deliberate choice of) next steps - and note how 
they list 'choices' of learning-path based upon different peoples' 
intentions and expectations!
- as far as Python is concerned, two good starting places are:
   - The (official) Python Tutorial 
(https://docs.python.org/3/tutorial/index.html) which we (list members) 
have all used (or at least scanned), right?
   - @Alan's (our ListAdmin) own course, with the added advantage of 
being able to pose any follow-up questions 'here' and hear-back (content 
warning: another old adage) "straight from the horse's mouth". (when he 
gets back from holidays/vacation)
(sorry Alan, please don't be an old nag at me...)


Disclaimer:
Harvard was one of the founding institutions for edX, since sold to 2U, 
but with the retention of (some) managerial oversight. I use the edX 
platform, but not for Python training.

-- 
Regards,
=dn


More information about the Tutor mailing list