The objective of this collaborative project is to: (1) assess and identify programming languages suitable for teaching parallel programming to all students; (2) develop and collect learning resources that will help others learn and teach these languages at the undergraduate level; (3) identify compelling examples of applications to excite and grow student interest in parallel programming; and (4) present findings and prepare adaptable and reproducible materials through publications, conference presentations, and tutorials.

This project addresses the need to transform undergraduate education in computer science in response to a major shift in computer hardware to focus on the multicore processor and parallel programming. The project assesses the applicability of high-level languages and creates both classroom and laboratory materials to teach these languages in an undergraduate setting.

The project has a potential to transform undergraduate computer science education of the next generation of parallel programmers and multicore developers. The project contributes resources to the NSDL library to encourage other educators to integrate parallel programming and higher-level languages into the undergraduate curriculum at their institutions.

Project Report

This TUES project addressed the need to transform undergraduate education in computer science, specifically in regard to parallel computing. Computer hardware has been undergoing a major shift, and multicore chips are now standard, from supercomputers to mobile phones. This revolution in hardware has dramatic implications for software. In order to take advantage of multiple cores, it is necessary for the programmer to understand parallel computing. Not surprisingly, in December 2013, the "Curriculum Guidelines for Undergraduate Degree Programs in Computer Science" published by the Association for Computing Machinery (ACM) and the IEEE Computer Society specifically introduced parallel and distributed computing as a new knowledge area. Teaching parallel computing is challenging. This project explored languages and compelling example applications that facilitate parallel programming, allowing it to be taught to and done by a wide range of undergraduate students. With input from students, industrial advisers, and educational consultants, the project team explored a variety of parallel languages and materials. Languages included GPU (CUDA), Haskell, OpenMP, OpenACC, MapReduce, C++11, Habanero Java and Javascript (River Trail). Exemplars included the Game of Life, bioinformatics (sequence alignment), genetic algorithms, n-body and Boid simulations (flocking). This project provided summer research experiences to a total of 14 undergraduate students between 2011 and 2014. Two undergraduate students won "Honorable Mention" at the High Performance Parallel and Distributed Computing (HPDC) 2014 conference. Project results have been published in seven papers and many abstracts, and presented at 14 conferences.

Agency
National Science Foundation (NSF)
Institute
Division of Undergraduate Education (DUE)
Type
Standard Grant (Standard)
Application #
1044932
Program Officer
Victor Piotrowski
Project Start
Project End
Budget Start
2011-09-01
Budget End
2014-08-31
Support Year
Fiscal Year
2010
Total Cost
$117,549
Indirect Cost
Name
Lewis and Clark College
Department
Type
DUNS #
City
Portland
State
OR
Country
United States
Zip Code
97219