Elizabeth Shoop

Materials Contributed through SERC-hosted Projects

Project Leader on this Project

Welcome to CSinParallel part of Parallel Computing in the Computer Science Curriculum
CS in Parallel (supported by a grant from NSF-CCLI) provides a resource for CS educators to find, share, and discuss modular teaching materials and computational platform supports.

Other Contributions (12)

WMR Exemplar: UK Traffic Incidents part of Parallel Computing in the Computer Science Curriculum:Modules:Modules Mini-collection
The purpose of this module is to teach students how to analyze datasets distributed over multiple files using the Hadoop framework. It is assumed that students are already familiar with the basics of hadoop and CSInParallel's Web Map Reduce (WMR) hadoop interface. The exercises in this module use a dataset from the UK department of Transportation that contains detailed records of traffic accidents split into three separate files. The module contains example code to try and then additional suggestions for analyses that students can perform.

WMR Exemplar: Flickster network data part of Parallel Computing in the Computer Science Curriculum:Modules:Modules Mini-collection
The purpose of this module is to teach students how to analyze networks and datasets distributed over multiple files using the Hadoop framework with the WebMapReduce (WMR) interface. It is assumed that students are already familiar with the basics of hadoop and CSInParallel's WMR interface. The exercises in this module use a network of friendships on the social movie recommendation site Flixster. Students will use it to learn how to analyze networks and chain jobs. The module contains example code to try and then additional suggestions for analyses that students can perform.

WMR Exemplar: LastFM million-song dataset part of Parallel Computing in the Computer Science Curriculum:Modules:Modules Mini-collection
This module demonstrates how hadoop and WMR can be used to analyze the lastFM million song dataset. It incorporates several advanced hadoop techniques such as job chaining and multiple input. After providing one code example, students are encouraged to try additional analyses on their own. Students should know how to use the WMR hadoop interface before beginning this module.

Instructor Example: Optimizing CUDA for GPU Architecture part of Parallel Computing in the Computer Science Curriculum:Modules:Modules Mini-collection
nVIDIA GPU cards use an advanced architecture to efficiently execute massively parallel programs written in CUDA C. This module explains how to take advantage of this architecture to provide maximum speedup for your CUDA applications using a Mandelbrot set generator as an example. The code is provided and parts of it are explained. It is intended to be a resource for instructors wishing to create lectures, though it can also be presented to students as is.

Concept: Data Decomposition Pattern part of Parallel Computing in the Computer Science Curriculum:Modules:Modules Mini-collection
This module consists of reading material and code examples that depict the data decomposition pattern in parallel programming, using a small-sized example of vector addition (sometimes called the "Hello, World" of parallel programming. Code is provided, but students need not execute it to see how the pattern is implemented. The example code begins with an original serial version, then shows how decomposition is defined in MPI, OpenMP, and CUDA.


showshow 7 more

Visualize Numerical Integration part of Parallel Computing in the Computer Science Curriculum:Modules:Modules Mini-collection
This is an activity with working code supplied that enables students to see how various forms of the data decomposition pattern map processing units to computations. The problem we use is numerical integration: approximation of the integral over an interval using the sum of areas of rectangles. Students run examples in OpenMP (threads) and/or MPI (processes) and a depiction of which processing units (either processes or threads) computed each rectangle is played back slow enough to see how the computation took place.

Pandemic Exemplar part of Parallel Computing in the Computer Science Curriculum:Modules:Modules Mini-collection
In this module we present a typical real-world example from epidemiology, where the spread of a pandemic infectious disease is modeled using monte carlo simulation (random movements that simulate the real-world actions of people). Starting from a given amount of infected people, how a disease spreads is modeled over a user-provided length of time. We start with the sequential version of this classic iterative monte carlo solution, then show how the code can be parallelized. Students can run the code and examine performance of sequential and parallel versions.

Distributed Computing Fundamentals part of Parallel Computing in the Computer Science Curriculum:Modules:Modules Mini-collection
Message Passing Interface (MPI) is a programming model widely used for parallel programming in a cluster. Using MPI, programmers can divide massive data with same task and then and distribute them to multiple processing unit within the cluster. By contrast, distinct different tasks could be assigned to separate processes to be run on different machines in a cluster. In this module, we will learn how to solve larger problems more efficiently by writing programs using the MPI 'distributed memory' programming model and then execute them on cluster. We will start our MPI journey by learning MPI Communications using the simple example "Hello World". Then we will learn MPI Compiling by computing PI using calculus (area under the curve). Finally, we will learn MPI Decomposition by doing Matrix-Vector Multiplication and Matrix-Matrix Multiplication.Module Characteristics Language Supported: C Relevant Parallel Computing Concepts: Data Parallelism Operating System Supported: Linux Possible Course Use: Programming Languages, Hardware Design, Parallel Computing Systems Recommended Teaching Level: Intermediate, Advanced

Heterogeneous Computing part of Parallel Computing in the Computer Science Curriculum:Modules:Modules Mini-collection
This teaching module guides students through the process of building programs using a heterogeneous computing module on a cluster of computers that are themselves able to perform parallel computations. The examples show partial code for running MPI message passing on processes on machines in a cluster, each of which can then run a parallel task in CUDA using a GPU card.

GPU Programming part of Parallel Computing in the Computer Science Curriculum:Modules:Modules Mini-collection
As modern Graphics Processing Unit (GPU) harnessed more and more horsepower, programmers began to use GPU for General Purpose computation, instead of just for graphics rendering. NVIDIA® Corporation developed CUDA, a parallel computing platform and programming model, to improve computing performance for parallel computation problems. In this module, we will learn how to solve parallel problems more efficiently by writing programs in CUDA C Programming Language and then executes them on GPUs based on CUDA architecture. This module uses the CUDA parallel computing platform; developer's SDK and toolkit can be found on NVIDIA's website. Module Characteristics Languages Supported: CRelevant Parallel Computing Concepts: Data ParallelismOperating System Supported: Mac OS, Linux, WindowsPossible Course Use: Programming Languages, Hardware Design, Parallel Computing SystemsRecommended Teaching Level: intermediate, Advanced

Parallel Sorting part of Parallel Computing in the Computer Science Curriculum:Modules:Modules Mini-collection
This module, targeted for algorithms and data structures courses, examines the theoretical PRAM model and its use when designing a parallel version of the mergesort algorithm. There is a reading with thought questions, an in-class activity where students create the parallel algorithm psuedocode (provided in a set of ppt slides), an examination of the complexity of the algorithm, and additional homework questions to choose from. Module Characteristics Languages Supported: any Relevant Parallel Computing Concepts: Data Parallelism, Shared Memory Recommended Teaching Level: Intermediate, Possible Course Use: Algorithm Design

Multicore Programming with OpenMP part of Parallel Computing in the Computer Science Curriculum:Modules:Modules Mini-collection
Intel® Corporation has set up a special remote system that allows faculty and students to work with computers with lots of cores, called the Manycore Testing Lab (MTL). In this lab, we will create a program that intentionally uses multi-core parallelism, upload and run it on the MTL, and explore the issues in parallelism and concurrency that arise. This module uses the OpenMP parallel platform package; there is an alternative version of this module using Intel's Threading Building Blocks for those more familiar with that library. Module Characteristics Languages Supported: C++ Relevant Parallel Computing Concepts: Shared Memory Recommended Teaching Level: Introductory, Intermediate