STSC CrossTalk - Computer Science Education: Where Are the Software Engineers of Tomorrow? - Jan�2008
173 captures<br>03 Jan 2008 - 21 Apr 2016
Dec<br>JAN<br>Feb
03
2007<br>2008<br>2009
success
fail
About this capture
COLLECTED BY
Organization: Alexa Crawls
Starting in 1996, Alexa Internet has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to the Wayback Machine after an embargo period.
Collection: 51_crawl
this data is currently not publicly accessible.
TIMESTAMPS
The Wayback Machine - https://web.archive.org/web/20080103143526/http://www.stsc.hill.af.mil:80/CrossTalk/2008/01/0801DewarSchonberg.html
Entire Site<br>CrossTalk Only
��-�Mission
��-�Staff
��-�Contact Us
��-�Subscribe Now
��-�Update
��-�Cancel
��-�
Home > CrossTalk�Jan�2008 > Article
Jan�2008�Issue
Computer Science Education: Where Are the Software Engineers of Tomorrow?<br>Dr. Robert B.K. Dewar,�<br>AdaCore Inc.<br>Dr. Edmond Schonberg,�<br>AdaCore Inc.
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.<br>It is all about programming! Over the last few years we have noticed worrisome trends in CS education. The following represents a summary of those trends:
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.
These trends are visible in the latest curriculum recommendations from the Association for Computing Machinery (ACM). Curriculum 2005 does not mention mathematical prerequisites at all, and it mentions only one course in the theory of programming languages [1].
We have seen these developments from both sides: As faculty members at New York University for decades, we have regretted the introduction of Java as a first language of instruction for most computer science majors. We have seen how this choice has weakened the formation of our students, as reflected in their performance in systems and architecture courses. As founders of a company that specializes in Ada programming tools for mission-critical systems, we find it harder to recruit qualified applicants who have the right foundational skills. We want to advocate a more rigorous formation, in which formal methods are introduced early on, and programming languages play a central role in CS education.<br>Formal Methods and Software Construction<br>Formal techniques for proving the correctness of programs were an extremely active subject of research 20 years ago. However, the methods (and the hardware) of the time prevented these techniques from becoming widespread, and as a result they are more or less ignored by most CS programs. This is unfortunate because the techniques have evolved to the point that they can be used in large-scale systems and can contribute substantially to the reliability of these systems. A case in point is the use of SPARK in the re-engineering of the ground-based air traffic control system in the United Kingdom (see a description of iFACTS – Interim Future Area Control Tools Support, at ). SPARK is a subset of Ada augmented with assertions that allow the designer to prove important properties of a program: termination, absence of run-time exceptions, finite memory usage, etc. [2]. It is obvious that this kind of design and analysis methodology (dubbed Correctness by Construction) will add substantially to the reliability of a system whose design has involved SPARK from the beginning. However, PRAXIS, the company that developed SPARK and which is designing iFACTS, finds it hard to recruit people with the required mathematical competence (and this is present even in the United Kingdom, where formal methods are more widely taught and used than in the United States).
Another formal approach to which CS students need exposure is model checking and linear temporal logic for the design of concurrent systems. For a modern discussion of the topic, which is central to mission-critical software, see [3].
Another area of computer science which we find neglected is the study of floating-point computations. At New York University, a course in numerical methods and floating-point computing used to be required, but this requirement was dropped many years ago, and now very few students take this course. The topic is vital to all scientific and engineering software and is semantically delicate. One would imagine that it would...