International Working Group Introduction Software Engineering for parallel Systems (SEPARS) German Computer Science Society (Gesellschaft fuer Informatik e.V.) http://www.multicore‐systems.org/separs

Parallelism in Curricula – An International Survey

David J. Meder Victor Pankratius Walter F. Tichy Karlsruhe Institute of Karlsruhe Institute of Karlsruhe Institute of Technology Technology Technology 76131 Karlsruhe, Germany 76131 Karlsruhe, Germany 76131 Karlsruhe, Germany [email protected] [email protected] [email protected]

Last update: December 3, 2009

Download latest version at: http://www.multicore‐systems.org/separs/downloads/GI‐WG‐SurveyParallelismCurricula.pdf

Contents

Introduction...... II Summary of Findings...... VII

Overview – Number of Courses and Categories ...... XIII Courses at American Universities...... 15 Courses at U.K. Universities ...... 44 Courses at German Universities...... 53 Courses at Universities in other Countries ...... 87

Instructors...... 109

I Introduction

Introduction The intention of this survey is to provide an overview of how parallelism and multicore/manycore topics are addressed in current curricula. Web sites of international universities were used as a source of information. The survey lists courses with titles, instructors, keywords, abstracts, and presents a summary.

Selection Criteria A complete and unbiased selection is difficult, because of the large amount of information, many data sources, changing Web sites, different languages, or material that was not available online. Therefore, we followed a pragmatic approach to get a first approximation of how parallelism is currently taught. We started with top universities listed in popular rankings and manually added universities with well‐known groups that offer courses on parallelism on a regular basis. In addition, we added universities upon request, based on feedback that was sent to us. This is selection is incomplete and represents only a starting point ‐ we plan to update this document in the future and encourage readers to send us information that might have been omitted so far.

Universities The selection for the categories “American universities”, “U.K. universities”, and “other universities” is based on the following ranking: • “World University Ranking” published by The Times (November, 9th 2008). From the best 50, the first 20 were chosen (total score of 55 or higher on a scale from 1 to 100). From this selection, 11 universities were also in the top 20 in the ranking of “America’s Best Graduate Schools” published by U.S. News in 2007.

As no Australian universities were in the top 20 of the “World University Ranking”, we chose the five best Australian Universities in the “Technology” category of the “World University Ranking”, and added a few well‐known universities in the area of parallelism.

German universities were chosen from popular national rankings. Five were chosen from the “Wirtschaftswoche” magazine, four from the Computer Science Category of the CHE University Ranking. Others with regular lectures on parallelism were added manually.

Other countries were not analyzed in detail. Please send us popular university rankings for your country or parallelism courses at your university if you want to see them included in our survey.

Other universities were added upon request.

Courses We focus entirely on teaching and count courses/lectures that were offered on a regular basis to university students. All courses must have been taught at least once. We did not count tutorials, independent labs, courses offered for industry, or planned courses.

The courses were collected from the university course catalogs and from department home pages. We also collected computer science courses addressing parallelism that were not offered in computer science departments (e.g., math and physics departments).

II Introduction

We used the following key‐words (and substrings thereof) to find courses (case‐insensitive):

All Universities: Cell, cluster, concurrency, concurrent, distributed, grid, gpgpu, gpu, hpc, mpi, multicore, multi-core, multiprocessor, multi-processor, openmp, parallel, scientific computing

German Universities: Previous terms in English, the German translations, and the following additional terms (and substrings thereof): mehrkern, mehrprozessor, multiprozessor, nebenläufig, parallel, verteilt, wissenschaftlich

Finally, we manually checked the departments where the courses that we found were offered. If there were other courses related to parallelism, they were added to the list.

We might have missed courses that were not listed in the course catalog, which did not have appropriate descriptions or titles, or which were not visible on the Web.

Classification of Courses The courses were categorized as follows, based on information obtained from the course catalog: • Algorithms • Architecture / hardware • Programming • Distributed computing • Multicore Programming • Scientific computing / HPC • Theory of parallel computing • No classification (no title or other information available, or does not fit into other classes)

More details on each class are presented later on.

Contact Do you have suggestions, comments, change requests? Do you miss your university or a course from your university?

Send us an E‐Mail: multicore‐[email protected]‐karlsruhe.de

III Introduction

Universities in the Survey

TU Ilmenau, DE ...... 62 Australian National University, AUS ...... 88 TU Munich, DE...... 64

California Institute of Technology, USA...... 16 Universitatea Politehnica din Bucuresti, RO...106 Carnegie Mellon University, USA...... 18 University of Augsburg, DE...... 66 Cornell University, USA...... 20 University of California, Berkeley, USA...... 33 University of California, Los Angeles, USA...... 35 ETH Zürich, CH ...... 90 University of Cambridge, GB ...... 48 University of Duisburg‐Essen, DE ...... 67 Georgia Institute of Technology, USA...... 22 University of Erlangen‐Nürnberg, DE ...... 69 University of Frankfurt, DE ...... 72 Harvard University, USA ...... 26 University of Hannover, DE ...... 74 HU Berlin, DE ...... 54 University of Illinois, USA...... 37 University of Kiel, DE ...... 77 Imperial College London, GB ...... 45 University of Leipzig, DE ...... 78 University of Melbourne, AUS...... 97 Jerusalem College of Technology, IL...... 93 University of Michigan, USA ...... 39 University of New South Wales, AUS ...... 99 Karlsruhe Institute of Technology, DE ...... 75 University of Oxford, GB...... 50

University of Paderborn, DE ...... 79 Massachusetts Institute of Technology, USA ...28 University of Passau, DE ...... 80 Monash University, AUS ...... 94 University of Queensland, AUS...... 101

University of Saarland, DE ...... 81 RWTH Aachen, DE...... 55 University of Singapore, SGP ...... 103

University of Stuttgart, DE...... 83 Stanford University, USA ...... 31 University of Sydney, AUS ...... 102 Tsinghua University, PRC ...... 96 University of Tennessee, Knoxville, USA ...... 41 TU Braunschweig, DE...... 57 University of Tokyo, J...... 105 TU Chemnitz, DE ...... 58 University of Toronto, CDN ...... 42 TU Darmstadt, DE ...... 59 University of Wuppertal, DE...... 85 TU Dresden, DE...... 60

IV Introduction

Legend used for course listing ███████ Degree courses: Courses offered at the university: Link to course requirements/curriculum overview

Address of the university

For each university, a net diagram will show a quick profile of the parallelism courses it offers. It contains the number of courses for each category. Various colors are used to distinguish between undergraduate, graduate, and “not defined” levels.

Course Header

Course URL / course number ███████▒ Department Undergraduate/graduate Offered in years Color codes for classification

Instructor(s)

Keywords

Color Codes for Course Classification

Color Class Related Topics Code █ Algorithms • Design of parallel algorithms • Specific parallel algorithms, such as sorting, searching • Parallelization of sequential algorithms █ Architecture, Hardware • General architecture of parallel computers: ‐ Shared/distributed memory systems ‐ Homogeneous/heterogeneous ‐ Memory access techniques • Other hardware‐related topics relevant for parallelism

V Introduction

█ Programming • Libraries for parallel programming (MPI, OpenMP, etc.) • Parallel programming techniques • Design techniques for parallel applications (task/data parallelism, etc.) • Practical programming exercises █ Distributed Computing • Architecture of distributed computers • Programming of distributed computers • Applications for distributed computers Each with focus on clusters or grids █ Multicore Programming • Architecture of multi‐core computers • Programming of multi‐core computers • Cell, Dual‐/Quadcore, Niagara, GPUs, etc. █ Scientific Computing, HPC • Techniques for scientific problem solving, e.g., numerical equations on parallel computers • Design of algorithms with focus on high performance computing █ Theory of Parallel Computing • Basics on theory of parallelization • Synchronization, scheduling • Problems such as , livelocks, … • Terms such as speedup, efficiency ▒ No Classification Course on parallelism, but does not fit into any other class

One course may belong to more than one class. There may be overlaps between classes. For example, “Multicore Programming” may overlap with “Architecture/Hardware” and “Programming”, but addresses issues from the perspective of Multicore‐computers. Other overlapping classes are “Distributed Computing”/“Architecture/Hardware” and “Scientific Computing/HPC”/ “Distributed Computing.”

Abbreviations

Ass. Prof. Assistant Professor Asso. Prof. Associate Professor GPGPU General‐Purpose computation on Graphic Processing Units HPC High Performance Computing

VI Summary of Findings

Summary of Findings

All Universities

• 146 courses addressing parallelism

Top categories for graduate courses Top categories for undergraduate courses • “Algorithms” • ”Theory of Parallel Computing” • “Programming” • “Programming” • “Theory of Parallel Computing” • “Scientific Computing, HPC”

Few universities offer courses related to “Multicore Programming”.

• Lectures per universities: 1‐9, average 3.2 (see next page)

VII Summary of Findings

VIII Summary of Findings

American Universities • 51 courses addressing parallelism

• 1‐8 courses per university

Top categories for graduate courses Top categories for undergraduate courses • “Algorithms” • “Programming” • “Architecture” • “Scientific Computing, HPC” • “Programming” • “Theory of Parallel Computing”

IX Summary of Findings

U.K. Universities • 12 courses addressing parallelism

• 2‐5 courses per university

Top categories for graduate courses Top categories for undergraduate courses • “Algorithms” • “Theory of Parallel Computing” • “Theory of Parallel Computing” • “Programming” • “Programming” • “Distributed Computing”

X Summary of Findings

German Universities • 58 courses addressing parallelism

• 1‐9 courses per university

Top categories for graduate courses Top categories for undergraduate courses • “Programming” • “Algorithms” • “Algorithms” • “Programming”, ”Multicore Programming”, “Scientific Computing, HPC”, “Theory of • “Theory of Parallel Computing” Parallel Computing” (all have the same number of lectures)

XI Summary of Findings

Other Universities • 25 courses addressing parallelism

• 1‐6 courses per university

Top categories for graduate courses Top categories for undergraduate courses • “Theory of Parallel Computing” • “Algorithms” • “Programming” • “Programming” • “Distributed Computing” • “Scientific Computing, HPC”

XII Overview – Number of Courses and Categories

Overview – Number of Courses and Categories American Universities

U –Undergraduate only

G –Graduate only per

Parallel

Computing, N – Not defined whether of U, G, or both

Classification

Courses

Algorithms Architecture/Hardwa re Programming Distributed Computing Multicore Programming Scientific HPC Theory Computing No University ∑

U G N U G N U G N U G N U G N U G N U G N U G N CalTech 2 1 1 2 3 Carnegie Mellon U. 2 1 1 1 1 1 1 4 Cornell U. 1 2 1 1 2 1 2 1 2 3 GaTech 4 1 2 2 2 4 8 Harvard U. 1 1 2 MIT 1 2 1 1 1 4 1 7 Stanford U. 1 1 1 1 2 3 U. of Cal., Berkeley 2 2 1 1 4 5 UCLA 2 1 1 1 1 2 5 U. of Illinois 2 1 1 2 1 1 1 5 U. of Michigan 2 1 1 2 U. of Tennessee 1 1 1 1 U. of Toronto 1 2 1 3

∑ Undergraduate 3 1 5 3 0 5 4 1 ∑ Graduate 15 14 14 8 3 9 13 1 ∑ Not Defined 0 0 0 0 0 0 0 0 ∑ Courses 18 15 19 11 3 14 17 2

Note: Each course may fit into more than one category; the sum of lectures in the last row may be greater than or equal to the sum of courses in the last column.

U.K. Universities

HPC

U –Undergraduate only Computing

G –Graduate only University

N – Not defined whether Computing

per Programming Parallel U, G, or both

Computing,

of

Classification

Courses Algorithms Architecture/Hardware Programming Distributed Multicore Scientific Theory No ∑

U G N U G N U G N U G N U G N U G N U G N U G N IC London 2 1 4 5 U. of Cambridge 2 2 U. of Oxford 1 1 4 5

∑ Undergraduate 0 0 1 1 0 0 6 0 ∑ Graduate 2 0 1 0 0 0 4 0 ∑ Not Defined 0 0 0 0 0 0 0 0 ∑ Courses 2 0 2 1 0 0 10 0

XIII Overview – Number of Courses and Categories

German Universities

U –Undergraduate only

per

G –Graduate only

Comp.,

Comp.

N – Not defined whether of

U, G, or both Classification

Courses Algorithms Architecture/ Hardware Programming Distributed Comp. Multicore Programming Scientific HPC Theory Parallel No University ∑

U G N U G N U G N U G N U G N U G N U G N U G N HU Berlin 2 1 1 2 KIT (U. of Karlsruhe) 1 2 2 1 2 1 6 RWTH Aachen 2 2 2 1 5 TU Braunschweig 1 1 1 2 TU Chemnitz 1 1 1 TU Darmstadt 1 1 1 1 1 1 2 TU Dresden 2 2 3 2 3 TU Ilmenau 2 1 3 5 TU Munich 2 1 3 1 1 2 5 U. of Augsburg 1 1 1 1 U. of Duisburg‐Essen 1 2 1 3 U. of Erlangen‐Nürnberg 1 1 1 1 1 1 4 9 U. of Frankfurt 2 2 1 1 2 U. of Hannover 1 1 1 2 U. of Leipzig 2 1 3 U. of Paderborn 1 1 U. of Passau 1 1 2 2 U. of Saarland 1 1 1 1 1 1 2 U. of Stuttgart 3 2 1 3 U. of Wuppertal 1 1 1

∑ Undergraduate 2 0 1 0 1 1 1 3 ∑ Graduate 20 8 21 5 7 8 12 8 ∑ Not Defined 0 0 1 0 1 0 0 4 ∑ Courses 22 8 23 5 9 9 13 15

Other Universities

U –Undergraduate only Comp.

per

Parallel

G –Graduate only Comp.,

of N – Not defined whether

U, G, or both Classification

Courses Algorithms Architecture/ Hardware Programming Distributed Multicore Programming Scientific HPC Theory Comp. No ∑ University

U G N U G N U G N U G N U G N U G N U G N U G N Australian N.U. 1 1 1 1 2 ETH Zürich 1 3 3 2 4 6 Monash U. 2 2 2 3 Tsinghua U. 1 1 U. of Bukarest 1 1 2 2 1 1 4 U. of Melbourne 2 1 2 2 3 U. of New South Wales 1 1 2 3 U. of Queensland 1 1 U. of Singapore 2 1 1 2 4 U. of Sydney 1 1 1 1 U. of Tokyo 1 1 1 1

∑ Undergraduate 3 1 2 2 0 2 2 0 ∑ Graduate 5 0 10 7 0 4 11 1 ∑ Not Defined 0 2 1 1 0 0 2 0 ∑ Courses 8 3 13 10 0 6 15 1

XIV

I Courses at American Universities

15 California Institute of Technology

California Institute of Technology ████ Degree Courses: Bachelor of Computer Science (B.?.): http://www.cs.caltech.edu/academics/opt_info.html

California Institute of Technology 1200 East California Blvd. Pasadena, CA, 91125

Computing Systems

CS 134 a Computer Science Undergraduate Not offered since 2007 █ Ass. Prof. Jason Hickey

Locks, Memory Management, Mutex, Operating System, Scheduling, Semaphores, Threads Operating systems, monolithic and microkernels, virtual machines. Naming, memory management, segmentation, paging, and virtual memory. File systems and I/O. Threads, processes, scheduling, locks, semaphores, and mutual exclusion. Security policies, access‐control, capabilities, and language‐based security.

Concurrency in Computation

CS 139 Computer Science Undergraduate Not offered since 2005 ██ ‐ Algorithms, Architecture, Computation Models, Concurrency, , Network, Process Communication, Proofs, Shared Variables, Synchronization, VLSI Design and verification of concurrent algorithms. Topics: different models of concurrent computations; process synchronization by shared variables and synchronization primitives; distributed processes communicating by message exchange; the concepts of synchronization, indivisible actions, deadlock, and fairness; semantics and correctness proofs; implementation issues; and application to VLSI algorithm design. Parallel machine architecture issues include

16 California Institute of Technology mapping a parallel algorithm on a network of processors, and classical parallel algorithms and their complexity.

Parallel Algorithms for Scientific Applications

ACM/CS 114 Applied and Comp. Mathematics Undergraduate Not offered since 2005 ███ ‐ Algorithms, Distributed Memory, Grid, Load Balancing, MPI, Numeric Algorithms, OpenMP, Scientific Computing, Shared Memory, Threads Introduction to parallel program design for numerically intensive scientific applications. First term: parallel programming methods; distributed‐memory model with message passing using the message passing interface; shared‐memory model with threads using OpenMP; object‐based models using a problem‐solving environment with parallel objects. Parallel numerical algorithms: numerical methods for linear algebraic systems, such as LU decomposition, QR method, Lanczos and Arnoldi methods, pseudospectra, CG solvers. Second term: parallel implementations of numerical methods for PDEs, including finite‐difference, finite‐element, and shock‐capturing schemes; particle‐based simulations of complex systems. Implementation of adaptive mesh refinement. Grid‐based computing, load balancing strategies.

17 Carnegie Mellon University

Carnegie Mellon University █████ Degree Courses:

Bachelor of Science (B.S.) in Computer Science: http://www.csd.cs.cmu.edu/education/bscs/#curriculum Carnegie Mellon University Master of Science (M.S.) in Computer Science: 5000 Forbes Avenue http://www.csd.cs.cmu.edu/education/master/about.html Pittsburgh, PA 15213

