On Thu, 2003-01-23 at 13:40, Kirby Urner wrote:
People have taken the broad mission of CP4E (computer programming for everyone) and run with it in various directions.
One of the most obvious directions is into the schools.
And there you get a fork in the road, with most heading towards the computer science curriculum, but others of us exploring the role of programming (and other modes of computer use) in other parts of the curriculum as well e.g. in math class (there's a tradition here too of course, which precedes Python -- Seymour Papert's Logo initiative for example).
Also, under the broad heading of "school", there's this question of levels or target audience -- are we talking college, high school, earlier? or maybe adult education? All of the above no doubt. But each individual will have their bias/strength.
What I learned about from Jeff Elkner's posts and web pages over the years (he introduced Python to high schoolers at his school -- also Linux based), is the importance of a text, at least something on-line that's printable, if not a bound text book. He uses 'How to Think Like a Computer Scientist', which he adapted from the original to work with Python. This work is on-line.
I understand Tim Wilson (also on this list) does so too with his work at Henry Sibley (sorry Tim - don't mean to speak for you).
I had recent discussions with a teacher casting about for a language to use in a computer intro course (high school level). He was drawn to Scheme, largely on the strength of this resource: http://www.htdp.org/ (How to Design Programs), which is indeed the kind of thing a teacher looks for when designing a course. He had every right to be excited about it.
I am presently printing off the HTDP book in installments and have read snippets of it and it does seem pretty good. I believe that the exemplar language is Dr.Scheme isn't it - a variation of Scheme. I was thinking of downloading the language and its associated files and playing around with it. I probably will, once I've finished printing off the text. I must be cautious however and not rush madly from one thing to the next, and I think that is one of the values of a more formalised instruction process. On the Feb 4th I start with an eight week course in C programming, which I'm looking forward to as that will be the first time I have ever attended any formal instruction in computing.
I told this teacher that I thought highly of Scheme (which I do -- it's always on my list as a candidate intro language) and its educational materials, but that it's also my view that an intro course (especially an intro course) should look at (at least) two languages, in part because it's in comparing and contrasting them that some of the commonalities leap to the fore -- helping to bring home some of the more abstract concepts (flow of control, named functions, parameters, data structures ...).
I understand what you mean here: this has become more apparent to me as I read more, and especially more widely (e.g. Sturcture & Interpretation of Computer Programs, and Foundations of Programming) because although SICP is written using Lisp as the example and FoP cuts across languages but focuses on Basic, Pascal, and a bit of C. Certainly flow of control, declarations, data abstractions seem to be themes that surface again and again. Much of it leaves me in the dark, but since I don't need to swot the material that deeply it gives me the opportunity to get more of an overview of generalities which is quite useful.
Beginners will better appreciate the world they're entering if they get exposure to some of the variety that's out there (nothing like a couple hours with J to blow one's mind re the stuff people find useful).
I recommended Python as a good candidate for a second language, in part because, unlike Scheme, it really makes the class/object model accessible right at the outset (with the everything-is-an-object paradigm -- with users rolling new types of their own).
Although maybe not precisely CP4E's official intent, I look at "computer programming for everyone" as meaning more than everyone learning Python. Python is a good way to get *access* to programming, but then you find yourself learning all kinds of little languages, from Lego Mindstorms to some JavaScript to your calculator, to programming your VCR. And this is actually in harmony with Python's goals as a language -- it's a "glue language" (i.e. "works well with others") and also an "API language" (often used to bind an application's functionality to some syntax scriptable "from the outside").
I emphasize the above because I think it's possible for CP4Eers (people who've taken on this mission) to be pro Python without being tiresomely negatory towards all other languages, thereby falling into one of those deep "language war" wells which dot the internet landscape like so many vortices from hell (loud sucking sounds). It's not about Python OR Scheme or Python OR C# or Python OR Java. It's about Python AND _____ (fill in the blank, with as many languages as you wish).
Good point - I appreciate the inclusivity.
That being said, it makes sense to play up Python's strengths. No need to be shy.
Lots of CS teachers are indeed moving to Python.
There's a question here as to whether programming mirrors our thought process or whether, after we program for awhile, our thought process starts to take on some features of programming. Certainly it's a great source of metaphors.
Indeed it is.
The books usually say "objects" (in the programmed sense) are metaphors for objects in the real world i.e. the problem space is modeled by the solution space in terms of objects. But it works the other way too: getting used to thinking of composition and inheritance affects the way you see the real world (suddenly, that cell phone "really is" a subclass of the more generic telephone class, and so on).
I come from a psych and philosophy background, and this taps into a whole bunch of issues from those fields - the notions of 'reality' and the constructions of reality, the idea/image or simulcra and the whole question of representation, ... . The lens of language (non-computing) inform the way that we perceive and interact with our worlds (introducing the ideas of discourse and interpretive frames, for example), so it makes good sense that when one learns computing language as a means of representing 'reality' (putting to one side the important questions about that particular concept!), the 'world' begins to 'resemble' (or perhaps more germanely - becomes 're-assembled'!) according to the codes of reference of that language. In philosophy, one of the issues has been the extent of interleaving between concepts and that which they are said to represent: when we have a concept for microscopic particles (e.g. virii or bacteria) it is easier to 'see' them with a microscope. The beauty of a well-written program does not become apparent unless one knows what one is looking at. Before Object Oriented Programming, the notion of using objects was foreign to programmers; once upon a time, it was unheard of not to use 'goto' in a program; now it is almost bad manners to use 'goto'.
Good thing my dog here overrides some of those wolf methods, with more domesticated versions.
LOL - some inheritance features *should* be surpressed!!
Shouldn't programming be taught hand-in-hand with mathematics, which is already so vested in "algorithms"?
Indeed - math has made a science of the algorithm. Yet I can't help but wonder whether or not it is the emphasis on math and such technicality that tends to leave many feeling excluded from (or reluctant to attempt) programming. Consequently, this emphasis might have a tendency to elide the creativity and the *art* that is also a seemingly key aspect of programming. Perhaps then, both and ... altho' the relative time of introduction might be an important consideration.
PyCrust is cool. I've used it with pleasure. I should find the latest version and play with it some more.
Kirby
Now that Patrick has given me a virtual road map to get it, I too will make a note to play around with it. Thank you Kirby for answering my request for info with such a generous response. All the best Andrew -- ________________________%%%%%%%%%%%%%%%%%____________________________ Proudly sent using Ximian Evolution 1.2.1 on a Linux Red Hat 8.0 box.
of Computer Programs, and Foundations of Programming) because although SICP is written using Lisp as the example and FoP cuts across languages
Actually, SICP also uses Scheme, but MIT Scheme instead of PLT Scheme (i.e. DrScheme) -- I don't know what all the variations are (an advantage of Python is it has fewer variations -- mainly it has extensions, in specific libraries, that are platform specific).
I come from a psych and philosophy background, and this taps into a
Me too (philosophy background).
Indeed - math has made a science of the algorithm. Yet I can't help but wonder whether or not it is the emphasis on math and such technicality that tends to leave many feeling excluded from (or reluctant to attempt) programming. Consequently, this emphasis might have a tendency to elide
That's a good point too. I take a page from the explosive popularity of fractals. Here was a grass-roots, up welling of interest on the part of not math-specialists. With computers, we can do art. Math and art may be bridged, especially through geometry, and here especially is where computers really shine (PyGeo is a good example) -- much more so than calculators.
the creativity and the *art* that is also a seemingly key aspect of programming. Perhaps then, both and ... altho' the relative time of introduction might be an important consideration.
Exactly. Kirby
participants (2)
-
ahimsa
-
Kirby Urner