Wednesday, July 22, 2009

What is "computer science"?

How academics are limiting our understanding of computers

Edsger Dijkstra said that computer science is no more about computers than astronomy is about telescopes. He couldn't have been more wrong. To define the term as anything more than the sum of those two words is exaggeration. In reality, academics like Dijkstra have re-defined computer science as a synonym for programming, largely ignoring other fields such as networking, administration, and hardware. My alma mater has a computer-science curriculum mostly devoted to learning Java. They have a second major called "Applied Computing Technology" with a strong emphasis on artificial intelligence. They offer two elective courses on networking. I majored in computer-information systems (among other things) at CSU.1 That major required you to take two courses covering networking. But those just scratch the surface.

I just earned my Network+ certification. It's one test, but it covers more ground than both CIS networking courses. And Network+ is considered an entry-level certification. In order to become a CCNA (Cisco Certified Network Associate), you have to pass two challenging tests. Then, you can become a CCNP (Cisco Certified Network Professional) after passing two more tests. And there are three different types of CCNPs. You can be a CCNP specializing in routing, voice communication, or security. There are people who have all three CCNP certifications. Then, you can become a CCIE (Cisco Certified Internetworking Expert), specializing again in voice, routing, or security. You can also earn one of the many certifications from Microsoft if you want to learn how to run a Windows server. There are separate Microsoft tests for e-mail servers (Exchange), Active Directory, and so on. You can also earn a certification on how to run a Linux server. As you may have guessed, you could easily fit all of this material into a Ph.D. education with material left to spare.

Cisco Certification Path
The Cisco certification path.

So, I think categorizing these programs at universities as "computer science" is misleading. My friend majored in computer science at CSU and he said that he's a "networking guy." There are many students like him who enter college thinking they will learn about networking (or system administration), but end up studying Java — or worse — programming theory.

There are two solutions to this problem. The first is to admit that your students are studying programming and rename the department and major to take this into account. The other solution is to create a second major and call it "networking." Then, rename the computer-science major to "Programming." The networking major could include courses devoted to routing, security, telephony, wireless networking, databases, Windows-server administration, and Linux-server administration. You could easily make room for these subjects by eliminating courses you don't need. At CSU, for example, they teach a course on artificial intelligence, which is ridiculous. They also teach a course on graphics with 3-D modeling using Google SketchUp. Replace both of those courses with networking ones. Google SketchUp isn't used for 3-D modeling outside of CSU and you shouldn't be teaching modeling when there are art and construction departments at CSU that can go into it in more detail. They also offer a web-design course for CS students covering HTML, CSS, and PHP. Web design technically isn't networking, but in my experience, it still helps to understand it. They offer a web-design course for CIS students at CSU, as well, but it covers ColdFusion. ColdFusion is not nearly as common for server-side programming as PHP or ASP.NET. The same goes for Java. Java is being replaced on the server side by PHP and ASP.NET. On the client side, it is being replaced by Flash and AJAX. This re-inforces my view that universities in general are mismanaged. I had a similar experience while earning my bachelor's degree in "business management." A couple of the courses for that major taught us how to organize companies (something a president or vice president might worry about, but not a fresh college graduate). They also offered a course on public relations. Universities are lost in theory.

So, in order to prepare students for the real world, better equipment and professors help. But what is needed the most is direction. Universities need to teach the right things to their students. I've learned far more by reading books on my own than I have in school. There was no professor telling me what to study. There were no computer labs. And yet, I can still put what I know on my resume and tell employers what I know in interviews. I emphasize what I know and not what courses I took. Does that say more to an employer than a degree? I think so.

_________________________
1. They should name it "Business Information Systems."