Integrating Parallel Computing in Introductory Programming Classes: An Experience and Lessons Learned

Parallel and distributed computing (PDC) has become ubiquitous to the extent that even common users depend on parallel programming. This points to the need for every programmer to understand how parallelism and distributed programming affect problem solving, teaching only traditional sequential programming is no longer sufficient. To address the rapidly widening gap between emerging highly-parallel computer architectures and the sequential programming approach taught in traditional CS/CE courses, the Computer Science Department at Tennessee Technological University has integrated PDC into their introductory programming course sequence. This paper presents our implementation efforts, experience and lessons learned, as well as preliminary evaluation results.

[1]  Bernd Burgstaller,et al.  Parallel from the beginning: the case for multicore programming in thecomputer science undergraduate curriculum , 2013, SIGCSE '13.

[2]  Samantha S. Foley,et al.  OnRamp to parallel and distributed computing , 2015, EduHPC '15.

[3]  Richard A. Brown,et al.  CSinParallel and Synergy for Rapid Incremental Addition of PDC Into CS Curricula , 2012, 2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum.

[4]  Richard A. Brown,et al.  Patterns and Exemplars: Compelling Strategies for Teaching Parallel and Distributed Computing to CS Undergraduates , 2013, 2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum.

[5]  Arnold L. Rosenberg,et al.  Topics in Parallel and Distributed Computing: Introducing Concurrency in Undergraduate Courses , 2015 .

[6]  GarciaDan,et al.  Snap! (build your own blocks) , 2012 .

[7]  Joshua A. Levine,et al.  A problem-based learning approach to GPU computing , 2015, EduHPC '15.

[8]  John R. Graham Integrating parallel programming techniques into traditional computer science curricula , 2007, SGCS.

[9]  Joel C. Adams Injecting parallel computing into CS2 , 2014, SIGCSE '14.

[10]  Richard A. Brown,et al.  Modules in community: injecting more parallelism into computer science curricula , 2011, SIGCSE '11.

[11]  Apan Qasem,et al.  A Module-based Approach to Adopting the 2013 ACM Curricular Recommendations on Parallel Computing , 2015, SIGCSE.

[12]  Jiajia Li,et al.  Introducing high performance computing concepts into engineering undergraduate curriculum: a success story , 2015, EduHPC '15.

[13]  Chris Lupo,et al.  Cross teaching parallelism and ray tracing: a project-based approach to teaching applied parallel computing , 2012, SIGCSE '12.