This paper argues in favour of a language-oriented approach to teach the principles of concurrency to graduate students. Over the past years, the popularity of programming languages that promote a functional programming style has steadily grown. We want to promote the use of such languages as the appropriate basic tools to deal with the \multicore revolution". We describe some of these programming languages and highlight two of them: Erlang and Clojure. We use these languages in a new graduate-level course that we will teach starting next academic year. Our goal is not to convince the reader that Erlang and Clojure are the best possible choices among this pool of candidate languages. Rather, our goal is to promote a functional programming style to tackle concurrency issues, and to teach this style in a programming language that makes it easy, straightforward and convenient to use that style. We do not want to get bogged down in a discussion on the usefulness or importance of learning new programming languages. For a good summary of the diverse advantages of studying new programming languages, we refer to a recent white paper by the ACM SIGPLAN education board [6].
[1]
Joe Armstrong,et al.
Programming Erlang: Software for a Concurrent World
,
1993
.
[2]
Sanjay Ghemawat,et al.
MapReduce: Simplified Data Processing on Large Clusters
,
2004,
OSDI.
[3]
Timothy G. Mattson,et al.
Patterns for parallel programming
,
2004
.
[4]
Bradley C. Kuszmaul,et al.
Cilk: an efficient multithreaded runtime system
,
1995,
PPOPP '95.
[5]
Cédric Fournet,et al.
The reflexive CHAM and the join-calculus
,
1996,
POPL '96.
[6]
Stuart Halloway,et al.
Programming Clojure
,
2009
.
[7]
Stephen N. Freund,et al.
Why Undergraduates Should Learn the Principles of Programming Languages
,
2011
.
[8]
Gerald J. Sussman,et al.
Structure and interpretation of computer programs
,
1985,
Proceedings of the IEEE.
[9]
Doug Lea,et al.
A Java fork/join framework
,
2000,
JAVA '00.
[10]
Carl Hewitt,et al.
Viewing Control Structures as Patterns of Passing Messages
,
1977,
Artif. Intell..