CS2013 Strawman Draft Public Comment Period: Now – July 15

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.

Posted in Uncategorized | Leave a comment

Education Panel at PLDI 2011: Survey Results and Slides

 

At PLDI 2011 (last summer), Laurie Hendren organized and moderated a panel on, “Teaching Programming Language Design and Implementation … What?  To Whom? How?”  The other panelists were Alex Aiken, Ras Bodik, Dan Grossman, and Michael Hind.  Laurie also ran an electronic survey for attendees and non-attendees alike, which elicited 121 responses.  While the materials below are no substitute for the panel presentations, audience questions, and discussion, we are happy to archive here the full survey responses and the presenters’ slides.

Posted in Uncategorized | Leave a comment

Three Events at PLDI/FCRC

For people attending the Federated Computing Research Conference (including PLDI) next week in San Jose, there are three events quite relevant to the work of the SIGPLAN Education Board.  Please try to attend as many as you can!  In chronological order:

  • Tuesday June 7th, 5-6PM is the SIGPLAN Open Business Meeting.  This event will include a poster session with a poster about the SIGPLAN Education Board and its work on Curriculum 2013.  There should be time for informal discussion and feedback.
  • Wednesday June 8th, 10:20-11:20AM, PLDI has a panel titled, “Teaching Programming Language Design and Implementation …  What?  To Whom? How?”  The panelists will make short presentations and then entertain questions and comments from the audience.
  • Wednesday June 8th, 6:00-7:00PM, there is an FCRC-wide information session on the overall ACM/IEEE Curriculum 2013 effort.  This is an opportunity to hear about the overall process and goals as well as to hear — and give feedback on — the main anticipated changes compared to prior versions of the standard curriculum.
Posted in Uncategorized | Leave a comment

Curriculum 2013 website and survey

The SIGPLAN Education Board continues to assist with the ongoing work for the 2013 ACM/IEEE Curriculum for Computer Science. Specific information about draft materials for Programming Languages (and other areas) should be available this summer.

Meanwhile, the overall effort has a website, http://cs2013.org, and the website has a survey you can take on the characteristics of computer-science graduates. This survey is being widely advertised (e.g., on the SIGCSE mailing list), and you are encouraged to take it.

As the process continues, there will be many additional opportunities for public feedback and comment — the characteristics of graduates is just one piece of the puzzle.

Posted in Uncategorized | Leave a comment

Beginning work on Curriculum 2013

The ACM and IEEE have begun the process of producing curriculum guidelines for computer science to replace the 2008 interim revision of the 2001 curriculum.  The goal is to complete this work by 2013, continuing the long tradition of updates approximately each decade.

When the Curriculum 2013 project has a web page, we will link to it.  In the meantime, we’re pleased to report that the SIGPLAN Education Board will be participating constructively in the process.  Notably, Dan Grossman (SIGPLAN Education Board Chair) and Kathleen Fisher (former SIGPLAN Chair) are 2 of the 17 members of the Curriculum 2013 Steering Committee.

The steering committee is eager to incorporate contributions from interested experts across the computer-science curriculum.  Naturally, the SIGPLAN Education Board will be participating in updating the PL material.  If you have thoughts or concerns, feel free to contact us.  In the intermediate future, we will particularly be looking for people to help with updating the language implementation (compilers, etc.) portion of the curriculum.

Posted in Uncategorized | Leave a comment

Updated “Why Undergraduates Should Learn the Principles of Programming Languages”

We recently posted a modest revision of this linked document to incorporate feedback.  Special thanks to Steve Freund for leading this project.  While further improvements are always possible, our plan is to move on to other tasks.  Please do share this document as appropriate.

Posted in Uncategorized | Leave a comment

Welcome New Members

The SIGPLAN Education Board has 3 new members: Curt Clifton, Johan Jeuring, and Simon Thompson.  The full Board is:

Stepping down from the Board are Gary Leavens, Andrew Myers, and Larry Snyder — we are grateful for their wonderful service.

Please do not hesitate to contact any member of the Board — or comment on this blog — about programming-languages education.  Our current goals involve complementing the “why” document described in previous posts with examples that provide the “what” and “how” pieces.

