Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1953163.1953291acmconferencesArticle/Chapter ViewAbstractPublication PagessigcseConference Proceedingsconference-collections
research-article

Breadth in depth: a 1st year introduction to parallel programming

Published: 09 March 2011 Publication History

Abstract

There is a debate on when and how to teach parallel programming in the undergraduate curriculum. We try to structure the debate along a number of dimensions and then present the solution that we adopted for an engineering-oriented curriculum. We added an introduction to parallel programming to the list of mandatory classes in the 2nd semester. The class exposes students to three styles of parallel programming: threads with shared memory, CSP-style message passing, and OpenMP-based parallel programming. Within these models, the class aims to focus the student's attention on communication as the key issue in parallel programs. Explicit communication (or their absence) causes correctness problems, implicit communication (e.g., when accessing shared data in different threads) forces the student to understand when updates are globally visible. An introductory class early in the undergraduate curriculum has a number of benefits and disadvantages, which are discussed in this paper. A preliminary evaluation after two editions of this course indicates that the design goals are met but also points to several issues that other institutions may want to consider.

References

[1]
S. V. Adve and H.-J. Boehm. Memory Models: A Case for Rethinking parallel languages and Hardware. Commun. ACM, 53(8):90--101, 2010.
[2]
M. Ben-Ari. Principles of Concurrent and Distributed Programming (2nd ed). Addison Wesley, Harlow, UK, 2006.
[3]
K. B. Bruce, A. Danyluk, and T. Murtagh. Introducing Concurrency in CS 1. In SIGCSE '10: Proc. 41st ACM Technical Symp. Computer Science Education, pages 224--228, New York, NY, USA, 2010. ACM.
[4]
D. P. Bunde. A Short Unit to Introduce Multi-Threaded Programming. J. Comput. Small Coll., 25(1):9--20, 2009.
[5]
B. Chapman, G. Jost, and R. van der Pas. Using OpenMP: Portable Shared Memory Parallel Programming. MIT Press, Cambridge, MA, 2008.
[6]
Nvidia Corp. Nvidia CUDA (C Programming Guide Version 3.1.1). Santa Clara, 2006--2010.
[7]
D. J. Ernst and D. E. Stevenson. Concurrent CS: Preparing Students for a Multicore World. In ITiCSE '08: Proc. 13th Annual Conf. Innovation and Technology in Computer Science Education, pages 230--234, New York, NY, USA, 2008. ACM.
[8]
A. L. Fisher and T. Gross. Teaching Empirical Performance Evaluation of Parallel Programs. In SIGCSE '92: Proc. 23rd SIGCSE Technical Symp. Computer Science Education, pages 309--313, Kansas City, MO, March 1992.
[9]
B. Goetz with T. Peierls, J. Bloch, J. Bowbeer, D. Holmes, and D. Lea. Java Concurrency in Practice. Addison Wesley, 2006.
[10]
W. Gropp, E. Lusk, and A. Skjellum. Using MPI: Portable Parallel Programming with the Message-Passing Interface (2nd ed). MIT Press, Cambridge, MA, 1999.
[11]
M. Herlihy and N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, Burlington, MA, 2008.
[12]
D. Jackson. A Mini-Course on Concurrency. In SIGCSE '91: Proc 22nd SIGCSE Technical Symp. Computer Science Education, pages 92--96, New York, NY, USA, 1991. ACM.
[13]
M. C. Jadud, J. Simpson, and C. L. Jacobsen. Patterns for Programming in Parallel, Pedagogically. In SIGCSE '08: Proc. 39th SIGCSE Technical Symp. Computer Science Education, pages 231--235, New York, NY, USA, 2008. ACM.
[14]
D. A. Joiner, P. Gray, T. Murphy, and C. Peck. Teaching Parallel Computing to Science Faculty: Best Practices and Common Pitfalls. In PPoPP '06: Proc. 11th ACM SIGPLAN Symp. Principles and Practice of Parallel Programming, pages 239--246, New York, NY, USA, 2006. ACM.
[15]
N. G. Leveson and C. S. Turner. Investigation of the Therac-25 Accidents. IEEE Computer, 26(7):18--41, 1993.
[16]
S. Rivoire. A Breadth-First Course in Multicore and Manycore Programming. In SIGCSE '10: Proc, 41st SIGCSE Technical Symp. Computer Science Education, pages 214--218, New York, NY, USA, 2010. ACM.
[17]
N. C. Schaller. Panel: Parallel Computing in the Undergraduate Computer Science Curriculum. In Supercomputing '91: Proc. 1991 ACM/IEEE Conf. on Supercomputing, page 148, New York, NY, USA, 1991. ACM.
[18]
N. C. Schaller and A. T. Kitchen. Experiences in Teaching Parallel Computing-Five Years Later. SIGCSE Bull., 27(3):15--20, 1995.
[19]
G. Wolffe and C. Trefftz. Teaching Parallel Computing: New Possibilities. J. Comput. Small Coll., 25(1):21--28, 2009.

