Abstract:
Undergraduate or novice programmers are often challenged by higher-level and
abstract concepts in programming courses. Compared to constructing a sequential program,
parallel and concurrent programming requires a different and more complex mental model of
control flow. Now that multi-core processors have become the norm for computers and mobile
devices, the responsibility of developing software to take advantage of this extra computing power
now rests with the modern software developer.