This chapter discusses message-passing programming using MPI. It covers the message-passing model, how MPI programs execute, fundamental MPI functions, coding, compiling, running and benchmarking MPI programs. The document provides examples of coding a circuit satisfiability program in MPI using concepts like determining the number of processes, cyclic allocation of work, and reducing results across processes.