Executive Summary:
See http://cs2013.org for the first public draft of the 2013 Computer Science Curricula Report from ACM and IEEE-CS. A public comment period is open from now until July 15th. The SIGPLAN Education Board wrote the Programming Languages section from scratch. We encourage your comments — please go to http://cs2013.org and follow the instructions.
Background:
Roughly once a decade, ACM and IEEE-CS revise a document describing the content and objectives of an undergraduate computer-science degree (emphasizing, of course, the great diversity among students and institutions around the world). Though not a formal specification or standard, the document has wide influence on curricula, courses, textbooks, etc. and serves as a useful guide for many constituencies. SIGPLAN members expressed significant displeasure with the treatment of content related to programming languages in the 2001 document as well as the “interim revision” in 2008. The 2008 committee decided that resolving the “programming languages issue” required too much change for an interim revision, leaving it for the 2013 effort.
The 2013 effort is led by a 17-person steering committee appointed by ACM and IEEE-CS. SIGPLAN Executive Committee members Kathleen Fisher and Dan Grossman were appointed. The committee has worked diligently since December 2010, including monthly conference calls and, as of Spring 2012, three in-person 2-day meetings.
Documents related to the effort are kept at http://cs2013.org.
SIGPLAN Participation:
“Programming Languages” is one of eighteen “Knowledge Areas” that together form the “Body of Knowledge” that describes the topics covered (either as requirements or electives) in an undergraduate computer-science program. Each Knowledge Area was written/revised by a subcommittee including steering-committee members and, often, others.
For Programming Languages, the subcommittee /was/ the SIGPLAN Education Board (!), plus Kathleen Fisher and Ernesto Cuadros-Vargas from the steering committee. We rewrote the Knowledge Area from scratch, doing our best to represent the wisdom of the SIGPLAN community in a way that would be understood by a broader audience and fit within the constraints of the overall report. We then solicited reviews from several expert “fresh eyes” and used that feedback to improve the work further, incorporating as many suggestions as we felt we could. So, SIGPLAN certainly cannot complain about our level of participation in the process!
To give full credit where it is due: The subcommittee was led by Dan Grossman and included Kim Bruce, Curt Clifton, Kathi Fisler, Kathleen Fisher, Steve Freund, Matthew Hertz, Johan Jeuring, Doug Lea, Simon Thompson, and Ernesto Cuadros-Vargas. The subcommittee received external feedback from Alex Aiken, Ron Cytron, Tony Hosking, James Noble, Jens Palsberg, Michael Scott, and Michelle Strout.
Where the Process Stands and How You Can Help:
An initial public draft of the report — referred to as the “Strawman Draft” — was made available in February 2012 at http://cs2013.org. An official public-comment period will last until July 15, 2012, after which the steering committee will incorporate feedback for the next draft. The most useful thing you can do right now is participate in
the public-comment period. In 2008, SIGPLAN members contributed a large number of critical comments. We believe the 2013 draft meets the concerns the community had with the 2001 and 2008 reports, and positive comments to that effect would be most welcome. Of course, our work can surely be improved, so we welcome constructive criticism and suggestions as well.
In computer-science terms, the “Body of Knowledge” can be thought of as a specification for which there are many possible implementations. In particular, curricula will divide the material into courses in many different ways. The final report will have “exemplars” — actual existing courses and curricula that cover the Body of Knowledge in different ways. If you would like a course or curriculum you are familiar with to be considered for use as an exemplar, please let us know. This would be very helpful, so don’t be shy!
Some Commentary on the Programming Languages Knowledge Area:
Because there are only eighteen Knowledge Areas, the Programming Languages Knowledge Area is much broader than a SIGPLAN member would likely think of with respect to “a PL course.” It covers both required and elective material in programming languages and compilers. It also includes a number of basic programming constructs and the material related to functional programming, object-oriented programming, and event-driven programming. Many of these topics were in other Knowledge Areas in previous reports; bringing them together allows for a more consistent description of the relevant material.
Indeed, a major goal of our revision was to cover the topics in a more uniform and consistent fashion. We also sought to update the material appropriately. As a particular example, on the language-implementation side, we increased the emphasis on run-time systems as well as the use of program analysis for purposes other than
code optimization. An explicit non-goal is to advocate a particular approach to teaching programming languages because many reasonable approaches deserve to meet the specification. As a particular point, no programming language is mentioned by name in the topics or learning outcomes.
There is also material related to programming languages in other Knowledge Areas. After all, decomposing a degree program into a strict hierarchical outline is not possible. The Body of Knowledge contains explicit cross-references and commentary in this regard. In particular, the Programming Languages Knowledge Area is best understood in the context of related Knowledge Areas, especially Software Development Fundamentals, Parallel and Distributed Computing, and Software Engineering.