[Edu-sig] The fate of raw_input() in Python 3000

John Zelle john.zelle at wartburg.edu
Wed Sep 13 15:52:42 CEST 2006


A new twist on this thread: discussing the very nature of intro courses. 
Should we read more code and program less, should our programs build to 
something and not be a bunch of random scripts?

I think it's obvious to everyone that a course that tackles "real world" 
problems will be more interesting than one that doesn't. But that doesn't 
mean simple scripts can't address real world issues. While it's true that the 
first programs are not polished  applications, they certainly can solve real 
problems. It's also obvious that by the end of the course, students should 
have progressed beyond the "simple script" phase and be able to write 
programs that are truly intresting in their own right. A good class is one 
that can have multiple projects building toward some larger result. Of 
course, the downside here is that a project that really interests one student 
may be drop-dead boring to another. Notice that each of you is talking about 
how you learned by tackling a particular project that was of interest to you 
personally. It's hard to manage a class of, say, 10 different cumulative 
projects, although I frequently allow students to choose among several that I 
lay out for them. BTW, this focus on solving "real" problems is what keeps me 
from using an approach like Alice.

As for spending more time reading programs and less time writing them, if 
anyone thinks this will interest and motivate _more_ students, I suspect that 
person has never actually tried to teach a class. It is success in writing 
programs that keeps students interested and motivated. There's nothing better 
than that "Yahoo!" when the program works. It's a battle to get students to 
read any code at all. I specifically chose not to "box off" code in my book 
to get students used to actually reading the code as part of the text, not 
as "extra material." Typically students will just "skim over" larger program 
examples.

Finally, all of us can learn a lot by reading others' code, but there is no 
substitute for actual programming to learn the full problem solving mindset 
and skills. Once again, most intro CS courses are not just about learning a 
language. That's a means to a deeper end, which is learning algorithmic 
thinking and problem solving. Imagine an introductory German class where the 
students were not asked to actually speak or write  German. They might still 
be learning a lot, but it would not be nearly as useful. So yes, we want our 
students to be reading cade, especially good code, but I also want my 
students to be writing programs, lots and lots of programs. It's hard to 
appreciate what makes code good until you've written some bad stuff yourself.

--John

On Wednesday 13 September 2006 7:18 am, Arthur wrote:
> Peter Bowyer wrote:
> > At 11:47 13/09/2006, Arthur wrote:
> >> I can imagine an introductory course that was in fact more a
> >> *reading* course than a writing course - that spent a good deal of
> >> its time analyzing the code of  relatively straightforward, but
> >> interesting, working applications.  The satellite view, before we
> >> attempt to descend to a finer resolution.
> >
> > That's a lot like how I learned to program.  I bought a book
> > (Professional PHP - nothing like an intro book!) and once I'd read
> > some basics I went in and wrote a proper application - an ecard
> > script, following the outline of Perl code that I'd read previously
> > (without being able to write).  That way I learned from someone else
> > (apprenticeship) and wrote something that was *useful* when finished
> > (encouraging me to learn).
>
> Myself as well.  My first "major" Python project was simply a port of
> some Java code to Python  - a 3d math library.  Read/write - read the
> Java, write the Python. But in the end I had something actually useful,
> to an extent I could not possibly have  accomplished at that point on a
> write/write basis.
>
> All this of course makes Open Source of central importance.  It happens
> that the 3d Java library I wanted to port was not open - nice API docs,
> no source.  Luckily someone in Japan had taken upon themselves to do a
> functionally equivalent Open Source version of the library, .i.e.
> creating functional source working backward from the API.
>
> As it happens, on a *read* basis, about the first thing one can expect
> to encounter and need to explain  (maybe after the doc string) is the
> "import" statement.  To me this feels exactly right.  OTOH, a recent
> post on the Python3000 list - discussing the fate of raw_input() -
> re-iterates the position that an understanding of the import statement
> is something that belongs way, way down the road - in a way that was
> much to sure of itself, for my taste.
>
> That one point - where the "import" statement belongs, pedagogically -
> seems to in some way represent the quake line of different points of
> view.  Bucky might recognize this fact as a symptom of a pre-synergistic
> stage of things. But one side or the other always needs to lose some
> surety in order to make a first move in the direction of synergy..
>
> You first ... whoever you is ;)
>
> Art
>
> > When studying physics I found the same approach worked, taking a
> > real-world application generated enthusiasm for learning esoteric
> > subjects.  If you enjoy learning for the sake of knowledge I guess
> > this approach isn't needed; otherwise I believe it to be the most
> > effective approach.
> >
> > Peter
>
> _______________________________________________
> Edu-sig mailing list
> Edu-sig at python.org
> http://mail.python.org/mailman/listinfo/edu-sig

-- 
John M. Zelle, Ph.D.             Wartburg College
Professor of Computer Science    Waverly, IA     
john.zelle at wartburg.edu          (319) 352-8360  


More information about the Edu-sig mailing list