The IEEE Computer Society Technical Committee on Parallel Processing (IEEE/TCPP)
has been working to formulate a core curriculum for CS/CE undergraduates for parallel and distributed computing. The core curriculum will be based on learning outcomes, level of coverage, and where-in current core courses-these parallelism topics can be introduced and taught. (Learn more
about the IEEE/TCPP working group and how to get involved.) TCPP launched its Spring Early Adopter Program
with support from the Intel Academic Community
and NSF. 16 universities
were chosen from the United States, Europe, Latin America and India. These early adopters will be asked to present their work in a follow-up curriculum workshop EduPar-11 to be held at IEEE/IPDPS in May 2011
This month’s feature school is Loyola University Chicago, where Konstantin Läufer, George K. Thiruvathukal, and Chandra Sekharan have proposed a model for incorporating Parallel and Distributed Computing (PDC) topics into undergraduate curriculum. They have distilled a set of consistent, regularly offered and required three-week core and advanced PDC modules from their previously offered PDC content. They will also be presenting at the curriculum workshop EduPar-11 at IPDPS in May 2011.
Loyola University Chicago has been teaching PDC topics in undergraduate curricula since 1997. For almost a decade, they focused mostly on a regular single-course offering. However, for the last four years, they switched to a cross-curricular effort involving about seven advanced/elective courses in response to scheduling needs. Now, based on their collective experience, the growing importance and broader availability of novel architectures, and general progress on the relevant paradigms, they are proposing a new model for incorporating PDC topics into their undergraduate curriculum.PROPOSED SET OF REQUIRED CORE MODULES
In an effort to regularly and consistently expose all undergraduate majors to PDC core knowledge, Konstantin, George, and Chandra have decided to push a selection of suitable topics down into required foundation courses typically taken in the sophomore year. They are designing the following three-week core PDC modules (20% of our 15-week semester or 30% of a 10-week quarter), consisting mostly of suitable K and C level topics (taken from the Spring Early Adopter Abstract):
_ Introduction: to be offered every semester in our CS2 course (CS 271). Introductory topics from all areas, such as parallel control statements; shared memory language extensions and libraries; tasks, threads, and synchronization; and performance considerations. We are envisioning C# as the teaching language (at least for this module) because it provides well-designed mechanisms that correspond to these topics along with foundationally sound teaching materials ; thanks to the Mono Project, C# and other .NET CLI languages can be used on all major platforms.
_ Programming: to be offered every semester in our intermediate object-oriented development course (CS 313). Paradigms (mostly thread-based) and related semantics and correctness issues; parallel programming paradigms; parallel programming notations; semantics and correctness issues; and select concurrency topics. C# would be an effective teaching language for this module and the entire course.
_ Architecture: to be offered every fall in our intro systems/architecture course (CS 264). The various dimensions of the architectural design space, memory hierarchy, data representation, and performance metrics.
_ Algorithms: to be offered every spring in our data structures and algorithms course (CS 363). Models of computation and complexity, basic algorithmic paradigms, and specific problems and their algorithmic solutions.
Several advanced modules in programming and distributed computing, typically offered every three semesters, are also under development:
_ Advanced Programming: parallel programming and concurrency topics from a programming language principles and paradigms perspective-including actors, software transactional memory, and data parallelism- using F# or Scala for programming projects. This module will be incorporated in the following courses:
– CS 372: Programming Languages
– CS 373: Advanced Object-Oriented Development
_ Distributed Foundations: foundational topics including architecture classes, models and complexity, and concurrency topics. This module will be incorporated in the following courses:
– CS 339: Distributed Systems
– CS 364: High-Performance Computing
_ Distributed Programming and Applications: languages, frameworks, and software architectures for distributed computing-including client-server and message-based approaches-, semantics and correctness issues, performance issues, and advanced topics. This module will be incorporated in the following courses:
– CS 322: Software Development for Wireless/ Mobile Devices
– CS 338: Server-Side Software Development
– CS 342: Web Services Programming
Meet the Rock Stars from Chicago who evangelize parallelism in their spare time!
Konstantin Läufer is a professor of computer science at Loyola University Chicago. He majored in physics at the University of Konstanz, Germany, attended Rutgers University, New Jersey, as an exchange student, and received a PhD in computer science from the Courant Institute at New York University in 1992 prior to joining Loyola. His research interests include programming languages, software architecture, and distributed and pervasive computing systems, as well as applications in bioinformatics, environmental science, and digital humanities. Konstantin co-directs Loyola's Emerging Technologies Laboratory (ETL), an environment for experimental research in the above-mentioned areas, and is involved in several open-source software and documentation projects. He also serves as an editor for the Scientific Programming department of the IEEE/AIP Computing in Science and Engineering Magazine (CiSE). Konstantin has received research funding from government agencies and private corporations. He is a co-inventor on two patents owned by Lucent Technologies, where he was a research consultant from 1996 to 2000.
George K. Thiruvathukal is a professor of computer science at Loyola University Chicago in the CS Department, where he also serves as the department's computing director. Since 2009, he has served as co-director (with Steve Jones) of the Center for Textual Studies and Digital Humanities at Loyola University, where they both work with Peter Shillingsburg on tools to enable collaborative textual scholarship (among other things). George also co-direct the CS department's Emerging Technologies Laboratory with Konstantin Läufer, where they work on all things concurrent, parallel, embedded, and distributed--so called pervasive computing technologies. George holds a Ph.D. from the Illinois Institute of Technology in Chicago, Illinois. In his spare time, he enjoys reading, history (and computing history), politics, world travel, and music (piano).
Chandra N. Sekharan is currently Professor and Chair of the department of computer Science and Assistant to the Provost at Loyola University of Chicago. He was a Fellow of the Fellows program of the American Council on Education during 2009-2010. He received a BS in Electrical Technology and Electronics degree, an MS in Computer Science from the Indian Institute of Science, Bangalore, India and PhD in Mathematical Sciences from Clemson University. His research interests are in the general areas of parallel and distributed computing, graph algorithms, and wireless networking in which he has published extensively and received extramural funding from government agencies and private companies.