The Software Carpentry pre-assessment questionnaire for bootcamp participants ask them to tell us what field they're in. The options we give them are usually some variation on:
- Space sciences
- Earth sciences (geology, oceanography, meteorology)
- "Macro" life science (ecology, zoology, botany)
- "Micro" life science (microbiology, genetics)
- Engineering (civil, mechanical, chemical)
- Computer science and electrical engineering
- Humanities and social sciences
- Library sciences
- Other: ______________________________
People frequently use the "Other" field to tell us that their specialty doesn't fit any of our categories, or that the categories themselves don't make sense. I agree with the complaint, and would be happy to use some sort of validated standard taxonomy—except none seems to exist. Journals and professional societies all have classification schemes, but they tend to be very fish-eyed (lots of specialized subdivisions in their own area, but broader and vaguer the further away you go).
This issue led me to look at the ACM's newest classification system for computer science topics, which in turn led me to ask, "What is 'computer science' these days anyway?" The most pragmatic answer is, "Whatever people who call themselves computer scientists do," so I downloaded this dataset of 2200 faculty at 50 top schools in the US and sorted specialties by frequency. The results puzzled me:
|Algorithms & Theory||292|
|Networks & Communications||163|
|Hardware & Architecture||150|
|Bioinformatics & Computational Biology||131|
|Security & Privacy||121|
|Machine Learning & Pattern Recognition||93|
|Distributed & Parallel Computing||92|
|Natural Language & Speech||52|
|Real-Time & Embedded Systems||33|
|World Wide Web||5|
First, why is "Bioinformatics & Computational Biology" not counted as "Scientific Computing"? Second, where is "Numerical Methods"? I know it's not as popular a subject as it was forty years ago; are its practitioners now counted under "Scientific Computing"?
And third, look how far down the list "Software Engineering" is. Those are the people who study how we create software and tell if it's correct; I know I'm biased, but I believe those are the two biggest issues in all of computing. The fact that even scientific-computing-minus-bioinformatics is larger is yet another sign of the gap between what practitioners want, and what researchers study.