Este documento introduce la programación paralela y su evolución histórica. Explica cómo la "pared de ladrillo" obligó el cambio a procesadores multi-núcleo y many-core para hacer frente a los límites de rendimiento, potencia y memoria. Describe lenguajes como OpenMP, Pthreads, CUDA y OpenCL para la programación paralela en CPUs y GPUs. Finalmente, enfatiza la importancia de aprender programación paralela dado que la computación paralela está omnipresente en dispositivos modernos.