Back to the Future
Computer science departments, now a feature of many, possibly most, large universities, are a relatively recent arrival. Each has a different genesis, starting from mathematics, electrical engineering or statistics departments, and eventually growing to the point of independence or displacing, cuckoo-like, their parent. A common pattern was growth from the university computer centre, in days gone by the custodian of the mainframe computers used for large scale scientific computing and occasionally provider of early business systems. Once separated, the links between university computer centres and newly fledged computer science departments rapidly stretched, and snapped.
The forces leading to this were manifold. Principal among them was the desire to establish a science of computation distinct from the practice of computing. Computer scientists focused inwards. Simultaneously computer centres focused on the rising demands of their users and responding to the increasing criticality of computer services to scientific research. Computer centres looked outwards. The loss, perhaps inevitable but nonetheless regrettable, was to both parties. Computer science lost touch with the pragmatics of service provision, computer centres lost touch with the leading edge and the experimental ethos. The biggest loss has been indirect, the contact between computer science and the physical sciences software developers, the large clients of the computer centres.
The former co-habitees have over time drifted further apart in spirit and organisationally. To a certain extent the e-science research agenda and the common engagement around high performance compute have acted to build bridge, but these are frail and limited.
At roughly the same time as the separations described above, we experienced the explosive growth of computer science education at degree level. Computer scientists could afford, or were compelled by resource constraints, to withdraw from teaching programming and software development outside their own departments. Physicists, engineers and chemists may not have been too sad to see them go either. The inclination to teach the latest programming fads and abstract strategies suitable only for small tasks had not endeared computer scientists to their colleagues.
Of course, without computer science engagement with the curriculum the teaching of programming in the academy has atrophied. There is little evidence in the teaching of programming to physical sciences and engineering students of the transmission of effective development or software design principles. For the most part programming practices are stuck somewhere in the early 80s when the computer scientists decamped.
Computer science needs to go back to the future. It needs to redeem the losses.
First a reengagement with computer centres, now computing or IT services. This is a natural partnership in which both should be winners rather than losers. Computer science departments can act as the research and development labs and early adopters for computing within their institutions. This would allow universities to regain their reputation as innovators in service provision rather than lagging industry as seems increasingly to be the case.
Next computer science should reestablish its role in teaching programming beyond its own degree programmes. It should place itself in the lead in defining the curriculum across the academy, responsive to the needs of other disciplines but incorporating all that has been learned over the last few years about how to develop useable, well engineered software.
Computer science has a responsibility to the development of its own discipline and to the advance of its own important scientific and technical agenda but it has broader service responsibilities too. These responsibilities include those to the wider scientific challenges represented in the work of our colleagues as well as the broader agenda of the institutions of which computer science departments form a part. Computer science has set these responsibilities aside, they need to be picked up again.