NSF/IEEE-TCPP Curriculum Initiative on Parallel and Distributed Computing – Core Topics for Undergraduates

- Version 1 Released Dec 27, 2012 - download pdf.

- Preliminary Version Released Dec 23, 2010 - download pdf.

Curriculum Working Group:
Prasad, Sushil K. (Coordinator; Georgia State University),
Chtchelkanova, Almadena (NSF),
Dehne, Frank (Carleton University, Canada),
Gouda, Mohamed (University of Texas, Austin, NSF),
Gupta, Anshul (IBM T.J. Watson Research Center),
Jaja, Joseph (University of Maryland),
Kant, Krishna (NSF, Intel),
La Salle, Anita (NSF),
LeBlanc, Richard (Seattle University),
Lumsdaine, Andrew (Indiana University),
Padua, David (University of Illinois at Urbana-Champaign),
Parashar, Manish (Rutgers),
Prasanna, Viktor (University of Southern California),
Robert, Yves (INRIA, France),
Rosenberg, Arnold (Northeastern University),
Sahni, Sartaj (University of Florida),
Shirazi, Behrooz (Washington State University),
Sussman, Alan (University of Maryland),
Weems, Chip (University of Massachusetts), and
Wu, Jie (Temple University)

Abstract:
This report is a revised version of our preliminary report that was released in Dec 2010. The report contains the core topics in parallel and distributed computing (PDC) that a student graduating with a Bachelor’s degree in Computer Science or Computer Engineering is expected to have covered. The topics are organized into four areas of architecture, programming, algorithms, and cross-cutting and advanced topics. Additional elective topics are expected. This report is expected to engage the various stakeholders for their adoption and others usage as well as their feedback to periodically update the proposed curriculum. This document contains an introductory write up on curriculum’s need and rationale, followed by the proposed topics, with specified Bloom level of coverage, learning outcomes, and suggested number of hours and relevant courses, and additional material in the appendices on suggestions on how to teach individual topics, a cross-reference matrix on core courses vs. topics, and a sample elective course. The revision has updated all the sections, with a new section on rationale for cross cutting topics, reorganization of the programming topics, and updates to several learning outcomes, expected number of hours, and the appendix on how to teach. The scribes of the revised version were Anshul Gupta, Krishna Kant (co-coordinator: crosscutting topics), Andrew Lumsdaine (co-coordinator: crosscutting topics), David Padua (co-coordinator: programming), Sushil Prasad, Yves Robert, Arnold Rosenberg (coordinator: algorithms), Alan Sussman (co-coordinator: programming) and Chip Weems (coordinator: architecture).

Since the release of the preliminary version, we have selected over 100 early adopters from U.S. and from across the world in order to get its evaluation and to obtain templates on how these topics can be adopted in various courses across the curriculum. The early adopters have been awarded stipends, equipment, and travel support through five rounds of competitions (Spring and Fall of 2011 and 2012, FAll 2013) with support from NSF, Intel, and nVIDIA. Additional competitions is planned Fall 2014 with proposal deadlines in June 30. These early adopters and the community meet annually at EduPar workshop held at IPDPS conference to provide feedback and discuss state of art in PDC education. In Fall 2012, NSF supported creating a Center for Parallel and Distributed Computing Curriculum Development and Educational Resources (CDER) for long-term sustenance of this initiative. CEDR center will coordinate the ongoing activities including periodic curricular updates as well as become a hub for collection and creation of educational resources and will facilitate access to hardware and software resources for instruction.

1A preliminary version was released in Dec 2010. Contact: Sushil Prasad (sprasad@gsu.edu)

Table of Contents

1. Introduction

2. Why a Parallel and Distributed Computing Curriculum?

2.1 A short history of computing

2.2 What should every (computer science/engineering) student know about computing?

3. How to Read this Proposal?

4. Rationale for Architecture Topics

5. Rationale for Programming Topics

6. Rationale for Algorithms Topics

7. Rationale for Cross-Cutting and Advanced Topics

8.  Proposed Curriculum

8.1 Notations

8.2 Architecture Topics

8.3 Programming Topics

8.4 Algorithm Topics

8.5 Cross Cutting and Advanced Topics

9. Appendix I: Cross Reference Matrix – Core Courses vs. Topics

10. Appendix II: Suggestions on how to teach topics

10.1 Architecture

10.2 Programming

10.3 Algorithms

10.4 Crosscutting

11. Appendix III: Sample Elective Course: Introduction to Parallel and Distributed Computing

 

This material is based upon work partially supported by the National Science Foundation under Grants IIS 1143533, CCF 1135124, CCF 1048711 and CNS 0950432.  Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation