DAPPLE: DAta-Parallel Programming Library for Education (1993-1996)

This project is no longer active; this page is no longer updated.

Related keywords: [education], [software]


Summary

In this project we developed the "DAPPLE" programming language. DAPPLE was implemented as a C++ class library designed to provide the illusion of a data-parallel programming language on conventional hardware and with conventional compilers. DAPPLE defines Vectors and Matrices as basic classes, with all the C operators overloaded to provide for elementwise arithmetic. In addition, DAPPLE provides typical data-parallel operations such as scans, permutations, and reductions. Finally, DAPPLE provides a parallel if-then-else statement to restrict the context of the above operations to subsets of vectors or matrices.

Download

DAPPLE is available to download, though may require updates to run on modern computers.

Background

In the early 1990s, we saw parallelism as the future of computing and computer science and felt it should therefore be at the heart of the CS curriculum. Instead of continuing along the evolutionary path by introducing parallel computation "top down" (first in special junior-senior level courses), we took a radical approach and introduced parallelism at the earliest possible stages of instruction. Specifically, we developed a module for use in a freshman-level course on data structures that integrated parallel computation naturally, and retained the emphasis on laboratory instruction. We hoped it would help to steer our curriculum toward parallel computing.

Our approach was novel in three distinct and essential ways. First, we taught parallel computing to freshmen. Second, we motivated the course with examples from scientific computation. Third, we used multimedia and visualization as instructional aids. We had two primary objectives: to begin a reform of our undergraduate curriculum with an laboratory-based freshman course on parallel computation, and to produce tools and methodologies that improve student understanding of the basic principles of parallel computing.

For more information, read this paper from the Conference on Parallel Computing for Undergraduates, Colgate University, June 1994.

Other good resources included the Wellesley Forum on Parallel Computing Curricula (no longer available) and Nan's Parallel Computing Page.

People

The faculty: The students:

Funding and acknowledgements

This research was supported by the US National Science Foundation ILI-LLD program, under award DUE-9352796.

The views and conclusions contained on this site and in its documents are those of the authors and should not be interpreted as necessarily representing the official position or policies, either expressed or implied, of the sponsor(s). Any mention of specific companies or products does not imply any endorsement by the authors or by the sponsor(s).

Papers tagged 'dapple'

[Also available in BibTeX]

Papers are listed in reverse-chronological order; click an entry to pop up the abstract. For full information and pdf, please click Details link. Follow updates with RSS.

1996:
David Kotz. A DAta-Parallel Programming Library for Education (DAPPLE). Computer Science Education. 1996. [Details]

In the context of our goal to bring parallel computing into the undergraduate curriculum, we needed a parallel-programming language that was accessible to students and independent of any particular hardware platform. Finding nothing appropriate, we chose to design our own language. The result, DAPPLE, is a C++ class library designed to provide the illusion of a data-parallel programming language on conventional hardware and with conventional compilers. DAPPLE defines Vector and Matrix classes, with most C++ operators overloaded to provide elementwise arithmetic, and supports data-parallel operations like scans, permutations, and reductions. DAPPLE also provides a parallel if-then-else statement to restrict the scope of the above operations to partial vectors or matrices. In this article we describe the DAPPLE language, the pedagogical decisions that went into its design, and our experience using DAPPLE in the classroom. DAPPLE is freely available on the Internet.

1995:
David Kotz. A DAta-Parallel Programming Library for Education (DAPPLE). Proceedings of the SIGCSE Technical Symposium on Computer Science Education. March 1995. [Details]

In the context of our overall goal to bring the concepts of parallel computing into the undergraduate curriculum, we set out to find a parallel-programming language for student use. To make it accessible to students at all levels, and to be independent of any particular hardware platform, we chose to design our own language, based on a data-parallel model and on C++. The result, DAPPLE, is a C++ class library designed to provide the illusion of a data-parallel programming language on conventional hardware and with conventional compilers. DAPPLE defines Vectors and Matrices as basic classes, with all the usual C++ operators overloaded to provide elementwise arithmetic. In addition, DAPPLE provides typical data-parallel operations like scans, permutations, and reductions. Finally, DAPPLE provides a parallel if-then-else statement to restrict the scope of the above operations to partial vectors or matrices.

1994:
David Kotz. DAta-Parallel Programming Library for Education DAPPLE. A C++ class library that provides the illusion of data-parallel programming on sequential computers, 1994. [Details]

DAPPLE is a C++ class library designed to provide the illusion of a data-parallel programming language on conventional hardware and with conventional compilers. DAPPLE defines Vectors and Matrices as basic classes, with all the C operators overloaded to provide for elementwise arithmetic. In addition, DAPPLE provides typical data-parallel operations such as scans, permutations, and reductions. Finally, DAPPLE provides a parallel if-then-else statement to restrict the context of the above operations to subsets of vectors or matrices.

David Kotz. A DAta-Parallel Programming Library for Education (DAPPLE). Technical Report, November 1994. [Details]

In the context of our overall goal to bring the concepts of parallel computing into the undergraduate curriculum, we set out to find a parallel-programming language for student use. To make it accessible to students at all levels, and to be independent of any particular hardware platform, we chose to design our own language, based on a data-parallel model and on C++. The result, DAPPLE, is a C++ class library designed to provide the illusion of a data-parallel programming language on conventional hardware and with conventional compilers. DAPPLE defines Vectors and Matrices as basic classes, with all the usual C++ operators overloaded to provide elementwise arithmetic. In addition, DAPPLE provides typical data-parallel operations like scans, permutations, and reductions. Finally, DAPPLE provides a parallel if-then-else statement to restrict the scope of the above operations to partial vectors or matrices.

Donald Johnson, David Kotz, and Fillia Makedon. Teaching Parallel Computing to Freshmen. Proceedings of the Conference on Parallel Computing for Undergraduates. June 1994. [Details]

Parallelism is the future of computing and computer science and should therefore be at the heart of the CS curriculum. Instead of continuing along the evolutionary path by introducing parallel computation “top down” (first in special junior-senior level courses), we are taking a radical approach and introducing parallelism at the earliest possible stages of instruction. Specifically, we are developing a completely new freshman-level course on data structures that integrates parallel computation naturally, and retains the emphasis on laboratory instruction. This will help to steer our curriculum as expeditiously as possible toward parallel computing.

Our approach is novel in three distinct and essential ways. First, we will teach parallel computing to freshmen in a course designed from beginning to end to do so. Second, we will motivate the course with examples from scientific computation. Third, we use multimedia and visualization as instructional aids. We have two primary objectives: to begin a reform of our undergraduate curriculum with an laboratory-based freshman course on parallel computation, and to produce tools and methodologies that improve student understanding of the basic principles of parallel computing.



[Kotz research]