Reasoning about parallel architectures
Reasoning about parallel architectures
Parallel programming with MPI
IEEE Transactions on Software Engineering - Special issue on formal methods in software practice
Model checking
Computer Architecture: A Quantitative Approach
Computer Architecture: A Quantitative Approach
Dynamic partial-order reduction for model checking software
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Software and the Concurrency Revolution
Queue - Multiprocessors
Iterative context bounding for systematic testing of multithreaded programs
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Scheduling considerations for building dynamic verification tools for MPI
PADTAD '08 Proceedings of the 6th workshop on Parallel and distributed systems: testing, analysis, and debugging
Communications of the ACM - Remembering Jim Gray
Amdahl's Law in the Multicore Era
Computer
Proceedings of the 14th ACM SIGPLAN symposium on Principles and practice of parallel programming
Formal verification of practical MPI programs
Proceedings of the 14th ACM SIGPLAN symposium on Principles and practice of parallel programming
MODIST: transparent model checking of unmodified distributed systems
NSDI'09 Proceedings of the 6th USENIX symposium on Networked systems design and implementation
Distributed dynamic partial order reduction based verification of threaded software
Proceedings of the 14th international SPIN conference on Model checking software
Principles of Parallel Programming
Principles of Parallel Programming
MDAT: a multithreading debugging and testing tool
Proceeding of the 44th ACM technical symposium on Computer science education
Hi-index | 0.00 |
With the increasing emphasis on exploiting concurrency efficiently and correctly, the lack of suitable pedagogical material for teaching concurrency is a growing problem. In this paper, we summarize a recently concluded class as well as some independent projects in the area of concurrency and multi-core computing that offer some insights to address this problem. We examine background papers, the teaching of low level concurrency, and the teaching of threading and message passing. The use of dynamic formal verification tools in a class setting is discussed in some detail. We conclude with a summary of pedagogical material being assembled, including exercises from a popular textbook on MPI solved using our dynamic verifier ISP. Our observation is that the teaching of concurrency is greatly facilitated by the use of dynamic push-button formal verification tools that can handle non-trivial concurrent programs. Given the growing number of publications on how to teach concurrency as well as employ new programming approaches, our work addresses the somewhat neglected topic of using modern dynamic formal verification methods within the context of widely used concurrency approaches and libraries.