Clase a Clase

Clase 1 - Introducción a la materia

Paradigma Funcional

Clase 2 - Introducción a Funcional

En esta clase arrancamos con el paradigma funcional, para el cual usaremos el lenguaje Haskell, y se abordan los siguientes temas:


También se puede ampliar con el Módulo 1 de funcional (todo menos guardas) y en la sección "Clasificando tipos" del Módulo 7 se explica más sobre Typeclasses (obviar los tipos compuestos, tuplas y listas, que veremos más adelante).

Clase 3 - Tipos complejos

En esta clase se abarcan los siguientes temas:

También se puede ampliar sobre data, tuplas y type alias con el Módulo 3 de funcional, y sobre guardas en el Módulo 1 de funcional.

Clase 4 - Composición y Aplicación Parcial

En esta clase se abordan los siguientes temas:

También se puede ampliar sobre estos temas con el Módulo 2 de funcional.

Clase 5 - Orden Superior y Listas

En esta clase se ven los siguientes temas:

También se puede ampliar sobre estos temas con el Módulo 5 y Módulo 6 de funcional.

Clase 6 - Práctica: Inmobiliaria

En esta clase resolvemos la práctica LambdaProp haciendo foco en orden superior, composición y aplicación parcial.

Clase 7 - Práctica: Pociones

En esta clase resolvemos la práctica Pociones haciendo foco en orden superior, composición y aplicación parcial, al igual que la semana pasada, y en cuestiones de modelado con funciones e inmutabilidad.

Clase 8 - Estrategias de Evaluación

En esta última clase teórica de funcional hablamos sobre Estrategias de Evaluación:

También se puede ampliar sobre estos temas con el Módulo 4 de funcional.

Clase 9 - Práctica: Gimnasio

En esta clase resolvemos la última práctica integradora de funcional: Gimnasio.

Paradigma Lógico

Clase 10 - Intro a Lógico

En esta clase arrancamos con el Paradigma Lógico de la mano del lenguaje Prolog.

Acá pueden encontrar una introducción al paradigma que sienta las bases de cómo trabajar, y cómo se resuelven con estas herramientas básicas la conjunción y disyunción. Por ahora trabajamos sólo con individuos simples (átomos y números).

Uno de los temas que se introducen en esta clase es uno de los puntos fuertes de este paradigma y es el concepto de inversibilidad, lo cual permite hacer consultas con múltiples respuestas. Profundizaremos más adelante el tema de inversibilidad.

Resumen de nomenclatura <-- Repasar esto si no recordás a qué nos referimos al decir predicado, hecho, regla, cláusula, aridad, consulta, individuo, átomo...

También se puede ampliar sobre estos temas con el Módulo 1 y el Módulo 2 de lógico.

Clase 11 - Orden Superior

En esta clase introducimos los predicados de orden superior:

Con esto se cubre todo lo relacionado a existencia (no hace falta usar ningún predicado especial para esto), no existencia y para todo, que es lo que nos faltaba para poder trabajar con lógica de primer orden.

Ambos predicados tienen problemas de inversibilidad, con lo cual hay que tomar ciertos recaudos al usarlos para que nuestros predicados sean inversibles.

También se puede ampliar sobre estos temas con el Módulo 4 de Lógico (hasta sección 4 inclusive).

Clase 12 - Práctica Existencia, Negación, Para Todo

En esta clase resolvemo la práctica: TEG

Clase 13 - Functores y Polimorfismo.

En esta clase incorporamos un nuevo tipo de individuo, que tiene la particularidad de ser un individuo compuesto: el functor.

Un concepto importante que surge gracias a estos simpáticos individuos es el polimorfismo.

También se puede ampliar sobre estos temas con el Módulo 3 de Lógico (pero guarda que en el medio también se explican las listas que preferimos no introducir aún).

Clase 14 - Listas

En esta clase cerramos los temas del paradigma lógico viendo cómo se trabaja con otro tipo de individuo compuesto que son las listas.

Vemos cómo se puede hacer para trabajar con listas recursivamente usando pattern matching, y también los principales predicados que ya vienen para trabajar con listas más cómodamente, como length/2, member/2 y sumlist/2. También introducimos un nuevo predicado de orden superior: findall/3.

Se puede ampliar sobre estos temas con el Módulo 3, el Módulo 4 y el Módulo 5 de Lógico.

Clase 15 - Práctica: La Cárcel

En esta clase resolvemos la práctica La Cárcel.

Clase 16 - Práctica: Festivales de Rock

En esta clase resolvemos la práctica Festivales de Rock.

Paradigma Orientado a Objetos

Clase 17 - Intro a Objetos

En esta clase arrancamos con un nuevo paradigma, y eso implica replantearnos todo lo que ya sabemos. Nos volvemos a preguntar qué es un programa, esta vez en el Paradigma Orientado a Objetos y la respuesta esta vez está basada en dos ideas: objetos y mensajes.

A lo largo de la clase abordamos los siguientes temas:

Para este paradigma vamos a estar trabajando con Wollok. En esa página van a encontrar todo el material que necesiten para complementar lo que vemos en clase, así como la forma de instalar el entorno. En la sección Documentación -> Explicación de Conceptos van a encontrar una guía rápida de cómo se usan los distintos elementos del lenguaje.

Además pueden encontrar ejercicios resueltos en la sección Ejemplos, y en la sección Tour les van a dar un paseo por las herramientas para que descubran cómo sacarle el jugo al IDE.

Se puede ampliar sobre estos temas con el Módulo 1, Módulo 2 y Módulo 3 de objetos.

Clase 18 - Práctica: La Feria

En esta clase resolvemos la práctica La Feria.

Clase 19 - Clases

En esta clase incorporamos una nueva herramienta de modelado: las clases, y vemos cómo podemos hacer para instanciar objetos a partir de una misma clase.

Se puede ampliar sobre estos temas con los el Módulo 8 y Módulo 9 de objetos.

Clase 20 - Colecciones y Bloques

En esta clase vemos cómo trabajar con colecciones en Wollok. Además introducimos el concepto de bloque, que nos ayuda a parametrizar algo para hacer. Próximamente le estaremos dando un uso más intensivo.

Se puede ampliar sobre estos temas con el Módulo 4 de objetos.

Clase 21 - Herencia

En esta clase vemos el modelo de herencia simple que es el que se usa en Wollok así como la mayoría de los lenguajes orientados a objetos como mecanismo de subtipado, y cómo trabaja el method lookup para encontrar el método a ejecutar luego de un envío de mensaje.

Se puede ampliar sobre estos temas con el Módulo 13 de objetos.

Clase 22 - Herencia vs. Composición

En esta clase resolvemos la práctica Por la horda! haciendo foco en las decisiones de modelado, particularmente relativas al uso de herencia o composición.

Clase 23 - Manejo de Errores

En esta clase hablamos sobre excepciones, cómo usarlas, cuándo usarlas y qué hacer al respecto cuando ocurren.

El manejo de errores no es algo propio del paradigma de objetos, sin embargo forma parte de las herramientas básicas que ofrecen los lenguajes que se basan en él.

Se puede ampliar sobre estos temas con el Módulo 10 de objetos.

Clase 24 - Práctica: Monetización

En esta clase resolvemos la práctica integradora de Monetización.

Clase 25 - Práctica: Computadora

En esta clase resolvemos la práctica integradora de Computadoras.