Advanced Operating Systems and Distributed Systems

http://www.cs.cmu.edu/~burks/courses/all_courses/712.f07.html Computer Science Graduate 2001, 2002, 2007 █

David Andersen

Algorithms, Availability, Communication, Concurrency, Data Structures, Operating System This course examines the design and analysis of selected aspects of operating systems and distributed systems. It covers topics such as concurrency and distributed communication; fault‐ tolerance, availability, and persistence; and operating system structure. Lecture focus on the principles used in the design of operating systems and distributed systems, and algorithms and data structures used in their implementation. Readings include case studies, seminal papers, and recent conference and journal articles.

Algorithm Design and Analysis

http://www.cs.cmu.edu/afs/cs/academic/class/15451‐s07/www/ Computer Science Graduate 2002, 2004, 2006, 2007 █

Manuel Blum

Algorithms, Randomized Algorithms, Searching Algorithms, Sorting Algorithms, Theory This course is about the design and analysis of algorithms. We study specific algorithms for a variety of problems, as well as general design and analysis techniques. Specific topics include searching, sorting, algorithms for graph problems, efficient data structures, lower bounds and NP‐completeness. A variety of other topics may be covered at the discretion of the instructor. These include parallel algorithms, randomized algorithms, geometric algorithms, low level techniques for efficient programming, cryptography, and cryptographic protocols.

18 Carnegie Mellon University

Introduction to Parallel Computing and Scientific Computation

http://www.math.cmu.edu/~florin/M21‐765/index.html Mathematics Graduate ? ‐ 2008 ████

Florin B. Manolache C Programming Language, Communication Protocols, Grid, HPC, MPI, Networks, Parallel Computing Basics, Parallel Programming, PVM, Resource Sharing, SMP The first part makes the connection between real life and the computer world. • Chapter 1 shows how to transform a real life problem into a sequential computer algorithm, with reference to basic numerical methods. • Chapter 2 describes a software package and presents design, development, and maintenance concerns. • Chapter 3 contains basic programming notions with applications to the C language, libraries, compilers, debuggers. • Chapter 4 describes a model of structural information organization with applications to linear media and file systems. The second part provides the background needed to understand how the computer systems work. • Chapter 5 presents a layered model of the computing world. • Chapter 6 gives elementary notions of binary logics and digital electronics. • Chapter 7 the layered model of the computer hardware basics; application: how to build your own computer. • Chapter 8 presents a typical operating system, explores user interfaces, other user level issues. • Chapter 9 describes computer networks, topology, and layered communication protocols. The third part explores the performance computing world. • Chapter 10 presents the parallel computing basic concepts and programming techniques. • Chapter 11 discusses the principal parallel architectures and the characteristics of the typical software packages. • Chapter 12 explains how PVM works. • Chapter 13 discusses the MPI standard, one common implementation, additional libraries issues. • Chapter 14 shows how to take advantage of multiple processors using SMP. • Chapter 15 presents modern approaches to resource sharing at different scales: mosix, condor, GRID.

Parallel Computer Architecture and Programming

http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15418‐s08/www/ Computer Science Undergraduate 2004, 2008 ██

Todd C. Mowry

Case Studies, Communication, Latency, Message Passing, Multiprocessor, Shared Memory, Synchronization, Threads The fundamental principles and engineering tradeoffs involved in designing modern parallel computers, as well as the programming techniques to effectively utilize these machines. Topics include naming shared data, synchronizing threads, and the latency and bandwidth associated with communication. Case studies on shared‐memory, message‐passing, data‐parallel and dataflow machines will be used to illustrate these techniques and tradeoffs. Programming assignments will be performed on one or more commercial multiprocessors, and there will be a significant course project.

19 Cornell University

Cornell University █████ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: http://www.cs.cornell.edu/degreeprogs/ugrad/CSMajor/ EngineeringChecklist/index.htm Cornell University Bachelor of Arts (B.A.) in Computer Science: Ithaca, NY 14853 http://www.cs.cornell.edu/degreeprogs/ugrad/CSMajor/ ArtsChecklist/index.htm Master of Engineering (M.Eng.) in Computer Science: ‐

Effective Use of High-Performance Computing http://www.cuinfo.cornell.edu/Academic/Courses/CoSdetail.php?college=CIS&number=4205&prefi x=CIS&title=Effective+Use+of+High‐Performance+Computing Undergraduate Comp. and Info. Science 2008 ████ Graduate ‐

Algorithms, Architecture, HPC, MPI, OpenMP, Task Farming, Types of Parallelism Various HPC architectural platforms are described with a focus on computational clusters. Students learn how to identify and exploit the various types of parallelism in algorithms and legacy applications. Understanding how to measure speedup and efficiency and how various bottlenecks affect them are covered. Parallel programming with MPI, OpenMP, and task‐farming techniques such as the use of web services are covered in detail. The goal of the class is for students to gain practical HPC experience for use in their specific fields of research.

Introduction to High Performance Computing

http://www.cac.cornell.edu/lifka/CIS405/CIS405.htm Center for Adv. Computing Graduate 2008 ████ Asso. Prof. David A. Lifka

Algorithms, Cluster, HPC, MPI, OpenMP, Task farming

20 Cornell University

Various HPC architectural platforms will be described with a focus on computational clusters. Students will learn how to identify and exploit the various types of parallelism in algorithms and legacy applications. Understanding how to measure speedup and efficiency and how various bottlenecks affect them will be covered. Parallel programming with MPI, OpenMP, and task‐ farming techniques such as the use of web services will be covered in detail. The goal of the class is for students to gain practical HPC experience for use in their specific fields of research.

Parallel Computer Architecture

http://www.cs.cornell.edu/Courses/ListofCSCourses/CS5420/index.htm Computer Science Graduate 2006 ‐ 2008 █ Asso. Prof. José F. Martinez

Case Studies, Latency, Memory Consistency, Message Passing, Networks, Shared Memory, Synchronization Principles and trade‐offs in the design of parallel architectures. Emphasis is on latency, bandwidth, and synchronization in parallel machines. Case studies illustrate the history and techniques of shared‐memory, message‐passing, dataflow, and data‐parallel machines. Additional topics include memory consistency models, cache coherence protocols, and interconnection network topologies. Architectural studies presented through lecture and some research papers.

21 Georgia Institute of Technology

Georgia Institute of Technology ██████ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: http://www.cc.gatech.edu/education/undergrad/bscs/core‐ requirements

Master of Science (M.Sc.) in Computer Science: ‐ Georgia Institute of Technology Atlanta, GA, 30332

Distributed Computing

http://www‐static.cc.gatech.edu/classes/AY2008/cs7210_spring/ 2000 College of Computing Graduate 2002 ‐ 2004, ██ 2006 ‐ 2008

Dr. Karsten Schwan

Algorithms,Clocks, Clusters,Current Research, Distributed Computations, HPC Distributed computing systems have become pervasive. From clusters to internet‐worked computers, to mobile machines, distributed systems are being used to support a wide variety of applications. This course will focus on the fundamental concepts in distributed computing systems enabling such applications. The following are the objectives of this course: • In depth understanding of core concepts of distributed computing, including study of practical techniques for building system support for distributed applications. • Construction of distributed applications and supporting system components by doing project work. • Understanding of current research results in one or more areas of distributed systems. These goals are achieved as follows. First, class sessions cover a set of papers that discuss basic principles in distributed systems. Principles covered in the course include global states of distributed computations, logical and physical clocks, and failure models. Distributed algorithms for consensus, replicated state management, and resource finding are also covered. Midterm and final exams feature questions on the papers covered in class. A second element of the class exposes students to representative development environments and infrastructures for distributed systems. This includes wide area applications and infrastructures (e.g., using Websphere or its

22 Georgia Institute of Technology open source counterparts on Internet‐linked systems), high performance applications or algorithms across high end machines and network links (e.g., using Georgia Techʹs cluster machines and facilities), mobile applications running on pervasive platforms (e.g., using representative pervasive systems at Georgia Tech or the MobiEmu emulation platform), and peer to peer systems or applications running on PlanetLab. Programming projects evaluate studentsʹ knowledge for this class component. A third element of the class introduces students to rigorous academic research, where for a specific topic and some set of papers covered in class, each student selects a set of recent papers in a certain area, and produces a short term paper describing the problems and results discussed in those papers. These summaries are shared with all students, and they are presented in class. There is considerable flexibility in defining class projects and topics for term papers. Concerning projects, students can formulate their own, and depending on the nature of the project, they can work in groups. Term papers are worked on individually, but their topics may be linked to class projects.

High-performance Parallel Computing: Tools and Applications

http://www‐static.cc.gatech.edu/classes/AY2007/cs6230_spring/ 2001, 2003, College of Computing Graduate ██ 2005 ‐ 2007 Dr. Matthew Wolf

Cluster, HPC, Parallelism This course is a graduate level introduction to the area of high‐performance, parallel/distributed/ network computing. It is intended for both Computer Science majors and for non‐CS students with a strong background or interest in computing and/or a strong need for high performance computing in their application domain. This course is viable to take for students of varying backgrounds because it (1) uses straightforward course materials also comprehensible to non‐CS majors and (2) supplements topicsʹ depth with selected research papers. Most importantly, studentsʹ grades are derived primarily from a class project defined by each student in conjunction with the instructor. As a result, projects may be defined to leverage studentsʹ individual strengths. Specifically, the course teaches students to use parallel/distributed machines by requiring a programming project that utilizes at least one of the many interesting computing platforms available at Georgia Tech, such as the IBM SP‐2, SGI Origin multiprocessors, our exciting new Intel‐based cluster machines, clusters of SUN SPARC workstations, and experimental cluster‐based equipment using high performance interconnects like Infiniband.

Computational Science & Engineering Algorithms

http://www.cc.gatech.edu/~bader/COURSES/GATECH/CSE6140‐Fall2008/ College of Computing Graduate 2007, 2008 ██ Prof. David A. Bader

Algorithm Design, Complexity Analysis, HPC, Optimization, Scientific Applications This course will introduce students to designing high‐performance and scalable algorithms for computational science & engineering applications. The course focuses on algorithm design, complexity analysis, experimentation, and optimization, for important science and engineering applications. Students will develop knowledge and skills concerning the design and analysis of real‐world algorithms employed in computational science and engineering applications, and Performance optimization of applications using the best practices of algorithm engineering.

23 Georgia Institute of Technology

High Performance Communication

http://www‐static.cc.gatech.edu/classes/AY2007/cs8803hpc_summer/ College of Computing Graduate 2002, 2005 ‐ 2008 █ Dr. Ada Gavrilovska

Hardware, High Performance Communication, Networks, Multicore This project‐based course covers issues in high‐performance communication, ranging from architecture and devices, to interconnection networks, network interfaces and network processors, protocols and standards, OS and middleware support, as well as driving applications from the scientific and enterprise domain, and evaluation and development tools. The course contains a significant laboratory component which may be based on platforms such as Intelʹs IXP2xxx network processors, Infiniband‐based platforms, modern multi‐core machines, or may target other specialized accelerators.

The focus of the course project is to develop, analyze and experiment with technologies which address communications‐related bottlenecks in various application domains on modern platforms. Select topics of interest include application/protocol/kernel stack splitting for multi‐ core platforms; communication acceleration solutions via offload to programmable network interconnection hardware (e.g., IXP network processors) or other specialized accelerators (Cell, GPUs, FPGAs) and/or OS‐ or application‐bypass techniques (e.g., TCP on IXP, FTP over IB); solutions which address impedance mismatches in local‐/cluster‐ vs. wide‐area settings; high‐ performance communication services which address applicationsʹ reliability, security, resource reservation/isolation (i.e. virtualization) requirements; high performance protocols (e.g., RDMA, SCTP) and communication architectures (e.g., OpenIB/Open Fabric, Portals); benchmark or simulation module development, etc.

High Performance Computing

http://www.cc.gatech.edu/~bader/COURSES/GATECH/CSE6220‐Spring2008/ College of Computing Graduate 2008 ██ Prof. David A. Bader

Algorithms, HPC, Languages, Science and Engineering Applications This course will introduce students to the design, analysis, and implementation, of high performance computational science and engineering applications. The course focuses on advanced computer architectures, parallel algorithms, parallel languages, and performance‐ oriented computing. Students will develop knowledge and skills concerning the key factors affecting performance of computational science and engineering (CSE) applications, and mapping of applications to high‐performance computing systems, and Hardware/Software co‐design for achieving performance on real‐world applications.

24 Georgia Institute of Technology

Multicore Computing

http://www.cc.gatech.edu/~bader/COURSES/GATECH/CS8803‐Spring2007/ College of Computing Graduate 2007 ███ Prof. David A. Bader Algorithms, Application Design and Analysis, Cell, Heterogeneous and Homogeneous Multicore, Performance, Programming Methodologies This course will introduce students to multi‐core processor architectures, the design and analysis of algorithms and applications for multi‐core chips, multi‐core programming methodologies, and measuring performance. Students will implement efficient programs on homogeneous and heterogeneous multi‐core processors, such as the Cell processor used in the Sony PlayStation 3.

Multicore and GPU Programming for Video Games

http://users.ece.gatech.edu/~lanterma/mpg/ College of Computing Graduate 2007 ██

Aaron Lanterman, Hsien‐Hsin ʺSeanʺ Lee

Asymmetric and Symmetric Multicore Architecture, GPGPU, Multicore, Scientific Applications, SMP This class covers the architecture and programming of multi‐core processors and graphical processing units (GPUs), using examples from the algorithmic needs of modern 3‐D games (rendering, collision detection, physics engines, and artificial intelligence), as well as techniques for adapting such architectures for use in scientific applications, as in the GPGPU (General‐ Purpose GPU) movement. The class will focus on inexpensive consumer hardware, particularly the Playstation 3, the Xbox 360, and NVIDIA and ATI graphics cards. The trade‐offs between asymmetric multi‐core architectures (such as the STI Cell BE used in the Playstation 3) and symmetric multi‐core architectures (such as the triple‐Power PC used in the Xbox 360) will be discussed.

Parallel and Distributed Simulation

http://www‐static.cc.gatech.edu/classes/AY2004/cs4230_fall/ College of Computing Graduate 2002, 2003 █ Dr. Thom McLean

Hardware, Parallelism, Simulation This course is concerned with the realization of simulations on parallel or distributed computing systems for analytic or virtual environment applications. The emphasis will be on discrete event simulations. After some introductory materials, the course is roughly divided into two parts. The first is concerned with parallel and distributed execution of analytic simulations, e.g., for system evaluation. The second is concerned with the execution of simulations on distributed computers to create virtual environments, e.g., for training or gaming applications.

25 Harvard University

Harvard University █▒ Degree Courses: Bachelor of Arts (A.B.) in Computer Science: http://www.seas.harvard.edu/academic/undergradstudy/ computerscience/pdf/CSBrochure.pdf

(see page 6 ff.) Master of Science (S.M.) in Computer Science: Harvard School of Engineering and Applied ‐ Master of Engineering (M.E.) in Computer Science: Sciences Pierce Hall ‐ 29 Oxford Street Cambridge, MA 02138

Systems Programming and Machine Organization

http://www.eecs.harvard.edu/~mdw/course/cs61 Computer Science Undergraduate ? ‐ 2008 █

Prof. Matt Welsh Assembly Programming Language, C Programming Language, Concurrency, Low Level Machine Organization, Memory Hierarchy, Synchronization, Threads Fundamentals of computer systems programming, machine organization, and performance tuning. This course provides a solid background in systems programming and a deep understanding of low‐level machine organization and design. Topics include C and assembly language programming, program optimization, memory hierarchy and caching, virtual memory and dynamic memory management, concurrency, threads, and synchronization.

Wireless Parallel Computing

http://www.eecs.harvard.edu/cs144/ Computer Science Undergraduate ? ‐ 2007 ▒ Prof. H.T. Kung

Embedded, Parallel Computing, Wireless Interconnection of Parallel Computers In this course we will work on wireless parallel computing. This is an exploratory approach where we use a wireless network to interconnect the parallel computing nodes; in particular, we

26 Harvard University will use tens of x86‐based embedded computers equipped with 802.11b/g wireless interfaces to form a wireless parallel computing platform. This platform can enable a new generation of applications due to the use of the wireless backplane. The course work involves survey of related literature; design and implementation of parallel computing primitives and applications; hands‐ on work with a 50‐node parallel computing testbed; embedded system programming; and lab experiments. Depending on his or her interest, a student may focus on a subset of these tasks.

27 Massachusetts Institute of Technology

Massachusetts Institute of Technology ██████▒ Degree Courses: Bachelor of Science (S.B.) in CS and Engineering: http://www.eecs.mit.edu/ug/newcurriculum/SBCS_6‐3.html Bachelor of Science (S.B.) in Electrical Engineering and CS: http://www.eecs.mit.edu/ug/newcurriculum/SBEECS_6‐2.html Master of Engineering (M.Eng.) in EE and CS: Massachusetts Institute of ‐ Technology 77 massachusetts avenue Cambridge, MA, 02139‐4307

Applied Parallel Computing

http://ocw.mit.edu/OcwWeb/Mathematics/18‐337JSpring‐2005/CourseHome/index.htm Mathematics Undergraduate 2003 ‐ 2008 ███ Prof. Alan Edelman

