Practical parallel and concurrent programming (original) (raw)

Strategies for preparing computer science students for the multicore world

Proceedings of the …, 2010

Multicore computers have become standard, and the number of cores per computer is rising rapidly. How does the new demand for understanding of parallel computing impact computer science education? In this paper, we examine several aspects of this question: (i) What parallelism body of knowledge do today's students need to learn? (ii) How might these concepts and practices be incorporated into the computer science curriculum? (iii) What resources will support computer science educators, including non-specialists, to teach parallel computing? (iv) What systemic obstacles impede this change, and how might they be overcome? We address these concerns as an initial framework for responding to the urgent challenge of injecting parallelism into computer science curricula.

Basic Parallel and Distributed Computing Curriculum

ArXiv, 2018

With the advent of multi-core processors and their fast expansion, it is quite clear that {\em parallel computing} is now a genuine requirement in Computer Science and Engineering (and related) curriculum. In addition to the pervasiveness of parallel computing devices, we should take into account the fact that there are lot of existing softwares that are implemented in the sequential mode, and thus need to be adapted for a parallel execution. Therefore, it is required to the programmer to be able to design parallel programs and also to have some skills in moving from a given sequential code to the corresponding parallel code. In this paper, we present a basic educational scenario on how to give a consistent and efficient background in parallel computing to ordinary computer scientists and engineers.

A short unit to introduce multi-threaded programming

Journal of Computing Sciences in Colleges, 2009

We argue for the inclusion of concurrent programming in core courses of the computer science major and present a brief unit that quickly introduces some key concepts. * c CCSC, 2009. This is the author's version of the work. It is posted here by permission of CCSC for your personal use. Not for redistribution.

A Module-based Approach to Adopting the 2013 ACM Curricular Recommendations on Parallel Computing

Proceedings of the 46th ACM Technical Symposium on Computer Science Education - SIGCSE '15, 2015

The widespread deployment of multicore systems over the last decade has brought about major changes in the software and hardware landscape. The resulting importance of parallel computing is reflected in the 2013 Curriculum Guidelines developed by the joint ACM/IEEE taskforce. The document recommends increased coverage of parallel computing and describes a new Knowledge Area on this topic. These recommendations have already been adopted by several universities in the form of new parallel-programming courses. Implementing the recommendations in a complete curriculum, however, poses many challenges, including deciding on existing material to be removed, complying with administrative and ABET requirements, and maintaining caps on graduation credit hours. This paper describes an alternative approach for adopting the 2013 curricular recommendations on parallel computing. Specifically, we use a modulebased approach that introduces parallel computing concepts and reiterates them through a series of short, self-contained modules taught across several lower-division courses. Most of these concepts are then combined into a new senior-level capstone course on parallel programming. Each module covers parallelism aspects in the context of a conventional computer science topic, thus enabling us to include parallel computing without a major overhaul of the curriculum. Evaluations conducted during the first year show encouraging results for this early-and-often approach in terms of learning outcomes, student interest, and confidence gains.

How to Write Parallel Programs: A Guide to the Perplexed

ACM Computing Surveys (CSUR), 1989

We present a framework for parallel programming, based on three conceptual classes for understanding parallelism and three programming paradigms for implementing parallel programs. The conceptual classes are result parallelism, which centers on parallel computation of all elements in a ...

CONCURRENT PROGRAMMING: A CASE STUDY ON DUAL CORE COMPUTERS

2008

Recent innovations in computing technology have resulted in the development of multi core CPU's which are capable of performing multiple tasks simultaneously. On the other hand, many algorithms are implemented sequentially, even though some tasks lend themselves to being able to be performed more efficiently in parallel on multi core CPU's. This essay presents a review of current literature in concurrent programming techniques, including Shared State Concurrency, Message Passing, Concurrency, Software Transactional Memory and Declarative Concurrency. Several programming languages are compared with respect to how concurrent programming is supported. A parallel implementation of the introsort algorithm is provided as a case study. The sorting time was measured on single and dual core CPU's for data sets of various sizes, resulting in 32% improvement in total sort time for the concurrent version on the dual core computer. Although this demonstrates the benefits of programming for concurrency on multi core computers, it stands to be further improved. It is recommended that the techniques discussed be applied in practice in libraries of algorithms.

Focusing Undergraduate Curriculum On Parallel Computing

This paper outlines an approach to reshape the existing undergraduate CS curriculum. The introduction of parallel computing concepts is based on a software engineering framework. The details of the new curriculum are presented in terms of educational objectives, mathematical background, core courses, and innovations in the teaching method, such as the use of tools and laboratories.

Teaching High Performance Computing through Parallel Programming Marathons

2019 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW), 2019

Parallel and distributed programming is essential for exploiting the processing power of modern computing platforms. However, during the first years of a Computer Science course, students usually learn problem solving techniques, data structures and programming paradigms that are inherently sequential, hindering the transition to parallel architectures. Parallel Programming Marathons organized in Brazil are similar to other Programming Competitions around the world and have been used for teaching and stimulating undergraduate and graduate students into learning to "think in parallel" and to develop applications for different parallel architectures, including multicores, clusters and accelerators. This paper presents the structure of this Parallel Programming Marathon and an overview of how it supports regional and national contests. Also, this work presents use cases on Parallel and Distributed Computing course from two different Brazilian universities that use a challenge...

A minicourse on multithreaded programming

Available on the Internet from http://theory. lcs. mit. edu/~ cilk, 1998

These notes contain two lectures that teach multithreaded algorithms using a Cilklike 7, 9, 11] model. These lectures were designed for the latter part of the MIT undergraduate class 6.046 Introduction to Algorithms. The style of the lecture notes follows that of the textbook by Cormen, Leiserson, and Rivest 8], but the pseudocode from that textbook has been\ Cilki ed" to allow it to describe multithreaded algorithms.

Teaching parallel processing: development of curriculum and software tools

ACM Sigcue Outlook, 1996

This paper presents an approach to education in Parallel and Distributed Processing undertaken in the Technical University of Gdansk and Technical University of Wroclaw. The paper gives a detailed structure of the project entitled "Teaching Parallel Processing: Development of Curriculum and Software Tools" which was started in 1994 and will be finish in 1997. Two universities from Poland: Technical University of Gdansk and Technical University of Wroclaw and two universities from EC countries: University Autonoma of Barcelona from Spain and University Nova of Lisbon from Portugal participate in the presented project. The main aim of the project is to develop existing curricula of Computer Science specialisation and to establish specialisation concerned with parallel and distributed processing at Polish universities.