This document discusses hybrid OpenMP and MPI programming. It provides an introduction to hybrid programming and outlines some of the benefits such as exploiting shared memory parallelism within a node using OpenMP while also scaling across nodes with MPI. It discusses different parallelization strategies and considerations for debugging and optimizing hybrid codes. It also provides two examples of hybrid codes: a multi-dimensional array transpose algorithm and the Community Atmosphere Model climate simulation code.