Grid, Geometrical Computations, Linear Algebra, MATLAB, MPI, Numerical Computations, Vector Processors, VHLL Applied Parallel Computing is an advanced interdisciplinary introduction to applied parallel computing on modern supercomputers. Numerical topics include dense and sparse linear algebra, N‐body problems, multigrid, fast‐multipole, wavelets and Fourier transforms. Geometrical topics include partitioning and mesh generation. Other topics include applications oriented architecture, software systems, MPI, Cilk, data parallel systems, Parallel MATLAB®, caches and vector processors with hands‐on emphasis on understanding the realities and myths of what is possible on the worldʹs fastest machines. One emphasis for this course will be VHLLs or very high level languages for parallel computing. Are we there yet?

28 Massachusetts Institute of Technology

Multithreaded Parallelism: Languages and Compilers

http://csg.csail.mit.edu/6.827/ Computer Science Graduate 2002 ‐ 2006 █ Prof. Arvind Atomicity, Cluster, Compiler, Functional Languages and Parallel Programming, Lambda Calculus, Term rewriting, Threads, Transactional Memory, SMP This class is aimed at bringing students to the level of sophistication that they can start tackling this crucial problem. Students will receive an introduction to parallelism approaches pioneered in the eighties with an eye towards understanding what was missing. The first part of the course will cover some classical material in programming languages (e.g., the Lambda calculus, types, functional programming languages such as Haskell and pH) and will end with a closed‐book quiz. The second part will cover several well established models of parallel computation (e.g., dataflow, multi‐threading) and some newly emerging ones (e.g., atomic transactions, transactional memory). We will explore if students can collectively help to implement a compiler for a new parallel language based on atomic‐transactions. Here is a brief list of topics that will be covered in the course: • Languages and compilers to exploit multithreaded parallelism. • Implicit parallel programming using functional languages and their extensions. • Higher‐order functions, non‐strictness, and polymorphism. • Explicit parallel programming and non‐determinism. • The lambda calculus and its variants. • Term rewriting and operational semantics. • Compiling multithreaded code for symmetric multiprocessors and clusters. • Static analysis and compiler optimizations.

Distributed Algorithms

http://courses.csail.mit.edu/6.852/08/ Computer Science and A.I. Graduate 2003 ‐ 2008 ██

Prof. Nancy Lynch, Dr. Victor Luchangco Clocks, Communication, Concurrent Algorithms, Deadlock detection, Formal Models, Graph Algorithms, Resource Allocation, Synchronization This course intends to provide a rigorous introduction to the most important research results in the area of distributed algorithms, and prepare interested students to carry out independent research in distributed algorithms. Topics covered include: design and analysis of concurrent algorithms, emphasizing those suitable for use in distributed networks, process synchronization, allocation of computational resources, distributed consensus, distributed graph algorithms, election of a leader in a network, distributed termination, deadlock detection, concurrency control, communication, and clock synchronization. Special consideration is given to issues of efficiency and fault tolerance. Formal models and proof methods for distributed computation are also discussed.

Distributed Computer Systems Engineering http://ocw.mit.edu/OcwWeb/Electrical‐Engineering‐and‐Computer‐Science/6‐824Spring‐

2006/CourseHome/index.htm Computer Science Graduate 2006 ‐ ? ██

29 Massachusetts Institute of Technology

Prof. Robert Morris

Cache/Memory Consistency, I/O Concurrency, Network Programming, Two‐Phase Commit This course covers abstractions and implementation techniques for the design of distributed systems. Topics include: server design, network programming, naming, storage systems, security, and fault tolerance. Contains amongst others:I/O concurrency, Cache consistency and locking, Memory consistency, Two‐phase commit, Content distribution

Distributed Systems http://ocw.mit.edu/OcwWeb/Electrical‐Engineering‐and‐Computer‐Science/6‐852JFall‐

2005/CourseHome/index.htm Computer Science and A.I. Graduate 2000 ‐ 2007 ▒ Prof. Frans Kaashoek

‐ No Description available.

Theory of Parallel Hardware http://ocw.mit.edu/OcwWeb/Electrical‐Engineering‐and‐Computer‐Science/6‐

896Spring2004/CourseHome/index.htm Computer Science Graduate 2004 ‐ ? █ Prof. Charles Leiserson, Prof. Michael Bender, Dr. Bradley Kuszmaul

Arithmetic Circuits, Fat Trees, Hypercubic Networks, P‐Completeness, Sorting Networks, Systolic Arrays, VLSI This Course covers mathematical foundations of parallel hardware, from computer arithmetic to physical design, focusing on algorithmic underpinnings. Topics covered include: arithmetic circuits, parallel prefix, systolic arrays, retiming, clocking methodologies, boolean logic, sorting networks, interconnection networks, hypercubic networks, P‐completeness, VLSI layout theory, reconfigurable wiring, fat‐trees, and area‐time complexity.

Theory of Parallel Systems

http://courses.csail.mit.edu/6.895/fall03/index.shtml Computer Science Graduate 2002 ‐ 2003 █ Prof. Charles Leiserson, Prof. Michael Bender, Dr. Bradley Kuszmaul Algorithms, Load Balancing, Memory Consistency, Message Routing, Networks, Race Detection, Randomized Algorithms, Synchronization, Threads, VLSI This course covers theoretical foundations of general‐purpose parallel computing systems, from languages to architecture. The focus is on the algorithmic underpinnings of parallel systems. The topics for the class will vary depending on student interest, but will likely include multithreading, synchronization, race detection, load balancing, memory consistency, routing networks, message‐routing algorithms, and VLSI layout theory. The class will emphasize randomized algorithms and probabilistic analysis, including high‐probability arguments.

30 Stanford University

Stanford University █████ Degree Courses: Bachelor of Science (B.S.) in Computer Science: http://cs.stanford.edu/degrees/undergrad/CurriculumRevision‐ Preview‐04‐03‐08.pdf

Master of Science (M.S.) in Computer Science: Stanford University http://cs.stanford.edu/degrees/mscs/classes/planning/ 450 Serra Mall Stanford, CA 94305

Distributed Systems

http://cs244b.stanford.edu/ Computer Science Graduate 2007 ‐ 2008 ██ Prof. David Cheriton

Atomicity, Consistency, Distributed Shared Memory, Scheduling, Synchronization Distributed operating systems and applications issues, emphasizing high‐level protocols and distributed state sharing as the key technologies. Topics: distributed shared memory, object‐ oriented distributed system design, distributed directory services, atomic transactions and time synchronization, application‐sufficient consistency, file access, process scheduling, process migration, and storage/communication abstractions on distribution, scale, robustness in the face of failure, and security.

Parallel Computer Architecture and Programming

http://cs315a.stanford.edu/ Computer Science Graduate 2006 ‐ 2008 ███ Prof. Oyekunle Olukotun

Case Studies, Design of Parallel Architectures, Latency, Message Passing, Shared Memory, Synchronization, Multiprocessor The principles and tradeoffs in the design of parallel architectures. Emphasis is on naming, latency, bandwidth, and synchronization in parallel machines. Case studies on shared memory, message passing, data flow, and data parallel machines illustrate techniques. Architectural

31 Stanford University studies and lectures on techniques for programming parallel computers. Programming assignments on one or more commercial multiprocessors.

Randomized Algorithms

http://cs365.stanford.edu/ Computer Science Graduate 2006 ‐ 2008 █

Prof. Rajeev Motwani Complexity Theory, Data Structures, Distributed Algorithms, Parallel Algorithms, Probabilistic Analysis, Probability Theory, Searching Algorithms, Sorting Algorithms Design and analysis of algorithms that use randomness to guide their computations. Basic tools, from probability theory and probabilistic analysis, that are recurrent in algorithmic applications. Randomized complexity theory and game‐theoretic techniques. Algebraic techniques. Probability amplification and derandomization. Applications: sorting and searching, data structures, combinatorial optimization and graph algorithms, geometric algorithms and linear programming, approximation and counting problems, parallel and distributed algorithms, online algorithms, number‐theoretic algorithms.

32 University of California, Berkeley

University of California, Berkeley █████ Degree Courses: Bachelor of Arts (B.A.) in Computer Science: http://www.eecs.berkeley.edu/Programs/Notes/Content/Chapter3.pdf Bachelor of Science (B.Sc.) in EE and CS: http://www.eecs.berkeley.edu/Programs/Notes/Content/Chapter2.pdf Master of Science (M.S.) in Computer Science: University of California, Berkeley http://www.eecs.berkeley.edu/FiveYearMS/Requirements.htm Berkeley, CA, 94720

Advanced Topics in Computer Systems

http://www.cs.berkeley.edu/~brewer/cs262/ Computer Science Graduate 2004 ‐ 2008 █ Prof. Eric Brewer, Prof. Joe Hellerstein Abstract Data Types, Concurrency, Distributed Caching, Distributed Data Management, Index Structures, Parallel Architectures, Performance Analysis, Scheduling Continued graduate survey of large‐scale systems for managing information and computation. Topics include basic performance measurement; extensibility, with attention to protection, security, and management of abstract data types; index structures, including support for concurrency and recovery; parallelism, including parallel architectures, query processing and scheduling; distributed data management, including distributed and mobile file systems and databases; distributed caching; large‐scale data analysis and search.

Applications of Parallel Computers

http://www‐inst.eecs.berkeley.edu/~cs267/sp08/ Computer Science Graduate 2000 ‐ 2008 ██ Prof. Katherine Yelick, Prof. James Demmel Algorithms for Linear Algebra, Data Partitioning, Load Balancing, Parallel Programming Languages, Sorting, Synchronization Models for parallel programming. Fundamental algorithms for linear algebra, sorting, FFT, etc. Survey of parallel machines and machine structures. Exiting parallel programming languages, vectorizing compilers, environments, libraries and toolboxes. Data partitioning techniques.

33 University of California, Berkeley

Techniques for synchronization and load balancing. Detailed study and algorithm/program development of medium sized applications.

Foundations of Parallel Computation

http://www.cs.berkeley.edu/~satishr/cs273/ Computer Science Graduate 2001 ‐ 2007 ██ Prof. Satish Rao Algorithms for Linear Algebra, Hypercubes, Meshes, Message Routing, Parallel Algorithm Design, Parallel Architecture Design, Shared Memory, Sorting Fundamental theoretical issues in designing parallel algorithms and architectures. Shared memory models of parallel computation. Parallel algorithms for linear algebra, sorting, Fourier Transform, recurrence evaluation, and graph problems. Interconnection network based models. Algorithm design techniques for networks like hypercubes, shuffle‐exchanges, threes, meshes and butterfly networks. Systolic arrays and techniques for generating them. Message routing.

Parallel Processors / Parallel Computer Architecture

http://www.cs.berkeley.edu/~culler/cs258‐s99/ Computer Science Graduate 1995 ‐ 2008 ██ Prof. John Kubiatowicz COMA Techniques, Network Transactions, Overhead, Parallel Programming, Replication, SharedMemory Multiprocessors, Scalable Multiprocessors, Synchronization, Threads This course provides an in‐depth study of the design, engineering, and evaluation of modern parallel computers. It begins with an overview of the field focusing on the convergence of many diverse architectural approaches around the communication architecture. It extracts fundamental design issues: naming, replication, synchronization, latency, overhead, and bandwidth and explores these across the spectrum of modern machines. A sound basis is built up in workload‐driven evaluation, with a brief overview of parallel programming. It studies small‐ scale shared memory multiprocessors in some detail to lay groundwork for understanding large‐ scale designs. It then examines scalable multiprocessors thoroughly, including realizing programming models via network transactions, directory‐based cache coherence, interconnection network design, software‐based virtual shared memory, COMA techniques, and latency tolerance through multithreading and other means.

Parallel Programming for Multicore

http://www.cs.berkeley.edu/~yelick/cs194f07/ Computer Science Graduate 2007 ███ Prof. Katherine Yelick Data Parallelism, Load Balancing, Multicore, Performance Analysis, Shared Data Structures, Synchronization, Task Parallelism This course will provide an introduction to parallel programming with a focus on the techniques that are most appropriate for multicore architectures and the use of parallelism to improve program performance. The topics of the course include performance analysis and tuning, data and task parallelism, synchronization techniques, shared data structures, and load balancing.

34 University of California, Los Angeles

University of California, Los Angeles █████ Degree Courses:

Bachelor of Science (B.S.) in Computer Science: http://cis.ucla.edu/studyArea/course.asp?type=MAJ&code=201 Bachelor of Science (B.Sc.) in CS and Engineering: University of California, LA http://cis.ucla.edu/studyArea/course.asp?type=MAJ&code=193 Los Angeles, CA, 90095 Master of Science (M.S.) in Computer Science: http://www.gdnet.ucla.edu/gasaa/pgmrq/compsci.asp

Distributed Processing Systems

http://courseweb.seas.ucla.edu/classView.php?term=07W&srs=587307200 Computer Science Graduate ‐ █ ‐ Communication, Distributed Operating System Kernel, Message Passing, Multicomputer, Performance Measurement, Performance Monitoring, Scheduling, Task Partitioning Task partitioning and allocation, interprocess communications, task response time model, process scheduling, message passing protocols, replicated file systems, interface, cache memory, actor model, fine grain multicomputers, distributed operating system kernel, error recovery strategy, performance monitoring and measurement, scalability and maintainability, prototypes and commercial distributed systems.

Parallel and Distributed Computing

http://courseweb.seas.ucla.edu/classView.php?term=08F&srs=187549200 Computer Science Undergraduate 2005 ‐ 2008 ███ Ass Prof. Glenn Reinman Communication, Design of Parallel Programs, Distributed Memory, Languages, MPI, Parallel Languages, Scientific Computations, Shared Memory, Synchronization Distributed memory and shared memory parallel architectures; asynchronous parallel languages: MPI, Maisie; primitives for parallel computation: specification of parallelism, interprocess communication and synchronization; design of parallel programs for scientific computation and distributed systems.

35 University of California, Los Angeles

Parallel Computer Architectures

http://courseweb.seas.ucla.edu/classView.php?term=07W&srs=587307200 Computer Science Graduate 2007, 2009 █ Asso. Prof. Yuval Tamir Cluster, Distributed Memory, Distributed Shared Memory, Memory Consistency, Message Passing, Multicore, Networks, Shared Memory, SMP, Synchronization SIMD and MIMD systems, symmetric multiprocessors, distributed‐shared‐memory systems, messages‐passing systems, multicore chips, clusters, interconnection networks, host‐network interfaces, switching element design, communication primitives, cache coherency, memory consistency models, synchronization primitives, state‐of‐art design examples.

Parallel Programming

http://courseweb.seas.ucla.edu/classView.php?term=08W&srs=587200200 Computer Science Graduate 2006 ‐ 2008 ██ Prof. Rajive Bagrodia Atomicity, Languages, Mutex, Parallel Computation Primitives, Parallel Program Verification, Programming Languages, Resource Allocation, Synchronization Mutual exclusion and resource allocation in distributed systems; primitives for parallel computation: specification of parallelism, interprocess communication and synchronization, atomic actions, binary and multiway rendezvous; synchronous and asynchronous languages: CSP, Ada, Linda, Maisie, UC, and others; introduction to parallel program verification.

Verification of Concurrent Programs

CS233B Computer Science Graduate ‐ █ ‐

Languages, Liveness, Parallel Languages, Verification of Concurrent Programs Formal techniques for verification of concurrent programs. Topics include safety, liveness, program and state assertion‐based techniques, weakest precondition semantics, Hoare logic, temporal logic, UNITY, and axiomatic semantics for selected parallel languages.

36 University of Illinois

University of Illinois ██████ Degree Courses: Bachelor of Science (B.S.) in Computer Science: http://www.cs.uiuc.edu/undergraduate/sequence.php

Bachelor of Science (B.S.) in Math and Computer Science: University of Illinois http://www.cs.uiuc.edu/undergraduate/mathcscoursework.php Urbana, IL Bachelor of Science (B.S.) in Statistics and Computer Science: Or http://www.cs.uiuc.edu/undergraduate/statscscoursework.php Champaign, IL Master of Science (M.S.) in Computer Science: http://www.cs.uiuc.edu/graduate/programs.php#ms

Concurrent Programming Languages

http://cs.engr.uiuc.edu/graduate/courses.php?course=cs524 Computer Science Graduate 2001, 2004, 2005, 2008 █ Prof. Gul Agha

Concurrent Programming Languages, Concurrent Computation Models, Correctness, Languages Introduction to the theory of concurrency and concurrent programming languages. Formal models of concurrent computation such as process algebras, nets, and actors; high level concurrent programming languages and their operational semantics; methods for reasoning about correctness and complexity of concurrent programs.

Parallel Computer Architecture

http://www.cse.uiuc.edu/courses/cs533/ Computer Science Graduate 2008 █ ‐

Networks, Parallel Computation, Pipeline Computation Theoretical aspects of parallel and pipeline computation; time and processor bounds on classes of computations; data alignment, network speed and cost bounds; conflict‐free access memories; overall computer system ideas.

37 University of Illinois

Parallel Numerical Algorithms

http://www.cse.uiuc.edu/courses/cs554/ Computer Science Graduate 2007, 2008 █ Prof. Michael Heath, Prof. William Gropp

Algorithms, Linear Algebra, Numerical Algorithms, Numerical Optimization Techniques Introduction to numerical algorithms for parallel computers: parallel algorithms in numerical linear algebra (dense and sparse solvers for linear systems and the algebraic eigenvalue problem), numerical handling of ordinary and partial differential equations, and numerical optimization techniques.

Parallel Programming: Sci&Engrg

http://www.cs.uiuc.edu/class/cs420/ Undergraduate Computer Science 2005, 2008 █ Graduate Prof. Dr. Laxmikant Kale

