Teaching Parallel and Distributed Computing to Undergraduate Computer Science Students - Arroyo, Marcelo (2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum, 2013)
Parallel and distributed systems programming skills has become a common requirement in the development of modern applications. It is imperative that any updated curriculum in computer science must include these topics not only as advanced (often elective) programming courses. There is a general consensus that parallel programming topics should be spread throughout the undergraduate curriculum.In this paper we describe how parallel and distributed computing and, specifically concurrent and parallel programming topics, are being included in the updated computer science curriculum of the degree in computer science at the Río Cuarto National University, Argentina. Also, we cover some suggested approaches for teaching parallel programming topics in a set of core courses to achieve a consistent, increasing and complete training in high performance computing. To achieve these goals, we propose a set of modules which includes basic and advanced high performance computing and some parallel and distributed systems programming topics, to be included in core courses. Finally, we describe the use of existing tools and the development of new high level tools, as parallel patterns, useful for teaching parallel programming which can be used in different courses. The aim of using these tools and techniques is to reduce the gap between sequential and parallel programming.