A New Look at Parallel Computing in the Computer Science Curriculum

2 downloads 4867 Views 21KB Size Report
parallel computing and its impact on the Computer Science curriculum. .... versity in 1991 and Masters and Bachelors degrees in Electrical Engineering at ...
A New Look at Parallel Computing in the Computer Science Curriculum Lubomir Ivanov (moderator), Iona College, New Rochelle, NY, [email protected] Haldun Hadimioglu, Polytechnic University, Brooklyn, NY, [email protected] Mark Hoffman, Quinnipiac University, Hamden, CT, [email protected] ABSTRACT Parallel computing is essential: From molecular biology, astrophysics and weather prediction to aero- and hydro-dynamic engineering, robotics, and even home electronics design, parallel computing offers fast, efficient solutions to complex problems that previously could not have been attempted. Parallel computing is available and affordable: With the advent of multicore architectures and cheap, high-performance interconnection networks (Gigabit Ethernet, Myrinet, Infiniband), parallel computers and inexpensive clusters have entered the mainstream of computing. In addition, more and more supercomputing centers are established and equipped with the latest high-performance hardware to allow scientists unprecedented access to enormous computational power. Parallel computing is difficult: Parallel computing requires a different approach to algorithmic problem solving compared to traditional computing. It also requires a deeper understanding of the interaction between software and hardware, the underlying principles of programming language design, concurrent operating systems, networking, and computer architecture. While some aspects of parallel computing are natural, many are extremely challenging both in terms of understanding and implementation. Thread interleaving, shared access synchronization, race conditions, load balancing, parallel data structures are only some of the issues confronting parallel computing experts today. This panel aims to address the issues associated with the widespread advent of parallel computing and its impact on the Computer Science curriculum. Some of the questions we will explore include: • • • •

"How early should parallel computing be introduced into the curriculum?" "How much emphasis on parallel/distributed computing vs. traditional computing should there be?" "What types of parallel computing projects are appropriate at the freshman / sophomore / junior / senior levels of studies?" "How much emphasis should be placed on interdisciplinary projects involving parallel computing?"

The panelists will attempt to answer these questions from the points of view of a parallel algorithms/software engineer, a parallel hardware designer, scientific computing expert, and a curriculum development specialist.

POSITION STATEMENTS: Lubomir Ivanov, Iona College, New Rochelle, NY Parallel computing is complex and challenging: This is one of the main reasons often used to justify why parallelism is usually not discussed in the Computer Science curriculum until senior year, if at all. Yet, the complexity of parallel computing is precisely the reason why it must be introduced early in the curriculum. In order for students to gain a working knowledge and skills in developing parallel algorithms and implementing parallel software and hardware, they must be exposed to parallel computing material in various courses throughout the curriculum. This exposure should ideally begin with the introductory CS course, where the concept of threads can be introduced through simple graphics or the use of Mindstorm robots. The CS2 course can deepen students’ knowledge of threads by discussing more advanced issues such as thread synchronization, deadlocks, thread pools, etc. By this time students have sufficient experience to apply their knowledge to some smaller-scale multithreaded projects, which could be of interdisciplinary nature. The Computer Organization course offers many opportunities for discussing parallel algorithms and design from a hardware perspective and for emphasizing the interaction between processes/threads, the operating system, and the underlying parallel hardware. Hands on lab projects in the hardware lab can further emphasize the importance of parallelism in hardware systems such as robots and embedded systems. Other natural places for the discussion of parallelism are the operating systems, programming languages and compiler design courses. One or more courses on parallel computing at the junior/senior level can formalize what students have learned in their earlier courses and deepen students' knowledge by discussing some finer points of parallel computing, comparing and contrasting parallel computing approaches such as distributed vs. shared memory parallelism, and developing more specialized programming skills such as MPI programming. Finally, an interdisciplinary capstone project course will allow students not only to apply the parallel computing skills and knowledge they have acquired to a larger, realistic project, but will also emphasize the interdisciplinary connections of Computer Science to other disciplines such as Biology, Physics, Mathematics, and Economic to name a few.

