SC '12 HPC Educator Workshop:

CSInParallel: An incremental approach to adding PDC throughout the CS curriculum

Presented by Richard Brown, Libby Shoop, and Joel Adams

Thursday, Nov. 15, 1:30 - 5:30

Welcome

The CSInParallel project (csinparallel.org) offers an incremental approach for feasibly adding PDC (parallel and distributed computing) concepts and skills to existing undergraduate courses using small teaching moules (1-3 class days). Designed for flexible use in multiple courses throughout the CS curriculum and typically offering a choice of programming languages, CSInParallel modules have minimal syllabus cost, yet contribute significantly to student understanding of PDC principles and practice. In this HPC Educator session we will demonstrate two modules that introduce notions of concurrency, multi-threaded programming, and map-reduce distributed computing. These and other available modules are suitable for courses at all levels of the curriculum. After guiding you through these modules, we will provide time for you to explore other available modules of your choosing that are of interest to you. We will do this by splitting into groups of people who has similar interests in particular modules.

Schedule of Events

Part 1: 1:30-3pm

  • all: Strategy of CSinParallel; Curriculum Recommendations [15 min]
  • all: Workshop on Programming with Multiple Cores module [45 min]
  • groups: Exploring various modules [30 min]

Part 2: 3:30-5pm

  • all: Workshop on WebMapReduce for Introductory Students module [45 min]
  • groups: Exploring various modules [30 min]
  • all: Curriculum discussion, including relating to emerging curriculum standards [15 min]

Part 1 1:30 to 3:00

Strategy of CSInParallel

We will present an overview of the modular, incremental approach to inserting paralel concepts and topics into all levels of the CS curriculum and how our modules overlap with the new standards in the next ACM/IEEE CS curriculum recommendations.Parallelism in CS2013 Curriculum Recommendations (Acrobat (PDF) 1.2MB Nov8 12) The CSInParallel module materials can be accessed by following the link called Modules on the sidebar on the left. First Featured Module: Programming with Multiple Cores Programming with multiple cores is a module that can be used in an intermediate course when students have only a basic knowledge of C or C++. The module introduces students to the concept of dividing a large task into smaller subtasks and using a shared memory system with multiple processors to create threads of execution using a simple high-level declarations to their C programs using a library called OpenMP.

You will need:

  • A mechanism to login to Intel's manycore Testing Lab machine via ssh
    • If you are on a Mac, your terminal application in the Applications/Utilities folder will work
    • On a PC, we like the bitvise ssh client . Or perhaps you already have PuTTY .
  • An account on the Intel Manycore testing lab
  • A copy of the example OpenMP C++ file (available once you successfully login)
  • To follow along the course module with us: Multicore Programming with OpenMP

Full details about this module can be found on its CSInParallel module page.

Group break-out sessions

We have several modules that might interest you, depending on the courses you often teach. We would like to organize groups of people who are interested in exploring particular modules further. Some we might suggest are:

  • Concurrent Access to Data Structures (typically uses in a second/third course in Java that covers data structures)
  • Distributed Computing Fundamentals (can use the LittleFe machine and try it out)
  • Parallel Sorting
  • A Theory of Parallel Computation
  • GPU Programming
  • Heterogeneous Computing
  • Map-Reduce Computing for Introductory Students using WebMapReduce (if you can't stay for Part 2)

Part 2 (3:30 to 5:00)

Recap of CSInParallel Project

Next Featured Module: WebMapReduce for Introductory students

This module is accessible to students in introductory courses. It uses a tool built by Dick Brown and his students at St. Olaf College that provides an intuitive web interface for describing map-reduce computations, submitting jobs to a back-end hadoop installation, and viewing results of the computation.

You will need:

The full details of this module can be found on its CSInParallel module page.

Group break-out sessions

We have several modules that might interest you, depending on the courses you often teach. We would like to organize groups of people who are interested in exploring particular modules further. Some we might suggest are:

  • Concurrent Access to Data Structures (typically uses in a second/third course in Java that covers data structures)
  • Distributed Computing Fundamentals (can use the LittleFe machine and try it out)
  • Parallel Sorting
  • A Theory of Parallel Computation
  • GPU Programming
  • Heterogeneous Computing
  • Programming with Multiple Cores (if you weren't here for Part 1)

Finish with a discussion of CS curriculum

We would like to finish with a whole-group discussion and recap of how parallel and distributed computing concepts and skills can appear throughout the curriculum and why this modular, spiral approach may serve us all well (students and faculty alike) and how it fits with curriculum guidelines.