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

Bitácora de clase - Jueves Noche 2016

Herencia vs Composición. Errores.

publicado a la‎(s)‎ 20 oct. 2016 9:07 por Mariana Matos

Terminamos de ver la teoría del paradigma de objetos. Los temas vistos fueron:
- Herencia
- Composición (los ejemplos están en Smalltalk, pero lo principal es la explicación teórica)
- Manejo de Errores

Si bien ya se había mandado por mail, dejo también por acá el link al el enunciado de la segunda entrega del TP de Quidditch:
lo pueden encontrar acá.

Clases

publicado a la‎(s)‎ 29 ago. 2016 16:01 por Mariana Matos   [ actualizado el 29 ago. 2016 16:07 ]

En esta clase introdujimos la idea de clase. Pueden leer más al respecto en Módulo 4: Clases. Method lookup y polimorfismo con clases.
Hablamos también sobre la importancia de que los objetos se encuentren en un estado válido a la hora de obtenerlos, lo cual lo logramos definiendo constructores cuando corresponda para poder parametrizar la construcción.

También pueden encontrar una nueva guía de Mumuki sobre estos temas: 9. Clases e Instancias

Ahora mismo todavía no hay guías prácticas en Mumuki, pero lo que sí hay es un TP para hacer por fuera de Mumuki, que está dividido en dos entregas: Enunciado entrega 1: Picadito de Quidditch

Si bien todavía falta un poco de teoría para poder resolverlo en su totalidad, ya pueden empezar a laburarlo de a poquito. Todos los grupos que armaron ya tienen un tutor designado, así que recuerden hacerle consultas (los mails sobre TP van directo al tutor, y deberían incluir a todos sus compañeros para evitar problemas de comunicación).

Intro a objetos y colecciones

publicado a la‎(s)‎ 24 ago. 2016 15:17 por Mariana Matos

Las primeras clases arrancamos con lo bien básico del paradigma de objetos, cuyas ideas centrales son los objetos y los mensajes. Los objetos se conocen mediante referencias, y las mismas pueden ser modificadas, o sea, hay asignación destructiva en este paradigma. Una referencia que de ninguna forma puede ser modificada mediante asignación es self, ya que siempre apunta al objeto que recibió el mensaje.

Hablamos sobre encapsulamiento, delegación y polimorfismo que son los 3 pilares del paradigma, y que hacen que un programa bien armado sea fácil de modificar y extender.

El ejemplo introductorio de pepita que usamos en la primer clase pueden encontrarlo en la sección de ejemplos. Van a ver que además del código propio del objeto pepita también incluye un archivo con pruebas automáticas. Acá pueden encontrar un apunte sobre testeo unitario muy útil. Este apunte incluye bastante más de lo que llegamos a necesitar a esta altura (lo que vimos incluye hasta la sección 4 incluída), pero de a poquito vamos a ir agregando más de esas cosas.

Además vimos cómo manejar conjuntos en objetos, a los cuales llamamos colecciones, y cómo usar bloques para parametrizar el comportamiento necesario de los mensajes de colecciones.

Por si todavía no las chusmearon, en Mumuki pueden encontrar las siguientes lecciones teóricas que cubren lo que se estuvo viendo en estas primeras clases:

Lección 1: Objetos y mensajes

Lección 2: Métodos y estado

Lección 4: Colecciones

Y como práctica personal pueden ejercitar con las guías prácticas de Mumuki sobre estos temas.

Listas y findall

publicado a la‎(s)‎ 17 jun. 2016 13:04 por Mariana Matos

Último TP de lógico: Práctica completa de Pulp Fiction

En esta clase vimos un nuevo tipo de individuo compuesto que son las listas. Las mismas son estructuras recursivas, por ese motivo resultan cómodas para trabajar recursivamente. También vimos el predicado findall/3 que sirve para armar listas a partir de las múltiples respuestas de una consulta y así poder trabajar con el conjunto de respuestas para cuando las herramientas se nos quedan cortas.

Y como dijimos una y otra y otra vez en esta última clase, CUIDADO, sólo usen listas cuando ese problema no puede encararse con las herramientas principales del paradigma lógico, de forma declarativa y pensando en la lógica detrás del problema más que en un algoritmo que funcione.

Functores y Polimorfismo

publicado a la‎(s)‎ 10 jun. 2016 11:55 por Mariana Matos

En esta clase vimos a uno de los dos individuos compuestos que usaremos en lógico, que son los functores.
Vimos cómo podemos usarlos trabajando con pattern matching y cómo evitar problemas de inversibilidad.

Luego, el plato fuerte de la clase, fue polimorfismo, que es un concepto trasversal de la materia.

Para la semana que viene hay un TP para repasar los temas de la clase que se compone de los siguientes ejercicios:
1. servidores
2. Mes complicado

Al resto de la guía práctica de fuctores, hasta próximo aviso, no le den bola porque los ejercicios no son adecuados con los temas vistos (ni el orden propuesto por Mumuki). En los próximos días espero poder ajustar el contenido para que puedan ejercitar.

La guía que sí les recomiendo que hagan es Lección 8: Functores

La clase que viene va a ser la última con contenido teórico de lógico, y luego arrancaremos con práctica tipo parcial.

Cuantificadores: Existe, No Existe y Para Todo

publicado a la‎(s)‎ 3 jun. 2016 8:47 por Mariana Matos

