On 8/16/06, Radenski, Atanas <[EMAIL PROTECTED]> wrote: > For those of you who might be interested, I have posted a recent paper > on the use of Python as a first language. The paper is entitled: > > "Python First": A Lab-Based Digital Introduction to Computer Science >
Thank you sir. I think your arguments will be understandable to people outside of CS, which is important, as there's a lot of concern about how we're not getting enough competent technical people across the board, and CS is seen as a bottleneck, i.e. its inability to recruit seems counter-intuitive given it has, in principle, access to a lot of the best toys. CS-related careers have a lot of glitz and glamour. But as you say, a dry course in nothing-but-Java doesn't give that impression, and would-be stars wander off to other majors. Internally to CS, however, there's the more esoteric line we draw, not between commercial and education languages, but between system and agile languages, the former being used to write the latter. Classic core Python is a very commercial project because it's written in lickity-split C code, and that's about the fastest on the planet. But you don't want to recruit through a tiny pinhole. Hard core C coders will emerge later in the game. Initially, you want something softer and broad spectrum, and that means no system language at all, but an agile one. If we leave "agile" strategically under-defined, we can use it to sneak J and APL into the fold, i.e. lets snarf up some functional assets while we're at it and not always toot just OO. What we're *really* talking about are VHLLs (very high level languages). But this latter way of drawing the battle map is too esoteric for the average non major, unless you want to build it in as a feature of your intro course. And this, I think, is a good strategy in any showcase class designed to recruit new majors: give a lot of overviews and previews, about what's ahead, forks in the road, expected developments. Use Python as exemplary of what we mean by "source code", but don't discourage the impression that this is a vast territory, with as many languages as O'Reilly has animals, and then some. Plus we like to give a sense of history, of how we got to this point. We allude to other disciplines, even tell some war stories (e.g. Turing versus Enigma @ Bletchley Park). I'm hoping that Python continues to win friends among those who write game engines, so that one day, you want to build your own dinosaur, with Python for a nervous system, that's just a matter of importing a module and modifying its types. Pretty soon you'll have the creature of your dreams, plus you've gained some insight into how coded operations are behind every screen, every menu (we hope delivering snappy performance, but that's not always the case). A mouse click is an event. You've poked in the guts of wxPython, so you know what that means. Every surface is sensitive, because every widget inherits not just from Window, but from Event. And Python makes this easy because it supports multiple inheritance. By the end of the first quarter, students should understand what that means, even without ever having to have written a line of Java or C. As for whether Java is the right follow-on for a CS2, I think a bigger success in recruiting will open more options there too. Yes, the Java track is secure for the time being. But don't deny those who wish to dive into C, now that they're hooked, now that they know that coding is for them. Explore the guts of CPython, the study the Java and C# implementations. It'd be wonderful for Python's future if we could be assured of future system language competence in our community, as that's the only reason we have this community in the first place. Our heros are system language programmers. We don't diss those languages, and those that use them. We love that these VLLLs were powerful enough to in turn give us something less painful to code in. A generation (Guido's, some younger, some older) has sucked a lot of pain out of the programming experience, and that's a very good thing for CS over the long haul. Kirby _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig