Re: Python Programming: An Introduction to Computer Science

I think that we could make a tremendous push for the number of people who are programming at all if we made courses on 'data mining for the humanities' and the like. How to write programs to take the information from some website and do something useful with it.
-----Original Message----- From: edu-sig-bounces@python.org [mailto:edu-sig-bounces@python.org] On Behalf Of edu-sig-request@python.org Sent: December 13, 2003 3:33 PM To: edu-sig@python.org Subject: Edu-sig Digest, Vol 5, Issue 14
Send Edu-sig mailing list submissions to edu-sig@python.org
To subscribe or unsubscribe via the World Wide Web, visit http://mail.python.org/mailman/listinfo/edu-sig or, via email, send a message with subject or body 'help' to edu-sig-request@python.org
You can reach the person managing the list at edu-sig-owner@python.org
When replying, please edit your Subject line so it is more specific than "Re: Contents of Edu-sig digest..."
Today's Topics:
1. Re: Re: Python Programming: An Introduction to ComputerScience (John Zelle) 2. RE: re: Python Programming: An Introduction to ComputerScience (Kirby Urner) 3. Re: re: Education Arcade (Jim Harrison) 4. Re: re: Education Arcade (Laura Creighton) 5. RE: Re: Python Programming: An Introduction to ComputerScience (Kirby Urner) 6. Re: re: Python Programming: An Introduction to ComputerScience (Laura Creighton) 7. Re: re: Education Arcade (Laura Creighton)
----------------------------------------------------------------------
Message: 1 Date: Sat, 13 Dec 2003 14:59:56 -0600 From: John Zelle <john.zelle@wartburg.edu> Subject: Re: [Edu-sig] Re: Python Programming: An Introduction to ComputerScience To: Kirby Urner <urnerk@qwest.net> Cc: edu-sig@python.org Message-ID: <3FDB7DCC.4000107@wartburg.edu> Content-Type: text/plain; charset=us-ascii; format=flowed
Hello all,
I've been reading the thread about my book with great interest. All feedback is helpful, even when I don't necessarily agree. Let me just say that I thought Kirby's initial posting was right on target. My book is intended as a CS1 book, not a book on Python. Because of that, I have been a little fearful about how the book might be received in the Python community. Kirby clearly understands the distinction being drawn, and I appreciate the way his remarks are framed.
I am much less concerned than others about how the more advanced and/or indiosyncratic features of Python are/might be taught. The truth is
the tradtional core computer science sequence CS1 (Intro to programming), C2 (Data Structures and Design), CS3 (Advanced Data structures and Algorithms) have not been "about" language for a long time. Even a student that goes through this sequence using a single language, whether that be C++, Java, or Python will not acquire expert knowledge of the language. That's simply not what these courses are about. The point is that once a student has completed CS1/CS2, they can pick up a good technical book and have the foundation to learn the complete feature set of any language.
Students continue programming throughout their CS programs and in future careers. They are constantly changing tools. With some serious early exposure to a variety of tools (say dynamic and static languages) they are in a better position to pick tools that are best suited for the job at hand. A move to Java or C++ in CS2 should not be seen as "abandoning" Python. In fact, seeing Python side-by-side with Java ususally leads my students to want to do more Python projects (and hence learn more about Python) in their upper-level classes. Without seeing a statically typed language, it's hard to appreciate the elegance and flexibility of Python. For example, when we talk about polymorphism in CS1, the students say "of course, what's the big deal." Only when they see the complexity of doing similar things in C++ or Java do they really appreciate the concept.
Whatever approach one takes to the first classes, it is important to realize that our students do not begin programming with the same background that we have. Most of my students are not particularly mathematically or scientifically oriented (at least at the start). And they are concrete, not abstract thinkers. It's important that we try to meet them where they are so that they can learn and grow with minimal frustration. Packing more into CS1 is probably not the way to do that.
Along similar lines, Kirby's comment on abstracting geometric objects from their realizations (see below) are absolutely right on track as a matter of design principle. I do address this sort of decoupling toward the end of the book (model-view architectures). However, the goal of
graphics package is somewhat different. The purpose is to introduce objects in a very concrete way. It is a graphics library, not a geometry library. A Point doesn't really represent an abstract geometric point, but a postion _in_a_window_. Similarly, the Rectangle is not a general mathemetical abstraction, but an actual box on the screen (maybe I should have called it "box"). Now an object on the screen has inherent properties such as color and outline width as instrinsic properties; whereas the mathematical abstraction does not. This is most evident in the Line class. A Line on the screen is not really a line in the mathematical sense---at best it would be a line segment. If you were designing an application around the mathematical concepts you could use the primitives of the graphics library to visually realize some of
(so the graphics package would be analogous to the backend, not the front).
Of course, I do use the graphics package to get my students to do
like calculating points of intersection and computing coordinate transformations. The beauty of it is that they think they are just drawing pretty pictures :-).
My thanks to all of you who have given me both encouragement and criticism on this project.
--John
Kirby Urner wrote:
Earlier I wrote:
When considering option (e), my attention goes to the Point class. If all a Point does is hold x and y coords, then a class implementation seems like overkill in Python. You could get by with built-in tuples.
Now that I have the student CD, I see that the Point class is not just a holder for (x,y) values. It has some knowledge of Tk, is in fact a subclass of GraphicsObject, which is very Tk aware.
This brings up a design pattern thread for me. My tendency over the years has been to write the geometric objects, such as vectors and
in
such a way as to deliberately keep them ignorant of any output apparatus.
Then I define a "writer" that's customized to say Tk, or VRML, or POV- Ray, and pass the geometric objects to the writer. The writer squeezes
geometric information from the things, and translates them into output appropriate to its medium.
You can see evidence of this strategy going all the way back to 1998, when I was still doing this stuff in FoxPro (I hadn't learned of Python yet): http://www.4dsolutions.net/ocn/oop.html
A consequence of this design is I've been putting what philosophers used to call "secondary attributes" (color, texture) in the writer, instead of in the geometric objects. So if I want a red tetrahedron, say, I change to "edge color" and "face color" properties in the writer, before
tetrahedron object to it.
E.g.:
povwriter = povray.Povray("outfile.pov") povwriter.cylcolor = 'Red' # secondary attribute obj = rbf.Tetra() # get a tetrahedron obj.draw(povwriter)
But internally to obj.draw(povwriter), I'm invoking povwriter on the various edges, vertices and faces of my obj:
def draw(povwriter):
for e in self.edges(): povwriter.edge(e)
...
and like that.
The upside of this design is if I go obj.draw(vrmlwriter), then the same object gets output in VRML syntax.
In sum, when writing geometric objects to output media, there's a way to go wherein anything specific to the medium is saved to the "writer" object, while anything purely geometric, and common to all media, is saved in
geometric object. The pure geometry is kept separate from the messy details of I/O.
I'm just bringing this up as a by the way. I'm not saying Zelle should have done this in his text book.
It'd be a fruitful discussion for CS2 level course -- when we're talking about design patterns.
Kirby
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
-- John M. Zelle, Ph.D. | Wartburg College Associate Prof. of CS | Dept. Math/CS/Physics john.zelle@wartburg.edu | Waverly, Iowa
------------------------------
Message: 2 Date: Sat, 13 Dec 2003 13:09:10 -0800 From: "Kirby Urner" <urnerk@qwest.net> Subject: RE: [Edu-sig] re: Python Programming: An Introduction to ComputerScience To: "'Edu-sig'" <edu-sig@python.org> Message-ID: <E1AVH0a-0002cX-NY@mail.python.org> Content-Type: text/plain; charset="us-ascii"
-----Original Message----- From: edu-sig-bounces@python.org [mailto:edu-sig-bounces@python.org] On Behalf Of Jeffrey Elkner Sent: Saturday, December 13, 2003 12:28 PM To: Edu-sig Cc: Toby Donaldson Subject: Re: [Edu-sig] re: Python Programming: An Introduction to ComputerScience
I completely agree with Toby on this. I've already managed to make Python the CS1 language at Yorktown High, but it hasn't reached beyond the hard core geek community. If we really want to popularize it to a broader audience, it needs to fill the space taken by VB (at the high school) or what Logo used to do (at the middle school).
I guess I don't see how Logo makes a good case. It never went anywhere much beyond middle school. No Hubble stuff is done in Logo.
I guess my question is, what's being used outside the "hard core geek community" that CS1 doesn't reach? VB? Or is it just that
itself is still not a very widespread activity, using any language?
In my view, we need more programming in the mathematics curriculum, which means recognizing that writing programs is likewise a way of writing mathematics. Or, more accurately, I'd say both kinds of writing are similar kinds of symbolic activity which deserve a prime spot in K-12 education.
In the math curriculum, the real competition is not some other language, but calculators (I guess the TI programming language might count -- but my impression is more HS math teachers than students actually bother with
programming part).
Numeracy, the equivalent of literacy with regard to prose and poetry, involves programming, mathematics, data visualizations, puzzle solving, logic, simulations, and other such. Numeracy and literacy connect at many levels.
Kirby
------------------------------
Message: 3 Date: Sat, 13 Dec 2003 16:14:38 -0500 From: Jim Harrison <jhrsn@pitt.edu> Subject: Re: [Edu-sig] re: Education Arcade To: edu-sig@python.org Message-ID: <BC00EB6E.2D208%jhrsn@pitt.edu> Content-Type: text/plain; charset="US-ASCII"
on 12/13/03 2:57 PM, Arthur at ajsiegel@optonline.net wrote:
Learning is about demystification. I would probably not go as far as the Waldorf folks and deny kids a great magic show. But that's
what a
good video game is. In some sense it is the opposite of a learning experience.
And the power relationship is perverse. The machine has the power,
developer has the power. The kid is a shmuck. Exactly the wrong lesson.
In the early stages of learning, kids are expected to take a great deal on faith about the way in which the world and society works, and we typically start the demystification process with relatively easy, middle of the road examples with a lot of unstated assumptions. That's true for any kind of instruction with any kind of instructional material. Explorations of
difficult boundary conditions and underlying assumptions are left until later, both in the sciences and the humanities. So a lot remains un-demystified for a long time in traditional instruction.
For example, elementary physics typically includes macroscopic solid
problems, not quantum mechanics. There are a lot of assumptions inherent in those problems that ultimately need demystification, but initially we concentrate on the most obvious issues and work toward the others incrementally over a significant period of time.
Instructors often illustrate physics problems with a small physical apparatus that represents what happens in the wider world, and kids watch. It would be substantially beneficial if the kids each had their own apparatus for experimentation, but that's usually not possible.
In the absence of that, I don't see the harm (and do see benefit) in providing kids with a video simulator of the same problem that
responses that appear to be identical to those occurring with the
apparatus, and that allows experimentation. I don't believe the kids have any problem isolating the display from the non-demystified computer behind it and understanding that within the confines of the simulation the actions they see represent real-world responses. As an aside, the greater
is going the other way--convincing them fully that what they see in some cases does not represent the real world.
Similarly, I have no problem with starting kids learning computing/programming in a GUI (a form of simulator) to allow them to acquire a basic skill set rapidly under reinforcing conditions, then progressing from there to the command line ('cd is just like opening a folder'). I've seen this work fine.
And I don't buy the machine:power/kid:schmuck scenario. When kids can manipulate a simulation to produce a result, they feel empowered. If
result doesn't honor the parameters of the simulation, the kids immediately label the developer/machine "lame" -- not themselves.
Jim Harrison Univ. of Pittsburgh
------------------------------
Message: 4 Date: Sat, 13 Dec 2003 23:56:35 +0100 From: Laura Creighton <lac@strakt.com> Subject: Re: [Edu-sig] re: Education Arcade To: "Kirby Urner" <urnerk@qwest.net> Cc: edu-sig@python.org, 'Arthur' <ajsiegel@optonline.net> Message-ID: <200312132256.hBDMuZ9D026648@ratthing-b246.strakt.com> Content-Type: text/plain; charset=iso-8859-1
In a message of Sat, 13 Dec 2003 12:26:44 PST, "Kirby Urner" writes:
Imagine an arcade game wherein you're running for president of some country. You have money concerns, issue concerns, perception concerns. Donor X promises you big bucks, but not if you appear to side with Y in your statements. Different versions of a stump speech appear on screen. You have to decide which one you'll go with (advisors weigh in with pros and cons, perhaps audibly, using emotional language). Money sources appear or dry up as a result of your choices. In the meantime, your competition is doing likewise. Negative ads appear, about your accepting funds from Donor X.
Kirby, this is an example of the problem. When you teach children using a simulation, you teach them, in addition to everything else, to think within the system that the simulators were using.
So here we have, as unchallenged assumption -- it costs big bucks to become president. The fix for that would be to pass campaign finance reform -- forbid spending beyond a certain amount. Every version of those stump speeches come with the biases of the people who authored them. Their results have the outcomes that somebody programmed in as well. You have now taught the children how to use emotional language to criticise people and get them to change their positions based on how well you can manipulate them. Your funding base, presumably, is either the White, Prosperous Middle class, or Big Business -- since you are campaign contribution based. Does your simulation reflect the fact that poor people do not vote in the USA? Negative ads are now a fact of life .... it goes on, and on.
I don't want another generation of Americans conditioned to view the system as something that can not be changed, but can only be worked. I don't know what the best way to teach children how to question authority, recongnise opportunities, and strive to improve the society they are in, but I suspect that this is a step in precisely the wrong direction.
Laura
------------------------------
Message: 5 Date: Sat, 13 Dec 2003 15:18:42 -0800 From: "Kirby Urner" <urnerk@qwest.net> Subject: RE: [Edu-sig] Re: Python Programming: An Introduction to ComputerScience To: "'John Zelle'" <john.zelle@wartburg.edu> Cc: edu-sig@python.org Message-ID: <E1AVJ1x-0007qS-84@mail.python.org> Content-Type: text/plain; charset="us-ascii"
I appreciate your comments John.
One of many things I like about your book is how you jump into chaos right away.
I think that's good on a number of levels, one being that people new to computers might think they're entering a brave new world of deterministic Laplacian engines and are perhaps just ten short chapters away from being able to simulate the stock market or global weather.
However, as the chaos examples show, computer simulations are limited by mathematical principles. This is a useful lesson in humility.
I also really like the approach you've taken with Tkinter.
You're quite right that students are crazy about computer graphics and want this component.
I've used POV-Ray for similar reasons.
But whereas POV-Ray will spit out nice three dimensional polyhedra,
canvas has the advantage of doubling for a GUI-style interface, with buttons and other widgets.
In keeping it 2D, you're keeping it simple, and also connecting to the whole business of GUI design (e.g. your calculator example).
And since Tk is there if IDLE is there, your approach also minimizes
need for extra software and installation.
Kirby
------------------------------
Message: 6 Date: Sun, 14 Dec 2003 00:21:11 +0100 From: Laura Creighton <lac@strakt.com> Subject: Re: [Edu-sig] re: Python Programming: An Introduction to ComputerScience To: "Kirby Urner" <urnerk@qwest.net> Cc: 'Edu-sig' <edu-sig@python.org> Message-ID: <200312132321.hBDNLB6F026743@ratthing-b246.strakt.com> Content-Type: text/plain; charset=iso-8859-1
In a message of Sat, 13 Dec 2003 13:09:10 PST, "Kirby Urner" writes:
-----Original Message----- From: edu-sig-bounces@python.org
[mailto:edu-sig-bounces@python.org] On
Behalf Of Jeffrey Elkner Sent: Saturday, December 13, 2003 12:28 PM To: Edu-sig Cc: Toby Donaldson Subject: Re: [Edu-sig] re: Python Programming: An Introduction to ComputerScience
I completely agree with Toby on this. I've already managed to make Python the CS1 language at Yorktown High, but it hasn't reached beyond the hard core geek community. If we really want to popularize it to a broader audience, it needs to fill the space taken by VB (at the high school) or what Logo used to do (at the middle school).
I guess I don't see how Logo makes a good case. It never went anywhere m uch beyond middle school. No Hubble stuff is done in Logo.
I guess my question is, what's being used outside the "hard core geek community" that CS1 doesn't reach? VB? Or is it just that
itself is still not a very widespread activity, using any language?
I think the second.
In my view, we need more programming in the mathematics curriculum,
which
means recognizing that writing programs is likewise a way of writing mathematics. Or, more accurately, I'd say both kinds of writing are similar kinds of symbolic activity which deserve a prime spot in K-12 education.
In the math curriculum, the real competition is not some other language, but calculators (I guess the TI programming language might count -- but my impression is more HS math teachers than students actually bother with th e programming part).
Numeracy, the equivalent of literacy with regard to prose and poetry, involves programming, mathematics, data visualizations, puzzle solving, logic, simulations, and other such. Numeracy and literacy connect at many levels.
Kirby
I think that a problem we have is that programming is seen to be tied to math, and numeracy, (as is problem solving in general) rather that literacy, and the arts and humanities in general. I think that we could make a tremendous push for the number of people who are
at all if we made courses on 'data mining for the humanities' and the like. How to write programs to take the information from some website and do something useful with it. The problem I see when teaching non-technical people how to program, is how little their expectation of 'what programming would be good for' has to do with the sort of problems that they have in their lives. But I have a small following of 'grandmothers who have taught themselves some python'. They needed a computer program to take a list of their friends and then make mime attatchments of the digital pictures they had made of their grandchildren, and mail them to everybody on their mailing list without having to mouse click and do things by hand, which takes hours. But not too many non-nerds know that programming is good for repetative tasks like this.
Laura
------------------------------
Message: 7 Date: Sun, 14 Dec 2003 00:32:35 +0100 From: Laura Creighton <lac@strakt.com> Subject: Re: [Edu-sig] re: Education Arcade To: Jim Harrison <jhrsn@pitt.edu> Cc: edu-sig@python.org Message-ID: <200312132332.hBDNWZSg026815@ratthing-b246.strakt.com> Content-Type: text/plain; charset=iso-8859-1
In a message of Sat, 13 Dec 2003 16:14:38 EST, Jim Harrison writes:
And I don't buy the machine:power/kid:schmuck scenario. When kids can manipulate a simulation to produce a result, they feel empowered. If
One approach for getting "non-nerds" to do programming is to tie a scripting language to an application, like Flash or Director. The application does all the tricky technical stuff, while the scripting lets the user concentrate on the task logic. I guess you could do the same thing with Python and libraries, but nice GUI environments are friendlier. Toby -- Dr. Toby Donaldson Assistant Professor School of Interactive Arts and Technology Simon Fraser University that the those things polyhedra, pure passing a the programming the precisely the the body provides physical problem the the 2D the programming programming the
result doesn't honor the parameters of the simulation, the kids immediately label the developer/machine "lame" -- not themselves.
Jim Harrison Univ. of Pittsburgh
This may sometimes be a problem. There is a difference between 'being empowered' and 'feeling empowered'. Some studies of children who 'play video games too much' indicate that they do this is because they like feeling empowered -- and it feels better to be the Pokemon champion than a mediocre student.
Laura
------------------------------
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
End of Edu-sig Digest, Vol 5, Issue 14 **************************************
participants (1)
-
Toby Donaldson