Cost Models, Debugging, Evaluation, Languages, Performance Evaluation, Programming Models Introduction to fundamental issues in design and development of parallel programs for various types of parallel computers. Various programming models according to both machine type and application area. Cost models, debugging, and performance evaluation of parallel programs with actual application examples.

“Special Topics”

http://www.courses.uiuc.edu/cis/schedule/urbana/2008/Fall/CS/498.html Computer Science Graduate 2008 ████

Prof. David Padua Algorithms, Classes of Parallel Machines, Cluster, Languages, Multicore, Parallel Computation Models, Parallel Programming Languages, Programming Paradigms Multicore and Cluster Parallel Programming. An in depth discussion of the main concepts and techniques of parallel programming. Topics include: main classes of parallel machines and programming paradigms, parallel programming languages and APIs, models of parallel computation, techniques and tools for program optimization and debugging in the context of multicores and clusters, and parallel algorithms.

38 University of Michigan

University of Michigan ███ Degree Courses: Bachelor of Science in Engineering (B.S.E.) in Computer Science: http://www.eecs.umich.edu/eecs/undergraduate/CSE_Program_Details.html Master of Science (M.S.) in Computer Science: http://www.eecs.umich.edu/eecs/graduate/cse/ CSEGraduateStudyBrochure.PDF Master of Science in Engineering (M.S.E.) in Computer Science: University of Michigan http://www.eecs.umich.edu/eecs/graduate/cse/ Ann Arbor, MI 48109

CSEGraduateStudyBrochure.PDF

Parallel Computer Architecture

http://www.eecs.umich.edu/courses/eecs570 Electr. Eng. and Comp. Sci. Graduate 2002 ‐ 2008 █ Asso. Prof. Todd Austin

Architectures, Case Studies, Communication, Multiprocessor, Networks, Shared Memory, Threads Topics to be covered include architectures for explicit parallelism, multithreaded processors, small‐ and large‐scale multiprocessor systems, shared‐memory coherence and consistency, effect of architecture on communication latency, bandwidth, and overhead, interconnection networks, and case studies.

Parallel Computing

http://www.eecs.umich.edu/~qstout/587/ Comp. Sci. & Eng. Graduate ? ‐ 2008 ███ Prof. Quentin F. Stout

Architectures, Cluster, Distributed Memory, Grid, MPI, Networks, OpenMP, Shared Memory The course covers a wide range of aspects of parallel computing, with the emphasis on developing efficient software for commercially available systems, such as the clusters here on campus. We will emphasize using standard software, including MPI (Message Passing Interface) and OpenMP. Use of standard software helps make the code more portable, preserving the time invested in it. Because there is not a single parallel computing model, you also have to learn some

39 University of Michigan about various parallel architectures, since there is significant hardware/software interaction. This includes aspects such as interconnection networks, shared vs. distributed memory, fine‐grain vs. medium‐grain, MIMD/SIMD, vector processing, cache structure, etc.

40 University of Tennessee, Knoxville

University of Tennessee, Knoxville ███ Degree Courses: Bachelor of Science (B.S.) in Computer Science: http://diglib.lib.utk.edu/dlc/catalog/images/u/2008/u_eng.pdf Master of Science (M.S.) in Computer Science: The University of Tennessee http://diglib.lib.utk.edu/dlc/catalog/images/g/2008/g_3.pdf Knoxville, TN, 37996

Scientific Computing for Engineers

http://www.cs.utk.edu/~dongarra/WEB‐PAGES/cs594‐2008.htm Elec. Engi. and Comp. Sci. Graduate 1998 ‐ 2008 ███

Prof. S. Jack

Algorithms, MATLAB, Modeling of Problems, MPI, OpenMP, PThreads • Part I will start with current trends in high‐end computing systems and environments, and continue with a practical short description on parallel programming with MPI, OpenMP, and PThreads. • Part II will illustrate the modeling of problems from physics and engineering in terms of partial differential equations (PDEs), and their numerical discretization using finite difference, finite element, and spectral approximation. • Part III will be on solvers: both iterative for the solution of sparse problems of part II, and direct for dense matrix problems. Algorithmic and practical implementation aspects will be covered. • Finally in Part IV, various software tools will be surveyed and used. This will include PETSc, Sca/LAPACK, MATLAB, and some tools and techniques for scientific debugging and performance analysis.

41

University of Toronto ███ Degree Courses: Bachelor of Arts (B.A.) in Computer Science: http://www.artsandscience.utoronto.ca/ofr/calendar/ prg_csc.htm#programs Bachelor of Science (B.Sc.) in Computer Science: University of Toronto http://www.artsandscience.utoronto.ca/ofr/calendar/ 27 Kingʹs College Circle prg_csc.htm#programs Toronto, Ontario, Canada Master of Science (M.Sc.) in Computer Science: M5S 1A1 http://web.cs.toronto.edu/dcs/index.php?section=45

High-Performance Scientific Computing

http://www.cs.toronto.edu/~csc456h Computer Science Undergraduate 2006 █

Asso. Prof. Christina C. Christara Applications for Science and Engineering, Multiprocessor , Numerical Algorithms, Parallel Computer Architectures, Performance Evaluation, Computationally‐intensive applications in science and engineering are implemented on the fastest computers available, today composed of many processors operating in parallel. Parallel computer architectures; implementation of numerical algorithms on parallel architectures. Topics from: performance evaluation; scientific visualization; numerical methods; applications from science and engineering.

Parallel Computer Architecture and Programming

http://www.eecg.toronto.edu/~steffan/teaching/ece1755F/ Electrical and Comp. Eng. Graduate 2005 ‐ 2008 ██ Asso. Prof. Gregory Steffan

Architecture, Multicore, Research Papers, Threads With the advent of multicore processors, we are faced with the challenge of exploiting this ubiquitous multithreaded hardware. This course explores the evolution of modern parallel

42 University of Toronto architectures and programming models, and is divided into two phases. In the first phase we will investigate in detail the design and operation of modern parallel architectures, with a brief look at how they are programmed. This phase will include several homeworks which provide hands‐on experience with real parallel machines. The second phase of the course will switch gears: we will study current research and development of emerging parallel architectures including multicore processors, helper threads, and speculative multithreading; in this phase we will read research papers, and through the class project implement and evaluate new ideas. Students are welcome to suggest topics for class discussion and/or projects.

Parallel Programming

http://www.eecg.toronto.edu/~amza/ece1747h/ece1747h‐07.html Electrical and Comp. Eng. Graduate 2005 ‐ 2007 █ Ass. Prof. Cristiana Amza

Data Distribution, MPI, OpenMP, Parallel System Architecture, PThreads, PVM, Thread This course is a first‐year graduate introduction to the area of parallel programming. We will briefly introduce the architecture of parallel systems first (multiprocessor cache coherence topics) and the concept of data dependencies/races. The three most commonly used parallel programming paradigms (shared memory, distributed memory and data parallel) will then be examined in detail. An overview of automatic parallelization of programs and the use of parallel processing in related domains such as parallel and distributed database transaction processing will also be given. Finally, selected research topics will be examined. The class includes several assignments on programming in shared memory with PThreads, programming message‐passing style (PVM), data distribution (HPF), possibly programming with OpenMP and a larger research‐style project. Suggested topics will be posted for the course project. Prerequisites: an undergraduate course in operating systems.

43

II II Courses at U.K. Universities

44 Imperial College London

Imperial College London ████ Degree Courses: Bachelor of Engineering (B.Eng.) in Computer Science: http://www3.imperial.ac.uk/computing/teaching/undergraduate/ computing/beng‐regulations Imperial College London Master of Engineering (M.Eng.) in Computer Science: South Kensington Campus http://www3.imperial.ac.uk/computing/teaching/undergraduate/ UK‐London SW7 2AZ computing/meng‐regulations

Concurrency

http://www.doc.ic.ac.uk/teaching/coursedetails/223 Computing Graduate ? ‐ 2008 █

Prof. Jeff Kramer, Sebastian Uchitel Communication, Concurrent Programming Basics, Deadlock, Message Passing, Monitors, Software Structure, Starvation, Synchronization • Introduction to concurrent programming: Key ideas, interleaved actions, synchronization, critical sections, deadlock, starvation, fairness, safety and liveness. • Monitors: entry queues, condition variables, wait and signal, alternative signaling mechanisms, reasoning about monitors. • Message Passing: processes, synchronous and asynchronous communication, ports, send and receive, request‐reply communication, non‐deterministic choice, configuration programming. • Specification: introduction to formalisms for the specification and verification of concurrent system; labeled transition systems, process calculi CCS, CSP. • Software structure: structuring applications into modular, distributable software components; component types and instances; nesting and dynamic structures; component interfaces; connection patterns and naming.

Distributed Algorithms

http://www.doc.ic.ac.uk/teaching/coursedetails/437 Computing Graduate ? ‐ 2008 ██ Prof. Alexander Wolf

Algorithms, Atomicity, Communication, Message Passing, Models of Distributed Computing

45 Imperial College London

• Models of distributed computing • Synchrony, communication and failure concerns • Synchronous message‐passing distributed systems • Algorithms in systems with no failures ‐ Leader Election and Breadth‐First Search algorithms • The atomic commit problem • Consensus problems ‐ the Byzantine Generals Problem • Asynchronous message‐passing distributed systems • Logical time and global system snapshots • Impossibility of consensus • Fault‐tolerant broadcasts • Partially synchronous message‐passing distributed systems • Failure detectors

Distributed Systems

http://www.doc.ic.ac.uk/teaching/coursedetails/335 Computing Graduate ? ‐ 2008 ██

Prof. Morris Sloman, Vrizlynn Thing

Concurrency, Interaction Primitives, Java RMI, Message Passing, Security, Threads • Overview of Distributed System Architecture: motivation, system structures, architecture, ODP Reference model and distribution transparencies, design issues. • Interaction Primitives: message passing, remote procedure call, remote object invocation • Software Structures and components: composite components, Darwin architecture description language, first & third party binding. • Interaction Implementation: message passing, RPC, concurrency and threads, heterogeneity of systems and languages. • Security: threat analysis, security policies ‐ military (Bell Lapadula) vs. commercial models; access control concepts ‐ identification, authentication, authorization and delegation; authorization policy: access matrix, access rules and domains, firewalls; access control lists, capabilities, secret and public key encryption, digital signatures, authentication, Kerberos; web security; security management.

Models of Concurrent Computation

http://www.doc.ic.ac.uk/teaching/coursedetails/481 Computing Graduate ? ‐ 2008 █

Dirk Pattinson, Philippa Gardner

Case Studies, Communication, Concurrency, Message Passing, Non‐determinism, Shared Variables Communication via message passing or shared variables, non‐determinism, processes as ʹblack boxesʹ, interleaving versus true concurrency. CCS (Calculus of Concurrent Systems): operators, case studies, Concurrency Workbench (software tool), transition systems, equational reasoning, bisimulation, observational congruence, Hennessy‐Milner logic. Calculi for mobility and security: Pi Calculus, asynchrony, reduction congruence, Spi calculus for cryptographic protocols, secrecy, authenticity, Mobile Ambients, applications to biological systems.

46 Imperial College London

Parallel Algorithms

http://www.doc.ic.ac.uk/teaching/coursedetails/429 Computing Graduate ? ‐ 2008 █ Dr. William Knottenbelt, Prof. Peter Harrison Algorithm Classification, Architecture Classification, Application Classification, Divide and Conquer, Matrix Algorithms, Message Passing, Searching Algorithms, Shared Memory, Sorting Algorithms • Classification of algorithms, architectures and applications: searching, divide and conquer, data parallel. Static and dynamic, message passing and shared memory, systolic. • Sorting and searching algorithms: merge sort, quick sort and bitonic sort, implementation on different architectures. Parallel depth‐first and breadth‐first search techniques. • Matrix algorithms: striping and partitioning, matrix multiplication, linear equations, eigenvalues, dense and sparse techniques, finite element and conjugate gradient methods. • Optimization: graph problems, shortest path and spanning trees. Dynamic programming, knapsack problems, scheduling. element methods. • Synthesis of parallel algorithms: algebraic methods, pipelines, homomorphisms.

47 University of Cambridge

University of Cambridge █ Degree Courses:

Bachelor of Arts (B.A.) in Computer Science: http://www.cl.cam.ac.uk/admissions/undergraduate/intro/ University of Cambridge The Old Schools Trinity Lane Cambridge CB2 1TN

Concurrent Systems and Applications

http://www.cl.cam.ac.uk/teaching/0708/ConcSys/ Computer Laboratory Undergraduate ? ‐ 2008 █ Dr. J.K. Fawcett

C# Programming Language, Java Programming Language, Locks, Modular Software Design, Mutex, Threads, Transactions The aims of this course are (a) to introduce the modular design of application software, using the facilities of the Java and C# programming language as running examples, (b) to explore the need for and implementation of concurrency control and communication in inter‐process and intra‐ process contexts and (c) to introduce the concept of transactions and their implementation and uses. Contains amongst others: • Concurrent systems: Reasons for multi‐threaded programming. Correctness criteria. Mutual exclusion locks and condition variables. Alternative concurrency‐control primitives. • Distributed systems & transactions: General problems in distributed systems. Naming. Access control. IDLs. Message passing and the use of sockets in Java. Remote method invocation. Compound operations & correctness criteria. Crash recovery. Isolation.

Topics in Concurrency

http://www.cl.cam.ac.uk/teaching/0708/TopConc/ Computer Laboratory Undergraduate ? ‐ 2008 █ Prof. Glynn Winskel

Non‐determinism, Petri Nets, Shared Variables

48 University of Cambridge

The aim of this course is to introduce fundamental concepts and techniques in the theory of concurrent processes. It will provide languages, models, logics and methods to formalize and reason about concurrent systems. • Simple parallelism and nondeterminism: Dijkstraʹs guarded commands. Communication by shared variables: A language of parallel commands. • Communicating processes: Milnerʹs Calculus of Communicating Processes (CCS). Pure CCS. Labeled‐transition‐system semantics. Bisimulation equivalence. Equational consequences and examples. • Specification and model‐checking: The modal mu‐calculus. Its relation with Temporal Logic, CTL. Model checking the modal mu‐calculus. Bisimulation checking. Examples. • Introduction to Petri nets: Petri nets, basic definitions and concepts. Petri‐net semantics of CCS. • Cryptographic protocols:. Cryptographic protocols informally. A language for cryptographic protocols. Its Petri‐net semantics. Properties of cryptographic protocols: secrecy, authentication. Examples with proofs of correctness. Mobile computation: An introduction to process languages with process passing and name generation. The Pi‐Calculus and Ambient Calculus briefly.

49 University of Oxford

University of Oxford ███ Degree Courses: Bachelor of Arts (B.A.) in Computer Science: http://web2.comlab.ox.ac.uk/oucl/prospective/ugrad/ csatox/compsci.html University of Oxford Bachelor of Arts (B.A.) in Mathematics and Computer Science: University Offices http://web2.comlab.ox.ac.uk/oucl/prospective/ugrad/ Wellington Square csatox/mandcs.html UK‐Oxford OX1 2JD Master of Science (M.Sc.) in Computer Science: http://web2.comlab.ox.ac.uk/oucl/courses/grad07‐08/cs/ courses.html

Advanced Concurrency

http://web2.comlab.ox.ac.uk/oucl/courses/topics03‐04/acaims.html Computer Science Undergraduate 2003 █ ‐

Concurrency Analysis, FDR, Theory CSP, Timed Systems This course builds on the course Concurrent Systems and covers the analysis of concurrency using the theory CSP and the analysis tool FDR. You will learn to use CSP to model and reason about a range of concurrent systems, to develop models that can be analyzed using FDR and to interpret the results of the analysis. In addition to asynchronous concurrency, we will also cover timed systems and the modeling of fault‐tolerant systems and protocols.

Concurrency

http://web.comlab.ox.ac.uk/teaching/courses/concurrency/ Computer Science Undergraduate 2002 ‐ 2008 █

James Worrell

Communication, Concepts of Concurrency, Deadlock, FDR, Live‐Lock, Parallelism, Synchronization The concurrency course introduces the fundamental concepts of concurrency using the notation of Communicating Sequential Processes. By introducing communication, parallelism, deadlock, live‐lock, etc., it shows how CSP represents, and can be used to reason about, concurrent systems.

50 University of Oxford

Students are taught how to design interactive processes and how to modularize them using synchronization. One important feature of the module is its use of both algebraic laws and semantic models to reason about reactive and concurrent designs. Another is its use of FDR to animate designs and verify that they meet their specifications.

Concurrent and Distributed Programming

http://web2.comlab.ox.ac.uk/oucl/courses/topics07‐08/cdp/ Computer Science Undergraduate 2006 ‐ 2008 ██ Dr. Bernard Sufrin Concurrent Process Architectures, Grid, High‐level Constructs, Low‐level Constructs, Monitor, Mutex, Processes, Semaphore, Threads, Transactions Concurrent Programming: • Basic Notions: processes and threads, liveness, safety, mutual exclusion. • Low‐level language constructs: semaphore, monitor. • High‐level language constructs: OCCAM and related programming models. Relationship between the OCCAM model and Process Algebra. • Concurrent Process Architectures: processor farm, pipeline, grid.

Distributed Programming: • Basic Notions: Client, server, broker, distribution‐transparency. • Coordination and agreement: failure detection algorithms, election algorithms, global and logical time. • Transactions: A‐C‐I‐D properties, serial equivalence, recoverability. • Replication

Concurrent Programming

