Robert Harper made the distinction between concurrency and parallelism in a paragraph (freely available text to boot!)
"Parallelism should not be confused with concurrency. Parallelism is about
efficiency, not semantics; the meaning of a program is independent of whether
it is executed in parallel or not. Concurrency is about composition, not efficiency; the meaning of a concurrent program is very weakly specified so that one may compose it with other programs without altering its meaning. This distinction, and the formulation of it given here, was pioneered by Blelloch (1990). The concept of a cost semantics and the idea of a provably efficient implementation are derived from Blelloch and Greiner (1995,
1996a)."
39.5 Notes, Practical Foundations of Programming Languages, Version 1.30 Revised 03.15.2012
Since being schooled by other HN readers on parallelism vs. concurrency in the past, my way of distinguishing it:
Concurrency is a programming language issue, parallelism is a resource allocation issue.
EDIT: Well, this appears to be stated pretty clearly in the presentation, but I only got the presentation working after trying it for the 3rd time (in the 3rd browser).
"Parallelism should not be confused with concurrency. Parallelism is about efficiency, not semantics; the meaning of a program is independent of whether it is executed in parallel or not. Concurrency is about composition, not efficiency; the meaning of a concurrent program is very weakly specified so that one may compose it with other programs without altering its meaning. This distinction, and the formulation of it given here, was pioneered by Blelloch (1990). The concept of a cost semantics and the idea of a provably efficient implementation are derived from Blelloch and Greiner (1995, 1996a)."
39.5 Notes, Practical Foundations of Programming Languages, Version 1.30 Revised 03.15.2012
http://www.cs.cmu.edu/~rwh/plbook/book.pdf