Computer science: universities and technical/vocational schools

One of the things that always gets me on my soapbox is the complaint
that universities’ computer science curricula don’t meet the needs of
the real world because they don’t teach the most popular language of
the day or because they have classes on artificial intelligence rather
than building e-commerce sites.

This frustrates me because people expect universities to be more like
technical/vocational schools. They’re different. They _should_ be.

Vocational schools are where you learn the skills you need for a job.
They should be strongly industry-oriented. They should teach the most
popular languages of the day. They should be specialized. People who
are interested in web development should take a whole bunch of courses
related to web development, while people interested in database
management should take a whole bunch of courses related to database
management. Vocational education should be short programs so that
people can take them, learn new skills, and get into the workplace.

Universities are where you learn the skills you need for _life._
Universities should _not_ be too pressured by industry to teach the
most popular languages or tools. Universities should be general,
helping students develop skills that can be applied to any field—even
fields outside computer science and information technology. Not
everyone who takes computer science will go on to be a computer
scientist, but the logic and pattern-recognition they learned in their
computer science education should help them elsewhere.

Computer science should not be the only thing students learn in
university. Students should learn mathematics, technical writing,
business, and all of those other courses that don’t seem to have any
immediate use for a programmer. Why? Because each computer science
graduate must have an appreciation for other fields. Computer science
itself is a science that serves other fields, and university provides
students with an excellent opportunity to take up electives in other
areas.

Most computer science graduates might never write their own sorting
routines out in the real world. Programming libraries have efficient
implementations. Computer scientists should apply that knowledge to
real life instead—for example, by teaching other people how to
quick-sort by hand. That’s what computer science teaches us: not how
to program a computer, but rather how to program a _system_—and that
system could involve both people and computers.

We bet that this education will pay off years and years down the road.
Computer scientists should ask questions and dare to try the unknown.
They should wonder if there are better ways of doing things, instead
of just following the status quo. They are our ambassadors to new
fields, using creativity and critical thinking to find ways to apply
computers to new problems.

Vocational schools must prepare its students for work. Universities
must prepare its students for the unknown.

Why hire a computer science graduate, then? If I’m just looking for
programming experience, then most technical school graduates would
probably be better than most computer science graduates, all other
things being equal. But if I want someone who can wear many hats, I’d
bet on computer science graduates. I’d take the chance that something
in their education might give them insights into my business. I’d
invest time in training them because technical knowledge can be
taught. It’s easy to cost-justify a short course on Java programming.
It’s harder to cost-justify a course on philosophy, which is really
more about critical thinking and writing than it is about particular
philosophers.

This is one of my causes. I want to do something about this confusion.
I want to speak at high schools and help the students learn the
difference between vocational schools and universities. I want to
speak to vocational schools and universities to help them rethink or
reposition themselves when they recruit students.

One of the reasons why it’s so hard to differentiate vocational
schools and universities is that quality is just _so_ variable. There
are a few vocational schools that are pretty good and that even
include a number of liberal subjects. There are many colleges and
universities whose computer science curricula are almost the same as
those of vocational schools. I hope better positioning clears this up,
because as it stands, the confusion doesn’t help anyone.