This past weekend I came across a brilliant short paper entitled, "Computer Science Education: Where Are the Software Engineers of Tomorrow?" at http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html. The mini-abstract of the paper states, "It is our view that Computer Science (CS) education is neglecting basic skills, in particular in the areas of programming and formal methods. We consider that the general adoption of Java as a first programming language is in part responsible for this decline. We examine briefly the set of programming skills that should be part of every software professional’s repertoire." This statement reflects what I have been seeing for years: university computer science graduates are coming to industry (meaning Microsoft) less and less prepared to enter roles as top-level software developers and test engineers. And I am certain that the widespread use of Java in college computer science curriculums plays a role in this problem. So, notice the title of this entry should probably be more along the lines of, "Java Considered Harmful to all of Computer Science" but I am particularly concerned about the area of software testing. The paper I mention above clearly articulates several problems with Java but they can be whimsically summarized by what my good friend Doug (a top systems developer at Microsoft) said to me last night: "Java takes the science out of computer science." If I were the hypothetical King of College Computer Science, in addition to classes in Calculus, Probability, Statistics, Discrete Math, Algorithms, and Data Structures, I would require all computer science majors to take at least one class in C Language Programming, and Assembly Language Programming, and C++ Programming, and a functional programming language such as LISP or Prolog, and a Language Survey class, and finally a modern application programming language such as C# or Java.