Posted in Uncategorized | Leave a comment

New blog

The SIGPLAN Education Board blog has moved from its old url to this one.  This move is an opportunity to choose a more thorough name (including sigplan in the url) and to install some anti-spam measures for the comments.

All content from the old blog has been migrated to this site.  Please report any problems or omissions.

Posted in Uncategorized | Leave a comment

Response to comments on “Why” paper

Thanks for all of the comments on the current draft of the paper, “Why Undergraduates Should Learn the Principles of Programming Languages”. We are very pleased to have started a thoughtful community discussion. We encourage additional feedback from which we can continue to learn.

Having read all the comments to-date, the committee wanted to respond to a few suggestions and clarify some motivation and next steps.  In particular:

The primary audience for this particular paper is Computer Science faculty teaching undergraduates.  While we hope it is helpful to Programming Language specialists, our aim was to inform those with other specialties why programming languages content is important.  The report was generated in part as a response to concerns that programming languages (PL) content is being moved to the fringes of CS curricula at many universities.  We hope that this report will be of use in convincing curricula committees (local, national, and world-wide) that significant programming languages content should be an integral part of the curriculum for computer science and related majors.

There is an intention to build on this paper to write an article explaining the importance of programming languages research to a broader audience (including funding agencies).  However, that is not the purpose of this paper or the SIGPLAN Education Board.

The next project of the committee is to lay out more clearly our recommendations for the content of courses including material on programming languages.  This will include the specifications of a semester-long upper-division programming languages course as well as specifications of content that could be integrated into other courses, especially lower-level courses.  We are attempting to anticipate the variety of ways that such material might be incorporated in an undergraduate curriculum.  For a preliminary specification of material for an advanced undergraduate programming languages course please see the “What” section of the report on the Harvard PL curriculum meeting cited in an earlier entry.  The content specification starts on page 11 there.

We did not feel the need to separate software engineering from computer science in this document, as the examples (and programming languages content) are applicable to each of them. We expect all students to understand the theory of operation and pragmatics of their tools, chief among them the programming languages they use to develop software.

As for the order of the bulleted items, we changed the order more than once in response to various critiques.  We suspect that different orders will appeal to different readers.  Alas, we have to settle on one, but will reexamine the issue in response to the comments received. Hans’s comment on how language features of “exotic” languages migrate into mainstream languages is dead-on.  Closures are certainly one of the most recent examples of this phenomenon.  Features supporting concurrency are also beginning to move over (e.g., actors).  [...  and who would have thought 20 years ago that garbage collection would be so widely accepted in mainstream languages, even though it has been around for 50 years.]

Thanks to Michael for his very detailed comments.  We were looking for “practical” applications of the PL content, but will see if we can make that clearer and more pointed.  We’ll also try to clarify what we mean by “effective” and similar words, as well as taking into account the other very useful comments in our next revision of this document.

Finally, our intention was not to dismiss logic programming (or any other PL topic not highlighted in this document), but instead to highlight some of the most important applications of PL content to practicing computer scientists (and software engineers).  We would be very happy to learn of other effective examples that communicate the practical importance of PL topics.

Given the thrust of many of the comments received to this point, we intend to work in the near future on a “What” document that will respond to many of the questions raised in the comments.  We will then come back and revise the “Why” document to respond to the various comments and suggestions received, as well as to tie the two documents together. Please keep the comments coming, as we will continue reading and learning from them.

Kim Bruce for the SIGPLAN Education Board

Posted in Uncategorized | Leave a comment

Why Undergraduates Should Learn the Principles of Programming Languages

The linked document is the first public release of a document discussing the value of programming languages principles for undergraduate CS majors.  The intended audience is computer scientists who are not specialists in programming languages.  Please leave comments on how well you believe it meets its goals and with suggestions for improvements.

 

Abstract: Undergraduate students obtain important knowledge and skills by studying the pragmatics of programming in multiple languages and the principles underlying programming language design and implementation. These topics strengthen students’ grasp of the power of computation, help students choose the most appropriate programming model and language for a given problem, and improve their design skills. Understanding programming languages thus helps students in ways vital to many career paths and interests.
Posted in Uncategorized | 9 Comments