Home > Articles

Is Computer Science Dying?

David Chisnall
  • PrintPrint
  • Share ThisShare This
  • DiscussDiscuss
Close WindowDavid Chisnall

David Chisnall

Learn more…

Inside Modern X11 Programming
Sep 18, 2009
Making JavaScript Fast, Part 2
Sep 15, 2009
Security in Your Pocket: OpenBSD on ARM
Sep 11, 2009
Making JavaScript Fast, Part 1
Sep 8, 2009
The Failure of the GPL
Aug 31, 2009
How Not To Optimize
Aug 21, 2009
A Half-Way Step to Apple’s Source Code: An Interview with David Chisnall
Jun 5, 2009
Advanced Flow Control for Objective-C
Jun 5, 2009
Erica Sadun on the iPhone SDK, OS X, and the Computing Landscape
Jun 5, 2009
From NeXTSTEP to Cocoa: Erik Buck on the Development of Cocoa and Objective-C
Jun 5, 2009
Fun with the Objective-C Runtime
Jun 5, 2009
Marcus Zarra and Matt Long on Core Animation
Jun 5, 2009
Steve Kochan on the Evolution of Objective-C
Jun 5, 2009
The Technology NeXT Gave the World
Jun 5, 2009
Where the Web and the Desktop Meet: An Interview with Lee Barney
Jun 5, 2009
Pandora: An Open Console
Jun 2, 2009
The Future of Wireless Networking
May 15, 2009
GNU or Linux?
May 11, 2009
Debugging C-Family Languages
Mar 27, 2009
How Small Is Your PC? The Rise of Netbooks and Other Small Form-Factor PCs
Mar 23, 2009
David Chisnall's CPU Feature Wishlist
Mar 13, 2009
The Dynamic Languages Renaissance
Jan 30, 2009
Robert Seacord on the CERT C Secure Coding Standard
Dec 15, 2008
Objective-C for C++ Programmers, Part 3
Nov 21, 2008
Objective-C for C++ Programmers, Part 2
Nov 14, 2008
Objective-C for C++ Programmers, Part 1
Nov 7, 2008
Writing Insecure C, Part 3
Oct 24, 2008
Writing Insecure C, Part 2
Oct 17, 2008
Writing Insecure C, Part 1
Oct 10, 2008
iRex iLiad e-Reader: Linux's Answer to the Kindle?
Aug 29, 2008
How It Works: Filesystems
Jun 13, 2008
How the LLVM Compiler Infrastructure Works
May 23, 2008
How It Works: Virtual Memory
May 21, 2008
What Is C For?
May 16, 2008
The Future of eBooks
Apr 25, 2008
Imagining an Open Network
Apr 18, 2008
Understanding How Xen Approaches Device Drivers
Mar 21, 2008
Examining the Legendary HURD Kernel
Mar 14, 2008
Competition Among Open Source Compilers
Feb 1, 2008
Inside Your OS: What is a Process Scheduler, and How Does it Work?
Jan 25, 2008
Bad UI of the Week: Read This (OK/Cancel)
Jan 18, 2008
The End of the Desktop Era
Jan 11, 2008
The What and Why of Open IM
Dec 28, 2007
A Look at the Modern X Server
Dec 21, 2007
The Future of Digital Media
Dec 14, 2007
The Future of Identity
Dec 7, 2007
Bad UI of the Week: Ask Forgiveness, Not Permission
Nov 21, 2007
Copyright Versus Free Software
Nov 16, 2007
Is Computer Science Dying?
Nov 9, 2007
A Brief History of Programming, Part 2
Nov 2, 2007
A Brief History of Programming, Part 1
Oct 26, 2007
The 700MHz Question: Will the Wireless Spectrum Auction Lead to Innovation or More of the Same?
Sep 28, 2007
Bad UI of the Week: The Menu Bar
Aug 24, 2007
The Dark Corners of x86
Aug 17, 2007
Bad UI of the Week: The Cross-Platform User Interface
Aug 17, 2007
Bad UI of the Week: The Mythical "is Like" Operator
Aug 10, 2007
Bad UI of the Week: Don't Make Me Tell You Twice...
Aug 3, 2007
Bad UI of the Week: Kettles and Washing Machines
Jul 27, 2007
The BBC iPlayer Controversy Explained
Jul 20, 2007
Bad UI of the Week: The Mitten Mouse
Jul 20, 2007
Bad User Interface of the Week: File It Under “Bad”
Jul 13, 2007
Bad User Interface of the Week: The DVD
Jul 6, 2007
A Roundup of Free Operating Systems
Jun 22, 2007
DragonFly BSD: UNIX for Clusters?
Jun 15, 2007
CPU Wars, Part 3: Put Your Left ARM In
May 18, 2007
CPU Wars, Part 2: POWER to the People
May 11, 2007
CPU Wars, Part 1: When the Chips Are Down
May 4, 2007
ZFS Uncovered
Apr 6, 2007
Vector Programming with GCC
Mar 30, 2007
Free Software Versus Open Source Software
Mar 16, 2007
What Programming Languages Should You Know?
Mar 9, 2007
Standardizing UNIX
Feb 2, 2007
Prolog: Logic Programming for Rapid Development
Jan 26, 2007
POSIX Parallel Programming, Part 3: Threads
Jan 19, 2007
POSIX Parallel Programming, Part 2: Message Passing
Jan 12, 2007
POSIX Parallel Programming, Part 1
Jan 5, 2007
The Nokia 770 Revisited
Dec 29, 2006
The Open Source Desktop Myth
Dec 22, 2006
Separating Style and Content: LaTeX and Typesetting
Dec 1, 2006
GNUstep: A Free Software alternative to OpenStep
Nov 10, 2006
Behind the Scenes of Objective-C 2.0
Nov 3, 2006
The Future of CPUs: What's After Multi-Core?
Oct 27, 2006
What Makes a Good Programming Language?
Oct 20, 2006
Emulation: Role-Playing for Computers
Oct 13, 2006
NetBSD: Not Just for Toasters
Oct 6, 2006
POSIX Asynchronous I/O
Sep 22, 2006
Breaking Down GPL Version 3
Aug 18, 2006
The Role of Binary Drivers in a Free OS
Aug 4, 2006
Security Is a UI Problem
Jul 28, 2006
Debunking the Myth of High-level Languages
Jul 14, 2006
A Taste of Erlang, a Dynamic, Asynchronous Message-Passing Language
Jun 30, 2006
Alternatives to LAMP
Jun 2, 2006
BSD Packaging Systems
May 26, 2006
DRM: Digital Rights or Digital Restrictions?
May 4, 2006
Introducing OpenBSD 3.9
Apr 28, 2006
The Need for Virtualization and Xen
Mar 31, 2006
Making Effective Software TCO Calculations
Mar 24, 2006
10 Things I Hate About U(NIX) Revisited: Readers Speak
Mar 17, 2006
Comparing Open Source Licenses: GPL vs. BSDL
Feb 3, 2006
BSD: The Other Free UNIX Family
Jan 20, 2006
Measuring the Effectiveness of Application Security Policies
Jan 13, 2006
The Cost of Free Software
Dec 9, 2005
Nokia 770 Internet Tablet Week-long Test Drive
Nov 18, 2005
10 Things I Hate About (U)NIX
Nov 4, 2005
The Lure of Open Source Software: Why Consider It for Your Business?
Oct 14, 2005