Mark E. Hoffman, Quinnipiac University, Hamden, CT A review of Computing Curricula 2001 (CC2001) reveals that parallelism is more or less addressed in a limited number of core topics (Event-driven programming (PF5), Multiprocessing and alternative architectures (AR7), and Concurrency (OS3)) and more specifically as an elective topic (Parallel algorithms (AL11)). None of the concepts covered in the introductory curriculum (Computing Curricula 2001,32) specifically include parallelism. Much has changed since CC2001 was published. In particular, parallelism, for years considered poised for prime time, is now having an impact with affordable and widely-available multicore architectures. It seems we are not effective preparing computer science graduates to productively contribute in a parallel computing dominated environment. In rethinking the curriculum, in might be worthwhile to extend the debate about how best to introduce students to the discipline. However, rather than objects early vs.

objects late vs. no objects at all, we might consider parallelism early. Since parallelism is considered hard, this requires careful thinking and preparation. Not long ago, in the Communications of the ACM (October 2001, 129-130), Westfall proposed that “Hello World” be truly object-oriented using a separate class and a method call. Clearly, this implies a philosophical stance, but it does extend the notion that not all needs to be explained to students on the first day. Suppose, as a philosophical approach, students write “Hello Worlds” as their first program? Threads need not be fully explained at the time; however, it creates a way of thinking not unlike that promoted by the objectoriented advocates. From this point, the curriculum can build on a recurring theme of parallelism as it currently does with abstraction.

Haldun Hadimioglu, Polytechnic University, Brooklyn, NY The emergence of multi-core processors has yet to affect Computer Science education: Parallel processing must be more strongly addressed in undergraduate Computer Science curricula, instead of being mostly focused on at the graduate-level. On the other hand, the development of efficient new software paradigms and models of execution has not been realized in spite of more than forty years of research. How will future of Computer Science look when such complex systems as massively parallel, selfhealing, reconfigurable, nano- and bio-inspired computers, are employed? Will Computer Science be able to handle these hardware advances and retain a high standing? Computer Science can make use of these technological advances as tools to bolster its image so that it remains an attractive field for students to pursue in the future. However, drastic measures must be taken now. Computer Science has to be more multidimensional, outreaching and flexible. I believe that the foundation of Computer Science must be revised, and the extended foundation be distributed throughout high school and college years as is the case with Mathematics, Physics and Chemistry. This more comprehensive foundation would help students become more knowledgeable and flexible, allowing them to switch from one area to another quickly in response to technology shifts.

ABOUT THE PANELISTS Lubomir Ivanov is an Associate Professor and Chair of the Computer Science department at Iona College, NY, which he joined in 1999. Prior to that, he was an instructor at Stevens Institute of Technology, NJ, where he completed his Ph.D. degree in Computer Science. For the past twelve years, Dr. Ivanov has taught a variety of courses in the area of computer hardware, operating systems, and parallel computing, as well as other courses such as Data Structures and Algorithms, and Theory of Computing. His main research interests are in the theory of computing, with particular emphasis on the theory of complex dynamical systems such as cellular automata and continuous time/space automata, as well as in formal verification of hardware.

Mark Hoffman is a Professor of Computer Science, and has been at Quinnipiac University since 2001. He has taught courses in Computer Architecture and Organization, Operating Systems, Data Structures, and Algorithms, among others. Dr. Hoffman earned his Ph.D. from Polytechnic University in Brooklyn, NY in 2001. Prior to joining Quinnipiac University he worked for 16 years in IT, after spending 14 years teaching high school mathematics and science. Dr. Hoffman's research interests include systemlevel Computer Science education, computer literacy, the impact of the Internet on society, and content-based image retrieval using shape. Haldun Hadimioglu is an Industry Professor of Computer Science at Polytechnic University in New York. He received his Ph.D. in Computer Science at Polytechnic University in 1991 and Masters and Bachelors degrees in Electrical Engineering at Middle East Technical University, Ankara, Turkey. His research areas include parallel processing, application specific processor design, reconfigurable computing and nano systems. His teaching interests are Digital Logic, Computer Architecture and Parallel Processing.

Suggest Documents