http://web.comlab.ox.ac.uk/teaching/courses/concurrentprogramming/ Computer Science Undergraduate 2009 █ Prof. Dr. Gavin Lowe

Message Passing The aim of this course is to understand those challenges, and to see techniques for tackling them. The main paradigm to be considered is message passing concurrency, where independent processes, with private variables, interact by passing messages.

Concurrent Systems

http://web2.comlab.ox.ac.uk/oucl/courses/topics02‐03/csaims.html Computer Science Undergraduate 2003 █ ‐

Concurrent Computing This course will introduce you to the theory and practice of , teaching you to write simple concurrent programs and to reason about their behavior. You will gain an appreciation of the problems that must be solved in building systems that involve concurrency and the techniques that are used to overcome them.

51

III Courses at German Universities

53 HU Berlin

HU Berlin ███ Degree Courses: Bachelor of Arts (B.A.) in Computer Science: http://www.informatik.hu‐berlin.de/studium/studiengaenge/ bachelor/ba2007.pdf

Humboldt‐Universität zu Berlin Unter den Linden 6 D‐10099 Berlin

Algorithms and Programming of new processor technologies: From Multi- Core to Hardware Accelerators

http://www.zib.de/reinefeld/HU/2008_SS_Algorithmen%20und%20Programmierung/index.html Computer Science Graduate ? – 2008 ██ Prof. Dr. A. Reinefeld Algorithms, Cell, GPGPU, Instruction Level Parallelism, Memory Hierarchy, Multicore, Pipelining, Strategies for Parallelization Command architecture, addressing, pipelining, ILP, memory hierarchy, coherence, multi‐core, FPGA, Clearspeed and strategies for parallelization. Project part: Implementation of selected algorithms on multi‐core computers, FPGAs, Clearspeed, GPUs and Cell.

Architecture of parallel and distributed systems

http://www.informatik.hu‐berlin.de/studium/lfe/vertiefung/avps.pdf Computer Science Graduate ? ‐ 2008 ██ ‐

Algorithms, Communication, Control of Concurrency, MapReduce, Serialization, Transaction massively‐parallel, client‐server, peer‐to‐peer: dedicated concepts and algorithms, including communication protocols, classes for serialization, failure models, control of concurrency, methods of consensus and transaction; MapReduce

54 RWTH Aachen

RWTH Aachen ███▒ Degree Courses: Bachelor of Science RWTH Aachen University (B.Sc.RWTH) Computer Science: http://www.rwth‐aachen.de/global/show_document.asp? RWTH Aachen id=aaaaaaaaaaadaiq Templergraben 55 Master of Science RWTH Aachen University (M.Sc.RWTH) D‐52056 Aachen Computer Science: http://www.rwth‐aachen.de/global/show_document.asp? id=aaaaaaaaaaayeva

Introduction to High-Performance Computing

http://www.sc.rwth‐aachen.de/Teaching/Lectures/HPC08/index.html Scientific Computing Graduate ? ‐ 2008 █ Dr. Martin Bücker

Finding Algorithmic Solutions, Solving Numeric Problems Solving Numeric problems; algorithmic solutions.

Parallel Algorithms and Software for Iterative Methods

http://www.sc.rwth‐aachen.de/Teaching/Lectures/PAS/ Scientific Computing Graduate ? ‐ 2004 ██ Dr. Martin Bücker

Graph Partitioning, Iterative Methods, MPI, OpenMP, Parallel Preconditioning, Parallel Programming Models • Origin of Sparse Linear Systems: Finite Difference Methods, Finite Element Methods • Methods Inappropriate for Sparsity: Direct Methods, Classical Iterative Methods • Fundamentals of Modern Iterative Methods • Construction of a Basis of the Search Subspace • Definition of the Iterates by the Subspace of Constraints • Parallel Programming Models: MPI, OpenMP, Hybrid MPI‐OpenMP • Modeling Parallel Iterative Methods • Scalable Parallel Algorithms • Parallel Preconditioning

55 RWTH Aachen

• Parallel Matrix‐Vector Multiplication • Graph and Hypergraph Partitioning

Parallel Computing for Computational Mechanics

http://www.cats.rwth‐aachen.de/teaching/para/ Scientific Computing Graduate 2005 ‐ 2008 ██ Prof. Marek Behr

Analysis Techniques, HPC, Languages, Optimization, Parallel Computing, Programming, Solving Mechanic Problems This course will introduce analysis techniques that exploit modern computing engines to solve computational mechanics problems, with emphasis on fluid flows and finite element methods. Sections of the course will concentrate on discretization methods, scalar optimization, parallel computing, and practical aspects of parallel finite element implementations. A prior knowledge of FORTRAN or C Programming, and familiarity with the UNIX operating system are prerequisite. Course requirements include class participation and completion of hands‐on programming projects. Graduate students in the course will: • Become acquainted with commonly used discretization techniques, and their role in the analysis of continuum mechanics problems • Be exposed to currently available high performance computing platforms • Learn to improve the efficiency of their analysis codes by using programming techniques that take into account the memory hierarchy of the processing unit • Begin to apply parallelization techniques in order to dramatically reduce time required to complete the numerical simulation • Explore the internal workings of a parallel finite element implementation for fluid flow analysis

Parallel Numerical Algorithms

http://www.sc.rwth‐aachen.de/Teaching/Lectures/PNA01/ Scientific Computing Graduate ? ‐ 2001 █ Dr. Bruno Lang

Algorithms, Architecture, Iterative Methods Blocked algorithms, Parallel computers, Linear systems, Iterative methods, Eigenvalue computations

Parallel Preconditioning Techniques for Linear Systems

http://www.sc.rwth‐aachen.de/Teaching/Lectures/PPC05/ Scientific Computing Graduate ? ‐ 2005 ▒ Dr. Martin Bücker

ILU, Preconditioning Idea of Preconditioning, Preconditioned Iterations, ILU, Parallelism in ILU

56 TUBraunschweig

TUBraunschweig ██▒ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: http://www.tu‐braunschweig.de/Medien‐DB/fk1/bpo‐informatik‐ 2008‐06‐12.pdf Master of Science (M.Sc.) in Computer Science: TU Braunschweig http://www.tu‐braunschweig.de/Medien‐DB/fk1/mpo‐informatik‐ D‐38092 Braunschweig 2008‐06‐12.pdf

Distributed Algorithms

http://www.ibr.cs.tu‐bs.de/courses/ss08/va/index.html Computer Science Graduate 2008 ▒

Prof. Dr. Sándor P. Fekete, Dr. Bernhard Fuchs, Dr. Tom Kamphans

‐ No Description available.

Parallel Computing

http://www.ibr.cs.tu‐bs.de/courses/ss08/va/index.html Computer Science Graduate 2008 ██

Dr. Josef Schüle

Cluster, Distributed Memory, MPI, PVM Numerical simulations on high‐performance computers, distributed memory (Cluster). Analysis of execution times. Programming models for parallel systems, e.g. MPI and PVM.

57 TU Chemnitz

TU Chemnitz ██ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: http://www.tu‐chemnitz.de/studium/studiengaenge/bachelor/ ba_informatik.php#Studienaufbau Master of Science (M.Sc.)in Computer Science: http://www.tu‐chemnitz.de/studium/studiengaenge/master/ Technische Universität Chemnitz ma_informatik.php#Studienaufbau D‐09107 Chemnitz

Parallele Programmierung

http://www.tu‐chemnitz.de/informatik/studium/vorl_verz_ss08/komm‐verz‐ss08.html#PPROG Computer Science ? 2007 ‐ 2008 ██

Prof. Dr. G. Rünger, M. Schwind

Java, MPI, Multicore, OpenMP, PThreads, PVM, UPC multi‐processors computers, clusters of personal computers, clusters of multi‐core computers, Pthreads, Java‐Threads, OpenMP, MPI, PVM and UPC, programming models, parallel design patterns, concepts of the programming environments.

58 TU Darmstadt

TU Darmstadt ███ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: http://www.informatik.tu‐darmstadt.de/fileadmin/user_upload/

Dekanat/Beratung/BSC2007/SPP_BSc0708‐Beginn_im_WS.pdf Technische Universität Master of Science (M.Sc.) in Computer Science: Darmstadt http://www.informatik.tu‐darmstadt.de/fileadmin/user_upload/ Karolinenplatz 5 Dekanat/Beratung/Master/MSc_Studien_und_Pruefungsplan_WS0405.pdf D‐64289 Darmstadt

Parallele Algorithmen auf Graphen http://www.informatik.tu‐darmstadt.de/Dekanat/cgi‐bin/mhb/scripte/show_no.cgi?amp;lang=de

&nr=339&treeview=1&alltype=1&allarea=1&allgang=1&allorga=1&allterm=1 Undergraduate Computer Science ?‐ 2008 █ Graduate Dr. habil. Elias Dahlhaus

Algorithms Parallel algorithms: maximum independent set, elimination rules, clustering problems, modular decomposition, splitdecomposition.

Programmierung Massiv-Paralleler Prozessoren http://www.informatik.tu‐darmstadt.de/Dekanat/cgi‐bin/mhb/scripte/show_no.cgi?amp;lang=de

&nr=419&treeview=1&alltype=1&allarea=1&allgang=1&allorga=1&allterm=1 Undergraduate Computer Science ?‐ 2008 ██ Graduate

Prof. Dr. Michael Goesele

GPGPU, Massive Parallel Systems Programming massive‐parallel systems, GPUs and their use for non‐graphic applications.

59 TU Dresden

TU Dresden ████ Degree Courses:

Bachelor of Arts (B.A.) in Computer Science: http://tu‐dresden.de/studium/beratung/zentrale_studienberatung/ informationsschriften/pdf_studieninfos/informatik.pdf Technische Universität Dresden D‐01062 Dresden

Hochleistungsrechner und ihre Programmierung 1

http://tu‐dresden.de/die_tu_dresden/zentrale_einrichtungen/zih/lehre/ws0708/hlrp1 Computer Science Graduate 2002 ‐ 2008 ████

Prof. Dr. Wolfgang E. Nagel

Algorithms, HPC Concepts of parallel processing, Parallel and scalable architectures, Concepts of architectures, Performance characteristics, Software and programming, Parallel programming models, Program development, OS support, practical experiences, algorithmic case studies, use of tools.

Hochleistungsrechner und ihre Programmierung 2 http://tu‐dresden.de/die_tu_dresden/zentrale_einrichtungen/zih/lehre/ss2008/hlrp2 Computer Science Graduate 2003 ‐ 2008 ████

Prof. Dr. Wolfgang E. Nagel

Algorithms, HPC Architecture of vector‐ and parallel computers, concepts of structure, analysis and evaluation of components, performance characteristics, practical experiences, programming of parallel systems, high performance computation with parallel algorithms, algorithms for linear algebra.

60 TU Dresden

Konzepte der parallelen Programmierung

http://tu‐dresden.de/die_tu_dresden/zentrale_einrichtungen/zih/lehre/ws0708/kdpp Computer Science Graduate 2004 ‐ 2008 █ Dr.‐Ing. Bernd Trenkler

MPI, OpenMP, Programming Parallel programming with MPI and OpenMP.

61 TU Ilmenau

TU Ilmenau ██▒ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: http://www4.tu‐ilmenau.de/studienplan/studienplan.php? stg=BA_Informatik Technische Universität Master of Science (M.Sc.) in Computer Science: Ilmenau ‐ Ehrenbergstraße 29 D‐98693 Ilmenau

Entwurf und Validierung paralleler Systeme

http://www‐ihs.theoinf.tu‐ilmenau.de/lehre/euv/index_de.htm Computer Science Graduate ? ‐ 2008 ▒

Prof. Dr. Andreas Mitschele‐Thiel

‐ • Description techniques: VHDL, SystenC, StateCharts, SDL/MSC • Validation: Validation of parallel systems, properties of parallel automatons, funcitonal properties with model checking, temporal properties and performance characteristics • Moderne Entwurfstechniken: Heuristic optimization, High‐level synthesis, HW/SW codesign

Hochparallele Rechnerarchitekturen

http://www.tu‐ilmenau.de/fakia/UEbersicht.3586.0.html Computer Science Graduate ? ‐ 2008 ▒ Dr. Andreas Reske, Dr. Roger Knorr

‐ No Description Available.

62 TU Ilmenau

Parallele Algorithmen auf Gittern und Hypercubes

http://www.tu‐ilmenau.de/fakia/Parallele‐Algorithme.pagh_ss08.0.html Computer Science Graduate ? ‐ 2008 █

Prof. Dr. Andreas Mitschele‐Thiel, Prof. Dr. Manfred Kunde, Dr. Michael Brinkmeier

Algorithms Design and analysis of parallel algorithms, efficiency (computing time, memory costs and number of processors), architectures (trees, grids, hypercubes and more).

Parallele Systeme

http://www.tu‐ilmenau.de/fakia/7662+M54099f70862.0.html Computer Science Graduate ? ‐ 2008 ▒ Dr. Volker Zerbe

‐ Architecture, algorithms, programming languages and applications. Basic principles, design alternatives and realization of parallel systems.

Verteilte Algorithmen http://wcms3.rz.tu‐ilmenau.de/~goettlich/elvvi/winter/list/ fachseite.php?fid=93A7C96806A68A58DF426F28E894A730 Computer Science Graduate 2009 ██

Prof. Dr. Winfried Kühnhauser

Algorithms, Efficiency, Scalability, Synchronization • Reactive models for description of parallel algorithms: synchronous and asynchronous algorithm models • Orders and sequences: physical and logical clocks • Synchronization algorithms: critical sections, mutual exclusion, distributed deadlocks • Concurrency and coordination: distributed atomic transactions, caching, replication • Properties: Scalability, efficiency, time complexity, robustness, fail‐stop

63 TU Munich

o

TU Munich ██████ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: http://www.in.tum.de/studium/studiengaenge/informatik/ Studienplan_Bachelor_0708.html Technische Universität Master of Science (M.Sc.) in Computer Science: München http://www.in.tum.de/studium/studiengaenge/informatik/ Arcisstraße 21 D‐80333 München Studienplan_Master_IN07.pdf

Grid Computing

http://www.lrr.in.tum.de/~gerndt/home/Teaching/WS2008/GridComputing/GridComputing.htm Computer Science Graduate 2007, 2008 █ Prof. Dr. Eike Jessen, Prof. Dr. Michael Gerndt

Data Management, Grid, Middleware Architectures, Resource Management, Security Basic technologies, application‐level Tools, semantic grid, middleware architectures, security, resource and job management, grid monitoring, data management, commercial products, applications and projects.

High Performance Architectures

http://www.lrr.in.tum.de/~gerndt/home/Teaching/WS2008/GridComputing/GridComputing.htm Computer Science Graduate 2002 ‐ 2008 ██ Prof. Dr. Michael Gerndt

Consistency, Networks, Synchronization Introduction, Classification of parallel architectures, Parallel programming, Applications, Models for Parallel Computation, Performance of Parallel Computers, Interconnection Networks, SIMD, Computers, Cache Coherence, Consistency, and Synchronization, SMP Computers, MP Computers, ccNUMA, COMA, nccNUMA, Grid computing.

64 TU Munich

Parallel Numeric

http://www5.in.tum.de/lehre/vorlesungen/parnum/ Computer Science Graduate 2002 ‐ 2008 ███ Prof. Dr. Thomas Huckle

Algorithms, HPC, Iterative Methods, MPI, Performance Analysis High‐performance computing, performance: analysis, modeling, and measurements, basic linear algebra subprograms, direct solution of sparse linear systems, iterative methods for linear systems, linear Eigenvalue problems, programming in MPI.

Parallel Programming http://www.lrr.in.tum.de/~gerndt/home/Teaching/SS2008/ParallelProgramming/ParallelProgrammi ng.htm Computer Science Graduate 2002 ‐ 2008 █ Prof. Dr. Michael Gerndt

MPI, OpenMP, Shared Memory Introduction, Classification of parallel architectures, Shared memory programming with OpenMP, Parallel programming, Dependence analysis, Automatic parallelization, Message Passing Interface (MPI).

Parallel Programming and High Performance Computing

http://www5.in.tum.de/lehre/vorlesungen/parhpp/ Computer Science Graduate 2005, 2007, 2008 ███ Dr. Ralf‐Peter Mundani Basics of Parallel Computers and Programs, Distributed Memory, HPC, Message Passing, MPI, OpenMP, Parallel Numeric Algorithms, Shared Memory, Synchronization, Vector Programming • Introduction (classification of computers, levels of parallelism, performance analysis, topologies) • Basics of parallel programs (terminology, communication and synchronization via shared memory and messages respectively, parallel program structures, design of parallel programs) • Programming of memory linked systems (cache coherence and memory consistency, analysis of variables, programming with OpenMP) • Programming of message linked systems (message‐Passing‐Paradigm, Programming with MPI) • Dynamic load balancing (terminology, selected strategies, load balancing via space filling curves) • Vector programming (overview, vector computer, vectorizing compilers) • Examples of parallel numeric algorithms (matrix‐vector product, matrix‐matrix product, Jacobi‐ and Gauss‐Seidel‐Method)

65 University of Augsburg

University of Augsburg ███ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: Curriculum not available at the moment.

Universität Augsburg Universitätsstr. 2 D‐86159 Augsburg

Multicore Programming

http://www.informatik.uni‐augsburg.de/de/lehrstuehle/sik/lehre/ws/multicore/ Computer Science Graduate ? ‐ 2008 ███ Prof. Dr. Theo Ungerer

