Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/1953163.1953222acmconferencesArticle/Chapter ViewAbstractPublication PagessigcseConference Proceedingsconference-collections
research-article

Practical parallel and concurrent programming

Published: 09 March 2011 Publication History

Abstract

Multicore computers are now the norm. Taking advantage of these multiple cores entails parallel and concurrent programming. There is therefore a pressing need for courses that teach effective programming on multicore architectures. We believe that such courses should emphasize high-level abstractions for performance and correctness and be supported by tools.
This paper presents a set of freely available course materials for parallel and concurrent programming, along with a testing tool for performance and correctness concerns called Alpaca (A Lovely Parallelism And Concurrency Analyzer). These course materials can be used for a comprehensive parallel and concurrent programming course, a la carte throughout an existing curriculum, or as starting points for graduate special topics courses. We also discuss tradeoffs we made in terms of what to include in course materials.

References

[1]
K. Asanovic, R. Bodik, J. Demmel, T. Keaveny, K. Keutzer, J. Kubiatowicz, N. Morgan, D. Patterson, K. Sen, J. Wawrzynek, D. Wessel, and K. Yelick. A view of the parallel computing landscape. Communications of the ACM, 52(10):56--67, 2009.
[2]
T. Ball, S. Burckhardt, G. Gopalakrishnan, J. Mayo, M. Musuvathi, S. Qadeer, and C. Sadowski. Practical parallel and concurrent programming course materials. http://ppcp.codeplex.com/.
[3]
M. Ben-Ari. A suite of tools for teaching concurrency. SIGCSE Bulletin, 36(3):251--251, 2004.
[4]
K. Bruce, A. Danyluk, and T. Murtagh. Introducing concurrency in CS 1. In Technical Symposium on Computer Science Education (SIGCSE), 2010.
[5]
S. Burckhardt, A. Baldassion, and D. Leijen. Concurrent programming with revisions and isolation types. In Symposium on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), 2010.
[6]
C. Campbell, R. Johnson, A. Miller, and S. Toub. Parallel Programming with Microsoft .NET: Design Patterns for Decomposition and Coordination on Multicore Architectures. Microsoft Press, 2010. http://parallelpatterns.codeplex.com/.
[7]
S. Carr, J. Mayo, and C. Shene. ThreadMentor: a pedagogical tool for multithreaded programming. Journal on Educational Resources in Computing (JERIC), 3(1):1, 2003.
[8]
S. Choi and E. Lewis. A study of common pitfalls in simple multi-threaded programs. SIGCSE Bulletin, 32(1):329, 2000.
[9]
D. Ernst and D. Stevenson. Concurrent CS: preparing students for a multicore world. In Conference on Innovation and Technology in Computer Science Education (ITiCSE), 2008.
[10]
A. Fekete. Teaching students to develop thread-safe Java classes. In Conference on Innovation and Technology in Computer Science Education (ITiCSE), 2008.
[11]
W. Gropp, E. Lusk, and A. Skjellum. Using MPI: portable parallel programming with the message passing interface. The MIT Press, 1999.
[12]
D. Janzen and H. Saiedian. Test-driven learning: intrinsic integration of testing into the CS/SE curriculum. In Technical Symposium on Computer Science Education (SIGCSE), 2006.
[13]
D. Joiner, P. Gray, T. Murphy, and C. Peck. Teaching parallel computing to science faculty: best practices and common pitfalls. In Symposium on Principles and Practice of Parallel Programming (PPoPP), 2006.
[14]
E. Lee. The problem with threads. Computer, 39(5):33--42, 2006.
[15]
D. Leijen, W. Schulte, and S. Burckhardt. The design of a task parallel library. SIGPLAN Notices, 44(10):227--242, 2009. http://msdn.microsoft.com/en-us/library/dd460717.aspx.
[16]
S. Lu, S. Park, E. Seo, and Y. Zhou. Learning from mistakes: a comprehensive study on real world concurrency bug characteristics. SIGPLAN Notices, 43(3):329--339, 2008.
[17]
Microsoft. Parallel Language-Integrated Queries (PLINQ). http://msdn.microsoft.com/en-us/library/dd460688.aspx.
[18]
Microsoft. Parallel programming samples for .NET 4. http://code.msdn.microsoft.com/ParExtSamples.
[19]
M. Musuvathi and S. Qadeer. Iterative context bounding for systematic testing of multithreaded programs. SIGPLAN Notices, 42(6):446--455, 2007.
[20]
M. Musuvathi, S. Qadeer, T. Ball, G. Basler, P. Nainar, and I. Neamtiu. Finding and reproducing heisenbugs in concurrent programs. In Symposium on Operating Systems Design and Implementation (OSDI), 2008.
[21]
M. Ricken and R. Cartwright. Test-first Java concurrency for the classroom. In Technical Symposium on Computer Science Education (SIGCSE), 2010.
[22]
S. Rivoire. A breadth-first course in multicore and manycore programming. In Technical Symposium on Computer Science Education (SIGCSE), 2010.
[23]
J. Spacco and W. Pugh. Helping students appreciate test-driven development (TDD). In Symposium on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), 2006.
[24]
H. Sutter. The free lunch is over: A fundamental turn toward concurrency in software. Dr. Dobbs Journal, 30(3):16--20, 2005.
[25]
D. Tarditi, S. Puri, and J. Oglesby. Accelerator: using data parallelism to program GPUs for general-purpose uses. SIGOPS Operating Systems Review, 40(5):325--335, 2006. http://research.microsoft.com/en-us/projects/Accelerator/.

