Cursos‎ > ‎Cursadas Anteriores‎ > ‎2018‎ > ‎Noc-Jueves‎ > ‎

Bitácora de clase - Jueves Noche 2018

Acá van a encontrar información relacionada con los temas vistos, ejercitación y trabajos prácticos.

Clase 25 - Herencia vs Composición

publicado a la‎(s)‎ 1 nov. 2018 8:24 por Mariana Matos

En esta clase estuvimos analizando las implicancias de usar herencia y qué alternativas hay en caso de no poder o no querer recurrir a este mecanismo. Esto nos llevó a la famosa disyuntiva entre herencia y composición. En la sección de apuntes pueden leer sobre estas cuestiones de diseño en el Módulo 17.

Clase 24 - Excepciones

publicado a la‎(s)‎ 20 oct. 2018 6:39 por Mariana Matos   [ actualizado el 20 oct. 2018 6:44 ]

En esta clase estuvimos hablando sobre excepciones, cómo usarlas, cuándo usarlas y qué hacer al respecto cuando ocurren. También vimos qué herramientas hay disponibles para poder testear los casos infelices, donde lo esperado es que un envío de mensajes resulte en un error.

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.

En funcional (en particular en Haskell) vimos que existen funciones que lanzan errores (por ejemplo, head [] estalla porque no tiene ninguna respuesta razonable), pero como cortar el flujo de ejecución va bastante en contra de la ausencia de efecto, a su vez propone otra alternativa para aquellos problemas que consideremos recuperables que se atienen a la idea de función. Esto es algo que excede el alcance de esta materia, los curiosos pueden investigar qué es una Mónada o mejor aún, cursar Técnicas Avanzadas de Programación.

Para profundizar

  • De la sección de apuntes:
    • El Módulo 10 explica la necesidad, buenos y malos usos.
    • El Módulo 11 explica, entre muchas otras cosas que pueden interesarles, cómo testear casos infelices.

Clase 23 - Clases

publicado a la‎(s)‎ 30 sept. 2018 8:42 por Mariana Matos

En esta clase incorporamos una nueva herramienta de modelado: las clases.

De la sección de apuntes: los módulos 7, 8 y 9 explican todo lo que vimos en esta clase.

Clase 22 - Colecciones

publicado a la‎(s)‎ 24 sept. 2018 10:45 por Mariana Matos

En esta clase vimos dos tipos de objetos muy útiles:

Para profundizar y ejercitar

  • De la sección de apuntes: el módulo 4 explica qué son y cómo se usan los bloques y las colecciones (sets y listas) en Wollok.
  • De Mumuki: la lección 4 introduce estos temas, y pueden complementar con la lección 7 para trabajar con una ejercitación menos guiada.

Clases 20 y 21 - Intro a objetos + testing

publicado a la‎(s)‎ 17 sept. 2018 13:40 por Mariana Matos   [ actualizado el 17 sept. 2018 13:42 ]

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 -> Apuntes van a encontrar los mismos módulos que están en la página de la cátedra, y en 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.

Para profundizar y ejercitar

  • De la sección de apuntes: los primeros 3 módulos cubren los temas que vimos en la primer clase de objetos, y el módulo 5 explica todo lo que necesitan saber sobre testeo, que les va a servir para el TP y para la vida en general.
  • De Mumuki con Wollok pueden trabajar con las primeras 3 guías.

Nota: Las guías de Mumuki de objetos que pueden encontrar en mumuki.io están en Ruby. No las vamos a usar en la materia, pero si quieren aprender Ruby por su cuenta, son libres de hacerlo obviamente. Las guías de Wollok están en construcción, esperamos poder mejoraras y complementarlas pronto.

Clase 17 - Listas

publicado a la‎(s)‎ 10 ago. 2018 18:15 por Mariana Matos

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:

  • length/2
  • member/2
  • sumlist/2
  • y findall/3 que es un predicado de orden superior.

Importante! No olvides repasar los Los Donny, no! para el uso responsable de findall.

Para profundizar y ejercitar

Acá pueden encontrar el código de esta clase.

  • De la sección de apuntes:
    • En el Módulo 3 sobre individuos compuestos se explica listas más en profundidad de lo que llegamos a ver, incluyendo otros predicados para trabajar con listas sencillos pero menos cotidianos.
    • En el Módulo 4 sobre predicados de orden superior se explica el predicado findall/3.
    • En el Módulo 5 sobre recursividad se termina de explicar este tema.
    • Y si con la PPT de "Donny, no!" se quedaron con dudas, pueden ver ejemplos concretos en el Módulo 6 en la sección de Code Smells.
  • 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 - Functores y Polimorfismo

publicado a la‎(s)‎ 6 jul. 2018 17:53 por Mariana Matos

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.

Para profundizar y ejercitar:

  • De la sección de apuntes: en el Módulo 3 se explica functores y polimorfismo, pero en el medio también se explican las listas que preferimos no introducir aún. Pueden complementar lo visto con ese apunte, pero no lo recomiendo mucho a esta altura para evitar confusiones.
  • De Mumuki pueden trabajar con las guías de Functores.

Clase 14 - Negación. Cuantificación Existencial y Universal.

publicado a la‎(s)‎ 29 jun. 2018 8:27 por Mariana Matos   [ actualizado el 29 jun. 2018 8:36 ]

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 existencia y para todo, que es lo que nos faltaba para poder trabajar con lógica de primer orden.

Recuerden que ambos predicados tienen problemas de inversibilidad, con lo cual hay que tomar ciertos recaudos al usarlos para que nuestros predicados sean inversibles. En general alcanza con que los parámetros de nuestros predicados lleguen unificados al consultar not/1 y forall/2, lo cual se logra consultando un predicado inversible más arriba que ligue esas variables.

Pueden profundizar estos temas leyendo de la sección de apuntes: Módulo 4 de Lógico hasta sección 4 inclusive.

Con Mumuki pueden avanzar hasta la guía 7 inclusive. Ejercicios sugeridos:

  • Gran compañero de viaje (guía 4)
  • Asesinato (guía 7)

Clase 13 - Intro a Lógico

publicado a la‎(s)‎ 26 jun. 2018 7:51 por Mariana Matos

En esta clase arrancamos con el Paradigma Lógico.

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, y vimos cómo se resuelven las operaciones aritméticas en Prolog.

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.

Con lo visto pueden trabajar con las dos primeras guías de Mumuki.

Pueden profundizar también leyendo de la sección de apuntes: Módulos 1 y 2 de Lógico.

Clase 9 - Evaluación perezosa y todo lo que necesitan saber sobre tipado

publicado a la‎(s)‎ 18 may. 2018 11:41 por Mariana Matos

En esta clase se terminó de formalizar todo lo relacionado con tipado incluyendo:

Y también vimos cómo Haskell aprovecha la ausencia de efecto para hacer magia sin que nos demos cuenta, ya que usa evaluación perezosa.

1-10 of 16