Computer Science as a Postgraduate Discipline
9 January 2008
In an article entitled ‘Computer Science Education: Where Are the Software Engineers of Tomorrow?’ Dewar and Schonberg lament:
It is our view that Computer Science (CS) education is neglecting basic skills, in particular in the areas of programming and formal methods. We consider that the general adoption of Java as a first programming language is in part responsible for this decline. We examine briefly the set of programming skills that should be part of every software professional’s repertoire.
I concur wholeheartedly with their analysis and in particular about the trends that the authors proclaim:
- Mathematics requirements in CS programs are shrinking.
- The development of programming skills in several languages is giving way to cookbook approaches using large libraries and special-purpose packages.
- The resulting set of skills is insufficient for today’s software industry (in particular for safety and security purposes) and, unfortunately, matches well what the outsourcing industry can offer. We are training easily replaceable professionals.
My main disagreement concerns their suggestion that the typical undergraduate computing degree (quite rightly named information technology) should attempt to reverse the trends outlined. I believe information technologists should be competent information managers in terms of the representation, storage, retrieval and presentation of information in a globally networked environment. That they use ‘cookbook approaches using large libraries and special-purpose packages’ is a good thing and valuable to the graduates and their employers in the world at large. Much innovation is possible by discovering new ways to integrate standard software packages to achieve new ways to manage, manipulate and display information.
Yes, that still leaves the IT graduates very weak in formal methods of software construction, the performance of algorithms and the assurance of software quality. Yes, a strong mathematical formation is required for these aspects of genuine computer science. These days such formation will not be found in high school leavers and will need to be taught at university level.
To achieve the outcomes the authors seek requires specialist postgraduate degrees at the Masters level and above. This means including a rigorous mathematical formation in the postgraduate study itself and probably requiring at least 25% of the postgraduate degree itself. Thus I believe we are approaching the time when computer science, like medicine before it, becomes a postgraduate discipline only sensibly attempted after an undergraduate degree.