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:


  • Concepto de función

    • Cumplen con unicidad y existencia, esto nos permite asegurar que luego de aplicar una función obtendremos siempre un único valor.

    • Tienen transparencia referencial

    • Las variables son incógnitas como las de matemática, no pensarlas como posiciones de memoria, no se pueden asignar.

    • Su principal operación: la aplicación.

  • Pattern Matching con tipos básicos

  • Introducción a Tipado:

    • Tipos de datos simples (Int, Float, Bool, ...).

    • Entender de qué tipo son las funciones, en base al tipo de su dominio y de su imagen.

    • Tipos genéricos (variable de tipo) y noción de de Typeclass

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).

Para ejercitar en Mumuki

Pueden profundizar los temas de esta clase con las guías:

  • Valores y Funciones

  • Práctica Valores y Funciones

  • Introducción a Tipos de Datos

  • Práctica de Inferencia de Tipos

Nota: recomendamos saltear los ejercicios que requieran el uso de composición, tema que veremos en la clase 4.

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.

Para ejercitar en Mumuki

Pueden profundizar estos temas con las guías:

  • Alternativas: Guardas y Patrones

  • Modelado (hasta ejercicio 13)

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.

Para ejercitar en Mumuki

Pueden profundizar los temas vistos con las guías:

  • Introducción a tipos de dato y su práctica asociada.

  • Aplicación Parcial y Orden Superior (Ejercicios 1 al 4 inclusive).

  • Práctica Aplicación Parcial y Orden Superior (hasta ejercicio 6).

Además pueden revisitar cualquier ejercicio que hayan salteado o dejado en amarillo de guías anteriores que pidieran usar composición.

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.

Para ejercitar en Mumuki

Pueden seguir ejercitando libremente los temas vistos con las guías:

  • Práctica de Aplicación Parcial y Orden Superior

  • Práctica de Inferencia de Tipos, Recargada

  • Práctica de Listas

  • Práctica Recursividad

  • Dominar el mundo con nada <- tiene algunos ejercicios interesantes para usar fold, pero son más tirando a desafíos

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:

  • Evaluación Ansiosa vs. Evaluación Perezosa

  • Listas infinitas

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.

Para ejercitar en Mumuki

Pueden profundizar los temas vistos con estas guías:

  • Guía 1: Hechos y Reglas

  • Guía 2: Práctica Hechos y Reglas

  • Guía 5: Aritmética

  • Guía 6: Inversibilidad

Tengan en cuenta que las guías de Mumuki introducen inversibilidad más tarde, por eso para la práctica de la guía 7 sólo están en condiciones de resolver hasta el ejercicio 10 inclusive.

Clase 11 - Orden Superior

En esta clase introducimos los predicados de orden superior:

  • not/1 para la negación

  • forall/2 para el cuantificador universal (para todo)

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).

Para ejercitar en Mumuki

Pueden profundizar los temas vistos con estas guías:

  • Guía 3: Negación y Cuantificación

  • Guía 4: Práctica Negación y Cuantificación

  • Guía 7: Práctica Inversibilidad

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).

Para ejercitar en Mumuki

Ya pueden trabajar con Mumuki hasta la guía 9 inclusive.

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.

Para ejercitar en Mumuki

De Mumuki pueden trabajar con todas las guías, ya que terminamos de ver todo el contenido teórico que teníamos planeado para este paradigma.

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.

Para ejercitar en Mumuki

Pueden trabajar libremente con Mumuki hasta la guía 5 inclusive.

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.

Para ejercitar en Mumuki

Pueden trabajar con los primeros 8 ejercicios de la guía 10 (Clases e instancias).

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.

Para ejercitar en Mumuki

De Mumuki, pueden trabajar con las lecciones 6, 7 y 8 que cubren estos temas. Además con esto se desbloquea el resto de la lección de clases e instancias, donde se usaban colecciones :)

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.

Para ejercitar en Mumuki

De Mumuki, pueden trabajar con la lección 11, donde se abordan los temas de esta clase.

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.