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: