Algoritmos y Estructuras de Datos I
Aula Virtual (Moodle)
Docentes
Teórico/Práctico: Franco M. Luque, Matías Lee, Demetrio Martín Vilela, Mauricio Tellechea, Mariana Badano.
Laboratorio: Martín Domínguez, Renato Cherini, Demetrio Martín Vilela, Leonardo Rodríguez, Raúl Fervari, Alejandro Gadea.
Ayudantes: Lucía Pappaterra, Joaquín Barotto, Franco Margaría, Agustín Capello, Kevin Clemoveki, Ángel Argüello.
Horarios
Teórico/Practico: martes y jueves de 9 a 13 hs, aula D4 (baterías D).
Laboratorio: miércoles de 14 a 18 hs., Labs. 28 y 30.
Novedades
2014/10/28: ¡Práctico 5 publicado!
2014/10/14: ¡Práctico 4 publicado!
2014/10/14: ¡Enunciado y notas del primer parcial publicados!
2014/10/02: ¡Práctico 3 publicado!
2014/09/17: Nuevo material: Ejemplo de 1er parcial.
2014/09/09: ¡Cambios en el calendario! Semana del estudiante y primer parcial.
2014/09/02: Nuevo material: Digesto de funciones de listas y propiedades.
2014/08/21: ¡Práctico 2 publicado!
2014/08/14: Nuevo material: Digesto Anexo: axiomas y teoremas cuantificador de conteo.
2014/08/08: Página publicada!
Para regularizar la materia: 2 parciales aprobados con nota >= 4 o recuperatorio equivalente y el taller aprobado. Se pueden recuperar ambos parciales.
Para promocionar la materia: 2 parciales aprobados con nota >= 6 o recuperatorio equivalente, promedio >= 7.5 y el taller aprobado. Se puede recuperar sólo un parcial. Queda la nota del recuperatorio.
-
Ver también Modalidad del taller.
Nota: El taller también se considerará aprobado si lo fue en el primer cuatrimestre del año 2014.
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.
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. ¡Solo para guapos!
¿Me dan el taller por aprobado si lo aprobé el año pasado?
No. Sólo valen los del cuatrimestre pasado.
Material
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 - Repaso 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 - Introducción a la programación imperativa (continuación).
-
Parciales (y Recuperatorios)
Acá pondremos los enunciados y las notas de los parciales.
Enunciados:
Notas:
-
Parcial 2 y promedio. La nota final de los promocionados se define una vez corregido el laboratorio.
-
Finales
Laboratorio
| Enunciado | Teóricos | Fecha corrección |
Presentación | Presentación |
Proyecto 1 | Proyecto 1 | Linux y consola | 3/9 |
Haskell, GHCI, secciones, map, filter |
Tipos, clases de tipos y más |
Proyecto 2 | Proyecto 2 | Ejemplos tipos de datos (archivo .hs) | 24/9 |
Tipos de datos, deriving, case, Maybe |
Proyecto 3 | Proyecto 3 (Archivos) | Módulos, TADs, instanciaciones de clases | 15/10 |
Lista con invariante de orden (archivo .hs) |
Proyecto 4 | Proyecto 4 | Programación C, GDB | 5/11 |
Proyecto 5 | Proyecto 5 | Teórico de Arreglos, Código Arreglo, Inicialización de arreglos; Teórico de Estructuras, Struct, Struct 2 | 26/11 |
Ejemplos de programas en C:
Enunciados y teóricos del año pasado:
Resumen de comandos de consola Linux y un libro sobre el tema.
Finales
Acá pondremos los enunciados de los finales.
Calendario tentativo
Acá pondremos el calendario completo de la materia como esperamos darlo.
13/8: Presentación Proyecto 1
20/8: Teórico de Taller: Haskell, GHCI, secciones, map, filter.
27/8: Teórico de Taller: Tipos, clases de tipos y más.
3/9: Corrección Proyecto 1. Presentación Proyecto 2.
10/9: Teórico de Taller: Tipos de datos, deriving, case, Maybe.
24/9: Corrección proyecto 2. Presentación Proyecto 3.
25/9: Primer parcial.
1/10: Teórico de Taller: Módulos, TADs, instanciaciones de clases.
15/10: Corrección proyecto 3. Presentación Proyecto 4.
22/10: Teórico de Taller: Programación C, GDB.
5/11: Corrección proyecto 4. Presentación Proyecto 5.
13/11: Segundo parcial.
22/10: Teórico de Taller: Arreglos y Estructuras en C.
20/11: Recuperatorio.
26/11: Corrección proyecto 5.
Bitácora
Acá pondremos lo que efectivamente fuimos dando en cada clase.
12/8:
14/8:
Reglas para la cuantificación general: Rango vacío, rango unitario, partición de rango, regla del término, término constate y distributividad. Intuición y ejemplos.
19/8:
Reglas para la cuantificación general: Anidado, cambio de variable y separación de un término. Intuición, ejemplos y demostraciones.
Cuantificador de conteo: Definición. Reglas: rango vacío y rango unitario.
Métodos de prueba: Análisis por casos.
21/8:
Inducción:
Inducción sobre números y listas.
Diferentes esquemas de inducción.
Demostración por inducción vs. derivación por inducción.
26/8:
Conceptos: Propiedad, especificación, programa/definición, demostración y derivación.
Derivación por inducción básica sobre números y listas.
28/8:
Modularización: concepto, intuición y ejemplos.
Más derivación por inducción: ejemplo con esquema sobre listas [], [x] y (y:x:xs) (función creciente
).
2/9:
4/9:
9/9:
Segmentos de lista: definiciones de segmento, segmento inicial y segmento final.
Especificación y derivación de problemas con segmentos.
11/9:
Complejidad algorítmica.
Técnica de tuplas.
2/10:
Presentación de Programación Imperativa.
Lenguaje de programación imperativo: sentencias, con su sintaxis, semántica y ejemplos.
7/10:
9/10:
Ternas de Hoare: Definición y ejemplos.
Debilidad y fortaleza de predicados.
Precondición más débil (weakest precondition):
14/10: (Entra Chun, sale Franco)
Repaso de las tres clases de imperativo.
Respondimos las preguntas ¿qué hace el comando X?,¿cuándo la terna de Hoare para el comando X es válida?, ¿cuál es la precondición más débil para el comando X y la postcondición Q? para los comandos skip, abort, asignación e if.
16/10:
21/10:
23/10: Técnicas para derivar invariantes
28/10: Técnicas para derivar invariantes
30/10:
04/11:
06/11: