You are here

Introduction

 

Parallel and Distributed Computing (PDC) now permeates most computing activities - the “explicit” ones, in which a person works explicitly on programming a computing device, and the “implicit” ones, in which a person uses everyday tools such as word processors and browsers that incorporate PDC below the user’s visibility threshold. The penetration of PDC into the daily lives of both “explicit” and “implicit” users has made it imperative that users be able to depend on the effectiveness, efficiency, and reliability of this technology. The increasing presence of computing devices that contain multiple cores and general-purpose graphics processing units (GPUs) in PCs, laptops, and now even handhelds has empowered even common users to make valued, innovative contributions to the technology of computing. Certainly, it is no longer sufficient for even basic programmers to acquire only the traditional, conventional sequential programming skills. The preceding trends point to the need for imparting a broad-based skill set in PDC technology at various levels in the educational fabric woven by Computer Science (CS) and Computer Engineering (CE) programs as well as related computational disciplines. However, the rapid change in computing hardware platforms and devices, languages, supporting programming environments, and research advances, more than ever challenge educators in knowing what to teach in any given semester in a student’s program. Students and their employers face similar challenges regarding what constitutes basic expertise.

Our vision for our committee is one of stakeholder experts working together and periodically providing guidance on restructuring standard curricula across various courses and modules related to parallel and distributed computing. A primary benefit would be for CS/CE students and their instructors to receive periodic guidelines that identify aspects of PDC that are important to cover, and suggested specific core courses in which their coverage might find an appropriate context. New programs at colleges (nationally and internationally) will receive guidance in setting up courses and/or integrating parallelism within the Computer Science, Computer Engineering, or Computational Science curriculum. Employers would have a better sense of what they can expect from students in the area of parallel and distributed computing skills. Curriculum guidelines will similarly help inform retraining and certification for existing professionals.

As background preparation for the development of this curriculum proposal, a planning workshop funded by the National Science Foundation (NSF) was held in February, 2010, in Washington, DC; this was followed up by a second workshop in Atlanta, alongside the IPDPS (International Parallel and Distributed Processing Symposium) conference in April, 2010. These meetings were devoted to exploring the state of existing curricula relating to PDC, assessing needs, and recommending an action plan and mechanisms for addressing the curricular needs in the short and long terms. The planning workshops and their related activities benefited from experts from various stakeholders, including instructors, authors, industry, professional societies, NSF, and the ACM education council. The primary task identified was to propose a set of core topics in parallel and distributed computing for undergraduate curricula for CS and CE students. Further, it was recognized that, in order to make a timely impact, a sustained effort was warranted. Therefore, a series of weekly/biweekly tele-meetings was begun in May, 2010; the series continued through December, 2010.

The goal of the series of meetings was to propose a PDC core curriculum for CS/CE undergraduates, with the premise that every CS/CE undergraduate should achieve a specified skill level regarding PDC-related topics as a result of required coursework. One impact of a goal of universal competence is that many topics that experts in PDC might consider essential are actually too advanced for inclusion. Early on, our working group’s participants realized that the set of PDC-related topics that can be designated core in the CS/CE curriculum across a broad range of CS/CE departments is actually quite small, and that any recommendations for inclusion of required topics on PDC would have to be limited to the first two years of coursework. Beyond that point, CS/CE departments generally have diverse requirements and electives, making it quite difficult to mandate universal coverage in any specific area. Recognizing this, we have gone beyond the core curriculum, identifying a number of topics that could be included in advanced and/or elective curricular offerings.

In addition, we recognized that whenever it is proposed that new topics be included in the curriculum, many people automatically assume that something else will need to be taken out. However, for many of the topics we propose, this is not the case. Rather, it is more a matter of changing the approach of teaching traditional topics to encompass the opportunities for “thinking in parallel.” For example, when teaching array-search algorithms, it is quite easy to point to places where independent operations could take place in parallel, so that the student's concept of search is opened to that possibility. In a few cases, we are indeed proposing material that will require making choices about what it will replace in existing courses. But because we only suggest potential places in a curriculum where topics can be added, we leave it to individual departments and instructors to decide whether and how coverage of parallelism may displace something else. The resulting reevaluation is an opportunity to review traditional topics, and perhaps shift them to a place of historical significance or promote them to more advanced courses.

A preliminary version of the proposed core curriculum was released in December 2010. We sought early adopters of the curriculum for spring and fall terms of 2011 and 2012 in order to get a preliminary evaluation of our proposal. These adopters included: (i) instructors of introductory courses in Parallel and Distributed Computing, (ii) instructors, department chairs, and members of department curriculum committees, who are responsible for core CS/CE courses, and (iii) instructors of general CS/CE core curriculum courses. The proposing instructors are employing and evaluating the proposed curriculum in their courses. 16 institutions were selected and awarded stipend with NSF and Intel support during Spring’11. We organized a follow-up curriculum and education workshop (EduPar-11 at IPDPS, May 16-20, Anchorage) to bring together early adopters and other experts, and collect feedback from the early adopters and the community. For Fall’11, Spring’12 and Fall’12 rounds of competitions, 18, 21, and 24 early adopters, respectively, were selected. EduPar-12 workshop was held as a regular IPDPS’12 satellite workshop, in Shanghai in May 2012, with expanded scope, and EduPar-13 is being organized at IPDPS-13 in Boston.

This document is a revised version of the preliminary report based on interactions with the early adopters and varied stakeholders at EduPar-11 workshop, bi-weekly tele-meetings from August of 2011 through April of 2012, interactions at EduPar-12, and the follow-up CEDR meetings during Fall 2012. In the three main PDC sub-areas of Architecture, Programming, and Algorithms, plus a fourth sub-area composed of Cross-cutting or Advanced Issues, the working group has deliberated upon various topics and subtopics and their level of coverage, has identified where in current core courses these could be introduced (Appendix I), and has provided examples of how they might be taught (Appendix II). For each topic/subtopic, the process involved the following.

  1. Assign a learning level using Bloom’s classification2 using the following notation.3
    • K= Know the term (basic literacy)
    • C = Comprehend so as to paraphrase/illustrate
    • A = Apply it in some way (requires operational command)
  2. Write learning outcomes.
  3. Identify core CS/CE courses where the topic could be covered.
  4. Create an illustrative teaching example.
  5. Estimate the number of hours needed for coverage based on the illustrative example.

Our larger vision in proposing this curriculum is to enable students to be fully prepared for their future careers in light of the technological shifts and mass marketing of parallelism through multicores, GPUs, and corresponding software environments, and to make a real impact with respect to all of the stakeholders for PDC, including employers, authors, and educators. This curricular guidance and its trajectory, along with periodic feedback and other evaluation data on its adoption and use, will also help to steer companies hiring students and interns, hardware and software vendors, and, of course, authors, instructors, and researchers.

The time is ripe for parallel and distributed computing curriculum standards, but we also recognize that any revision of a core curriculum is a long-term community effort. The CS2013 ACM/IEEE Computer Science Curriculum Joint Task Force has recognized PDC (along with security) as a main thrust area. We are closely interacting with the Task Force, providing expert feedback on the PDC portion of their initial draft on PDC in Oct, 2011. We will continue to engage with this and other education-oriented task forces in the hope of having significant impact on the CS/CE academic community. More details and workshop proceedings are available at the Curriculum Initiative’s website: http://tcpp.cs.gsu.edu/curriculum/index.php (email contact: sprasad@gsu.edu).

The rest of this document is organized as follows. First, we provide a general rationale for developing a PDC curriculum (Section 2). We then address the question of whether there is a core set of topics that every student should know. The initial overview concludes with an explanation of how to read the curriculum proposal in a manner consistent with its underlying intent (Section 3). Sections 4, 5, 6, and 7 then continues with a rationale for each of the four major topic areas in the proposal: architecture, programming, algorithms, and cross-cutting. The proposed curriculum appears in Section 8. For the benefit of potential instructors, Appendix I contains a cross-reference matrix indicating topics for each core course. Appendix II contains suggestions for how to teach individual topics. Finally, Appendix III contains a sample syllabus for an introductory course on parallel and distributed computing. Additional sample courses will be collected at the curriculum website.


2(i) Anderson, L.W., & Krathwohl (Eds.). (2001). A Taxonomy for Learning, Teaching, and Assessing: A Revision of Bloom's Taxonomy of Educational Objectives. New York: Longman, (ii) Huitt, W. (2009). Bloom et al.'s taxonomy of the cognitive domain. Educational Psychology Interactive. Valdosta, GA: Valdosta State University. http://www.edpsycinteractive.org/topics/cogsys/bloom.html.

3Some advanced topics are identified as “N” as being “not in core” but which may included in an elective course.