Mad scribblings and inexpert musing

Computer Science Education in Silicon Valley

published: 22 Jan 2011 12:01:00PM

a.k.a: Dear SJSU pls stop making me memorize the Java API, my degree is in Comp. Sci. not JDK 1.6 kthxbaiSTFU

One would think that being in the heart of Silicon Valley, the very birthplace of the personal computer, would be a colossal advantage to a student of computer science and mathematics who is pursuing software development as a career. Sadly, this is not the case. The curriculum and course materials taught by the two local community colleges I've attended in the past and the university at which I am enrolled is frightfully out of date. But not nearly as paleolithic as the evaluation methods.

There are essentially two kinds of computer science courses (10 different kinds for those in the know), implementation classes and theory classes. The bulk of my criticism here lies in theimplementation classes. When I started taking programming classes in college, I began with Intro to Programming in Java and Programming I in C++. My father, a games developer from days of yore took the courses with me for laughs. In class, there was a computer at every seat, we took our notes directly in the text editor, ran code that was being written on the board live and often times had to correct errors in the professor's code while he was writing it out. However, all our exams were handwritten and thus there was no way to check our code against the compiler. In intro to programming this isn't really a big deal, but later down the road in Object Oriented Design and Patterns, we're being asked to write snippets of complex GUI programs utilizing __dozens)) of standard library classes and methods. In one course, the solution for this was a single laptop with the standard Java API documentation on it that the students could wait in line for during the exam. In another, it is allowing each student to have a packet of n 8.5 x 11 pages on the *n*th test of the semester.In this modern world where APIs are subject to change and up-to-date documentation on every thing (except Ruby's Net::HTTP, Oh Snap!) is readily available online, wasting brain-space memorizing API calls is downright fscking stupid and I refuse to do it. This is another incarnation of the classic fable "Give a man a fish, he will pass a test. Teach him to RTFM, he will actually be a software developer."

I have so far had only one class where the exam was to write a program, at a computer and submit it in an inbox by the end of the class period. This is absolutely the correct way to do things. The professor told us at the beginning of the exam that perusing the docs (.Net) online was A-OK but that going anywhere else would result in an F on the exam. He didn't even really walk around and check. He had the wisdom to realize that cheaters will cheat and that the internet can only help so much if you don't know what you're doing. Those exams were not only more straightforward, fun, and challenging, but also the most educational I have had within the realm of software development thus far in the five years I've been a college student.

So please, if you're given the opportunity to teach a batch of computer scientists, ask yourself if your class is about concepts or coding and if the latter, write your test to be implemented on the computer in 90 minutes time. None of their future employers give two shits about whether or not they know what method to call on JDialog to get the output you want. That can be looked up. They're looking for confident implementers who can pick up with a new language or framework in an afternoon and get started right away.