June 14, 2009
June 14, 2009
June 17, 2009
14.722.1 - 14.722.8
Incorporating Parallel Computing in the Undergraduate Computer Science Curriculum
Parallel and distributed computing are subjects generally reserved for graduate programs. With the design of the multi-core architecture, it is essential that parallel design of software be integrated into the undergraduate computer science curriculum. Parallel programming represents the next turning point in how software developers write software. This paper will study different approaches that are used by different institutions of higher education around the world to integrate parallel computing into their curriculum.
Teaching parallel computing concepts to undergraduate students is not an easy task. Educators need to prepare their students for the parallel era.
A fundamental technique by which computations can be accelerated is parallel computation. The main reason for executing program instructions in parallel is to complete a computation faster. However, majority of programs today are incapable of much improvement through parallelism, since they have written assuming that instructions would be executed sequentially1. Since sequential computer performance has increased for decades; parallelism has not been a significant part of programming. Improvements in the sequential performance have been due to the combination of technological improvements and the incorporation of parallelism into sequential processors. Hidden parallelism with increasing clock speeds has allowed each succeeding generation of processor chip to execute programs faster, while maintaining the delusion of sequential execution1. Given current technologies, sequential program execution is approaching its maximum speed. To be able to achieve performance improvements, we need programs that have multiple instruction streams that operate simultaneously. By the advent of the first multi-core chip in 2005, it was observed that the existing software cannot exploit multi- chip directly. Programs that cannot exploit multi-core chips do not realize any performance improvements. Another observation was that most programmers do not know how to write parallel programs. Programs need to change, and for that to happen, programmers need to learn how to write parallel programs. Parallel programs need to be scalable. A parallel program is scalable if it is capable of using progressively more processors. It is important to achieve scalable parallelism.
The computer industry is rapidly moving toward multi-core architectures also known as chip multiprocessors (CMP), where multiple cores can independently execute different threads. The computing platforms are being designed with microprocessors that have multiple execution cores on a single chip. It is predicted that the number of cores on a single chip is going to rapidly grow into tens, or even hundreds, of cores on a single chip. Moore’s law 2 states that the number of transistors on a single chip should double every eighteen months. As the number of transistors doubled every eighteen months, so did the speed of the processors. However, after 2003 the speed of processors didn’t keep up with the increase in number of transistors on the chip. Rather
Minaie, A., & Sanati-Mehrizy, R. (2009, June), Incorporating Parallel Computing In The Undergraduate Computer Science Curriculum Paper presented at 2009 Annual Conference & Exposition, Austin, Texas. 10.18260/1-2--5482
ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2009 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015