<div>To follow the example of the automotive mechanic: Universities think they are producing Mechanical Engineers, not automobile mechanics. Duke does not have any courses (that I knew of when I was there) good for college credit, that taught repairing real cars, and Duke is not where I'd send a kid who was dedicated to becoming the best automobile mechanic he could be.
<div>A kid can get MS certification in something enormously cheaper than going to any residential college. One hopes that a University CS Department offers something rather more, and rather else.</div>
<div>Generally, we learn the minutiae required for a job, on the job; and the concenptual framework for pursuing more challenging jobs, at University.</div>
<div>My first job off-campus was as a mathemetician. I was given K&R and told to learn C, Unix, and commodities forecasting ("subscribe to the Wall Street Journal"). Rather a lot to learn on the job for a summer job. I did not have those skills, but I had the skills to acquire those skills. (Some.)
<div>And I didn't appreciate unix **at all** at the time; I didn't really have a percept of an operating system, or development environment. I just wanted a command line to invoke a compiler. It was my **next** job, FORTRAN on VM/CMS, that I learned what a great development environment was, and what unix had done for me. That's when I formulated the idea that you want to learn two of something to appreciate the essence of the something. Learn C and LISP, and you appreciate Programming Languages; learn matrix mulitplication and permutation composition, and you appreciate Nonabelian Groups.
<div><span class="gmail_quote">On 3/14/07, <b class="gmail_sendername">David Mathog</b> <<a href="mailto:firstname.lastname@example.org">email@example.com</a>> wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">"Robert G. Brown" <<a href="mailto:firstname.lastname@example.org">email@example.com</a>> wrote<br><br>> On Wed, 14 Mar 2007, Richard Walsh wrote:
<br><br>> > Time makes fools of us all, but especially CS departments ...<br>><br>> Yeah, but as David pointed out, they actively try...<br><br>I wouldn't go quite that far, rather I think the situation is
<br>more like this:<br><br>Mechanics are trained by working on real cars, ones they will<br>realistically be servicing once they graduate. They<br>aren't perfect cars, they don't incorporate every single good<br>
car concept. In fact they almost certainly incorporate a lot<br>of bad car concepts - all sorts of pieces are poorly designed,<br>inscrutably assembled, and are generally a PITA to work on.<br>Consequently when the mechanic graduates there's a very high
<br>probability that he will be competent to work on real cars, and won't<br>be thrown for a loop when he encounters something other than "the<br>perfect car". Ditto for plumbers, electricians, and all other people
<br>who work in the real world.<br><br>Conversely, the CS departments like to teach with idealized didactic<br>computing languages. What that language is changes from era to<br>era, but they are in any case notable for rarely being used to
<br>accomplish anything significant outside of academia. While these<br>languages may be ideal for conveying key CS concepts to the<br>students, they in no way represent the sorts of code the<br>students will be encountering in the real world. That code, like
<br>the mechanic's practice cars, are imperfect, and most of what<br>they will be doing when they encounter such code is dealing<br>precisely with the problems associated with those imperfections.<br><br>I'm kind of glad the folks who teach CS this way don't teach foreign
<br>language too - they'd make the students learn a fair amount of Latin<br>before letting them enroll in a Spanish class! Sure Spanish is based<br>on Latin, but "Ubi latrina est?" isn't the fastest way to find a
<br>bathroom in Madrid. Well, maybe if you ask in a church.<br><br>Let's see, what language is CS is using here these days? It has<br>been a while since I looked:<br><br>CS 1 (Introduction to Computation, first quarter) uses Scheme.
<br>CS 2 (Introduction to Programming Methods, 2nd quarter) seems<br>to be mostly Java.<br>CS 3 (Introduction to Software Engineering, 3rd quarter) uses who<br>knows what, since the course info is locked up in a "moodle"
<br>I do not have access to.<br>CS 11 (Computer Language Shop, any quarter for up to 3<br>quarters total) is for programming practice in any of<br>several languages, including C, C++, Java, Python, and others<br>but not (any type of) Fortran.
<br><br>So the undergrad here who just wants to learn to program in order<br>to get some work done in engineering, physics, etc. would either<br>slog through a quarter of CS 1 and then enroll in CS 11<br>for a few quarters, or would maybe try to talk their way into CS 11
<br>without having to take CS 1. CS 1 is "strongly recommended" for<br>those taking CS 11, which is catalog speak for, "it is possible<br>to weasel out of the prerequisite".<br><br>Regards,<br><br>David Mathog
<br><a href="mailto:firstname.lastname@example.org">email@example.com</a><br>Manager, Sequence Analysis Facility, Biology Division, Caltech<br>_______________________________________________<br>Beowulf mailing list, <a href="mailto:Beowulf@beowulf.org">
Beowulf@beowulf.org</a><br>To change your subscription (digest mode or unsubscribe) visit <a href="http://www.beowulf.org/mailman/listinfo/beowulf">http://www.beowulf.org/mailman/listinfo/beowulf</a><br></blockquote></div>