Conference Paper

Introducing Parallel Programming in Undergraduate Curriculum

Authors:
To read the full-text of this research, you can request a copy directly from the authors.

Abstract

This paper summarizes our experiences and findings in teaching the concepts of parallel computing in two undergraduate programming courses and an undergraduate hardware design course. The first is a junior-senior level elective course Object-Oriented Programming using C++ and Java. The second is a sophomore-level required course on Advanced C Programming. The third course, Introduction to Digital System Design, is also a sophomore-level required course. We will describe how parallel concepts have been integrated in the courses, the assessments, and the results.

No full-text available

Request Full-text Paper PDF

To read the full-text of this research,
you can request a copy directly from the authors.

... In the last decade, there have been important experiences in adding parallel computing and multi-core/GPU programming to undergraduate courses in computer science and computer engineering programs. Authors in [2] present the introduction of parallel computing concepts into computer engineering courses for undergraduates. In [5], a detailed study is presented on the experience of teaching parallel programming to experienced students and students with no prior knowledge about parallel computing. ...
... Parallel computing has been gaining traction in Computer Science curriculum, thereby reflecting on how parallelism is being actually taught [5], [12], [25], [29], [30], [34], [36]. In this section, we present some relevant related work towards this direction. ...
... See Appendix A for links to these syllabi, lectures, and lab assignments. Our work complements other related efforts to support parallel and distributing computing education [4,2,10]. ...
Article
Full-text available
We present a model for incorporating parallel and distributed computing (PDC) throughout an undergraduate CS curriculum. Our curriculum is designed to introduce students early to parallel and distributed computing topics and to expose students to these topics repeatedly in the context of a wide variety of CS courses. The key to our approach is the development of a required intermediate-level course that serves as a introduction to computer systems and parallel computing. It serves as a requirement for every CS major and minor and is a prerequisite to upper-level courses that expand on parallel and distributed computing topics in different contexts. With the addition of this new course, we are able to easily make room in upper-level courses to add and expand parallel and distributed computing topics. The goal of our curricular design is to ensure that every graduating CS major has exposure to parallel and distributed computing, with both a breadth and depth of coverage. Our curriculum is particularly designed for the constraints of a small liberal arts college, however, much of its ideas and its design are applicable to any undergraduate CS curriculum.
Conference Paper
This paper presents a methodology and framework designed to assist students in the process of finding appropriate task decomposition strategies for their sequential program, as well as identifying bottlenecks in the later execution of the parallel program. One of the main components of this framework is Tareador, which provides a simple API to specify potential task decomposition strategies for a sequential program. Once the student proposes how to break the sequential code into tasks, Tareador 1) provides information about the dependences between tasks that should be honored when implementing that task decomposition using a parallel programming model; and 2) estimates the potential parallelism that could be achieved in an ideal parallel architecture with infinite processors; and 3) simulates the parallel execution on an ideal architecture estimating the potential speed--up that could be achieved on a number of processors. The pedagogical style of the methodology is currently applied to teach parallelism in a third-year compulsory subject in the Bachelor Degree in Informatics Engineering at the Barcelona School of Informatics of the Universitat Politècnica de Catalunya (UPC) - BarcelonaTech.
Conference Paper
This work explores the conceptual understanding attained by students in the area of parallel computing. Parallelism is continuing to grow as an important topic area in computer engineering and computer science. Even as it increases in popularity, only a limited amount of research has been done to determine how well students construct their knowledge of the field. This work aims to begin exploring the structure of parallel computing as understood by undergraduate computer engineering students. A small group of students was selected to create concept maps that illustrate their understanding. These maps have been used in many different areas of science and engineering. The maps were then analyzed and compared to a reference concept map developed by a group of computer engineering faculty. The results of this analysis revealed that students in this sample demonstrated a limited knowledge of parallelism and concurrency through the organization of their concept maps. The analysis of the concept maps also provides evidence that there is a moderate level of understanding of the challenges to implementing and controlling concurrency. However, the linkages created in the maps reveal students' misinterpretation of the goals of exploiting parallelism.
Article
This book presents object-oriented programming with C++ and Java, which are today’s two dominant languages for such programming. The presentation format is mostly comparative, all the way from the basic language constructs to applicationlevel issues dealing with graphics programming, network programming, and database programming. This book is intended for a reader who is well-conversant with the important features of C: pointers, strings, arrays, and structures. The author strongly believes in the notion that, in addition to the syntax, it is essential to also show a programming language through its applications to fully establish its beauty and power. Teaching a programming language divorced from its applications – not uncommon in many educational programs – would be like teaching English through just its grammar. This book grew out of an attempt to meet a specific academic need for a comprehensive educational program in object-oriented programming. We wanted a program that would not be too indoctrinating with regard to any one style (or any one language, since language often dictates style) of object-oriented programming. While programming
Conference Paper
The recent progression of modern computer architectures from serial to multi-core to many-core has raised numerous questions about the placement of parallel computing topics in undergraduate computer science curricula. While several papers have explored how programming and algorithms courses might introduce parallel programming topics, there has been very little discussion of the changes needed in computer organization and architecture coursework to help students understand key issues about the behavior of these platforms. To increase the relevance of these courses and to tackle more modern architectural issues, we propose extending the performance coverage of a traditional computer organization course to include an exploration of the quantitative characterization of a program's performance on a variety of architectural platforms, including modern GPU hardware. In this paper, we outline the changes made to the Computer Organization and Design course at University of Wisconsin -- Eau Claire. These modifications included a 3 week unit on the basics of parallel and GPU architectures, along with a tiered project on program optimization.
Article
Parallelism is the future of computing and computer science and should therefore be at the heart of the CS curriculum. Instead of continuing along the evolutionary path by introducing parallel computation "top down" (first in special junior-senior level courses), we are taking a radical approach and introducing parallelism at the earliest possible stages of instruction. Specifically, we are developing a completely new freshman-level course on data structures that integrates parallel computation naturally, and retains the emphasis on laboratory instruction. This will help to steer our curriculum as expeditiously as possible toward parallel computing. Our approach is novel in three distinct and essential ways. First, we will teach parallel computing to freshmen in a course designed from beginning to end to do so. Second, we will motivate the course with examples from scientific computation. Third, we use multimedia and visualization as instructional aids. We have two primary objectives: ...
Curriculum initiative on parallel and distributed computing -core topics for undergraduates
  • Working Group
NSF/IEEE-TCPP Curriculum Working Group. Curriculum initiative on parallel and distributed computing -core topics for undergraduates. http://www.cs.gsu.edu/ tcpp/, December 2012.
Development of a Concept Inventory to Measure Student Understanding of Concurrency in a Revised Undergraduate Computer Engineering Curriculum
  • M Yale
  • D Bennett
  • V Pai
  • N Pq