[Tutor] Tuples / Critique of How to Think like a Computer Scientist [Was: Re: Tuples]
Danny Yoo
dyoo at hkn.eecs.berkeley.edu
Wed Apr 12 10:44:07 CEST 2006
On Wed, 12 Apr 2006, Kaushal Shriyan wrote:
> I am referring to http://www.ibiblio.org/obp/thinkCSpy/chap09.htm
> I did not understood the below Section at all :(
Hi Kaushal,
Ok, let's trying starting somewhere else and see at what point you get
stuck. It'll also give you a chance to practice what you do understand so
far.
Are you comfortable about being able to return things besides numbers or
strings from a function? In particular, do you have any experience
writing functions that return tuples?
For example, could you write a function that takes two elements, and wraps
its input in a tuple? Let's call this function something, like wrap().
We'd expect wrap() to do something like this:
wrap(5, 6) --> (5, 6)
wrap("hello", "world") --> ("hello", "world")
Would you be able to write a definition of wrap()? Let's start from there
and see if we can isolate where you're getting stuck.
Also, if you are having trouble with How to Think Like a Computer
Scientist, I wouldn't be ashamed; I'm not such a big fan of it myself
anymore. You might want to take a look at the other tutorials on:
http://wiki.python.org/moin/BeginnersGuide/NonProgrammers
---
I'm going to rant, but not at you, but at that particular tutorial you're
reading. To the others on the list: frankly, I really do not like the
approach that "How to Think like a Computer Scientist" uses in marching
through all the concepts it tries to teach; in a critical eye, I would say
that it's doesn't do such a good job in integrating concepts, nor does it
have natural flow. Am I alone in thinking this?
Chapter Nine seems especially problematic in terms of flow. It's as if
they say: "Here are tuples, a data structure. You should learn them.
Ok, next up: here's something else you have to learn called random
numbers. They have nothing to do with those tuple things what we just
talked about, but we have to hurry if we're going to finish covering all
the things in the glossary."
Maybe I'm just reading too pessimistically into it, but the tutorial just
seems to go out of its way to avoid flowing one concept into another, but
instead jolting the student across the landscape. When I read part of
that section you pointed out, there's one particular thing I strongly
disagree with, that is, when they throw a rocky curveball with the
introduction of the "broken" swap() function:
########################################
def swap(x, y): # broken
x, y = y, x
########################################
The issue they try to tackle here really has nothing to do with tuples.
The same "bug" occurs with:
######
def broken_swap(x, y):
t = x
x = y
y = t
######
or, for that matter:
######
def broken_double(x):
x = x * 2
######
So I'm actually not quite sure why the tutorial is trying to make a point
about this. It's an issue that should have been touched on much earlier
in Chapter Five or Six, when functions and "multiple assignment" were
introduced, so mixing it in with the tuple stuff just seems off-track and
deliberately bewildering. And mixing it in haphazardly here risks the
student thinking: "does the issue here have anything to do with this
'immutability' thing I just read about a few paragraphs ago?"
More information about the Tutor
mailing list