Apuntes
La cursada por sí sola puede ser suficiente para entender los temas de la materia, pero nunca está de más reforzarla con apuntes, y la buena noticia es que tenés muchas variantes, con distintos estilos de redacción y orden. Para no marearse, están organizados de esta manera:
Wiki: material de referencia que cubre todos los contenidos de la materia (y más). Cada tema está presentado en forma independiente, como para poder entenderlo en su totalidad sin depender de un determinado orden o secuenciación. Se encuentra en constante construcción, si encontrás algo faltante o que podría mejorarse comentáselo a tu docente.
Guía de lenguajes: es un material breve y práctico sobre la sintaxis básica y funciones/predicados/métodos de uso frecuente en los lenguajes de programación utilizados. Puede usarse tanto en los parciales como en el final.
Herramientas utilizadas anteriormente:
Mumuki: es una plataforma de aprendizaje con guías teórico-práctica interactivas, que brindan feedback conceptual a las soluciones y permiten hacer un seguimiento de los temas de la materia. Para ver el contenido tenés que asociarte a un aula de Mumuki previamente. Contactá a tu docente para más información.
Apuntes clásicos
Desarrollan los temas en una determinada secuencia pedagógica, combinando ejemplos y explicaciones teóricas. El orden interno, el estilo de redacción y la selección de ejemplos, se corresponden con la forma que los respectivos autores (docentes de la materia) van desarrollando sus clases. También hay algunos sobre temas específicos de la materia y otros que abordan temas que van un poco más allá. Se presentan a continuación, organizados por paradigma.
Funcional
Compendio muy completo que recorre todos los temas y más. Se corresponde históricamente con el curso de los sábados a la mañana. Por Fernando Dodino, Matías Freyre y otros.
Módulo 1: Introducción. Función. Variable. Primeros ejemplos. Aplicación. Guardas.
Módulo 2: Composición. Aplicación parcial.
Módulo 3: Modelado de información.
Módulo 4: Recursividad. Evaluación diferida.
Módulo 5: Orden superior.
Módulo 6: Expresiones lambda.
Módulo 7: Sistema de tipos.
Anexo A: Testeo con HSpec
Para los curiosos, material extra:
Módulo 9: Tipos de datos avanzados. Kinds.
Módulo 10: Functores. Entrada/Salida. Trabajo con bindings.
Otros apuntes
La familia Fold. Por Franco Bulgarelli
Resolviendo un parcial de funcional (Monsters Inc). Ejercicio integrador resuelto y explicado paso a paso. Autores varios.
Paradigma Funcional. Abarca todos los conceptos del paradigma. Anteriormente publicado impreso en el CEIT (2008). Por Lucas Spigariol.
Libros:
"Learn You a Haskell For a Great Good". ¡En español! Recomendado, con explicaciones paso a paso.
Lógico
Compendio muy completo que recorre todos los temas y más. Se corresponde históricamente con el curso de los sábados a la mañana. Por Fernando Dodino, Matías Freyre y otros.
Módulo 1: Predicados. Individuos. Consultas. Universo Cerrado.
Módulo 2: Variables. Consultas Existenciales. Reglas simples y compuestas. Inversibilidad.
Módulo 3: Estructuras de datos. Individuos simples y compuestos.
Módulo 4: Predicados de orden superior.
Módulo 5: Recursividad.
Módulo 6: Elementos de Diseño. Delegación. Acoplamiento. Code smells.
Para los curiosos, material extra:
Otros apuntes
Forall: por Carlos Lombardi
Paradigma Lógico. Abarca todos los conceptos del paradigma. Anteriormente publicado impreso en el CEIT (2008). Por Lucas Spigariol.
Objetos
Compendio muy completo que recorre todos los temas y más. Se corresponde históricamente con el curso de los sábados a la mañana. Por Fernando Dodino, Matías Freyre y otros.
Módulo 01: Objeto. Mensaje. Métodos.
Módulo 02: Referencias. Estado. Compartir objetos. Identidad.
Módulo 03: Introducción a Polimorfismo.
Módulo 04: Objetos básicos. Números. Strings. Fechas. Conjuntos. Listas.
Módulo 05: Introducción al testeo unitario automatizado.
Módulo 06: Objetos anónimos y repaso polimorfismo.
Módulo 07: Propiedades.
Módulo 08: Clases. Method lookup y polimorfismo con clases.
Módulo 09: Herramientas de instanciación.
Módulo 10: Manejo de errores.
Módulo 11: Testeo unitario automatizado avanzado.
Módulo 12: Colecciones. Bloques de código.
Módulo 13: Herencia. Self, super. Redefinición.
Módulo 14: Mutabilidad. Igualdad e identidad.
Módulo 15: Elementos de Diseño (introducción).
Módulo 16: El proceso de Diseño.
Anexos de Wollok
Anexo 1: Guía de shortcuts del entorno Wollok
Anexo 2: Tutorial de Git en Wollok.
Anexo 3: Diagrama estático de Wollok
Anexos de la materia
Anexo A: Guías para comunicar un diseño: Elementos para realizar diagramas de clase y de objetos
Anexo B: Resolución de un ejercicio de examen.
Otros apuntes
(sacar?) Introducción a objetos. Presentación de elementos centrales del paradigma, con ejemplos en Smalltalk. Por Nicolás Passerini y Carlos Lombardi.
(sacar? Excepciones. Conceptos y criterios para manejar excepciones, con ejemplos en Smalltalk. Por Matías Freyre y Leonardo Cesario.
Paradigma de objetos. Abarca varios de los conceptos del paradigma, en Smalltalk. Anteriormente publicado impreso en el CEIT (2008). Por Lucas Spigariol.
Integración de conceptos
Integración de conceptos: charla inicial de la materia. Por Fernando Dodino y otros.
Conceptos Fundamentales de los Paradigmas de Programación. Anteriormente publicado impreso en el CEIT (2008). Por Lucas Spigariol.
Herramienta de versionado de código
Guía rápida de Git: En algunos cursos estamos usando esta herramienta para el versionado del código de los trabajos prácticos. Esta es una guía con un glosario, los comandos más usados, y una breve descripción del "workflow" básico.
Otra guía rápida de Git: Idem anterior
Guía de Git y Github Classroom: Explica las nociones básicas de versionado de código con Git y un paso a paso sobre la plataforma Github Classroom.