Contenidos teóricos y prácticos de la asignatura
Tema 1. Introducción: Modelos de programación.
Lenguajes y Herramientas de Programación. Control de Versiones. Pruebas Unitarias. Desarrollo Dirigido por Pruebas.
Tema 2. Programación imperativa.
Estructuras de Datos. Subprogramas. Abstracción y Encapsulamiento.
Tema 3. Programación orientada a objetos.
Clases, Objetos, métodos. Encapsulamiento, Abstracción, Herencia, Polimorfismo. Mixins. Meta Programación. Lenguajes de Dominio Específico. Programación Orientada a Aspectos.
Tema 4. Programación declarativa: lógica y funcional.
Funcional: Funciones de Orden Superior. Lambdas. Clausuras. Evaluación Perezosa. Memoización. Listas Infinitas.
Declarativa: Cláusulas. Hechos. Consultas. Reglas.
Tema 5. Programación concurrente y paralela.
Corrutinas. Hilos. Procesos. Programación Distribuida. Computación de Alto Rendimiento. Computación en la Nube.
Lenguajes y Herramientas de Programación. Control de Versiones. Pruebas Unitarias. Desarrollo Dirigido por Pruebas.
Tema 2. Programación imperativa.
Estructuras de Datos. Subprogramas. Abstracción y Encapsulamiento.
Tema 3. Programación orientada a objetos.
Clases, Objetos, métodos. Encapsulamiento, Abstracción, Herencia, Polimorfismo. Mixins. Meta Programación. Lenguajes de Dominio Específico. Programación Orientada a Aspectos.
Tema 4. Programación declarativa: lógica y funcional.
Funcional: Funciones de Orden Superior. Lambdas. Clausuras. Evaluación Perezosa. Memoización. Listas Infinitas.
Declarativa: Cláusulas. Hechos. Consultas. Reglas.
Tema 5. Programación concurrente y paralela.
Corrutinas. Hilos. Procesos. Programación Distribuida. Computación de Alto Rendimiento. Computación en la Nube.
Actividades a desarrollar en otro idioma
Parte de la bibliografía y los manuales de las herramientas utilizadas está en inglés, por lo que los alumnos tienen que realizar lecturas compresivas en ese idioma. Sin embargo, esta asignatura no forma parte de un itinerario, por lo tanto estas actividades no contribuyen a la evaluación.