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

Bitácora de clase JN 2017

Colecciones, Bloques, Excepciones. Herencia. + TP Objetos

publicado a la‎(s)‎ 5 oct. 2017 15:14 por Mariana Matos   [ actualizado el 6 oct. 2017 6:24 ]

En estas últimas 2 clases incorporamos nuevas herramientas de trabajo muy útiles para hacer programas más grandes y complejos:

Lo que nos falta ver ya no depende de nuevos conocimientos, sino formas de resolver problemas distintos con lo que ya sabemos, entendiendo las ventajas y desventajas de las herramientas que tenemos, y bastante práctica para toparnos con distintas situaciones y pensar cómo modelarlas usando todo lo aprendido.

Finalmente, ya está publicada la siguiente entrega del TP de objetos, para la cual se espera que sigan trabajando en grupo, aprovechen las herramientas de trabajo y consulten con sus tutores ante cualquier duda.

Clase de clases + TP de objetos

publicado a la‎(s)‎ 11 sept. 2017 8:07 por Mariana Matos   [ actualizado el 11 sept. 2017 9:07 ]

En esta clase hablamos de:

Con lo que vimos ya tienen suficiente como para arrancar la primer entrega del TP. La semana que viene vamos a ver el tema que falta para que estén en condiciones de terminar esa primer entrega.

Como se mencionó en clase, lo más conveniente para trabajar en grupo es usar un repositorio de código para poder compartir y versionar su código. Qué necesitan hacer todos los integrantes para poder trabajar de esta forma y obtener un repositorio privado de GitHub con el código de base para el TP al cual nosotros ya tengamos acceso para ver su trabajo:

  1. Crearse una cuenta en GitHub si no tienen una hasta ahora
  2. Entrar a este link: https://classroom.github.com/g/_hbH0rL1 y...
    • Si encuentran un grupo ya creado con el nombre G<nro de grupo> correspondiente para el grupo al que pertenecen, usan el botón de Join para unirse al mismo. La herramienta no les va a permitir unirse a más de un grupo, con lo cual aseguren no pifiarle.
    • Si ninguno de sus compañeros creó el grupo todavía como para unirse, abajo donde dice "OR Create a new team" ingresan el nombre del grupo siguiendo la convención G<nro de grupo>.
  3. Una vez que hicieron eso van a tener acceso al repositorio de su grupo. Para clonar el repositorio con el proyecto desde el IDE de Wollok pueden seguir las instrucciones de este apunte (hay bastante más información de la que necesitan de entrada, alcanza con Clonar un proyecto usando Eclipse, Hacer pull usando Eclipse y Hacer commit y push usando Eclipse para lo que van a hacer cotidianamente) y están listos para empezar a trabajar.

Si bien el uso del repositorio es opcional para la aprobación del TP, usarlo no sólo facilita la colaboración sino también la corrección, ya que todos los tutores podemos acceder a los repositorios. Pueden aprovechar también los issues que pueden crearse desde el repositorio de github como herramienta de comunicación con sus compañeros de grupo y con el tutor cuando tienen dudas sobre la solución a la que llegaron.

UPDATE: El proyecto se va a crear con el nombre TP_PdeP_JN_Gxx, cuando lo clonen en Wollok pueden renombrarlo cambiando las xx del final por el número de grupo correspondiente seleccionando el proyecto y usando la opción Refactor -> Rename. Luego de hacer eso, commitean y pushean al repositorio para que quede para todos.

Intro a Objetos

publicado a la‎(s)‎ 1 sept. 2017 15:29 por Mariana Matos

Arrancamos con el tercer y último paradigma de la materia: Objetos, el cual llevaremos a la práctica con el lenguaje Wollok.

Los temas que vimos fueron:

Tambien se habló sobre Testeo unitario (por lo menos hasta la sección 7 no se van a topar con nada que no hayamos visto), que van a tener que aplicar en el trabajo práctico que estarán disponible desde la semana que viene.

Para repasar y practicar con Wollok online, también hay guías de Mumuki que pueden encontrar entrando acá. En particular con lo que vimos en esta primer clase alcanza para las siguientes guías completas:

Para las guías prácticas (esta y las que vengan más adelante) se recomienda usar el IDE, ya que son ejercicios más largos que los de los paradigmas previos y les puede servir para evitar errores sintácticos antes de enviar la solución.

Listas, recursividad y findall/3

publicado a la‎(s)‎ 4 ago. 2017 9:36 por Mariana Matos

En esta clase cerramos los conceptos de este paradigma luego de incorporar:

Con esto pueden terminar las guías de lógico, en particular:

También les dejo algunas recomendaciones para evitar malos usos de findall:

findall - donny no


Paradigma lógico: introducción + existe vs para todo

publicado a la‎(s)‎ 30 jun. 2017 7:10 por Mariana Matos   [ actualizado el 30 jun. 2017 15:11 ]

Arrancamos con el Paradigma Lógico para el cual estaremos usando el lenguaje Prolog y vimos los siguientes temas en las primeras dos clases:

Con esto ya cubrimos casi todos los temas del paradigma. Aprovechen las guías de Mumuki para repasar y practicar, las primeras 7 guías cubren todo lo que vimos. Como es un montón, les recomendamos en particular los siguientes ejercicios:

Sobre el trabajo práctico:

Por los ajustes de cronograma que tuvimos que hacer, el trabajo práctico para este paradigma no va a estar compuesto por más de una entrega. La fecha de entrega oficial es la que se encuentra actualmente en el cronograma.

El enunciado del TP está dividido en 3 partes:

Con lo visto ya pueden trabajar sobre las primeras dos partes.

