Why parallel computing
A single processor core can only do so much work per second, so programs that need more turn to parallelism: splitting the work across many cores, many chips, or many machines. Scientific computing is a natural fit, because large simulations and big data sets usually decompose into pieces that can be computed at the same time.
Shared memory and distributed memory
Parallel systems divide into two families. In a shared-memory system, many threads work in one address space and communicate by reading and writing the same variables — convenient, but the programmer must avoid two threads corrupting shared data at once. In a distributed-memory system, each process owns private memory and communicates by explicitly sending messages — more work to program, but it scales to very large machine counts. Real systems often combine both.
Coarrays in the Fortran standard
Since Fortran 2008, the language itself includes a parallel feature: coarrays. A coarray program runs as a set of images, and a variable declared with coarray syntax has a separate copy on each image. An image reads another image's copy with a simple square-bracket notation, and synchronization statements keep the images in step. The Coarray Fortran article walks through the idea.
Message passing
In the message-passing style, processes send and receive data explicitly. Point-to-point operations move data between two specific processes; collective operations involve a whole group at once — broadcasting one value to everyone, or reducing everyone's values to a single sum. The Message Passing Interface (MPI), first standardized in the mid-1990s, is the widely used specification for this style and has Fortran bindings throughout. Concepts are covered in Message Passing Concepts.