Tabla de Contenidos
Algoritmos y Estructuras de Datos I - 2016 2do cuatrimestre
Novedades
- 1/11/2016: Práctico 5 publicado.
- 18/10/2016: Práctico 4 publicado.
- 11/10/2016: Práctico 3 publicado.
- 27/09/2016: Práctico extra 1 publicado.
- 30/08/2016: Práctico 2 publicado.
- 16/08/2016: Empiezan las clases.
Aula Virtual (Moodle)
Docentes
Teórico/Práctico: Franco M. Luque, Laura Alonso Alemany, Demetrio Vilela, Mauricio Telechea y Marco Rocchietti. Ayudantes: Verónica Dias e Ignacio Queralt.
Laboratorio: Martín Domínguez, Renato Cherini, Juan Cruz Rodríguez, Emmanuel Gunther, Leonardo Rodriguez, Demetrio Vilela. Ayudantes: Emiliano Cuenca, Guillermo Incataciato, Jonathan Mutal, Matías Silva e Illak Zapata.
Horarios
Teórico/Practico: martes y jueves de 9 a 13 hs, aula D4 (baterías D).
Laboratorio: lunes de 14 a 18 hs. labs. 28 y 30.
Regularidad / Promoción
- Para regularizar la materia: 2 parciales aprobados con nota >= 4 o un recuperatorio equivalente y el taller aprobado.
- Para promocionar la materia: 2 parciales aprobados con nota >= 6, promedio >= 7.5 y el taller aprobado.
- Para rendir libre la materia, hay condiciones particulares respecto al taller. Ver Modalidad del taller para los detalles.
Nota: El taller también se considerará aprobado si lo fue en el segundo cuatrimestre de 2015 o en el primero de 2016.
Preguntas Frecuentes (FAQs)
¿Se pueden recuperar los dos parciales?
Sí, pero sólo para regularizar, y contando con el mismo tiempo que si recuperara uno solo. Para promocionar sólo se puede recuperar uno de los dos parciales.
¿Se puede recuperar para levantar nota de promoción?
Sí, pero sólo un parcial, y queda la nota del recuperatorio, a riesgo de bajar la nota de promoción o incluso de perderla.
Fechas de Parciales y Recuperatorios
- Primer parcial: 4 de octubre
- Segundo parcial: 15 de noviembre
- Recuperatorios: 24 de noviembre
Material
- Notas de clase:
Programación funcional:
- Digesto de axiomas y teoremas para cálculo proposicional y expresiones cuantificadas.
- Anexo (axiomas y teoremas cuantificador de conteo).
- Digesto de funciones de listas y propiedades.
Programación imperativa:
- Digesto para la programación imperativa.
Prácticos
Parciales y Recuperatorios
- Recuperatorio 1er parcial (con solución ej. 3)
- Recuperatorio 2do parcial (con solución ej. 3)
Laboratorio
Enunciado | Teóricos | Fecha corrección | |
---|---|---|---|
Presentación | Presentación | ||
Proyecto 1 | Proyecto 1 | Linux y consola | 5/9 |
Ejercicios de Haskell. | |||
Haskell, GHCI, secciones, map, filter | |||
Tipos, polimorfismo, clases de tipos y más | : | ||
Proyecto 2 | Proyecto 2 | Ejemplos tipos de datos (archivo .hs) | |
Tipos de datos en Haskell | 26/9 | ||
Tipos de datos, deriving, case, Maybe | |||
Proyecto 3 | Proyecto 3(Archivos HAL) | Presentación de HAL | 31/10 |
Modelo Computacional | |||
Ejemplos de programas en HAL | |||
Instalar HAL | |||
Proyecto 4 | Proyecto 4 | Programación C, GDB; Ejemplo de funciones en C | |
Archivos complementarios Proy. 4 | Teórico de Arreglos, Código Arreglo, Ejemplo de inicialización de arreglos; Teórico de Estructuras, Struct, | 21/11 |
Enunciados y teóricos de años previos:
- Introduccion a GDB. Por Marco Brunello y Leandro Ramos. Presentación, ejemplos.
Resumen de comandos de consola Linux y un libro sobre el tema.
Calendario Tentativo
Acá pondremos el calendario completo de la materia como esperamos darla.
Teórico Práctico
Taller
- 22/8: Armado de Grupos. Presentación Proyecto 1 y auto-repaso linux.
- 29/8: Teórico de Taller: Haskell, GHCI, secciones, map, filter. Tipos, clases de tipos y más.
- 5/9: Corrección Proyecto 1. Presentación Proyecto 2.
- 12/9: Teórico de Taller: Tipos de datos no recursivos (data y type)
- 19/9: Teórico de Taller: Tipo de datos recursivos, deriving, case, Maybe.
- 26/9: Corrección proyecto 2. Presentación Proyecto 3.
- 3/10:Presentación de proyecto 3. Teórico primera parte. Uso de Hal
- 10/10: FERIADO
- 17/10: Teórico semántica.
- 31/10: Corrección proyecto 3. Presentación proyecto 4
- 7/11: Teórico de Taller: Programación C, GDB.
- 14/11: Teórico de Taller: Arreglos y Estructuras en C.
- 21/11: Corrección proyecto 4.
Bitácora
Acá pondremos lo que efectivamente fuimos dando en cada clase.
- 17/08: Presentación de la materia. Cuantificación general.
- 18/08: Reglas hasta participón de rango.
- 23/08: Reglas hasta anidado.
- 25/08: Reglas de anidado, intercambio y de morgan. Cuantificador de conteo.
- 30/08: Demostración por inducción. Inducción en números. Esquemas de inducción.
- 01/09: Inducción en listas. Demostración vs. derivación.
- 06/09: Modularización. Subinducción. Pattern matching vs. análisis por casos.
- 08/09: Generalización.
- 13/09: Segmentos de lista.
- 15/09: Complejidad y tuplas.
- 20/09: Semana del estudiante.
- 22/09: Semana del estudiante.
- 27/09: Introducción a la programación imperativa. Sintaxis y semántica informal de skip, asignación (
:=
), composición (;
) y condicional (if
). - 29/09: Sintaxis y semántica informal de la repetición (
do
). Arreglos. - 04/10: Paro.
- 06/10: 1er parcial.
- 11/10: Anotaciones de programa. Precondición y postcondición. Especificación.
- 13/10: Precondición más débil. Demostración de programas imperativos. Demostración de skip, asignación, composición y condicional.
- 18/10: Demostración de ciclos. Invariante y función de cota.
- 20/10: Demostración completa de un programa.
- 25/10: Introducción a la derivación de programas. Derivación de asignaciones.
- 27/10: Derivación de condicionales. Derivación de ciclos. Técnicas para determinar invariantes: Tomar términos de una conjunción (ejemplo: algoritmo de la división).
- 1/11: Técnicas para determinar invariantes:
- Tomar términos de una conjunción (ejemplo: búsqueda lineal).
- Reemplazo de constantes por variables (ejemplo: suma de arreglo, exponenciación).
- 3/11: Fortalecimiento de invariantes (ejemplo:
sumant
). - 8/11: Problemas de borde al fortalecer invariantes (ejemplos: segmento de suma máxima, máxima distancia entre elementos).
- 10/11: Estados intermedios (ejemplo: varianza).
- 15/11: 2do parcial.
- 17/11: Consulta.
- 22/11: Consulta.
- 24/11: Recuperatorios.