Night Thoughts on Teaching Computer Science
My tutoree reports how his compsci professor had to mislead him, by speaking of "strings" in C AS IF they were as fully formed as they are in Visual Basic, and later backing up to say that he was just kidding after all, because as mah posse know, there ain't no thang like a strang in C.
However, an education that contains its own need for Remedial C midterm work is a flawed education. Ideally, education would build a structure from the ground up.
Unfortunately, in compsci, this would be an education by construction commencing with coding in pure machine language (reine Maschinensprache), quite possibly with the assembly of a computer.
Einstein wrote "The most incomprehensible thing about the world is that it is comprehensible."
The very idea that the natural world is comprehensible is an ontological truth. Scientific knowledge commencing with physics and mathematics allows us to conduct ourselves as better people more effectively, and also as worse people...more effectively.
Einstein knew this.
But computing is taught first as the acceptance of convenient myths (computer! literacy! computer? literacy?) and a quietism of acceptance of industrial arrangements which do not serve the interests of the Wretched of the Earth.
It teaches for example that Power is command over armies of Facilities while ignoring their Logistics. Napoleon knew that the Army of Italy had to be fed and then set upon the plains of glory at its feet: his generals ignored their fodder and thought them to be fodder.
Thus most computing education is education in precisely those habits of reification which Adorno identified as the motor of modern repression, where we go to war to destroy nonexistent WMDs while there is nothing but SILENCE about the possibility that the United States might someday rid ITSELF of its own WMDs up there yonder in North Dakota.
Or something.
"Forget what I told you at the beginning of the term".
"We did not go to war to catch Osama bin Laden".
Yeah, right. The student duly forgets the first lesson on command. He then gets a job at Electronic Arts, and his supervisor growls at him to forget decent structure and computer science, because real tough guys do what da boss wants. He ignores good people like Donna because he's a stud muffin for whom commented code removal would cut into drinking time and time for playing games. He ends up working at a convenience store and playing online poker, badly for peanuts at the age of 35. His kids think he's a joke.
Quite a picture, right?
Consider. If you would require the compsci student to first code in binary machine language, using a paper computer simulated in a GUI that is easy to slap together using Visual Basic, or a visual interpreter of a modern machine, "after great Pain, a formal Feeling comes": suffering is the origin of consciousness (Dosteoevsky).
[The word "suffer" used to mean approximately the same thing as "experience" back when life sucked for our image of the normal person. I will never learn my Chinese characters until I suffer as I suffer like little children suffer in Chinese schools. Oddly enough, it appears that in Chinese culture, this "suffering" is "suffering" in the old sense to which the little monsters look forward to every day, when they sing the national song in the morning smog of Shenzen.]
[It situates them in a Chain of Being which started with the mystery of the Huang, the yellow haze and yellow flood of the mile-wide river, from which their ancestors emerged, so they are chilling with it for the most part.]
Until computing education has a single tradition of common suffering (no, not "boot camp", dammit) programming will continue to be "hard". Oh, but that would be like a military draft. Heavens to Betsy. Some graduate student might not grow up to be a thug Vice President.
Admitting the hardness all the way down, assenting to it, dweebing out on it, saying it is cruel as Dijkstra said, makes it the funnest thing in the world wherein one is in a small way at one with Wisdom:
I was with him forming all things: and was delighted every day, playing before him at all times.
Thanks for your comments, Donna
On my current job, one of my duties in addition to Compsci teaching is preparation for the SAT writing requirement in the Hong Kong environment, and the students complain that the essay questions will presuppose a complete class in American history, not all of them being able to take same.
Last night, I had to give a lecture on all of America's history. I got to 1863 and the Battle of Gettysburg and will have to continue in the next session, but I found it interesting to relate our history to that of China, and also moving to give this lecture.
I'd read Just Enough Chinese history to realize that the great Chinese migration started because of a population explosion under the 18th century Chinese emperor Qianlong and the Taiping rebellion of the 1840s.
I took some care to define the American political persona who by default, absent a Constitutional law and harm to others, believes he is a Son of Liberty and free to do as he whist by gum. I contrasted this with the default persona in other lands who is granted enumerated rights by the sovereign but must cautiously assume that word to yo mama otherwise, non-enumerated rights are not his.
I defined the resulting American political stance as ornery, which I believe may be related to Honor itself.
But I then described the eternal problem of de woodpile, which is that the ornery American does not extend his recognition of orneryness or Honor to African-Americans by default.
I described Colonial society as color coded, one in which a stranger, if a white man, could thrash a black man unknown to him on the street legally because as militia members of states that allowed slavery (including, prior to 1776, many Northern states) white men were not only permitted to "recognize" a black man as a slave, they were as men required to do so, for the same reason they were expected to assist the ladies to negus at the buffet.
I described this as a still unsolved problem, but I did note that today, I read (but do not experience, being in China) of the facts that many white Americans have welcomed black refugees of New Orleans into their communities. If this is happening, then attitudes are changing. I emphasized that America is a very religious country, and that its religion preaches, among other things, that all men are brothers.
In fine, I descrbed Americans as for the most part a proud and ornery bunch who like to party on Saturday night, who come in many colors black and white and brown and yellow (Huang), and who believe we're all free, although our religion also teaches that most of us are headed for Tarnation and the bad fire as a result of our free choices on Saturday Night, when we go down down down in a burnin' ring of Fahr.
We do not study up to make our parents proud as did Po Chu-I and we often end up in the military because that is the best way to support Mom while having some fun and seeing the world like me (who does it on the teaching and programming plan, being too old for the service, Allah be praised).
As did USMC Lance Corporal Erin Liberty of famous name, who was attacked in Falluja with her sister souljahs in June of this year by a suicide bomber and suffered horrible burns.
Being "only" support troops, who frisked Iraqi women, her unit "only" deserved nearly unshielded trucks as did my kid brother's unit in the first Gulf war, my kid brother being "only" a combat engineer: while that useless Paul Bremer (former satrap of Iraq who completely failed at his mission), and all other fatcats, have the more fashionable layered security (about ten Humvees to clear the road).
Erin Liberty is portrayed with the medal she got. It was a Purple Heart. Bremer probably got one of these for falling off a barstool, and the whole situation makes me sick enough to relate it to software.
Sorry for getting off topic, Donna. Thanks again.
A further note
Donna, all due respect and thanks, but I make no special effort to segue from computing to politics. This is because in my direct experience over thirty years, the software crisis has been caused by the insistence that the will to power on the part of self appointed users trump truth, in certain cases mathematical truth.
Currently, NY Transit employees are on strike. One of their issues is "broadbanding". The term has nothing to do with technology directly. Instead, it refers to the crude management strategy of reviewing a crew member from the train operation, period, thereby "looking good" on spreadsheets.
This strategy is being contemplated after a horrific accident in 1999 that was caused by a drunk and stressed operator who would have been replaced had their been "idle", but available, trained operators "standing around and doing nothing".
It's being contemplated despite the fact that the Kean commission on 9-11 pointed out that "first responders" are people like transit operators, therefore it would seem that the more, the better.
It's implemented by "high tech" systems which fail because their purpose isn't technical, it's to reassure the public that the unmanned system won't fail...as the system of door locks did on 9-11, preventing access to the roof because the command to unlock could not be transmitted.
It fails because the programmers are being pressured to deliver the good-enough, because the self-appointed User wants only the rhetorical ability to assure his management that "everything is under control".
This system has been a concentrated center of resistance to good practice in the name of a brutal and completely misunderstood "efficiency", which didn't see any merit, in turn, in stacks, structured programming, structured design, OO and open source UNLESS consultants could show management how these tools could control PEOPLE.


Suffering and Computer Science education
Glad to see Mr. Nilges back on the board (finding clever ways to work politics into any topic).
Whether or not it was explicitly intentional by the Computer Science department at my institution of higher learning, I can say in all fairness that I suffered. The reasoning behind requirements to take Assembly language and Automata and Switching Theory was never expressed so beautifully as Mr. Nilges put it here. In fact, I despaired that I might have to continue doing the stuff post-graduation -- a horrifying thought. During a particularly painful summer session, we were required to write a compiler using C on Unix (and we had no prior experience with C or Unix at that point). At the time I assumed the Computer Science department was simply trying to weed out the weak from those determined enough to stick with the sticky. Even so, it probably wasn't the degree of suffering that Mr. Nilges advocates.
Yet, I work with a good number of interns who are currently in school and it seems that a good deal of the suffering-material has been expunged from the current curriculum. Is that in line with the generational trend towards leniency in parenting as well?
Surely there is some basic, foundational understanding that we should have that is tool independent. Isn't this the same sort of problem that colleges have been discovering that motivated them to redesign the SAT (college entrance exam) to include a writing component? The fact that a person can use Microsoft Word does not mean that he/she is a good writer.