La materia será dictada en 32 clases a lo largo de 16 semanas. Cada clase estará dividida en una parte teórica y una práctica, de 1:30 hs cada una. Los horarios serán:

  • Martes de 18:30 a 21:30
  • Jueves de 18:30 a 21:30

Clases

Semana Día Fecha Teórica Práctica
1 Martes 19/08/2025 Presentación de la Materia. Conceptos de paradigmas de programación. Paradigmas fundamentales. Herramientas. IDE. Git. GitHub.
Jueves 21/08/2025 Programación Lógica. Introducción a Prolog. Enterno de desarrollo. Ejercitación práctica de Paradigma Lógico.
2 Martes 26/08/2025 Programación Lógica. Ejercitación práctica de Paradigma Lógico.
Jueves 28/08/2025 Introducción a Paradigma Funcional. Programas como funciones. Funciones puras. Datos inmutables. Funciones de primera clase. Funciones de orden superior. Composición de funciones. Introducción a Scala para el Paradigma de Programación Funcional. Entorno de desarrollo en Scala. Instalación de Scala. Características de Scala como lenguaje de programación. Programación funcional en Scala. val (funcional) vs var (no funcional). Tipos. Recomendaciones de estilo. Condicionales (no funcional). Ciclos (no funcional). Guardas en ciclos.
3 Martes 02/09/2025 Paradigma Funcional. Recursividad. Pattern matching. Lazy evaluation. Currying. Introducción a Scala para el Paradigma de Programación Funcional. Ejercitación práctica de Paradigma Funcional. Listas. Vector. Map. Ejercitación de la guía de Paradigma Funcional.
Jueves 04/09/2025 Introducción a Calculo Lambda. Historia. Motivación. Cálculo Lambda vs Máquinas de Turing. Conceptos básicos. Reducción beta. Lógica Booleana con Cálculo Lambda. Ejercitación práctica de Cálculo Lambda. Ejercitación de interpretación de expresiones lambda y AST. Ejercitación de reducciones beta y conversión alpha. Ejercitación de call-by-name vs call-by-value.
4 Martes 09/09/2025 Continuación de Cálculo Lambda. Números Naturales con Cálculo Lambda. Tipo de Dato Algebraico. Recursión. call-by-name (lazy evaluation) vs call-by-value (eager evaluation) en Cálculo Lambda. Nociones básicas de Cálculo SKI. Ejercitación práctica de Cálculo Lambda. Continuación de Ejercitación de reducciones. Ejercitación de Lógica Booleana. Ejercitación de Matemática de Church
Jueves 11/09/2025 Definición de Tipos. Reglas de Inferencia. Introducción a Cálculo Lambda Simplemente Tipado. Inferencia de Tipos. Tipos Polimorficos. Modularización en Scala. Packages. Classes. Objects. Traits. Ejercitación práctica de tipado
5 Martes 16/09/2025 Práctica pre parcial
Jueves 18/09/2025 Parcial 1: Conceptos de paradigmas de programación. Paradigma Funcional. Scala. Cálculo Lambda. Lógico.
6 Martes 23/09/2025 Paradigma Orientado a Objetos. Objetos. Clases. Estado y Atributos. Comportamiento, Metodos y Mensajes. Abstracción. Encapsulamiento. Intro a Java. Entorno de desarrollo. Ejercitación práctica de Paradigma Orientado a Objetos. Cómo crear un proyecto en Intellij. Proyectos Maven. Ejecución de código en Intellij. Repaso de conceptos de POO. Tipos nativos en Java (Int vs int). Constructor, getter, setter con clase Alumno y Materia. Métodos, comportamiento y estado con método "aprobarMateria". Abstracción. Encapsulamiento. Niveles de acceso en Java.
Jueves 25/09/2025 Interfaces. Herencia. Polimorfismo. Visibilidad. Override. Herencia. Interfaces. Polimorfismo. Concepto de Herencia con ejemplo de Animal, Mamifero, Perro y Gato. Clases abstractas, override de métodos y referencia a clase padre con super. Generalizar instancias de clases hijas usando clases padres, y casteo entre clases. Polimorfismo con ejercicio de Figuras. Arbol de herencia y documentación de clase HashMap.
7 Martes 30/09/2025 UML. Diagrama de Clases. Diagrama de Secuencias. Ejercitación práctica de modelado, diseño y UML. Ejercicio de Calendario. Calendarios Publico y Privado. Calendario de Equipo. Notificaciones. Eventos. Diagrama de clases. Entitdades del dominio. Atributos publicos vs privados. Agregación vs Composición. Herencia vs Interfaz. Comportamiento de clases. Diagrama de secuencia. Flujo de notificaciones.
Jueves 02/10/2025 Principios de Diseño I. Ejercitación práctica de modelado SIN VISTA. Ejercicio de TaTeDrez. Responsabilidades de clase Juego y modularización. Separación de modelo y vista. Diagrama de clases. Implementación en Java.
8 Martes 07/10/2025 Principios de Diseño II. Ejercitación práctica de Principios de Diseño. Ejercicios de Principios de diseño más importantes. Por qué se viola cada principio y resolución.
Jueves 09/10/2025 Patrones de Diseño I. Ejercitación práctica de Patrones de Diseño. Ejercicios de Patrones de diseños vistos en clase. Qué principios se violan y resolución usando patrones de diseño.
9 Martes 14/10/2025 Patrones de Diseño II. Ejercitación práctica de Patrones de Diseño. Ejercicios de Patrones de diseños vistos en clase. Qué principios se violan y resolución usando patrones de diseño.
Jueves 16/10/2025 Patrones de Diseño III. Ejercitación práctica de Patrones de Diseño. Ejercicios de Patrones de diseños vistos en clase. Qué principios se violan y resolución usando patrones de diseño.
10 Martes 21/10/2025 Taller de UML
Jueves 23/10/2025 Práctica pre parcial
11 Martes 28/10/2025 Parcial 2: Paradigma Orientado a Objetos. Java. Principios de Diseño.
Jueves 30/10/2025 Programación Concurrente. Concepto de Concurrencia. Concurrencia vs Paralelismo. Threads. Ejercitación práctica de Concurrencia. Ejercitacion practica de POE
12 Martes 04/11/2025 Otras formas de concurrencia. Operaciones bloqueantes y no bloqueantes. Programación asincrónica. Future (Promises). Virtual Threads (Coroutines). Ejercitación práctica de Concurrencia.
Jueves 06/11/2025 Programación Orientada a Eventos. Cierre de ultima parte con examenes.
13 Martes 11/11/2025 Otros paradigmas y como elegirlos. Ejercicio de final. Cierre de la materia.
Jueves 13/11/2025
14 Martes 18/11/2025 Examen de TPs
Jueves 20/11/2025 Examen de TPs
15 Martes 25/11/2025 1er Recuperatorio: P1
Jueves 27/11/2025 1er Recuperatorio: P2
16 Martes 02/12/2025 2do Recuperatorio: P1. Examen promoción
Jueves 04/12/2025 2do Recuperatorio: P2