Architectures of Multicore Processors, Cell, Multicore, PThreads Parallel programming (e.g. PThreads), architectures of multi‐core processors (e.g. Cell‐Processor).

66 University of Duisburg‐Essen

University of Duisburg-Essen ██▒ Degree Courses: Bachelor of Science (B.Sc.) in Applied Computer Science: http://bmai.inf.uni‐due.de/bachelor‐ studium/studienverlaufsplaene/beginn‐wintersemester.html Campus Duisburg: Master of Science (M.Sc.) in Applied Computer Science: Forsthausweg 2 http://bmai.inf.uni‐due.de/MasterStudienverlaufsplan.html D‐47057 Duisburg

Campus Essen: Universitätsstraße 2 D‐45141 Essen

Concurrent Computing

http://dc.icb.uni‐due.de/group/all/teaching/nlr/2008vor.html Computer Science Graduate 2007 ‐ 2008 ██

Prof. Dr. Klaus Echtle

Algorithms, Communication, Synchronization, Threads Communication systems, computer networks, parallel computers, concurrency in applications , synchronization, communication.

Modeling of Concurrent Systems

http://www.ti.inf.uni‐due.de/teaching/ws0809/mod_ns/index.html Computer Science Graduate 2006 ‐ 2008 █

Prof. Dr. Barbara König

Concurrent Systems, Deadlocks, Petri Nets Transitions systems, behavior equivalence, properties for security and liveliness, Büchi‐ automatons, temporal logic, LTL‐model checking, , petri nets, transformation systems for graphs

67 University of Duisburg‐Essen

Parallel Computing http://www.lsf.uni‐due.de/lsf/rds?state=verpublish&status=init&vmfile=no&publishid=109277

&moduleCall=webInfo&publishConfFile=webInfo&publishSubDir=veranstaltung Computer Science Graduate ? ‐ 2008 ▒

Dr. Oliver Rheinbach

Concurrent Systems, Deadlocks, Petri Nets No Description available.

68 University of Erlangen‐Nürnberg

University of Erlangen-Nürnberg ████▒ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: http://www.informatik.uni‐erlangen.de/DE/studium/informatik/ Master of Science (M.Sc.) in Computer Science: Friedrich‐Alexander‐ http://www.informatik.uni‐erlangen.de/DE/studium/informatik/ Universität Erlangen‐ Nürnberg Schlossplatz 4 D‐ 91054 Erlangen

Algorithms and Data Structures

http://www2.informatik.uni‐erlangen.de/Lehre/WS200809/AuD/?language=de Computer Science Undergraduate ? ‐ 2008 ▒ Prof. Dr. Christoph Pflaum

‐ No description available.

Cluster-Computing

http://www2.informatik.uni‐erlangen.de/Lehre/SS2008/CC/ Computer Science Graduate 2002 ‐ 2008 ██

Prof. Dr. Michael Philippsen, . Ronald Veldema

Cluster, Communication, Networks, Scheduling Programming of clusters, communication networks, communication protocols, scheduling techniques, programming models, libraries.

69 University of Erlangen‐Nürnberg

Multigrid Methods

http://www10.informatik.uni‐erlangen.de/~pflaum/pflaum/MG/ Computer Science ? ? ‐ 2008 ▒ Prof. Dr. Christoph Pflaum

‐ No description available.

Numerical Simulation of Fluids

http://www10.informatik.uni‐erlangen.de/en/Teaching/Courses/SS2008/NuSiF/ Computer Science Undergraduate 2003 ‐ 2008 █ Prof. Dr. Ulrich Rüde, Priv.‐Doz. Dr.‐Ing. Michael Breuer

‐ Theoretical background: Navier‐Stokes equations, Discretization of the equations by means of finite‐ differences, Solution techniques for the arising linear systems, Basic ideas of turbulence modeling. Practical Part: Turbulence modeling, treatment of free surfaces and visualization, heat transport, extension to 3D and use of multi‐grid solver, porous media flow and adsorption.

Paralleland functional Programming

http://www2.informatik.uni‐erlangen.de/Lehre/SS2008/PFP/ Computer Science Undergraduate 2008 █

Prof. Dr. Michael Philippsen, Dr.‐Ing. habil. Peter Wilke

Functional Programming, Synchronization, Threads Basics for parallel programming: Parallelism in applications, data synchronization, thread‐safety, liveliness problems Application types and efficiency: Task parallelism, data parallelism Functional programming: Functional programming languages, applications of functional programming

70 University of Erlangen‐Nürnberg

Parallel Algorithms

http://www2.informatik.uni‐erlangen.de/Lehre/WS200809/ParAlg/ Computer Science Graduate 2003 ‐ 2008 ▒

Ph.D. Ronald Veldema

Algorithms No Description available.

Programming Techniques for Supercomputers

http://www.rrze.uni‐erlangen.de/ausbildung/vorlesungen/ptfs2008.shtml RRZE ? 2004 ‐ 2008 ▒ Dr. Gerhard Wellein

‐ No description available.

Simulation and Scientific Computing

http://www10.informatik.uni‐erlangen.de/Teaching/Courses/WS2008/SiWiR/ Computer Science ? 2005 ‐ 2008 ▒ Prof. Dr. Christoph Pflaum

‐ No description available.

Simulation and Scientific Computing 2

http://www10.informatik.uni‐erlangen.de/Teaching/Courses/SS2008/SiWiR2/ Computer Science ? 2006 ‐ 2008 ▒ Prof. Dr. Christoph Pflaum

‐ No description available.

71 University of Frankfurt

University of Frankfurt ████ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: http://www.uni‐frankfurt.de/studium/studienangebot/bachelor/ inf.html#Studienaufbau Master of Science (M.Sc.) in Computer Science: Johann Wolfgang Goethe‐ http://www.uni‐frankfurt.de/studium/studienangebot/master/ Universität inf.html#Studienaufbau Senckenberganlage 31 D‐60325 Frankfurt am Main

Parallel and Distributed Algorithms http://univis.uni‐frankfurt.de/form?__s=2&dsc=anew/lecture_view&lvs=fb12/inf/algori/pda& anonymous=1&dir=fb12/inf/algori&ref=lecture&sem=2008w&__e=144 Computer Science Graduate ? ‐ 2008 ███

Prof. Dr. Ulrich Meyer

Algorithms, Communication, Distributed Memory, MPI, PRAM, Shared Memory Distributed and shared memory: Shared memory models, MPI and its communication functions, performance analysis, communication patterns such as trees, meshes and hypercube architectures. Parallel linear algebra: Solving linear systems, finite difference methods, the fast Fourier transform. Search and optimization: Monte Carlo methods, backtracking, branch & bound, alpha‐beta pruning. Load balancing and termination detection. Parallel random access machines: Algorithms for lists and graphs. P‐Completeness.

Parallelization http://univis.uni‐frankfurt.de/form?__s=2&dsc=anew/lecture_view&lvs=fb12/inf/abvs/parall& anonymous=1&dir=fb12/inf/abvs&ref=lecture&sem=2008s&__e=144 Computer Science Graduate ? ‐ 2008 ███

Prof. Dr. Oswald Drobnik, Gerhard Leuck

Algorithms, Cluster, MPI, Performance Analysis, Scalability

72 University of Frankfurt

Introduction to parallel infrastructures (Linux‐Cluster, message passing interface (MPI)) and parallel programming, design and implementation of selected parallel algorithms on specific infrastructures/topologies, performance analysis and scalability.

73 University of Hannover

University of Hannover ███ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science, Master of Science (M.Sc.) in Computer Science: http://www.uni‐hannover.de/imperia/md/content/webredaktion/ Gottfried Wilhelm Leibniz universitaet/ publikationen/ verkuend_blatt/ordnungen/fk‐ Universität Hannover ltin/f_inform_bmsto.pdf Welfengarten 1 D‐30167 Hannover

Parallel Algorithms

http://www.psue.uni‐hannover.de/sose2008/parallel.php Computer Science Undergraduate ? ‐ 2008 █

Prof. Dr. Rainer Parchmann

Algorithms, PRAM, Sorting Algorithms Models for parallel computers, PRAM, network models for parallel computers, basic techniques for parallel algorithms, sorting networks, parallel graph algorithms.

Parallel Computing

http://www.rrzn.uni‐hannover.de/parallelesrechnen.html Computer Science Graduate ? ‐ 2008 ██

Prof. Dr.‐Ing‐ Gabriele von Voigt

Architectures, Numerical Algorithms Architectures of high performance computers, parallel programming models, parallelization of numerical methods, methods for graph partitioning and distribution of data, tools and methods for development of parallel programs.

74 Karlsruhe Institute of Technology (KIT) (University of Karlsruhe, Germany)

Karlsruhe Institute of Technology (KIT) (University of Karlsruhe, Germany) ██████ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: http://www‐gf.ira.uka.de/ssp/4_Informatik/Bachelor/ StudPlan_Bachelor_Informatik.pdf

Master of Science (M.Sc.) in Computer Science: Karlsruhe Institute of http://www‐gf.ira.uka.de/ssp/4_Informatik/Master/ Technology StudPlan_Master_Informatik.pdf Kaiserstraße 12 D‐76131 Karlsruhe

Models of parallel processing

http://i90www2.ira.uka.de/courses/vl/par‐mod/ Computer Science Graduate 2005 ‐ 2008 █ Prof. Dr. R. Vollmar, Dr. Thomas Worsch

Parallelism, Pipelining, Programming Contains amongst others: weighting different types of parallel computers, parallel programming communication and synchronization of parallel programs.

Multicore Computers and Clusters http://www.ipd.uka.de/Tichy/teaching.php?id=166&lang=en Computer Science Graduate Since 2006 ███ Dr. Victor Pankratius, David Meder Architecture, Distributed Memory, High Performance Libraries, High Performance Networking, MPI, Networks, OpenMP, PVM, Resource Management, Shared Memory System architectures, programming concepts, clusters, networks (Gigabit Ethernet, Myrinet, Infiniband), libraries, resource management, scheduling, distributed/parallel file systems, programming models (PVM/MPI, shared/distributed memory, JavaParty), parallel algorithms.

75 Karlsruhe Institute of Technology (KIT) (University of Karlsruhe, Germany)

Parallel Algorithms

http://algo2.iti.uni‐karlsruhe.de/915.php Computer Science Graduate 2005 ‐ 2008 █ Prof. Dr. Peter Sanders

Algorithms, Communication Paradigms, Load Balancing, Programming Models, Parallelization of sequential Algorithms • Simple programming models to approve the design of portable and scalable parallel algorithms • Basic communication paradigms between processes and the effective implementation • Load balancing: how to distribute complicated calculations, that all processors are loaded equally • How to parallelize basic sequential algorithms: sorting, data structures, graph algorithms

Computer Architecture

http://itec.uka.de/capp/teaching/rs/index.php?lang=e Computer Science Graduate 2005 ‐ 2008 █ Prof. Dr. Wolfgang Karl

Hardware Structures, Parallelism, Performance Measurement, Pipelining, Processors, Vector Computer Instruction level parallelism (instruction pipelining, superscalar processors, minimization of time of access on main memory using caches), vector computer, data parallelism, process parallelism.

Software development for modern, parallel platforms http://www.ipd.uka.de/Tichy/teaching.php?id=157&lang=en Computer Science Graduate Since 2008 ██ Dr. Victor Pankratius, Frank Otto

Design Patterns, GPGPU, MapReduce, Multicore Libraries, OpenMP, Programming Languages, Programming Models Software engineering for parallel programs, multi‐core computers, design patterns, parallelism in programming languages, multi‐core libraries, OpenMP, debugging methods for parallel programs, MapReduce, GPGPUs (General‐Purpose computations on graphics processing units).

Multicore Programming Practice: Tools, Models, Languages http://www.ipd.uka.de/Tichy/teaching.php?id=172&lang=en Computer Science Graduate Since 2009 ██ Dr. Victor Pankratius, Frank Otto

Design Patterns, Multicore Libraries, OpenMP, Programming Languages, Programming Models

76 University of Kiel

University of Kiel ██ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: http://www.informatik.uni‐kiel.de/ifi/studium‐lehre/studium/ studienfuehrer/studienfuehrer‐html/ #SECTION00090000000000000000 Christian‐Albrechts‐ Bachelor of Science (B.Sc.) in Business Informatics: Universität zu Kiel http://www.informatik.uni‐kiel.de/ifi/studium‐lehre/ Christian‐Albrechts‐Platz 4 studium/studienfuehrer/studienfuehrer‐html/ D‐24118 Kiel #SECTION000100000000000000000 Master of Science (M.Sc.) in Computer Science: http://www.informatik.uni‐kiel.de/ifi/studium‐lehre/studium/ studienfuehrer/studienfuehrer‐html/

#SECTION000110000000000000000

Parallel Algorithms and Architectures

http://www‐ps.informatik.uni‐kiel.de/~mh/studiengaenge/show.cgi?MMSMS0306 Computer Science Graduate 2007 ‐ 2009 ██ Manfred Schimmler

Design Patterns, GPGPU, MapReduce, Multicore Libraries, OpenMP, Programming Languages, Programming Models Complexity of parallelism, parallel computation models, parallel computers, Message Passing Interface, parallel algorithms, vector processors, SIMD‐ and MIMD‐high performance architectures.

77 University of Leipzig

University of Leipzig ▒ Degree Courses:

Bachelor of Science (B.Sc.) in Computer Science: Universität Leipzig http://www.informatik.uni‐leipzig.de/lehre/doc/ Ritterstraße 26 10_bsc_informatik_Moduluebersichtstabelle15‐06‐07.pdf D‐04109 Leipzig Master of Science (M.Sc.) in Computer Science: http://www.informatik.uni‐leipzig.de/lehre/doc/msc_informatik_

Moduluebersichtstabelle_15‐06‐07.pdf

ParalleleAlgorithmen http://www.informatik.uni‐leipzig.de:8080/SGML/Documents?root=ws0809&page= document.vorlesungen.vorlesung|vllab~13107 Computer Science Undergraduate 2006 ‐ 2008 ▒

Prof. Dr. Martin Middendorf

‐ Homepage not available.

Parallele Berechnungsmodelle http://www.informatik.uni‐leipzig.de:8080/SGML/Documents?root=ws0809&page= document.vorlesungen.vorlesung|vllab~13109 Computer Science Undergraduate 2006 ‐ 2008 ▒

Prof. Dr. Martin Middendorf

‐ Homepage not available.

Parallelverarbeitung und Komplexe Systeme http://www.informatik.uni‐leipzig.de:8080/SGML/Documents?root=ss08&page= document.vorlesungen.vorlesung|vllab~12557 Computer Science Graduate 2006 ‐ 2008 ▒

Prof. Dr. Martin Middendorf

78 University of Paderborn

University of Paderborn █ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: http://www.cs.uni‐paderborn.de/fileadmin/Informatik/Institut/ Universität Paderborn studium/material/BScPO19.10.07.pdf Warburger Str. 100 Master of Science (M.Sc.) in Computer Science: D‐33098 Paderborn http://www.cs.uni‐paderborn.de/fileadmin/Informatik/Institut/ studium/material/MScPO19.10.07.pdf

Parallel Programming

http://ag‐kastens.upb.de/lehre/material/ppje/ Computer Science Graduate ? ‐ 2008 █

Prof. Dr. rer. nat. Uwe Kastens

Java, Parallel Programming Fundamental Concepts and high‐level paradigms of parallel programming, systematic methods for developing parallel programs, techniques typical for parallel programming in Java.

79 University of Passau

University of Passau ███ Degree Courses:

Bachelor of Science (B.Sc.) in Computer Science: http://www.fim.uni‐passau.de/de/studium/studierende/ studienplaene/studienplan‐informatik.html Universität Passau Master of Science (M.Sc.) in Computer Science: Innstraße 41 ‐ D‐94032 Passau

Practical Parallel Programming

http://www.infosun.fim.uni‐passau.de/cl/lehre/ppp2007/ Computer Science Graduate 2002 ‐ 2008 ███

Prof. Christian Lengauer

HPF, Java, MPI, Multicore, Networks, OpenMP, Verification OpenMP, MPI, Java, problems with arrays and complex numbers, aspects of thread parallelism, different versions of monitors, Bulk‐Synchronous Programming, High‐Performance Fortran, machine models and complexity theory, network topologies, verification.

Parallelization of Loops

http://www.infosun.fim.uni‐passau.de/cl/passau/sp‐ss06/ Computer Science Graduate 2004, 2006, 2008 █

Dr. Martin Griebl

Loop Parallelization Techniques for parallelizing (nested) loops automatically: Model‐based parallelization, code‐ based parallelization.

80 University of Saarland

University of Saarland ██████ Degree Courses: Bachelor of Computer Science: http://frweb.cs.uni‐sb.de/fileadmin/content/Downloads/Education/

Bachelor/Regulations/StO_Informatik_06.pdf Universität des Saarlandes Master of Computer Science: Campus http://frweb.cs.uni‐sb.de/fileadmin/content/Downloads/Education/ D‐66123 Saarbrücken Bachelor/Regulations/StO_Informatik_06.pdf

Massively Parallel Computing with CUDA

http://www.mpi‐inf.mpg.de/departments/d4/teaching/ws2008‐2009/ParCo08/index.html Max Planck Institute Graduate 2008 ██

Dr. Robert Strzodka

Algorithms. GPU, MapReduce, Sorting Algorithms Basic Algorithms: Map, reduce, parallel branching, sorting, Parallel data storage and retrieval Parallel Computation: FFT, linear equation solvers, particle couplings, Parallel complexity analysis and profiling, System integration and graphics processor clusters

