Distributed and shared memory programming models and frameworks. Thread programming and OpenMP. Message passing and MPI. Parallel Global Address Space (PGAS) languages. Emerging languages for many-core programming. Elements to be covered will include syntax and semantics, performance issues, thread safety and hybrid programming paradigms.