Some of you have probably heard about the University of Florida scandal by now. If not, here is a quick recap: they axed their Computer Science Department, fired everyone they could, publicly humiliated the tenured professors they couldn’t fire and then transferred all the money that used to fund the department into their Football program. No, I am not exaggerating. I wish I was, but that’s exactly what happened. As you can imagine, we were all really busy hating the U of F for this decision, and then a wild Jeffrey McManus appeared.
Jeffrey McManus is a Pokemon of the Troll CEO variety and he runs some sort of online learning program that bootstraps young programmers with some basic functional programming skills so that they can go into the corporate world and piss everyone off by using bubble sort for everything. Or something like that. I don’t really know, nor do I care. The point is that in order to promote his ventuee he made a delicious and relevant troll bait titled: More Universities Should Shut Down Their Computer Science Programs.
Oh yes, he went there. And you know what? It worked. I bit the bait hard – I swallowed it hook, line and sinker. This is more or less an epic Dvorak style trolling and I fell for it and it’s too late to stop now. I started writing a response in his comment thread, but then realized it was long enough to be an entire blog post.
So here is my response. I know you shouldn’t feed the trolls but I just couldn’t resist. I put rel=nofollow on the link above, and I’m going to quote parts of his article below so you don’t even have to click on it, in an attempt to minimize the amount of Google juice he can get from me.
Let’s start at the top, and see what this guy has to say to support his outrageous claim:
Most undergraduates and professionals actually want to learn applied software engineering, not “computer science”. Most companies want to hire college graduates who know applied software engineering. But most university CS programs don’t actually teach applied software engineering. This isn’t to say that CS isn’t useful or valuable (even to someone who goes on to become an applied software engineer). But the majority of university CS programs are oriented to training undergraduates to become either systems programmers or academic computer scientists. I’m going to go out on a limb and say this isn’t what most 18-year-olds who enter undergraduate CS programs actually want to do…
I am going to go out on a limb and say that most 18-year-olds who enter undergraduate programs don’t actually want to learn calculus either. Or science for that matter. If I had a dime for every student I heard complaining about having to take “stupid math and science” classes I would have like a big jar of dimes.
By that logic, Math departments should not teach students calculus, differential equations and theory but instead focus on accounting and financial statistics. Actually, let’s close Math departments too, because Business School already does all that applied stuff. And then we can funnel all that money into Football (cause that’s what University of Florida did)!
I think Mr. McManus is mistaking what the purpose of a university is. If you want to learn a trade, you should go to a trade school. There are plenty of programs out there that teach applied software engineering and they don’t take 4 years, and do not come with a set of liberal arts requirements. The purpose of a liberal arts college education is to take an uncouth rube, and forcefully impart eye opening knowledge and culture into his or her frontal lobes. Once they are knowledged up and cultured enough, you help them focus their interest on one area of academic excellence. Or if you fail, and the knowledging up and culturing does not take root, you put them in the Business department which functions as a kidney of every university – it gather the academic refuse and salvages what it can before evacuating them into the world.
I’m not saying that universities should not offer courses that may help students find jobs in the industry. They should, and most are. It’s just that this is not a primary role of a university. Almost no BS or BA degree (other than Busness School degree – because, you know – kidney) guarantees you a job in your field. BS in Chemistry does not mean you are trained to be industrial chemist. A BS in Physics does not make you a rocket scientist. It only stands to reason not to expect a BS in Computer Science to make you a Software Engineer.
What a BS or BA really means is “you are certified to have a broad theoretical knowledge in this field”. You know a lot of theory, now you need to be trained to do a job. Why do companies hire students with CS for programming jobs? Because in theory, they ought to be easier to train to your specific purposes.
If someone goes to a trade school and learns to program in Java, he only knows how to program in Java. If someone gets a BS in Computer Science the expectation is that they not only know how to program, but also how to teach themselves a new language and possibly even how to write a domain specific language to resolve an particular issue. Not that this is often a good solution. The point is that when you hire a kid with CS degree the expectation is that they can grasp non trivial things easier than someone who just learned a trade.
For example, a CS graduate should be able to figure out that the proper way to sort products in the web store he is building for you is not by average rating, but by Lower bound of Wilson score confidence interval for a Bernoulli parameter. This is why CS is a science and why we make CS students take so much math. Because regardless of what people in the industry might say, that stuff is crucial.
It should not be necessary for two universities located within commuting distance of each other to have the same academic department (this goes for any department, including English Literature as well as CS). To put this another way, wouldn’t it make more sense for UCLA and Cal State LA to have a single, combined computer science program that’s among the best in the country, instead of two mediocre computer science programs?
And how do you propose to do that? How do we share resources between two competing universities? Who gets research grants? Who gets the prestige? How is that shared department managed? Which dean decides what curriculum is going to be taught? When a student takes a course, which university gets paid for it? Do they split it down the middle? How is grading handled?
Also, how do you expect students get from one campus to the other if they don’t have a car? Do you set up a shuttle service? Which university pays for the maintenance? Do you maybe have the professors drive between campuses instead?
Honestly, this is a logistics nightmare. This is one of those awesome ideas that sounds great until you spend 5 minutes to actually thing about it, only to realize it is not feasible without complete overhaul of the way both universities would be managed.
Unless of course Mr. McManus means it should be done the U of F way – fire or humiliate all the profs at university A, and force them to seek employment at university B thus “merging” the departments. But then you just funnel students to another university…
Most university computer courses simply aren’t that good if your goal is to get a job doing applied software engineering. This is because the Ph.Ds who are teaching in these programs generally got their degrees from five to ten years ago at a minimum, when the tools and tactics for software engineering were very different. The industry simply changes faster than academia. Most (not all, but most) universities just can’t keep up with this pace of change using the standard administrative playbook. This isn’t a criticism of the smart, hard-working folks who work in our CS departments; it’s a criticism of the way their departments are organized.
While this might be true, it does not mean we should start shutting down CS programs. Here is a newsflash: most universities have shitty departments. If you go to a university which does not focus, fund or care about CS then you will likely not get the best CS education. This is mostly common sense. Most universities have small, under-funded physics departments too. Should they close them as well? Oh wait, never mind. Physics degree does not teach you a trade, so of course it is useless in McManus’ eyes.
You could of course ask what is the point of having a bunch of shitty departments instead of a few good ones. After all, no one who wants to study computer science would purposefully pick a university with a small, underfunded and poorly performing department, right? They would go to a reputable school that invests in CS.
See, the problem with this is that a lot of students don’t know what they want to study when they apply to colleges. Did you know what you wanted to do for the rest of your life when you were 17? I know I didn’t. I did not declare my major till the second semester of my junior year. I knew I liked technology, but I also liked science. I had as much fun in my Bio/Chem classes as I had in my programming ones. I also loved to write, and read. So my first two years in college I wavered between Biology, Computer Science and flirting with humanities. I could have went either of these ways.
That’s really the point of liberal arts education – your first few semesters you do an in-depth exploration of all the subjects that interest you and figure out what do you want to do for the rest of your life. And if you find something you really love, and your university has a shitty department in that field, you can always transfer to a different university with a stronger program in that direction after two years.
University academic departments in general should have limited charters and should be reorganized frequently. (Again, not just CS departments, but all departments.) I spent nearly all of my undergraduate career working in academic administration, and I can say that academic departments exist mostly to protect resources (mostly money and people). They don’t really exist to serve students. One good example is cited in an awesome book on educational reform called Crisis on Campus by Columbia professor Mark Taylor: one of the most pressing problems that humanity has today is obtaining clean drinking water. Yet no university has a Department of Water. Why is this? Because campuses are an endless successions of zero-sum games: the formation of a new department necessarily means that resources must be taken away from existing departments, so existing departments viciously defend the status quo, even when that doesn’t align with reality. Computer science education has not been in alignment with reality in a long, long time.
I’m sorry but “Department of Water” is one of the stupidest things I have ever heard in my life. Should we also have the Department of Soap? What is being proposed in this paragraph is a trade guild system, not an academic reform. McManus is essentially saying that we should identify external environmental issues and structure our education around them. So people would have degrees in Water Reclamation, Industrial Pollution Management, Food Shortages, Overpopulation, Solar Energy and Rodent Extermination. What a splendid idea.
Fuck math, science, arts and humanities – they haven’t been aligned with reality since Pythagorean times. From now on, we don’t teach Computer Science – we are the “Making Enterprise Server Side Applications using Java” department. Give me a break.
Once again, this was never, ever supposed to be a purpose of universities. Universities teach you liberal arts and the big picture stuff. They are not supposed to teach you how to solve specific existing problems, but how to identify, classify and approach problems and how to teach yourself new things in order to resolve them. Problems we see in the world right now, may no longer be problems in 4 years when the current batch of college graduates leaves the university seeking jobs. If we teach them only the things that are useful and relevant right now, then they will leave our establishment with a body of knowledge that is at least 4 years stale, if not more. This is silly. What you are supposed to learn at a university are the things that are timeless – principles, ideas, philosophies, paradigms, the scientific method. Big picture stuff. Universities are designed to produce educated, cultured and knowledgeable citizens who can apply their education in many different domains and to many different problems.
Besides, the department of Water has the same problem as the department of Computer Science – it does not give graduates a clear career path. What kind of job training would Dept. of Water provide? I could go out on a limb and argue that graduates from department of water don’t really need the broad theoretical background in water shortage related issues. Instead they should be taught applied salt water reclamation because that’s what most of them will probably end up doing.
You need to have a good basis in algorithms and higher math to be successful as a software engineer, and computer science provides that. That’s probably true for systems programmers. It’s not really true for the remaining 99% of software engineers, the vast majority of which will never do pointer arithmetic and shouldn’t really have to. (If you accept this argument, then you must also accept the notion that all plumbers must have the ability to smelt copper and forge their own pipes, because how could you possibly lay pipes effectively without having ever created one with your bare hands from elemental materials?) Otherwise, you’re just enforcing the priesthood of the technologist, which is not a good thing for the profession or for society.
Wow… Really? You are going to compare programmers to plumbers now? What happened to “Software Engineers”?
Throughout the entire article McManus uses the phrase “Software Engineering”. When see that label, I think about designing, and building very complex systems. You know – engineering stuff. Plumbers don’t build complex systems – they screw pipes together – usually use a blueprint given to them by someone with a degree in hydroelectric engineering. I’m sure most students who take CS at a university level have higher aspirations than making GUI buttons in Visual Studio – which is a comparable type of work to that of a plumber. To design these complex systems however they will need knowledge of algorithms.
Also, pointer arithmetic? Where did that come from? Pointer arithmetic is plumber work. You can teach an orangutan to do pointer arithmetic. That is not computer science at all.
McManus is dead wrong because he either does not understand what computer science is, or pretends that he doesn’t for the sake of the argument. He is either quite good at trolling, or he is ignorant accidentally created something twice as inflammatory as he intended to because his complete lack of understanding of the subject.
Computer Science is an academic subject. It is a very expansive field of study that extends above and beyond what McManus seems to deem practical “applied software engineering”. In my CS career I have worked on a quite diverse set of projects:
- Protein molecule folding (biochemistry)
- Genome analysis (biology and bioinfomatics)
- Unattended automatic database integration (database theory)
- Simulating excitable media using cellular automata (medical field & cardiology)
- Feature extraction and hyperspectral image processing (aeronautics and military applications)
- Online Commerce Applications (shopping cart, product ratings, etc)
- Practical Steganography applications (we devised a way to embed lyrics directly into mp3 files)
A friend of mind did a thesis on intelligent text parsing and built a system capable to auto-magically grade homeworks to a certain degree of accuracy. Bunch of kids I knew designed a galactic collision simulator for the physics department. I don’t know – maybe I was just lucky to end up in a cool, agile and flexible department run by a lot of passionate people. But you know what – I got to work on a lot of interesting projects from various fields. And as I was working on these projects I was thankful that the university and the department had the foresight to make me take all the prerequisite science and mathematics classes, because they were fucking useful and relevant to just about everything I was doing.
My department also forced me to learn not just Java but C++, Perl, and Lisp. And because I was already multi-lingual I went ahead and learned Python and Ruby for fun, and LaTex to write my Masters Thesis.
The degree opened my eyes and taught me that I could use my skills in many different ways. I could actually do science wit it. I could work with other scientist and solve really interesting problems. I could work for the military… Or NASA. Or I could go into medical infomatics and work with healthcare providers. I did not have to sit in a cubicle and write Java back end applications for a bank or financial company.
And sure, I actually had 3 semesters worth of Software Engineering instruction which was actually very, very useful. But it was not the focus of the program. Especially since I did not exactly end up being a software engineer. I ended up becoming an IT Admin and PHP hacker, but it was mostly circumstantial and random. Thanks to my education however I was able to quickly pick up the new skills and adapt. And I could do it again, and dive into a drastically different technology niche if I had to.
McManus however seems to think that the only thing we should be teaching kids is how to build enterprise level web applications using, I don’t know, Java and Agile methodology. That’s dangerously short sighted.