Cited By

View all
  • (2023)Teaching Synchronization in Parallel Computing2023 21st International Conference on Emerging eLearning Technologies and Applications (ICETA)10.1109/ICETA61311.2023.10344164(99-104)Online publication date: 26-Oct-2023
  • (2020)High Performance Computing EducationProceedings of the Working Group Reports on Innovation and Technology in Computer Science Education10.1145/3437800.3439203(51-74)Online publication date: 17-Jun-2020
  • (2020)Teaching Parallel Programming to Freshmen in an Undergraduate Computer Science Program2019 IEEE Frontiers in Education Conference (FIE)10.1109/FIE43999.2019.9028566(1-8)Online publication date: 17-Jun-2020
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
SIGCSE '11: Proceedings of the 42nd ACM technical symposium on Computer science education
March 2011
754 pages
ISBN:9781450305006
DOI:10.1145/1953163
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 09 March 2011

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. cs education
  2. parallel programming
  3. software engineering

Qualifiers

  • Research-article

Conference

SIGCSE '11
Sponsor:

Acceptance Rates

SIGCSE '11 Paper Acceptance Rate 107 of 315 submissions, 34%;
Overall Acceptance Rate 1,595 of 4,542 submissions, 35%

Upcoming Conference

SIGCSE Virtual 2024
1st ACM Virtual Global Computing Education Conference
December 5 - 8, 2024
Virtual Event , NC , USA

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)8
  • Downloads (Last 6 weeks)2
Reflects downloads up to 06 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2023)Teaching Synchronization in Parallel Computing2023 21st International Conference on Emerging eLearning Technologies and Applications (ICETA)10.1109/ICETA61311.2023.10344164(99-104)Online publication date: 26-Oct-2023
  • (2020)High Performance Computing EducationProceedings of the Working Group Reports on Innovation and Technology in Computer Science Education10.1145/3437800.3439203(51-74)Online publication date: 17-Jun-2020
  • (2020)Teaching Parallel Programming to Freshmen in an Undergraduate Computer Science Program2019 IEEE Frontiers in Education Conference (FIE)10.1109/FIE43999.2019.9028566(1-8)Online publication date: 17-Jun-2020
  • (2019)A Case Study: Undergraduate Self-Learning in HPC Including OpenMP, MPI, OpenCL, and FPGAs2019 International Conference on Computational Science and Computational Intelligence (CSCI)10.1109/CSCI49370.2019.00149(782-787)Online publication date: Dec-2019
  • (2017)Undergraduate Educational Pathways for Developing a High-Performance Computing WorkforcePractice and Experience in Advanced Research Computing 2017: Sustainability, Success and Impact10.1145/3093338.3093355(1-4)Online publication date: 9-Jul-2017
  • (2017)Challenges to integrate software testing into introductory programming courses2017 IEEE Frontiers in Education Conference (FIE)10.1109/FIE.2017.8190557(1-9)Online publication date: 18-Oct-2017
  • (2013)A down-to-earth educational operating system for up-in-the-cloud many-core architecturesACM Transactions on Computing Education10.1145/2414446.241445013:1(1-12)Online publication date: 7-Feb-2013
  • (2012)Introducing parallel programming to traditional undergraduate coursesProceedings of the 2012 IEEE Frontiers in Education Conference (FIE)10.1109/FIE.2012.6462263(1-6)Online publication date: 3-Oct-2012
  • (2012)Adaptive game-based agent negotiation in deregulated energy markets2012 International Conference on Collaboration Technologies and Systems (CTS)10.1109/CTS.2012.6261067(300-307)Online publication date: May-2012
  • (2011)Parallel programmingProceedings of the 2011 ACM SIGPLAN X10 Workshop10.1145/2212736.2212738(1-6)Online publication date: 4-Jun-2011
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media