On Feb 5, 2010, at 9:31 PM, kirby urner wrote:

> What I'm not seeing here is any plans to venture into user-defined types
> i.e. rolling your own classes.

I am indeed tempted into user-defined types.  I actually teach OO Python in my 
App Engine course because it is necessary there.  And Think Python has a nice 
chapter.  But my problem is find a use case that drives me there in "exploring 
data" - I see using objects all over the place - but making your own does not 
yet feel part of the data narrative.

> That's maybe a line you draw between professional programmers and
> people who need to use computers a lot?

Right - and the other fun idea is that if "Python for Informatics" is the first 
book, then "Think Python" is the second book.   In a second book (which feels 
very similar to the first book) you learn how all this stuff "works".

I see in my crazy brain - a whole series of "Think Python" based books that 
feed into one another, all open content, and CC-BY-SA licensed all sharing 
basic text where needed. 

Pure Intro books:

Learning Math with Python
Exploring Data with Python
... ???

The middle book:

Think like a Computer Scientist in Python

The More advanced books:

Web Programming in Python
Game Programming in Python
Building Graphical Tools with Python

The key is that the books could specialize on their topics and not over-teach 
in any of the books.  I know for example that you like to bring OO in for math 
- I don't think that is necessary (we can debate this forever :) ).  I would 
like to see a Python for math that actually taught Math - not teaching Python 
though math.  They can learn Python in the second course with "Think Python"

> The text reads like a gentle on-ramp to "core Python" at the moment,
> i.e. it's a very clear step by step intro.  So my prejudice as a reader
> is to think defining classes is just around the corner.

Yes - it would be the next chapter.

> I think there's a big "aha!" in Python when you've been using
> dot notation to access the methods of built-in types, e.g. strings,
> and then start to see how you're just hitting against pre-supplied
> class definitions.

Yes - and I love this - but the timing in the narrative must be right.  It 
cannot be a trap door - as much as we like it.  I have found in my App Engine 
course if I teach OO one week too early, I lose the students.   The pattern I 
now use successfully in my App Engine course is to make them use a real object 
with self and everything:

class LogoutHandler(webapp.RequestHandler):

  def get(self):
     ....

And the *next week* teach them classes - just using strings and dictionaries 
does not produce sufficient curiosity to learn classes.   A rich extension 
example with good pictures is the right preparation for a intro to classes - 
particularly if I keep saying "This syntax is a little new and we will explain 
it next week - just use it for now." instead of saying - "You must learn this 
now even though it is painful because next week we will be assuming this as a 
pre-requisite skill".

> Given how some of the library stuff involved with screen scraping
> might involve subclassing, maybe you're thinking to work it in under
> networked applications or one of those i.e. you have your wily ways.

Really?  Send me an example - I will work it in.  My thought for that chapter 
was to hack it as strings - where should I look for a better example?  I ma not 
an expert on this stuff and learn new things all the time.  Part of the fun of 
remixing Thin Python was learning a few new tricks along the way from Allen and 
Jeff.

/Chuck
_______________________________________________
Edu-sig mailing list
Edu-sig@python.org
http://mail.python.org/mailman/listinfo/edu-sig

Reply via email to