Concurrent Programming

http://depend.cs.uni‐sb.de/index.php?id=471&L=1 Computer Science Graduate 2007, 2008 ████ Prof. Dr.‐Ing. Holger Hermanns

Deadlock, Java, Livelock, Multicore, Starvation, Threads • Concurrency as a Concept: potential parallelism, essential parallelism, conceptual parallelism • Concurrency in practice: object orientation, Operating Systems, Multicore processors, Coprocessors, distributed systems, Business Processes • Problem with Concurrency: Resource Conflicts, fairness, Mutual Exclusion, Deadlocks, Livelocks, Starvation • Basics of Concurrency: Sequential Processes, states, events and transitions, transition systems, determinism vs. non‐determinism, operators • CCS – calculus of communicating processes

81 University of Saarland

• Models of real concurrency: petri‐nets, partial order, event‐structures, statecharts • Concurrent Hardware: Transaction Level Modeling, threads, locks, notify, wait, System C realization • Programming with concurrency: Java vs. C++, Objects in Java, Sockets, Protocols, data streams in Java, Shared Objects and Threads in Java, Shared Objects and Threads as transition systems, monitors, semaphores • Analysis and programming support: Detection of deadlocks, assertion of security and liveliness, model‐based design of concurrency, software architectures for concurrency

82 University of Stuttgart

University of Stuttgart ███ Degree Courses:

Bachelor of Arts (B.A.) in Computer Science: ‐ Universität Stuttgart Master of Arts (M.A.) in Computer Science: Keplerstraße 7 ‐ D‐70174 Stuttgart

Parallel High Performance Computing http://www.ipvs.uni‐stuttgart.de/abteilungen/sgs/lehre/lehrveranstaltungen/vorlesungen/SS08/ commase6/en Computer Science Graduate 2007, 2008 ██

Dr. Ing. Stefan Lang

Algorithms, HPC Simulation on high performance computers: Parallel architectures, distributed I/O, programming models, scalable (numerical) algorithms.

Softwaredevelopment / Numerical Programming I http://www.ipvs.uni‐stuttgart.de/abteilungen/sgs/lehre/lehrveranstaltungen/vorlesungen/WS0708/ commasc6/en Computer Science Graduate 2007 ‐ 2008 ██

Dr. rer. nat. Olaf Ippisch

Grid, Iterative Solvers, MPI Numerical algorithms for interpolation, differentiation, integration, solution of linear equation systems.

83 University of Stuttgart

Softwaredevelopment / Numerical Programming II http://www.ipvs.uni‐stuttgart.de/abteilungen/sgs/lehre/lehrveranstaltungen/vorlesungen/SS08/ commase6/en Computer Science Graduate 2007 ‐ 2008 ██

Dr. rer. nat. Olaf Ippisch

Grid, Iterative Solvers, MPI Iterative linear solvers: Basics, Advanced methods, Multigrid; Flow in porous media; The Finite‐ Volume‐Method; Grids and grid generation; Parallel Computers; Parallel Programming: MPI and Parallel iterative solvers; Time dependent problems, Solute Transport

84 University of Wuppertal

University of Wuppertal ██ Degree Courses: Bachelor of Arts (B.A.) in Computer Science: http://www.verwaltung.uni‐wuppertal.de/am/2007/am0738.pdf Bachelor of Science (B.Sc.) in Information Technology: Bergische Universität http://www2.uni‐wuppertal.de/FB13/Studierende/ Wuppertal Bachelor_inf_sc.html Gaußstraße 20 Master of Science (M.Sc.) in Information Technology: D‐42119 Wuppertal http://www2.uni‐wuppertal.de/FB13/Studierende/Master_IT.html

Parallel Algorithms

http://www‐ai.math.uni‐wuppertal.de/~dfritzsche/lehre/ws07/parallel/ Computer Science Graduate 2007 ‐ 2008 ██

Prof. Dr. Andreas Frommer

Algorithms, Numerical Algorithms Parallel algorithms: efficiency, scaling, convergence properties; methods for solving very large sparse matrix problems.

85

IV Courses at Universities in other Countries

87 Australian National University

Australian National University ████ Degree Courses: Bachelor of Computer Science (B.?.): http://studyat.anu.edu.au/programs/4710HBCSCI;requirements.html

The Australian National University AUS‐Canberra ACT 0200

Concurrent and Distributed Systems

http://studyat.anu.edu.au/courses/COMP2310;details.html Computer Science Undergraduate 2000 ‐ 2008 █

Dr. Uwe Zimmer

Communication, Deadlock, Distributed Systems, High Level Languages, Operating Systems This course is concerned with the issues that arise when computational processes are supported in a computer system. The scope is broad enough to include discussion of all the layers of a computer system ‐ from the hardware to large information systems applications, and all sizes of computer system ‐ from systems as small as a single processor, to systems as large as the entire Internet. The principal areas of study are processes and process coordination, concurrency support in operating systems and high level languages, and distributed systems. The following topics are addressed: operating system structure, process management, interaction between system components (processes, devices and processors), mutual exclusion, concurrent programming, semaphores and monitors, inter‐process communication, distributed systems, crash resilience and persistent data, deadlock, transaction processing.

88 Australian National University

High Performance Scientific Computing

http://cs.anu.edu.au/student/comp6464/ Computer Science Undergraduate ? ‐ 2008 ███

Prof. Dr. Alistair Rendell

C++, HPC, Java, OpenMP This course provides an introduction to High Performance Computing with an orientation towards applications in science and engineering. Aspects of numerical computing and the design and construction of sophisticated scientific software will be considered. The focus will be on the C and C++ programming languages, although reflecting the reality of modern scientific computation this course will also touch on other languages such as Python, Java and FORTRAN95. The course will study high performance computer architectures, including modern parallel processors, and will describe how an algorithm interacts with these architectures. It will also look at practical methods of estimating and measuring algorithm/architecture performance. The following topics will be addressed: the C++ programming language; basic numerical computing from aspects of floating point error analysis to algorithms for solving differential equations; the engineering of scientific software; general high performance computing concepts and architectural principles; modern scalar architectures and their memory structure; performance and programmability issues, and program analysis techniques for high performance computing; parallel computing paradigms and programming using the OpenMP standard; trends in HPC systems

89 ETH Zürich

ETH Zürich █████ Degree Courses: Bachelor of Science ETH (B.Sc. ETH CS) in Computer Science: http://www.inf.ethz.ch/education/bachelor ETH Zürich Master of Science ETH (M.Sc. ETH CS) in Computer Science: Rämistraße 101 http://www.inf.ethz.ch/education/master/overview CH‐8092 Zürich

Concurrent Programming 1: Principles and Overview

http://www.jg.inf.ethz.ch/wiki/Group/ConcurrentProgramming1 Computational Science Graduate ? ‐ 2008 ██ Prof. Dr. Jürg Gutknecht

Object Level Concurrency, Statement Level Concurrency, System Level Concurrency, Theory Statement Level Concurrency, Object Level Concurrency, System Level.

Distributed Algorithms

http://www.vs.inf.ethz.ch/edu/HS2007/VA/ Computational Science Graduate 1999 ‐ 2007 █ Prof. Dr. Friedemann Mattern

Distributed Computation Models, Distributed Garbage Collection, Election, Logical Clocks, Monitoring, Mutex Models of distributed computation; Space‐Time Diagrams; Virtual Time; Logical Clocks and Causality; Wellenalgorithmen; Distributed and parallel graph traversing; calculation of consistent snapshots; mutual exclusion; election and symmetry breaking; distributed termination; Garbage‐ Collection in distributed systems; monitoring of distributed systems; calculation of global predicates.

90 ETH Zürich

Massively Parallel Data Analysis with MapReduce http://www.vvz.ethz.ch/Vorlesungsverzeichnis/lerneinheitPre.do?semkez=2008W&lerneinheitId=54

024&lang=en Computational Science Graduate ? ‐ 2008 ███ Prof. D. Kossmann, Prof. Dr. G. Alonso, Prof. T. Roscoe, Ass. Prof. N. Tatbul

Cluster, MapReduce, Parallel data analysis, Sawzall Programming Language, Scheduling in Data Centers The purpose of this course is to teach students how to carry out massively parallel data analysis using MapReduce as the programming abstraction and Hadoop on top of a (large) cluster of machines in order to get hands on experience and solve real problems. The course will have two parts: • Six week of classes in order to understand the underlying technology (distributed file system, scheduling in warehouse‐size data centers, and the Sawzall programming language used in the MapReduce framework). • Projects: solving a big data analysis problem (e.g., Web log mining, discovering intelligent life in space, etc.)

Parallel High-Performance Computing http://www.vvz.ethz.ch/Vorlesungsverzeichnis/lerneinheitPre.do?lerneinheitId=52742&semkez=200

8W&lang=de Computational Science Graduate ? ‐ 2008 ████

I. Sbalzarini

Data Structures, Grid, Load Balancing, MPI, Numeric Simulations, Programming Paradigms, Scheduling Parallel programming paradigms, Message Passing Interface, load balancing using zoning, Communication scheduling, data structures and abstractions, closely linked applications, parallel numeric simulations with PPM, loosely linked applications, Grid Computing, Optimization/ Sensitivity Analysis/Image Processing on grids.

Parallel Numerical Computing

http://www.icos.ethz.ch/people/personal_data/wittbema/parcomp Computational Science Graduate 2002 ‐ 2007 ██

Prof. P. Arbenz

Distributed Memory, Instruction Level Parallelism, MATLAB, Numerical Algorithms, Shared Memory, Vectorization Linear algebra, Fast Fourier Transform, N‐body simulations, Monte mapping of software onto hardware, optimal data distribution for shared/distributed memory machines, Vectorization and parallel methods in MATLAB, instruction level parallelism, shared memory parallelism, distributed memory parallelism.

Principles of Distributed Computing

http://dcg.ethz.ch/lectures/fs08/distcomp/index.html Computational Science Graduate 2004 ‐ 2008 ██ Prof. Dr. Roger Wattenhofer, Dr. Fabian Kuhn

91 ETH Zürich

Communication, Coordination, Parallelism, Synchronization Communication, coordination, fault‐tolerance, locality, parallelism, symmetry breaking, synchronization, uncertainty.

92 Jerusalem College of Technology

Jerusalem College of Technology █ Degree Courses: Bachelor of Science (B.Sc.) in Software Engineering: http://www.jct.ac.il/eng/academy.php?cat=380&incat=366

Bachelor of Science (B.Sc.) in Comm. Sys. Engineering: http://www.jct.ac.il/eng/academy.php?cat=386&incat=383 Havaad Haleumi 21 Bachelor of Science (B.Sc.) in Computer Science: P.O.B. 16031 http://www.jct.ac.il/eng/academy.php?cat=385&incat=384 Jerusalem 91160

Flexible Algorithms - An Introduction

http://cc.jct.ac.il/~rafi/flexalgo.pdf Computational Science ‐ 2007 ‐ 2009 █ Raphael B. Yehezkael

Flexible Algorithms Flexible algorithms in a functional style and execution methods in sets/values form, Different styles for passing parameters, Converting flexible algorithms to hardware block diagrams, Converting a flexible algorithm into a sequential algorithm, The correctness of (flexible) algorithms, Various flexible algorithms, Different styles for writing functions

93 Monash University

Monash University ███ Degree Courses: Bachelor of Computer Science (B.Comp.Sc): http://www.monash.edu.au/pubs/handbooks/courses/2380.html Master of Information Technology (MIT): Monash University http://www.monash.edu.au/pubs/2009handbooks/courses/2402.html AUS‐Victoria 3800

GRID Computing

http://www.monash.edu.au/pubs/2009handbooks/units/FIT5164.html Computer Science Graduate ? ‐ 2009 ██

Dr. Asad Khan

Cluster, Grid, MPI E‐Research provides means to harnessing contemporary ICT capabilities for solving challenging problems in science, medicine, and engineering. Computer grids play an pivotal role in E‐ Research; providing a seamless (web‐like) access to a variety of networked resources, e.g. large data stores and information repositories, expensive instruments, high‐speed links, sensors networks, and multimedia services for a wide range of applications. Topics covered include: Computational and Service‐Oriented Grids, Grid‐enabled Applications. Gridservices, OGSA, Webservices, WSDL, Clustered Computing, GridMPI, Instruments and Sensors, Parametric Computing, P2P, and Data Grids.

Parallel and distributed systems http://www.monash.edu.au/pubs/2009handbooks/units/FIT5174.html Computer Science Graduate ? ‐ 2009 ██ Prof. David Abramson, Dr. Sita Ramakrishnan

Concurrency, Programming Paradigms, Synchronization, Threads Modern computer systems contain parallelism in both hardware and software. This unit covers parallelism in both general purpose and application specific computer architectures and the programming paradigms that allow parallelism to be exploited in software. This unit examines

94 Monash University both shared memory and message passing paradigms in both hardware and software; concurrency, multithreading and synchronicity; parallel, clustered and distributed supercomputing models and languages.

Programming for distributed, parallel and mobile systems

http://www.monash.edu.au/pubs/2009handbooks/units/FIT5170.html Computer Science Graduate ? ‐ 2009 ██

Dr. Chris Ling

Concurrency, Distributed Software Patterns, Programming Paradigms This unit focuses on the design and programming techniques essential for developing distributed software systems and applications ‐ with Java as the teaching language. The unit presents concurrent programming primitives and concepts for distributed systems. The unit also focuses on application of concurrent techniques in distributed system designs. Programming and implementation issues and techniques of distributed applications are studied. Enabling techniques for building distributed systems are analyzed and evaluated. Distributed Software Patterns are presented. The unit also includes case studies of distributed programming paradigms and their applications (e.g. JINI, JavaSpaces).

95 Tsinghua University

Tsinghua University ▒ Degree Courses: Bachelor of Computer Science (B.?): ‐ Tsinghua University Beijing,100084,P.R.CHINA

Parallel Programming in Computational Science & Engineering

http://www.eecs.harvard.edu/cs144/ Computer Science Undergraduate ‐ ▒ ‐

‐ No Description available

96 University of Melbourne

University of Melbourne ████ Degree Courses: Bachelor of Computer Science (BCS.): http://www.csse.unimelb.edu.au/teaching/courses/ugrad/bcs.html#webcms‐ toc‐1.4 Master of Information Technology (M.?.): The University of http://www.cs.uiuc.edu/graduate/programs.php#ms Melbourne AUS‐Victoria3010

Cluster and Grid Computing

https://app.portal.unimelb.edu.au/CSCApplication/view/2008/433‐678 Computer Science Graduate ? ‐ 2008 ███

Prof. Rajkumar Buyya

Cluster, Grid, MPI, Programming Models Parallel systems: parallel paradigms, parallelization, resource management and scheduling, message‐passing and parameter parallel programming; Cluster computing: cluster architecture, programming with MPI; Grid computing: grids and grid technologies, programming models, data management, grid security, grid software and tools, and applications, including molecular modeling and brain activity analysis

Distributed Algorithms

https://psc.unimelb.edu.au/view/subject/433‐655.html Computer Science Graduate ? ‐ 2008 ██ ‐

Algorithms, Communication, Deadlock Detection Topics covered include: synchronous and asynchronous network algorithms that address resource allocation, communication, consensus among distributed processes, distributed data structures, data consistency, deadlock detection, leader election, and global snapshots issues in distributed systems.

97 University of Melbourne

Networks and Parallel Processing https://psc.unimelb.edu.au/app/bin/displayXML?doctype=subject&url=http://psc.unimelb.edu.au:77

77/XMLEditor‐prod/displayXML.jsp&uid=11054&version=2007 Computer Science Graduate ? ‐ 2008 ██ ‐

Algorithms, Communication, Networks The subject revises parallel architectures and computations with focus on network and communication complexity. A number of network programming techniques are covered. The subject introduces formal communication complexity and two models of parallel computing. Some advanced parallel algorithms are discussed including distributed hash tables and parallel priority queues.

98 University of New South Wales

University of New South Wales ███ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: http://www.handbook.unsw.edu.au/undergraduate/programs/2009/3978.html Master of Computing and Information Technology: The University of New http://www.handbook.unsw.edu.au/postgraduate/programs/2006/8682.html South Wales AUS‐Sydney NSW 2052

Advanced and Parallel Algorithms

http://www.handbook.unsw.edu.au/postgraduate/courses/2006/COMP4121.html Computer Science Graduate ? ‐ 2009 █

Aleks Ignjatovic

Algorithms, Algorithms for Scientific Computing This course will deal with more advanced algorithms, randomized and parallel algorithms, as well as with the NP complete and NP hard problems and approximation algorithms designed to cope with such hard problems. Depending on time and interest of the audience, we might cover some special algorithms such as optimization algorithms or some algorithms used in (very rudimentary) scientific computing, so that you do not faint if you have to solve a system of linear equations.

Distributed Systems

http://www.handbook.unsw.edu.au/postgraduate/courses/2006/COMP9243.html Computer Science Graduate ? ‐ 2009 █

Dr. IhorKuz

Concurrency Control, Distributed Memory, Shared Memory, Transactions A detailed coverage of distributed systems, with a particular focus on operating systems issues: client‐server paradigm, remote‐procedure call as OS support for client‐server; distributed shared memory, distributed memory coherency; distributed file systems; distributed process management, including load sharing and process migration; concurrency control; fault tolerance, recoverability and distributed transactions; naming; industry standards; case studies.

99 University of New South Wales

Foundations of Concurrency

