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 dato, Primera PrÔctica de Inferencia de Tipos, Segunda 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.