PGAS programming languages are designed to facilitate parallel programming for systems with distributed memory. They define a unified view of the aggregated memory, which can be transparently accessed from all threads of execution. This talk will be an introduction to the PGAS programming model, focusing on the UPC and CoArray Fortran languages. We will discuss the similarities and differences of these languages, and draw some parallels to explicit programming using the MPI library. We will close with a brief discussion of some of the opportunities for compiler optimization that are enabled by these languages.