http://www.handbook.unsw.edu.au/postgraduate/courses/2006/COMP9151.html Computer Science Graduate ? ‐ 2009 ██

Dr. Kai Engelhardt

Atomicity, Communication, Locks, Models of Concurrency, Threads Concurrency = processes + communication. Communication via shared variables vs message passing. Models of concurrency: true concurrency vs interleaving. Abstractions: atomicity, locks and barriers, semaphores, monitors, threads, RPC, rendezvous. Classical problems: mutual exclusion, dining philosophers, sleeping barber, termination detection, gravitational N‐body problem. Practical work: programming assignments using the C‐like language MDP.

100 University of Queensland

University of Queensland █ Degree Courses: Bachelor of Science (B.Sc.) in Computer Science: http://www.uq.edu.au/study/plan_display.html?year=2008 &acad_plan=COSCIX2030 The University of Queensland Master of Science (M.Sc.) in Computer Science: AUS‐Brisbane QLD 4072 http://www.uq.edu.au/study/program_list.html?action=view_all

&acad_prog=5389&year=2009

Distributed Computing

http://web.comlab.ox.ac.uk/teaching/courses/concurrentprogramming/ Computer Science Graduate ? ‐ 2009 █

Asso. Prof. Jaga Indulska

Consistency, Synchronization Motivation and models in distributed computing including models for communication, processes, naming, process synchronisation, replication, consistency& fault tolerance. Examples of distributed services & distributed computing environments. Design and implementation of distributed applications. Design principles of context‐aware pervasive systems.

101 University of Sydney

University of Sydney ███ Degree Courses:

Bachelor of Computer Science and Technology (BCST): http://www.usyd.edu.au/handbooks/engineering/ The University of Sydney 03_bespec_e_InfoTech.shtml AUS‐Sydney NSW 2006 Bachelor of Information Technology (BIT): http://www.usyd.edu.au/handbooks/engineering/

03_bespec_e_InfoTech.shtml

Network Based High Performance Computing

http://www.cs.usyd.edu.au/~comp5426/ School of Computing Undergraduate ? ‐ 2008 ███

Asso. Prof. Bing Bing Zhou

Algorithms, HPC, Parallel Programming This unit is intended to introduce and motivate the study of high performance computer systems. The student will be presented with the foundational concepts pertaining to the different types and classes of high performance computers. The students shall learn advanced computer architectures, organisation, and design, and also the basics of parallel programming i.e., algorithm design and analysis.

102 University of Singapore

University of Singapore ████ Degree Courses: Bachelor of Computing in Computer Science: http://www.comp.nus.edu.sg/undergradprog/DegStruct_08_09.htm

Master of Computing in Computer Science: http://www.comp.nus.edu.sg/graduateprog/mcomp_structure.htm National University of Singapore 21 Lower Kent Ridge Road Singapore 119077

Computer Architecture

http://ivle7.nus.edu.sg/nus/modules/mview.asp?mod_c=CS3220&acad_y=2008/2009 School of Computing ? 2003 ‐ 2008 █

Soo Yuen Jien

Multiprocessor, RISC, Shared Memory, Single Processor Systems, Vector Computer The objective of this module is concerned with design techniques involving the use of parallelism to improve the performance of computer systems. The module is divided into three parts. Part I considers the fundamental methods to improve the performance of single processor systems. Topics include the design principle of instruction set, memory hierarchy, pipeline design techniques, RISC and vector computer. In Part II, multi‐processor systems using shared memory are examined in detail, and Part III, multi‐processor systems that do not use shared memory are examined.

Parallel and Concurrent Programming

http://ivle7.nus.edu.sg/nus/modules/mview.asp?mod_c=CS3211&acad_y=2008/2009 School of Computing ? 2003 ‐ 2008 █

Razvan Voicu Communication, Concurrency, Debugging of Parallel Programs, Design of Parallel Programs, Performance Analysis, Synchronization A concurrent system consists of a set of processes that executes simultaneously and that may collaborate by communicating and synchronizing with one another. Examples of concurrent

103 University of Singapore systems are parallel programs that describe sets of collaborating processes. This module introduces the design, development and debugging of parallel programs. It will build on the concurrency concepts gained from the Operating Systems module. It covers concepts and modeling tools for specifying and reasoning (about the properties of) concurrent systems and parallel programs. It also covers principles of performance analysis, asynchronous and asynchronous parallel programming, and engineering concurrent systems and parallel programs.

Parallel and Distributed Algorithms

http://ivle7.nus.edu.sg/nus/modules/mview.asp?mod_c=CS4231&acad_y=2008/2009 School of Computing ? 2003 ‐ 2008 █ Ass. Prof. Haifeng YU

Consistency, Message Ordering, Mutex, Semaphores, Snapshots, Synchronization, Time, Transactions This course will examine some fundamental issues in parallel programming and distributed computing, and the relationships between the two. Parallel programming: mutual exclusion, semaphores, consistency, wait‐free synchronization. Distributed computing: time, global state, snapshots, message ordering. Relationships: consensus, fault‐tolerance, transactions, self‐ stabilization.

Parallel Computer Systems

http://ivle7.nus.edu.sg/nus/modules/mview.asp?mod_c=CS5221&acad_y=2004/2005 School of Computing ? 2003 ‐ 2005 ███

Tulika Mitra Computer Models, Languages, Memory Technologies, Multicomputer Architectures, Multiprocessor Architectures, Networks, Parallel Programming Languages, Parallel Programming Models, Performance Analysis, Threads This module aims to give students an overview on the state‐of‐the‐art technological advancements in the field of parallel processing, in particular, the importance of shared models of parallel computing that lead to specific types of parallel languages and hardware designs. The module is divided into four parts comprising theoretical foundation, technologies, parallel architecture and parallel software. Topics include: parallel computer models; program and network properties, principles of performance analysis, processors and memory technologies, multiprocessor and multi‐computer architectures; multithreaded and dataflow architectures, parallel programming models, languages and compilers, parallel program development and environments, and operating systems for parallel computers.

104 University of Tokyo

University of Tokyo █ Degree Courses: Bachelor of Computer Science:

‐‐‐ (maybe available in Japanese only) ‐

Not all content available in English.

Parallel and Distributed Programming

http://www.logos.ic.i.u‐tokyo.ac.jp/~tau/lecture/parallel_distributed/2006/ Info. and Comm. Eng. ? 2002, 2004, 2006 █

Kenjiro Taura

Consistency, Model Checking, MPI, OpenMP, Parallel Programming Models, UPC Basics of parallel and distributed programming, Parallel programming models, MPI: explanation and experiments, UPC: explanation and experiments, OpenMP: explanation, Routing, Checkpointing, Model Checking: The SPIN Model Checker, Fault Tolerance, Scalable Broadcast, Scalable Data Aggregation, Memory Consistency, Sequential consistency.

105 Universitatea Politehnica din Bucuresti

Universitatea Politehnica din Bucuresti ██████ Degree Courses: Bachelor (B.?.): ‐ Master (M.?.):

‐ Splaiul Independentei 313, Bucuresti, Cod Postal 060042, ROMANIA

Parallel and Distributed Algorithms

‐ Computer Science Undergraduate ? ‐ 2009 ██ Valentin Cristea

Algorithms, Atomicity, Complexity Metrics, Data parallelism, Distributed Systems, Message Passing, PRAM Categories of applications. Conceptual models. Programming methods. Parallel and distributed systems. A language for algorithms presentation. Concurrency and synchronization. Atomicity. Barriers. Data parallelism. Prefix algorithms. Processing lists and matrices. Message passing. Complexity of P&D algorithms Performance metrics. Complexity models: Work‐depth, Foster, LogP. Algorithms development using shared variables. Languages for concurrent programming. Concurrent access to priority queues. Algorithms development for PRAM models. Parallel search. Parallel selection. Algorithm development using message passing. Languages and libraries for distributed programming. Logical clocks and ordering of events. Vector timestamps. Topology establishment. Heartbeat algorithm. Probe‐echo messages. Termination of distributed programs. Termination detection in ring and graph topologies. Termination detection using message echoes: Dijkstra‐Scholten. Detecting termination using mark messages. ‐ Huang algorithm. Algorithms for fault tolerant systems. Byzantine generalsʹ problem. Solution with oral messages. Solution with signed messages. Wave algorithms and leader election. Ring, tree, echo, and phase algorithms. Finnʹs algorithm. Leader election with wave algorithms. LeLann, Lelann‐Chang‐ Robert, and Hirschberg‐Sinclair algorithms. Parallel genetic algorithms. Model, rationale, implementation. Transport problem. Distributed algorithms for mutual exclusion. Classification, complexity metrics.

106 Universitatea Politehnica din Bucuresti

Parallel Processing Architectures

‐ Computer Science Undergraduate ? ‐ 2009 ███ Nicolae Tapus, Emil Slusanschi

Architectures, Cluster, Concurrency, Flynn, Parallelism, SMP, Synchronization The evolution of parallel processing systems. Concurrency and Parallelism. Indicators for evaluating parallel computing architectures. The Flynn taxonomy. The Shore taxonomy. Structural classification. General characteristics of parallel processing systems. The mathematical model of parallel computation. Granularity of parallel structures: the relationships between parallel architectures and parallel algorithms. The limits of parallel computation. Levels of parallelism. Synchronization in parallel and distributed systems. Parallel system architectures. SMPs, Clusters, MPPs.

Parallel Programming

‐ Computer Science Graduate ? ‐ 2009 █ Emil Slusanschi

Map‐Reduce, Matlab, MPI, OpenMP, PThreads, Shared Memory, TBB, Introduction to Parallelism. Parallel Execution Models: productivity, performance and portability. Introduction to Programming Models. Shared Memory Programming: OpenMP, pThreads. Message Passing Programming: MPI, Charm++.Shared Memory Models: Cilk, TBB, HPF, Chapel, Fortress, Stapl. PGAS (Parallel Global Address Space) Languages: UPC, X10. Other Programming Models: Linda, MapReduce, Matlab DCE

High Performance Computing - Numerical Methods and Programming Techniques

‐ Computer Science Graduate ? ‐ 2009 ██ Emil Slusanschi

Code Optimization, CUDA, HPC, MPI, OpenCL, OpenMP, Parallel Profiling, TBB, Parallel computing architectures: HPC computing systems vs. programming paradigms. Design and implementation of HPC computing systems. CPU‐bound applications which require HPC. Numerical methods and data structures used in HPC. Computational Sciences: High‐Energy Physics, Physical Chemistry, Meteorology, Seismology, Large Scale Simulations, etc. Parallelization of CPU‐bound computing kernels. Parallel profiling and debugging tools and techniques. Performance analysis and profiling; Serial and parallel code optimization. Task partitioning and load balancing of real‐world applications. Hybrid programming techniques: distributed/shared memory computing ‐ MPI/OpenMP. (Commercial) Parallel Computing Frameworks for automatic generation of optimized parallel codes: Gedae and RapidMind. Outlook ‐ innovative hardware architectures and state‐of‐the‐art programming techniques: CellBE Programming, Intel TBB, NVIDIA CUDA, ATI/AMD Stream, OpenCL.

107

Universitatea Politehnica din Bucuresti

Instructors A Indulska, J., Assoc. Prof...... 103 Abramson, D., Prof...... 96 Ippisch, O., Dr. rer. nat...... 85, 86 Agha, G., Prof...... 38 J Alonso, G., Prof. Dr...... 93 Jack, S., Jun.‐Prof. Dr...... 42 Amza, C., Ass. Prof...... 44 Jessen, E., Prof. Dr...... 66 Andersen, D...... 18 Jien, S.Y...... 105 Arbenz, P., Prof...... 93 K Arvind, Prof...... 30 Kaashoek, F., Prof...... 31 Austin, T., Asso. Prof...... 40 Kale, L., Prof. Dr...... 39 B Kamphans, T., Dr...... 59 Bader, D.A., Prof...... 24, 25, 26 Karl, W., Prof. Dr...... 78 Bagrodia, R., Prof...... 37 Kastens, U., Prof. Dr...... 81 Behr, M., Prof...... 58 Khan, A, Dr...... 96 Bender, M., Prof ...... 31 Knorr, R., Dr...... 64 Blum, M...... 18 Knottenbelt, W., Dr...... 48 Breuer, M., Dr.‐Ing...... 72 König, B., Prof. Dr...... 69 Brewer, E., Prof...... 34 Kossmann, D., Prof...... 93 Brinkmeier, M., Dr...... 65 Kramer, J., Prof...... 46 Bücker, M., Dr...... 57, 58 Kubiatowicz, J., Prof...... 35 Buyya, R., Prof...... 99 Kuhn, F., Dr...... 94 C Kühnhauser, W., Prof. Dr...... 65 Cheriton, D., Prof...... 32 Kunde, M., Prof. Dr...... 65 Christara, C.C., Asso. Prof...... 43 Kung, H.T., Prof...... 27 Cristea, V., Prof...... 108 Kuszmaul, B., Dr...... 31 D Kuz, I., Dr...... 101 Dahlhaus, E., Dr. habil...... 61 L Demmel, J., Prof...... 34 Lang, B., Dr...... 58 Drobnik, O., Prof. Dr...... 74 Lang, S., Dr.‐Ing...... 58, 85 E Lanterman, A...... 26 Echtle, K., Prof. Dr...... 69 Lee, H.H...... 26 Edelman, A., Prof...... 29 Leiserson, C., Prof...... 31 Engelhardt, K., Dr...... 102 Lengauer, C., Prof...... 82 F Leuck, G...... 74 Fawcett, J.K., Dr...... 49 Lifka, D.A., Asso. Prof...... 21 Fekete, S. P., Prof. Dr...... 59 Ling, C., Dr...... 97 Frommer, A., Prof. Dr...... 87 Lowe, G., Prof. Dr...... 52 Fuchs, B., Dr...... 59 Luchangco, V., Dr...... 30 G Lynch, N., Prof...... 30 Gardner, P...... 47 M Gavrilovska, A., Dr...... 25 Manolache, F.B...... 19 Gerndt, M., Prof. Dr...... 66 Martinez, J.F., Asso. Prof...... 22 Goesele, M., Prof. Dr...... 61 Mattern, F., Prof. Dr...... 92 Griebl, M., Dr...... 82 McLean, T., Dr...... 26 Gropp, W., Prof...... 39 Meder, D...... 77 Gutknecht, J., Prof. Dr...... 92 Meyer, U., Prof. Dr...... 74 H Middendorf, M., Prof. Dr...... 80, 81 Harrison, P., Prof...... 48 Mitra, T...... 106 Heath, M., Prof...... 39 Mitschele‐Thiel, A., Prof. Dr...... 64, 65 Hellerstein, J., Prof...... 34 Morris, R., Prof...... 31 Hermanns, H., Prof. Dr.‐Ing...... 83 Motwani, R., Prof...... 33 Hickey, J., Asso. Prof...... 16 Mowry, T.C...... 19 Huckle, T., Prof. Dr...... 67 Mundani, R.P., Dr...... 67 I N Ignjatovic, A...... 101 Nagel, W. E., Prof. Dr...... 62

109 Instructors

O Tapus, N., Prof. Dr.‐Ing...... 109 Olukotun, O., Prof...... 32 Tatbul, N., Ass. Prof...... 93 P Taura, K...... 107 Padua, D...... 39 Thing, V...... 47 Pankratius, V., Dr...... 77, 78 Tichy, W., Prof...... 78 Parchmann, R., Prof. Dr...... 76 Trenkler, B., Dr.‐Ing...... 63 Pattinson, D...... 47 U Pflaum, C., Prof. Dr...... 71, 72, 73 Uchitel, S...... 46 Philippsen, M., Prof. Dr...... 71, 72 Ungerer, T., Prof. Dr...... 68 R Uwe Zimmer ...... 90 Ramakrishnan, S., Dr...... 96 V Rao, S., Prof...... 35 Veldema, R., Ph.D...... 73 Reinefeld, A., Prof. Dr...... 56 Veldema, R.,...... 71 Reinman, G., Ass. Prof...... 36 Voicu, R...... 105 Rendell, A., Prof. Dr...... 91 Vollmar, R., Prof. Dr...... 77 Reske, A., Dr...... 64 von Voigt, G., Prof. Dr.‐Ing...... 76 Rheinbach, O., Dr...... 70 W Roscoe, T., Prof...... 93 Wattenhofer, R., Prof. Dr...... 94 Rüde, U., Prof. Dr...... 72 Wellein, G., Dr...... 73 Rünger, G., Prof. Dr...... 60 Welsh, M., Prof...... 27 S Wilke, P., Dr.‐Ing. habil...... 72 Sanders, P., Prof. Dr...... 78 Winskel, G., Prof...... 49 Sbalzarini, I...... 93 Wolf, A., Prof...... 46 Schimmler, M., Prof. Dr...... 79 Wolf, M., Dr...... 24 Schüle, J., Dr...... 59 Worrell, J...... 51 Schwan, K., Dr...... 23 Worsch, T., Dr...... 77 Schwind, M...... 60 Y Sloman, M., Prof...... 47 Yehezkael, R.B...... 95 Slusanschi, E...... 109 Yelick, K., Prof...... 34, 35 Steffan, G., Asso. Prof...... 43 YU, H., Ass. Prof...... 106 Stout, Q.F., Prof...... 40 Z Strzodka, R., Dr...... 83 Zerbe, V., Dr...... 65 Sufrin, B., Dr...... 52 Zhou, B.B., Asso. Prof...... 104 T Tamir, Y., Asso. Prof...... 37

110