Parallel Computing An Introduction into Hardware and Software Thomas Ludwig Many interesting problems in science and technology require massive computational power to investigate them. Gene analysis, weather prediction, and wind tunnel simulations are popular examples. High performance computing facilities are located in computing centers of universities and research laboratories and are not as easily accessible and usable as workstations. The concepts of how to use them efficiently are therefore not common knowledge. This lecture will give an introduction into programming for high performance. We will at first look at the hardware aspects of modern supercomputers and classify their architectural characteristics. Basically we can distinguish these machines into shared memory and distributed memory architectures. However, with modern systems we find also hybrid approaches, where computers of different archtiectural concepts are joint together to form a super computer of high computational power. Aspects of network technology and I/O-facilities play a crucial role in the overall concept. Second, paradigms of parallel programming will be discussed. The concrete way to bring a program to a parallel computer depends on the architecture of the machine, the structure of the problem, and the programming concept chosen. Usually, the first two factors are fixed and we are free to select our favorite programming concept in dependence of both of them. Therefore, we will discuss programming concepts in detail. We can distinguish message passing based programming, shared memory based programming and the data-parallel programming model. The lecture will give an introduction into these and compare their applicability. The lecture is oriented towards computer scientists and researchers in applied sciences who want to introduce high performance computing to their field. The presented material is also a good starting point for those who are interested in architectural aspects of parallel hardware and in aspects of parallel programming.