What a pile of stuff, much of which ties in (in various directions) with things I've been thinking.
In no particular order.... Grades - ideally, yes, grades would be unnecessary. But in a system where others depend on something at least vaguely objective to measure whether people know things, some kind of grading is necessary. Does it have to be done the way it's done now? Of course not. But, unless you can also eliminate a bunch of the other societal mechanisms and conventions that have accreted around the educational system, it needs to be done. Unless you are doing something purely for the students. I once taught a weekend course with no grading of any sort. Every student got a piece of paper I signed certifying they had attended the course, but there was nothing at all - save of course the students' increased proficiency in the subject matter - indicating how much the various students had got out of it. In some respects I think that's the best way to handle education/training/learning, but it's difficult to get completely away from the rest of those mechanisms and conventions I mentioned above. This segues neatly into the distinction someone raised between education and training. Again, I would say that ideally there should be no distinction, but that in this society (and I suspect that, for all their differences, the societies most/all of the listmembers live in are more or less the same in this regard), there is a substantial operational distinction between the sort of background fundamentals that were called "education" and the sort of focused specifics that were called "training". Especially in North America, there used to be a distinction between "university" and "college", with universities providing "education" and colleges providing "training". Unfortunately, this is on the way to getting lost - I recommend Paul Fussell's delightful little book _Class_, which, among other things, has a chapter or two about how colleges got redesignated universities and trade schools colleges; that feels related to me. I'm inclined to agree that the societal purpose of universities is advancing the state of the art, whereas that of trade schools is preparing people for jobs (in whichever industry the school covers). Today's blurring of this distinction I see as symptomatic of much of the problem with today's educational system. I was trained - er, educated, I guess :) - as a mathematician, with a side order of computer science (B.Sc. major in maths, minor in CS). In practice, though, I'm neither mathematician nor computer scientist, but rather programmer and sysadmin. Yet the maths and CS training were extremely valuable to me; I am a far better programmer and sysadmin for having the math and CS background. Take also, for example, Lisp. I've used Lisp. I even wrote a Lisp engine. I love the language, even though I almost never use it. But some of the mental patterns it has given me inform much of the code I write regardless of language. I have seen it said that a language that does not change the way you think about programming is not worth knowing. I think that goes too far, but something weaker along the same lines _is_ true, and Lisp is a good vehicle for some of those changes. (Adding continuations to my Lisp engine was a fascinating experience, one well worth the time and effort involved, even though I have never used them for anything serious.) And I do not exclude low-level languages; just as I think knowing Lisp makes me a better programmer even when not using Lisp, I also think my knowing assembly and machine language for various processors makes me a better programmer even when not using them. (And, yes, the people who think Lisp is useless-in-practice clearly have never looked even the tiniest bit under the hood of GNU Emacs.) People have remarked on the knowing of multiple languages. I would say it matters terribly what the languages in question are. Knowing C, JavaScript, Pascal, and awk is, for example, very very different from knowing Lisp, Prolog, Objective-C, and TeX, even though each one hits the same putative "knows four languages" tickbox on a hiring form. I draw a sharp distinction between "programming" and "programming in $LANGUAGE", for any value of $LANGUAGE. Someone who knows the latter may be able to get a job writing code in $LANGUAGE...but someone who groks the former can pick up any language in relatively short order. The bracketed note in the second paragraph of content on http://www.catb.org/jargon/html/personality.html is exactly the sort of thing I'm talking about here; ESR taught himself TeX by the simple expedient of reading the TeXBook. One particular message seems to me to call for individual response: > There are two major language families: declarative and imperative. > [...] Declarative langauges are [...]. A few langauges under this > family: > Prolog Agreed, though AIUI the presence of cuts weakens this somewhat. (Caveat, I don't really grok Prolog; I may be misunderstanding.) > make (and yes, make is a declarative language) Only, I would say, in its simplest forms. Every make implementation I know of (including both at least one BSD variant and at least one version of GNU make) stops looking very declarative when you have to do anything at all complex. > SQL I don't see SQL as declarative. I see it as imperative, with the relational table as its primary data type. That the programmer doesn't have to hand-hold the implementation in figuring out how to perform a SELECT doesn't make SQL declarative any more than the code not describing how to implement mapcar makes Lisp declarative. /~\ The ASCII Mouse \ / Ribbon Campaign X Against HTML mo...@rodents-montreal.org / \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B