The course is centered in three concepts: Architectures, Algorithms and Programming. Parallel and Distributed Architectures: Parallel and Distributed computer taxonomy, example of Parallel and Distributed computers, fundamental communication operations, and performance metrics. Parallel algorithms: design and analysis of parallel algorithms with emphasis on sorting, matrix problems, and graph problems. Parallel programming: types of parallelism, parallel programming paradigms, message passing programming, data and parallel programming.