Computing Science is undoubtedly a science, a genuine field of academic research and enquiry, and the foundation of many different challenging and rewarding careers. However, as with the other sciences, it can also be thought of as a service, providing needed knowledge and techniques to apply to the pursuit of other disciplines.
Indeed, Computing Science is perhaps even more of a service than most other fields, since it can be applied to almost any scientific or engineering task. All scientific enquiry involves the capture, searching and analysis of data, and the majority of projects will have some need for the construction of models or simulations; Computing Science (or at the very least, programming) have much to offer in that regard.
But here we encounter a problem. Computing Science, partly in an understandable push to establish itself as a legitimate academic field in its own right, and partly because of the fact that the timetable for any science degree is invariably full, is usually completely absent from the curricula of other sciences. This is almost tolerable for undergraduate degrees, where the physicists and mathematicians can get by with a MatLab tutorial and crib-sheet, and the electronic engineers can take a half-semester of C programming arranged within their own department, but it becomes far more serious when we consider postgraduate research and doctoral work.
I think there’s a very strong case for selected Computing Science education to be made available to students of other scientific disciplines (indeed, why limit it to the sciences?) as a tool for pursuing their own work. There’s a vast gulf of need between a sub-secretarial so-called “IT competency” course and the actual software engineering needs of, say, Ph.D. candidates in physics or materials science.
An incomplete or naive understanding of programming can lead to months and months of needless toil when constructing models or other complex systems. Execution times can be inflated by orders of magnitude due to a lack of awareness of suitable algorithms, or an absence of any education regarding time complexity and optimisation. Entire approaches could be radically altered and improved by availability of courses in algorithmics, database systems, information retrieval, distributed systems and more - all tailored to an audience with certain common needs and problems to solve, and a desire to dip in when necessary and then get back to more important things.
Computing Science is a formidable tool to facilitate scientific research, yet students of other disciplines often occupy an educational ghetto in this area, which places artificial and unnecessary pressures and limitations on their work. This is a difficult problem to solve, because of course it usually isn’t feasible to ask a physicist to devote 50% of one semester to programming courses, and 50% of the next to the study of data structures and algorithms. She is, after all, a physicist and has a full schedule in that capacity.
I’m not sure what the solution is. Perhaps some combination of:
- Departments of Computing Science making certain "night school" or overflow classes available on fundamental topics, open to all and scheduled out of normal hours, as a service to the academic community. These classes would presumably include discrete, focused courses on the basics of programming, software architecture, and introductions to common algorithms and optimisations thereof.
- Computing Science teaching staff offering some portion of their non-research timetable (perhaps 5%, on alternating semesters?) as drop-in office hours for students in departments other than their own.
- Collaboration with the other sciences to make their students aware of both the availability and benefits of the above - particularly to new postgraduates, R.A.s and Ph.D. candidates.
The efficacy of and need for established principles of software engineering and Computing Science in general is well established, and this is arguably truest of all in the realm of scientific research - indeed, advancement in any one science is often borne of the fruits of the others combined. However, there exists a shortfall of adequate provision of Computing Science education to non-CS students and faculty members, which can be damaging to their work.
It is the moral and social responsibility of the relevant faculties (and indeed, of we practitioners of Computing Science) to take steps to address this problem for the good of science as a whole.