Bitácora de Clase

Próxima Clase

Clase 17 - Intro a Objetos

En esta clase arrancamos con un nuevo paradigma, y eso implica replantearnos todo lo que ya sabemos. Nos volvimos 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 tocamos 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.

Paradigma Lógico

Clase 16 - Práctica: Festivales de Rock

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

Clase 15 - Práctica: La Cárcel

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

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.

Vimos 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 vimos 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.

Trabajos Prácticos

Para el jueves 26/8 tienen que resolver el TP4 que consta de 2 ejercicios. Son los ejercicios 7 y 8 de la Guía de TPs de Lógico.

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 surgió gracias a estos simpáticos individuos fue 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.

Trabajos Prácticos

Para el jueves 19/8 tienen que resolver el TP3 que consta de 2 ejercicios. Son los ejercicios 5 y 6 de la Guía de TPs de Lógico.

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

Link al enunciado: TEG

Clase 11 - Orden Superior

En esta clase introdujimos los predicados de orden superior:

  • not/1 para la negación

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

De esa forma cubrimos todo lo relacionado con 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.

También vimos que 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

Trabajos Prácticos

Para el jueves 15/7 tienen que resolver el TP2 que consta de 2 ejercicios. Son los ejercicios 3 a 4 de la Guía de TPs de 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. Hasta ahora trabajamos sólo con individuos simples (átomos y números).

Uno de los temas que introdujimos 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 abordar hasta el ejercicio 10 inclusive.

Trabajos Prácticos

Para el jueves 8/7 tienen que resolver el TP1 que consta de 2 ejercicios. Son los ejercicios 1 a 2 de la Guía de TPs de Lógico.

Paradigma Funcional

Clase 9 - Práctica: Gimnasio

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

Clase 8 - Estrategias de Evaluación

En esta última clase teórica de funcional vimos 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 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 6 - Práctica: Inmobiliaria

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

Clase 5 - Orden Superior y Listas

En esta clase vimos 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

Trabajos Prácticos

Para el jueves 20/5 tienen que resolver el TP4 que consta de 4 ejercicios. Son los ejercicios 8 a 11 de la Guía de TPs de Funcional.

Clase 4 - Composición y Aplicación Parcial

En esta clase vimos 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.

Trabajos Prácticos

Para el jueves 13/5 tienen que resolver el TP3 que consta de 2 ejercicios. Son los ejercicios 6 y 7 de la Guía de TPs de Funcional.

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)

Trabajos Prácticos

Para el jueves 6/5 tienen que resolver el TP2 que consta de 2 ejercicios. Son los ejercicios 4 y 5 de la Guía de TPs de Funcional.

Clase 2 - Introducción a Funcional

En esta clase arrancamos con el paradigma funcional, para el cual usaremos el lenguaje Haskell, y vimos 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 todavía no vimos).

Para ejercitar en Mumuki

Pueden profundizar los temas vistos 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: todavía no vimos composición, vale saltear los ejercicios que requieran haber visto ese tema.

Trabajos Prácticos

Para el jueves 29/4 tienen que resolver el TP1 que consta de 3 ejercicios. Son los ejercicios 1, 2 y 3 de la Guía de TPs de Funcional.

En esta misma guía incorporaremos gradualmente nuevos ejercicios para los TPs siguientes.

Clase 1 - Introducción a la materia