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.
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.
-
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:
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 (:=
)