This is an introduction to using OpenMP for writing parallel programs to run on multi-CPU (SMP) systems, for the purposes of "high-performance computing" (i.e. running programs faster than they can on a single CPU core). It covers all of the principles of OpenMP, and teach the use of all of the basic facilities, so that attendees will be able to write serious programs using it and update most of those that they get from other people. It concentrates on describing how to avoid problems, because shared memory programming and using OpenMP are less about knowing what to do than knowing what not to do. It covers Fortran, C and, to some extent, C++.