Hardware, processes, and threads -- Coding for performance -- Identifying opportunities for parallelism -- Synchronization and data sharing -- Using POSIX threads -- Windows threading -- Using automatic parallelization and OpenMP -- Handcoded synchronization and sharing -- Scaling with multicore processors -- Other parallelization technologies -- Concluding remarks