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.

Repaso conceptual de cierre

publicado a laā€Ž(s)ā€Ž 29 nov 2018 8:18 por Mariana Matos

Les dejamos algunos links que les pueden ser de utilidad a la hora de preparar el final. Recuerden que pueden encontrar exÔmenes tomados en la sección de Finales.
En general deberían poder implementar soluciones a pequeños problemas en cada paradigma o mejoras sobre soluciones que se tienen como punto de partida y justificar conceptualmente. Para el final se espera que demuestren que entendieron los conceptos, y se nota mucho si frutean, así que asegúrense de tener en claro qué es cada cosa y qué ventajas y/o limitaciones tienen las soluciones desde un punto de vista conceptual para poder explicarlas.

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