Al igual que para el TP pasado, les proveemos el código de base que pueden descargar acá para que puedan probar la lógica que desarrollan. El readme y el mismo archivo de pruebas tiene explicaciones sobre cómo completarlo, con suerte no traerá problemas, pero si tienen dudas pregunten.

Estrategias de evaluación. Typeclasses. Inferencia de tipos.

publicado a la‎(s)‎ 13 may. 2017 6:22 por Mariana Matos

En esta clase cerramos la teoría de funcional hablando de:
Respecto al trabajo práctico, acá les dejo el enunciado para la segunda entrega. Si vuelven a entrar al link al código de base (o si ya lo hicieron durante la última semana) van a encontrar algunos agregados sobre lo que había inicialmente, particularmente:
  • los templates para los casos de prueba para la segunda entrega.
  • código necesario para que puedan trabajar con la nueva representación de los clientes sin problemas:
    • import Text.Functions para que no explote si muestran una función
    • una definición no standard de la igualdad para los clientes. Seguramente para la entrega 1 tenían un data Cliente que derivaba la typeclass Eq, dado que en el nuevo código provisto les damos una implementación distinta de la default, simplemente saquen el deriving Eq de la declaración del data (si también derivaban Show, eso sí lo pueden dejar). Una vez que implementen el punto 1a de la segunda entrega esta nueva implementación del == va a resultarles útil.

Pueden simplemente agregar esto a los archivos sobre los que estaban trabajando para la primer entrega y seguir trabajando.

Composición, aplicación parcial y expresiones lambda

publicado a la‎(s)‎ 30 abr. 2017 15:25 por Mariana Matos

En esta clase vimos los siguientes temas:
En Mumuki, composición es un tema que se aborda desde el principio, con lo cual tal vez quieran volver sobre algún ejercicio que les haya quedado amarillo por no aplicar ese concepto. Sobre aplicación parcial, tienen la guía Aplicación Parcial y Orden Superior y los primeros 6 ejercicios de la práctica asociada. Y también está la guía Expresiones Lambda.

Orden Superior

publicado a la‎(s)‎ 25 abr. 2017 6:39 por Mariana Matos

En esta clase vimos uno de los temas fuertes de la materia, sobre el cual vamos a volver una y otra vez a lo largo del año, que es Orden Superior. Pueden complementar lo visto con la guía de Listas.

También para ejercitar ahora sí pueden encarar la guía Práctica Listas completa al igual que la de Práctica Aplicación Parcial y Orden Superior, y además como vimos fold también pueden resolver la guía Dominar el mundo con nada que los va a pasear por diversos usos de esta familia de funciones.

Si a lo largo de la resolución de ejercicios de Mumuki les pide resolverlos con aplicación parcial y/o composición, ignoren eso por ahora, luego de la próxima clase en la cual se incorporen estos conceptos pueden iterar esos ejercicios nuevamente para aplicar esas ideas.

Ejercicios para la clase que viene:

IMPORTANTE: TP grupal

Ya están en condiciones de arrancar a trabajar sobre la primer entrega del TP (la fecha de entrega como indica el cronograma es el 11/05). Recuerden que pueden sacarse dudas sobre el TP mandando mail a su tutor asignado, copiando en el mismo al resto de su grupo. El TP alcanza con que se lo manden a su tutor por mail, si llegan a terminarlo antes de la fecha de entrega, aprovechen para mandárselo con más tiempo para que su tutor pueda verlo ni bien pueda y tener más tiempo de realizar las correcciones que sean necesarias.

El TP que le envían a su tutor debe incluir un archivo con la solución y otro con las pruebas, tomando como punto de partida el siguiente código de base. El readme debería ser suficientemente autoexplicativo respecto a qué se espera que hagan en cada archivo, pero ante la duda, contacten a su tutor.

Tipos de datos compuestos

publicado a la‎(s)‎ 5 abr. 2017 6:54 por Mariana Matos

En esta clase agregamos a nuestro conjunto de herramientas los tipos de datos compuestos: Listas, tuplas y datas. También vimos cómo definir alias de tipos usando type, para simplificar la declaración de los tipos de funciones y datas que los usen. Otro tema importantísimo que surgió en esta clase es la idea de inmutabilidad, debido a la ausencia de efecto colateral en este paradigma.

Pueden repasar los temas vistos en los siguientes artículos:

También están disponibles las siguientes guías de Mumuki que tratan los temas vistos:

Tuplas:
Alternativas: Guardas y Patrones (ejercicios 10 a 13 sobre trabajo con tuplas)
Práctica Guardas y Pattern Matching

Listas y recursividad
Listas (ejercicios 1 a 4) y Recursividad desde ejercicio 4 (ignorar los anteriores por ahora)
Práctica Recursividad (hasta el 13 inclusive)

Tuplas, Type y Data - con foco en inmutabilidad
Modelado (hasta el 13 inclusive)

Ejercitación para la próxima clase (dentro de 2 semanas debido al paro general y semana santa):


Introducción a Funcional (continuación)

publicado a la‎(s)‎ 24 mar. 2017 16:00 por Mariana Matos   [ actualizado el 24 mar. 2017 17:43 ]

En esta clase trabajamos un poco más con el paradigma funcional, los temas vistos hasta ahora fueron:
Las lecciones interactivas teóricas que cubren los temas vistos en esta clase son las siguientes:
También pueden ejercitar libremente con la primer guía práctica: Práctica Valores y Funciones. Si algún ejercicio les pide usar composición (tema que veremos más adelante), pueden sólo ignorar eso y resolver lo que se pide con lo que vimos hasta ahora.

Ejercitación para el miércoles que viene
Vamos a arrancar la próxima clase poniendo en común resoluciones hechas por ustedes para los siguientes ejercicios a modo de repaso de los temas vistos en la última clase. Los ejercicios para esta primer práctica son los siguientes:

1-10 of 11