The Chapel Parallel Programming Language

 

Chapel Educator Resources

Parallel programming is becoming an increasingly crucial skill due to the dominance of multicore processors and the resulting need for familiarity with parallelism in mainstream computing. As a result, we expect that Computer Science courses will increasingly want to cover such diverse topics as:

  • data parallelism
  • task parallelism
  • concurrent programming
  • synchronization
  • deadlock, livelock, and other pitfalls
  • locality/affinity
  • shared- and distributed-memory programming
  • scalability and performance
  • ...

The Chapel group believes that most parallel programming models that are in practical use today are insufficient for teaching all of these topics; moreover, most of them are not very good at teaching many of these concepts clearly at all.

Until now: We believe that Chapel has the potential to play an important role in parallel programming education due to its elegance and integrated support for diverse styles of parallelism. Moreover, Chapel's open source implementation makes it well-suited for more advanced project-based courses in which students take on longer-term research or programming projects.

Chapel Educators Mailing List

If you're interested in participating in discussion about Chapel's use in an educational setting, please consider subscribing to the chapel-education discussion list at SourceForge.

Research on Chapel in Education

The following are research efforts looking at the use of Chapel in education:

Use of Chapel in Courses

The following is a list of educators and courses in which they've used Chapel, provided as a resource for others who are thinking of using Chapel in their teaching. If you've used Chapel in your courses and would like to propose adding them to this list, please let us know at chapel_info@cray.com

  • Kyle Burke, Wittenberg University
    Kyle writes: I've had a lot of success using Chapel in upper-level computer science courses. I've used Chapel as an example of a High-Performance computing language in our programming languages class and also as the language of choice in our analysis of algorithms class (the course is designed to teach sequential and parallel algorithms already). Chapel works great in both classes!

  • Brad Chamberlain, University of Washington
    • CSEP 524: Parallel Computation
        In this course, I used Chapel, along with conventional parallel programming technologies (Pthreads, OpenMP, MPI), to illustrate parallel programming principles and idioms in a more idealized vs. more practically deployed setting. For certain assignments, I gave students the option of choosing between Chapel and the more conventional assignment.

  • Helmar Burkhart, University of Basel, Switzerland
    • CS311: High Performance Computing
    Helmar writes: We are using Chapel in our course for a second time. The student response has been very positive. I think the high-level approach of Chapel has the potential for a leadership in HPC education much like Pascal had, and Java still has, for general-purpose computing.

  • Olaf Schenk, University of Lugano, Switzerland (U. Basel until 2011)
    Olaf writes: We have used Chapel within a student project "Run, Stencil, Run! -- A Comparison of Modern Parallel Programming Paradigms", in which the students implemented a finite difference stencil code using different programming languages.

  • Calvin Lin, University of Texas at Austin

  • Kenjiro Taura, University of Tokyo

  • Mikhail Kurnosov, Siberian State University of Telecommunications and Information Sciences

  • Larry Snyder, University of Washington