En esta clase estuvimos trabajando intensivamente con este ejercicio: TEG

La primer parte de la clase la dedicamos a ejercitar de los temas vistos la clase pasada, en particular Y, O y negación.

Vimos que hasta ahora sólo trabajamos con la idea de Existencia (cuantificador implícito en todas las reglas que venimos definiendo) o No Existencia (usando el predicado de orden superior not/1).

Existe vs Para Todo
A medida que se fueron complicando los problemas nos dimos cuenta que si bien con Existe y No Existe podemos solucionar los problemas más complicados también, hay otro cuantificador muuuuy conveniente para ciertos problemas que es el Para Todo (para lo cual usamos el predicado de orden superior forall/2).

Próximamente va a estar disponible una guía de aprendizaje de Mumuki sobre estos temas (avisaré por la lista cuando esté publicada).

Para la clase que viene tienen como TP estos ejercicios:

El objetivo es que usen todos los cuantificadores al menos una vez entre todos los ejercicios (no necesariamente en cada uno), no vale hacer todos los ejercicios sólo con Existe y No Existe ;)

Introducción a Lógico

publicado a la‎(s)‎ 24 may. 2016 6:44 por Mariana Matos

El paradigma Lógico que al igual que a Funcional lo podemos categorizar como declarativo (el motor se encarga de deducir si algo es verdadero o no, nosotros sólo declaramos verdades en nuestra base de conocimientos). Los temas de esta primer clase fueron:

El TP para la próxima clase (jueves 2/6) consiste únicamente en el ejercicio de la guía práctica de Inversibilidad: 11. asesinato

Desde ya, aparte de eso conviene que hagan todo lo que hay en las siguientes guías de aprendizaje y práctica:

Hay un par de lecciones en construcción sobre negación, esas simplemente ignórenlas.

Inferencia de Tipos y Typeclasses

publicado a la‎(s)‎ 22 abr. 2016 6:01 por Mariana Matos   [ actualizado el 9 may. 2016 6:02 ]

En la clase de hoy se terminó de cerrar cómo es que se infiere el tipo de una función incluyendo typeclasses.  Para repasar y practicar están todas las guías de tipos: Introducción tipos de datoPrimera Práctica de Inferencia de TiposSegunda Práctica de Inferencia de Tipos.

TP 4
El último TP de funcional es la siguiente guía de Mumuki (completa): TP Funcional 2016 - Buscando deptos
Esta guía ya tiene ejercicios con la dificultad que podrían esperar en un parcial. Hagan especial foco en el uso de orden superior, composición y aplicación parcial que son temas que tienen que tener muy sólidos para el parcial. Y arránquenlo con tiempo, tienen dos semanas pero es más largo y complicado que los TPs anteriores.

Composición y Aplicación Parcial

publicado a la‎(s)‎ 14 abr. 2016 20:02 por Mariana Matos   [ actualizado el 15 abr. 2016 7:45 ]

En esta clase (finalmente) hablamos sobre:
También vimos que podemos definir funciones en términos de otras funciones y no en base a la aplicación de las mismas (lo que van a encontrar como notación point-free).

TP3
Los ejercicios que componen este TP son:
  • Otra vez promediosSinAplazos, pero ahora sí tiene que dar verde!! Resolverlo point-free, sin funciones auxiliares ni lambdas (o sea, compongan y apliquen parcialmente todo lo que puedan, no vale quedarse a mitad de camino)
  • iniciales
  • Cuántas Muzzas
Guías recomendadas para seguir practicando:
Nuevamente no hay una guía propiamente sobre composición, este es un tema que se pide utilizar en varios ejercicios a lo largo de las guías que ya estuvieron usando, así que siéntanse libres de explorar cualquier bache que les haya quedado por el camino.

Recursividad vs Orden Superior

publicado a la‎(s)‎ 9 abr. 2016 6:03 por Mariana Matos

Ya habíamos aprendido a trabajar recursivamente con los conjuntos, sin embargo a medida que usamos este mecanismo para resolver más problemas vemos que empezamos a repetirnos y mucho. Para solucionar esa repetición necesitamos poder parametrizar lo que cambia, que es lógica, o sea, funciones. A esta idea la llamamos orden superior.
Este concepto lo vimos de la mano de funciones como filter, map, any, all y la familia de fold (ver guía de aprendizaje Listas), sin embargo aplica para cualquier cosa! Como ser los siguientes ejercicios de la guía de aprendizaje sobre este tema: 5. Un saludo superior, Parte 1 hasta  10. Tipos y Orden Superior.

Expresiones lambda, que pueden repasar con esta otra guía: Expresiones Lambda (todos menos el 6 por ahora, que pueden saltearlo)

TP2
Para la semana que viene deberían resolver los siguientes ejercicios:
  1. darVuelta
  2. promediosSinAplazos (este puede quedar en naranja para la semana que viene siempre que cumpla la funcionalidad pedida y con usar map y filter, que es lo que buscamos para esta ocasión, el TP3 va a incluir hacer que este ejercicio de verde!)
  3. maximoSegun


Y para seguir ejercitando tienen la guía de Práctica Listas, la de 
  • Práctica Aplicación Parcial y Orden Superior
  •  (del 
  • 6. existsAny al 
  • 9. parDeFns) y Dominar el mundo con nada para jugar con los foldeos de todos los colores.

    1-10 of 12