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 see our Discourse site.
Research on Chapel in Education
The following are research efforts looking at the use of Chapel in education:
- Teaching Parallel Computing with Higher-Level Languages and Activity-Based Laboratories, David Bunde (Knox College) and Jens Mache (Lewis & Clark College)
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+qs@discoursemail.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.
- CSEP 524: Parallel Computation
- 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
- CS380P: Parallel Systems
-
In this course, Calvin has sometimes given a
specific programming assignment in Chapel, and other
times has let the students pursue open-ended projects
exploring various topics in Chapel. The following are
examples of some of the final reports produced by such
students:
- Parallelizing a Sparse Domain Distribution in Chapel, Randy Dodgen
- Using Chapel to Implement Dense Linear Algebra Libraries, Joe Elizondo and Samuel Palmer
- Actor Oriented Programming in Chapel, Amin Shali
- CS380P: Parallel Systems
- Kenjiro Taura, University of Tokyo
- Mikhail Kurnosov, Siberian State University of Telecommunications and Information Sciences
- Larry Snyder, University of Washington