Cited By

View all
  • (2024)Experience Report on Teaching Parallel and Distributed Programming Through Storytelling2024 IEEE International Conference on Software Analysis, Evolution and Reengineering - Companion (SANER-C)10.1109/SANER-C62648.2024.00019(1-9)Online publication date: 12-Mar-2024
  • (2021)Refactoring‐based learning for fine‐grained lock in concurrent programming courseComputer Applications in Engineering Education10.1002/cae.2246930:2(505-516)Online publication date: 18-Oct-2021
  • (2020)Research on Parallel Computing Teaching: state of the art and future directions2020 IEEE Frontiers in Education Conference (FIE)10.1109/FIE44824.2020.9273914(1-9)Online publication date: 21-Oct-2020
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

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. concurrency
  2. distributed
  3. multicore
  4. parallelism
  5. tools

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)19
  • Downloads (Last 6 weeks)3
Reflects downloads up to 18 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Experience Report on Teaching Parallel and Distributed Programming Through Storytelling2024 IEEE International Conference on Software Analysis, Evolution and Reengineering - Companion (SANER-C)10.1109/SANER-C62648.2024.00019(1-9)Online publication date: 12-Mar-2024
  • (2021)Refactoring‐based learning for fine‐grained lock in concurrent programming courseComputer Applications in Engineering Education10.1002/cae.2246930:2(505-516)Online publication date: 18-Oct-2021
  • (2020)Research on Parallel Computing Teaching: state of the art and future directions2020 IEEE Frontiers in Education Conference (FIE)10.1109/FIE44824.2020.9273914(1-9)Online publication date: 21-Oct-2020
  • (2019)Improve Student Performance Using Moderated Two-Stage ProjectsProceedings of the ACM Conference on Global Computing Education10.1145/3300115.3309524(201-207)Online publication date: 9-May-2019
  • (2019)Decoding Parallel Program Execution by using Java Interactive Visualization Environment (JIVE): Behavioral and Performance Analysis2019 3rd International Conference on Computing Methodologies and Communication (ICCMC)10.1109/ICCMC.2019.8819754(792-797)Online publication date: Mar-2019
  • (2018)Parallel programming course development based on parallel computational thinkingProceedings of ACM Turing Celebration Conference - China10.1145/3210713.3210736(103-109)Online publication date: 18-May-2018
  • (2017)Concurrent interaction model of distributed monitoring system based on agent2017 IEEE 2nd Advanced Information Technology, Electronic and Automation Control Conference (IAEAC)10.1109/IAEAC.2017.8054287(1618-1622)Online publication date: Mar-2017
  • (2015)Input-Driven Active Testing of Multi-threaded Programs2015 Asia-Pacific Software Engineering Conference (APSEC)10.1109/APSEC.2015.34(246-253)Online publication date: Dec-2015
  • (2014)ConEEProceedings of the Western Canadian Conference on Computing Education10.1145/2597959.2597972(1-6)Online publication date: 2-May-2014
  • (2013)A model-driven approach to teaching concurrencyACM Transactions on Computing Education10.1145/2414446.241445113:1(1-19)Online publication date: 7-Feb-2013
  • Show More Cited By

View Options

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