Sorry, this author hasn't posted any blogs.

Web Technologies: A Computer Science Perspective

Like this article? We recommend
Web Technologies: A Computer Science Perspective

Now that Apple is making a profit, pundits need something else as the target of predictions of impending doom. Some seem to have fastened onto computer science, prompting David Chisnall to wonder if the subject really is dying.

In the late 1990s, during the first dotcom bubble, there was a perception that a computer science degree was a quick way of making money. The dotcom boom had venture capitalists throwing money at the craziest schemes, just because they happened to involve the Internet. While not entirely grounded in fact, this trend led to a perception that anyone walking out of a university with a computer science degree would immediately find his pockets full of venture capital funding.

Then came the inevitable crash, and suddenly there were a lot more IT professionals than IT jobs. Many of these people were the ones that just got into the industry to make a quick buck, but quite a few were competent people now unemployed. This situation didn’t do much for the perception of computer science as an attractive degree scheme.

Since the end of the first dotcom bubble, we’ve seen a gradual decline in the number of people applying to earn computer science degrees. In the UK, many departments were able to prop up the decline in local applicants by attracting more overseas students, particularly from Southeast Asia, by dint of being considerably cheaper than American universities for those students wishing to study abroad. This only slowed the drop, however, and some people are starting to ask whether computer science is dying.

Computer Science and Telescopes

Part of the problem is a lack of understanding of exactly what computer science is. Even undergraduates accepted into computer science courses generally have only the broadest idea of what the subject entails. It’s hardly surprising, then, that people would wonder if the discipline is dying.

Even among those in computing-related fields, there’s a general feeling that computer science is basically a vocational course, teaching programming. In January 2007, the British Computer Society (BCS) published an article by Neil McBride of De Montfort University, entitled "The Death of Computing." Although the content was of a lower quality than the average Slashdot troll post (which at least tries to pretend that it’s raising a valid point) and convinced me that I didn’t want to be a member of the BCS, it was nevertheless circulated quite widely. This article contained choice lines such as the following: "What has changed is the need to know low-level programming or any programming at all. Who needs C when there’s Ruby on Rails?"

