I've often wondered whether CS perfessors ever actually write any code themselves, or just think about writing code. If I knew the answer to this, I might understand the educational system better. I worked several years at Stanford University (ie, full time Systems Programmer for some of the mainframes they used to use ... all over. I also worked part time in a computer center elsewhere while I was in school myself.) As far as I could tell, programming "cluefullness" is about as common in CS grad students and Profs as it is amoung undergrads; some can program really well, and some can't program their way out of a paper bag, and the majority are in between. A PhD in Computer Science is neither necessary or sufficient to be a good programmer. Part of the problem is assuming that "programming expertise" is a one-dimensional timeline. An expert in computer science is by definition focussed on "computer science" "problems" like language and compiler design, networking algorithms, or whatever. Some of the problems are VERY HARD, even without having to commit them to actual code. Taking a compiler expert and having him try to write a stepper motor controller on a strange microcontroller just isn't fair. (In particular, I once tried to audit a course in Smalltalk. While it seemed neat in some ways, I was totally disgusted by the "and it runs on a simple $10k sun3 workstation with only 16M of memory" attitude prevalent in those circles. Different strokes...) (Also consider Cornell's microcontroller course that uses Atmel board (and has a very nice website somewhere.) It's offered by the EE department, and taught by someone from the psychology dept (? Maybe biochem - something like that.) Programming != Computer Science. BillW