Tabla de Contenidos
Algoritmos y Estructuras de Datos I - 2017 1er cuatrimestre
Docentes
Teórico/Práctico: Damián Barsotti, Demetrio Martín Vilela, Ignacio Moretti.
Laboratorio: Martín Domínguez, Paula Estrella, Juan Cruz Rodríguez.
Ayudantes: Diego Piloni, Matias Gastón Silva, Meriles Emanuel Juan René.
Horarios
Teórico/Practico: martes y jueves de 14 a 18 hs, aula 25.
Laboratorio: lunes de 14 a 18 hs, Lab. 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.
Fechas de parciales y recuperatorio
Material
“Borrador” del libro de la materia:
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.
Más bibliografía y material acá
.
Prácticos
Acá pondremos los prácticos.
- Práctico 1 - Cálculo proposicional y expresiones cuantificadas.
- Práctico 2 - Especificación derivación y verificación de programas funcionales.
- Práctico 3 - Introducción a la programación imperativa.
- Práctico 4 - Programación imperativa.
Parciales, recuperatorios y finales
Laboratorio
Enunciado | Teóricos | Fecha corrección | |
---|---|---|---|
Presentación | Presentación | ||
Proyecto 1 | Proyecto 1 | Linux y consola | 3/4 |
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 | 24/4 | ||
Tipos de datos, deriving, case, Maybe | |||
Proyecto 3 | Proyecto 3(Archivos HAL) | Presentación de HAL | 22/5 |
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, | 19/6 |
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
- 14/3 Presentación de la materia. Derivación y verificación de programas. Practico 1. Expresiones Cuantificadas.
- 16/3 Reglas para la cuantificación general.
- 21/3 Cuantificador N. Análisis por casos y pruebas de implicación descargando antecedentes.
- 23/3 Consulta.
- 28/3 Practico 2. Inducción. Demostración por inducción de propiedades. Inducción sobre listas. Recursión lineal ej. 3.
- 30/3 Recursión lineal. Modularización.
- 4/4 Esquemas inductivos. Generalización por abstracción.
- 6/4 Consulta. Segmentos.
- 11/4 Consulta.
- 13/4 Feriado
- 18/4 1er Parcial
- 20/4 Practico 3 (Modelo computacional imperativo). Estados y transiciones. Anotaciones con predicados.
- 25/4 Terna de Hoare. Weakest Precondition (asignación, composición secuencial).
- 27/4 Weakest Precondition (if).
- 2/5 Teorema de la invariancia.
- 4/5 Derivación de asignación e if.
- 9/5 Derivación con invariantes.
- 11/5 Arreglos
- 16/5 Practico 4. Tecnicas para encontrar invariantes: termino de la conjunción.
- 18/5 Técnica de reemplazo cte. por variable.
- 23/5 Semana de Mayo
- 25/5 Feriado
- 30/5 Técnica de fortalecimiento de invariantes.
- 1/6 Problemas de Borde.
- 6/6 Consulta.
- 8/6 2do Parcial
- 13/6 Problemas de Borde. Consulta.
- 15/6 Consulta
- 20/6 Feriado
- 22/6 Recuperatorio
Taller
- 13/3: Presentación Proyecto 1 y auto-repaso linux
- 20/3: Teórico de Taller: Haskell, GHCI, secciones, map, filter.
- 27/3: Teórico de Taller: Tipos, clases de tipos y más.
- 3/4: Corrección Proyecto 1. Presentación Proyecto 2.
- 10/4: Teórico de Taller: Tipos de datos, deriving, case, Maybe.
- 24/4: Corrección proyecto 2. Presentación Proyecto 3.
- 8/5: Teórico primera parte. Uso de Hal - Teórico semántica.
- 22/5: Corrección proyecto 3. Presentación proyecto 4
- 29/5: Teórico de Taller: Programación C, GDB.
- 5/6: Teórico de Taller: Arreglos y Estructuras en C.
- 19/6: Corrección proyecto 4.
Bitácora
Acá pondremos lo que efectivamente fuimos dando en cada clase.
- 14/3 Presentación de la materia.Expresiones Cuantificadas. Pueden hacer ejercicios 1-9 y 12-14(cuantgen).
- 16/3 Paro
- 21/3 Paro
- 23/3 Axiomas y teoremas de la cuantificación general (digesto). Cuantificador N. Análisis por casos y pruebas de implicación descargando antecedentes. Pueden ir haciendo los ejercicios 3 a 9 y 12 a 14
- 27/3 Práctico 2. Demostración vs. derivación. Pueden ir haciendo hasta el 4 inclusive.
- 30/3 Paro
- 4/4 Modularización. Esquemas inductivos.
- 6/4 Paro
- 11/4 Paro
- 13/4 Feriado.
- 18/4 1er Parcial
- 20/4 Generalización.
- 25/4 Segmentos.
- 27/4 Práctico 3: Introducción a la programación imperativa. Modelo computacional imperativo. Sintaxis y semántica con estados de
skip
, asignación (:=
), composición (;
), condicional (if
) y de la repetición (do
). - 2/5 Terna de Hoare. wp de
skip
, asignación (:=
)