Who needs C? Well, at least those people who want to understand something of what’s going on when the Ruby on Rails program runs. An assembly language or two would do equally well. The point of an academic degree, as opposed to a vocational qualification, is to teach understanding, rather than skills—a point sadly lost on Dr. McBride when he penned his article.

In attempting to describe computer science, Edsger Dijkstra claimed, "Computer science is no more about computers than astronomy is about telescopes." I like this quote, but it’s often taken in the wrong way by people who haven’t met many astronomers. When I was younger, I was quite interested in astronomy, and spent a fair bit of time hanging around observatories and reading about the science (as well as looking through telescopes). During this period, I learned a lot more about optics than I ever did in physics courses at school. I never built my own telescope, but a lot of real astronomers did, and many of the earliest members of the profession made considerable contributions to our understanding of optics.

There’s a difference between a telescope builder and an astronomer, of course. A telescope builder is likely to know more about the construction of telescopes and less about the motion of stellar bodies. But both will have a solid understanding of what happens to light as it travels through the lenses and bounces off the mirrors. Without this understanding, astronomy is very difficult.

The same principle holds true for computer science. A computer scientist may not fabricate her own ICs, and may not write her own compiler and operating system. In the modern age, these things are generally too complicated for a single person to do to a standard where the result can compete with off-the-shelf components. But the computer scientist definitely will understand what’s happening in the compiler, operating system, and CPU when a program is compiled and run.

A telescope is an important tool to an astronomer, and a computer is an important tool for a computer scientist—but each is merely a tool, not the focus of study. For an astronomer, celestial bodies are studied using a telescope. For a computer scientist, algorithms are studied using a computer.

Software and hardware are often regarded as being very separate concepts. This is a convenient distinction, but it’s not based on any form of reality. The first computers had no software per se, and needed to be rewired to run different programs. Modern hardware often ships with firmware—software that’s closely tied to the hardware to perform special-purpose functions on general-purpose silicon. Whether a task is handled in hardware or software is of little importance from a scientific perspective. (From an engineering perspective, there are tradeoffs among cost, maintenance, and speed.) Either way, the combination of hardware and software is a concrete instantiation of an algorithm, allowing it to be studied.

As with other subjects, there are a lot of specializations within computer science. I tend to view the subject as the intersection between three fields:

  • Mathematics
  • Engineering
  • Psychology

At the very mathematical end are computer scientists who study algorithms without the aid of a computer, purely in the abstract. Closer to engineering are those who build large hardware and software systems. In between are the people who use formal verification tools to construct these systems.

A computer isn’t much use without a human instructing it, and this is where the psychology is important. Computers need to interact with humans a lot, and neither group is really suited to the task. The reason that computers have found such widespread use is that they perform well in areas where humans perform poorly (and vice versa). Trying to find a mechanism for describing something that is understandable by both humans and computers is the role of the "human/computer interaction" (HCI) subdiscipline within computer science. This is generally close to psychology.

HCI isn’t the only part of computer science related to psychology. As far back as 1950, Alan Turing proposed the Turing Test as a method of determining whether an entity should be treated as intelligent.

It’s understandable that people who aren’t directly exposed to computer science would miss the breadth of the discipline, associating it with something more familiar. One solution proposed for this lack of vision is that of renaming the subject to "informatics." In principle, this is a good idea, but the drawback is that it’s very difficult to describe someone as an "informatician" with a straight face.

  • Share ThisShare This
  • Your Account

Discussions

Computer Science is Dead, Long Live Computer Science!
Posted Dec 19, 2007 02:10 PM by phoehne
0 Replies

Make a New Comment

You must log in in order to post a comment.

Related Resources

There are currently no related podcasts. Please check back later.

Steven HainesNew Performance Tuning Methodology White Paper
By Steven Haines on March 17, 2008 No Comments

Learn the proven performance tuning methodology that I used to successfully tune the performance of Enterprise Java environments for companies ranging from small 10-person development teams to large-scale Fortune 500 companies.

Seth FogieCCDC3 - Skewling college students on getting pwned
By Seth Fogie on March 10, 2008 No Comments

We just got back from CCDC3 (Collegiate Cyber Defense Competition) and wanted to share our experience. This year we moved from observer to 'hacker', and discovered just how much fun it can be to mess with help educated college students. Read on for more details, pictures and more!

MVP again, with work, and Visual Studio 2008
By John Traenkenschuh on January 16, 2008 No Comments
John Traenkenschuh writes about the continuing improvements made to Visual Basic...

See All Related Blogs

There are currently no related articles. Please check back later.

Informit Network