====== Algoritmos y Estructuras de Datos I - 2015 2do cuatrimestre ====== {{ :algo1:portada.jpg?150 }} [[http://cs.famaf.unc.edu.ar/wiki/doku.php?id=algo1:2015-1|¡Bienvenido a la página de Algoritmos I!]] ===== Novedades ===== * 04/08/2015: Relanzamiento de la página! * 13/08/2015: Publicado el práctico 1. * 25/08/2015: Se publicó el práctico 1 corregido. Se subió el borrador del libro de la materia. * 01/09/2015: Se publicó el práctico 2 completo. Se publicaron las fechas de los parciales. * 07/10/2015: Se publicaron los prácticos 3 y 4. /* ===== Aula Virtual (Moodle) ====== * [[http://www.famaf.proed.unc.edu.ar/course/view.php?id=10|Página principal]] * [[http://www.famaf.proed.unc.edu.ar/mod/forum/view.php?f=626|Foro de Novedades y Anuncios]] * [[http://www.famaf.proed.unc.edu.ar/mod/forum/view.php?f=627|Foro para hacer preguntas]] */ ===== Docentes ===== **Teórico/Práctico**: Javier Blanco, Franco Luque, Mauricio Telechea, Demetrio Martín Vilela, Beta Ziliani, Renato Cherini. ***Laboratorio***: **Comisión Mañana**: Emanuel Gunther, Juan Cruz Rodríguez, Marco Rochietti. Ayudantes: Franco Margaría, Iliak Zapata. **Comisión Tarde**: Martín Domínguez, Leonardo Rodríguez, Demetrio Vilela. Ayudantes: Bonader, Piloni, Schmidt. ===== Horarios ===== **Teórico/Practico**: martes y jueves de 9 a 13 hs, aula D4 (Baterías D). **Laboratorio comisión mañana**: miércoles de 9 a 13 hs, Lab. 30. **Laboratorio comisión tarde**: miércoles 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 [[algo1:taller:modalidad|Modalidad del taller]] para los detalles. Nota: El taller también se considerará aprobado si lo fue en el primer cuatrimestre de 2015. /* - las notas son números redondos */ ===== Fechas de parciales y recuperatorio ==== * Primer parcial: 15/09/2015 * Segundo parcial: 10/11/2015 * Recuperatorios: 17/11/2015 /* * {{:algo1:2014-2:ejemplo_parcial1.pdf|Ejemplo de 1er parcial.}} * {{:algo1:2014-2:ejemplo_parcial2.pdf|Ejemplo de 2do parcial.}} */ ===== Material ===== "Borrador" del {{:algo1:calculo_de_programas_-_blanco_barsotti_y_smith.pdf| libro}} de la materia: Programación funcional: * {{:algo1:digesto.pdf|Digesto}} de axiomas y teoremas para cálculo proposicional y cuantificadores. * {{:algo1:2014-2:listas.pdf|Digesto}} de funciones de listas y propiedades. Programación imperativa: * {{:algo1:2015-1:imperativo.pdf|Digesto}} para la programación imperativa. /* [[bibliografia|Más bibliografía y material acá.]] */ ===== Prácticos ===== /* Acá pondremos los prácticos. */ * {{:algo1:2015-c2-p1.pdf|Práctico 1}} - Cálculo proposicional y expresiones cuantificadas. * {{:algo1:2015-c2-p2.pdf|Práctico 2}} - Especificación, derivación y verificación de programas funcionales. * {{:algo1:2015-c2-p3.pdf|Práctico 3}} - Introducción a la programación imperativa. * {{:algo1:2015-c2-p4.pdf|Práctico 4}} - Introducción al cálculo de programas imperativos. * {{:algo1:2015-c2-p5.pdf|Práctico 5}} - Programación imperativa. ===== Laboratorio ===== | ^ Enunciado ^ Teóricos ^ Fecha corrección ^ ^ Presentación | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/presentacion_2015.html|Presentación]] ||| ^ Proyecto 1 | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/proy1.pdf|Proyecto 1]] |[[http://www.cs.famaf.unc.edu.ar/~hoffmann/algo1/2013-2/teoricos/html/clase2_linux.html|Linux y consola]] | 2/9| ^ ::: | ::: | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/Ejercicio_extra_clase_1.hs|Ejercicios de Haskell.]] | ::: | ^ ::: | ::: | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/CLASE_1_proy_1.html|Haskell, GHCI, secciones, map, filter]] | ::: | ^ ::: | ::: | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/CLASE_2_proy_1.html|Tipos, polimorfismo, clases de tipos y más]] | ::: | ^ Proyecto 2 | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/proy2.pdf|Proyecto 2]] | [[http://www.cs.famaf.unc.edu.ar/~hoffmann/algo1/proy2_tiposdedatos.hs|Ejemplos tipos de datos (archivo .hs)]] | 23/9| ^ ::: | ::: |[[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/Tipos_en_Haskell.pdf|Tipos de datos en Haskell]] | | ^ ::: | ::: |[[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/proyecto_2_CLASE_1.html|Tipos de datos, deriving, case, Maybe]] | ^ Proyecto 3|[[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/proy3.pdf|Proyecto 3]]([[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/hal-gui.zip|Archivos HAL]])|[[https://docs.google.com/presentation/d/104uhjnehOSZ5tu11AQRB2D-Mt71cuEa8zZE7Zi4Xex8/edit?usp=sharing|Presentación de HAL]]| 28/10| ^ ::: | ::: | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/presentacio_modelo_comp.pdf|Modelo Computacional]] | ::: | ^ ::: | ::: | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/Examples-HAL.zip|Ejemplos de programas en HAL]] | ::: | ^ ::: | ::: | [[algo1:instalarhal|Instalar HAL]]| ::: | ^ Proyecto 4 | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/proy4_2015.pdf|Proyecto 4]] | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/Clase_1_de_C_con_hal.html|Programación C, GDB]]; [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/funciones_en_c.c|Ejemplo de funciones en C]] | ^ | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/archivos_ejercicios.zip|Archivos complementarios Proy. 4]] |[[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/clase_arreglo.html|Teórico de Arreglos]], [[http://www.cs.famaf.unc.edu.ar/~hoffmann/algo1/2013-1/arreglo.c|Código Arreglo]], [[http://www.cs.famaf.unc.edu.ar/~hoffmann/algo1/2013-1/inicializar.c|Ejemplo de inicialización de arreglos]]; [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/clase_struct.html|Teórico de Estructuras]], [[http://www.cs.famaf.unc.edu.ar/~hoffmann/algo1/2013-1/struct.c|Struct]], [[http://www.cs.famaf.unc.edu.ar/~hoffmann/algo1/2013-1/struct2.c|Struct 2]]| 25/11| Ejemplos de programas en C: * Proyecto 4 : * Código C: [[http://www.cs.famaf.unc.edu.ar/~hoffmann/algo1/2013-1/helloworld.c|Hello, World!]] * Código C: [[http://www.cs.famaf.unc.edu.ar/~hoffmann/algo1/2013-1/assignacion.c|Assignación múltiple]] * Código C: [[http://www.cs.famaf.unc.edu.ar/~hoffmann/algo1/2013-1/while.c|While]] /* Ahora están como ejercicio * Código C: [[http://www.cs.famaf.unc.edu.ar/~hoffmann/algo1/2013-1/mcd.c|Mcd]] * Código C: [[http://www.cs.famaf.unc.edu.ar/~hoffmann/algo1/2013-1/mcdFuncion.c|Mcd con función]] * */ Enunciados y teóricos del año pasado: * Código C: [[http://www.cs.famaf.unc.edu.ar/~hoffmann/algo1/2013-1/collatz.c|Collatz]] * Introduccion a GDB. Por Marco Brunello y Leandro Ramos. {{:algo1:2011-2:gdb.pdf|Presentación}}, {{:algo1:2011-2:ejemplo_gdb.tar.gz|ejemplos}}. [[https://github.com/WilliamHackmore/linuxgems/blob/master/cheat_sheet.org.sh|Resumen de comandos de consola Linux]] y [[http://cli.learncodethehardway.org/book/| un libro sobre el tema]]. ===== Calendario tentativo ===== /* Acá pondremos el calendario completo de la materia como esperamos darlo. */ ==== Taller ==== * 12/8: Presentación Proyecto 1 y auto-repaso linux * 19/8: Teórico de Taller: Haskell, GHCI, secciones, map, filter. * 26/8: Teórico de Taller: Tipos, clases de tipos y más. * 2/9: **Corrección Proyecto 1.** Presentación Proyecto 2. * 9/9: Teórico de Taller: Tipos de datos, deriving, case, Maybe. * 23/9: **Corrección proyecto 2**. Presentación Proyecto 3. * 30/9: FERIADO * 7/10: Presentación de proyecto 3. Teórico primera parte. Uso de Hal * 14/10: Teórico semántica. * 28/10: **Corrección proyecto 3**. Presentación proyecto 4 * 4/11: Teórico de Taller: Programación C, GDB. * 11/11: Teórico de Taller: Arreglos y Estructuras en C. * 25/11: **Corrección proyecto 4**. /* ==== Teórico Práctico ==== * 9/3 Presentación de la materia. Derivación y verificación de programas. **Practico 1**. Expresiones Cuantificadas. * 12/3 Reglas para la cuantificación general. * 16/3 Cuantificador N. Análisis por casos y pruebas de implicación descargando antecedentes. * 19/3 **Practico 2**. Inducción. Demostración por inducción de propiedades. Inducción sobre listas. Recursión lineal ej. 3. * 23/3 Feriado * 26/3 Recursión lineal. Modularización. * 30/3 Esquemas inductivos. Generalizacion por abstraccion. * 2/4 Feriado. * 6/4 Consulta. Segmentos * 9/4 Consulta. * 13/4 ** 1er Parcial**. * 16/4 Feriado. * 20/4 **Practico 3** (Modelo computacional imperativo). Estados y transiciones. Anotaciones con predicados. * 23/4 Terna de Hoare. Weakest Precondition (asignación, composición secuencial). * 27/4 Weakest Precondition (if). * 30/4 Teorema de la invariancia. * 4/5 Derivación de asignación e if. * 7/5 Derivación con invariantes. * 11/5 Arreglos * 14/5 **Practico 4**. Tecnicas para encontrar invariantes: termino de la conjunción. * 18/5 Técnica de reemplazo cte. por variable. * 21/5 Técnica de predicados intermedios. * 25/5 Feriado * 28/5 Semana de mayo. * 1/6 Técnica de fortalecimiento de invariantes. * 4/6 Problemas de Borde. * 8/6 Consulta. * 11/6 ** 2do Parcial **. * 15/6 Problemas de Borde. Consulta. * 18/6 Consulta * 22/6 ** Recuperatorio **. */ /* ===== Bitácora ===== Acá pondremos lo que efectivamente fuimos dando en cada clase. * 9/3 Presentación de la materia. Derivación y verificación de programas. **Practico 1**. Expresiones Cuantificadas. Dado ejercicio 3 a. Pueden hacer hasta el ejercicio 4. * 12/3 Reglas para la cuantificación general. Pueden hacer hasta ej. 7. * 16/3 Cuantificador N. Ejercicio del rango unitario para N el cual introduce los conceptos de prueba de análisis por casos. * 19/3 **Practico 2**. Inducción. Demostración por inducción de propiedades. Inducción sobre listas. Comienza derivación de recursión lineal. Pueden hacer hasta ej. 3. * 23/3 Feriado * 26/3 Recursión lineal. Modularización hasta ejercicio pi. * 30/3 Esquemas inductivos con ejercicio 6. * 2/4 Feriado (semana santa). * 6/4 Generalizacion por abstraccion: ejercicio 7.a) psum. Ejercicio sum_ant. * 9/4 Segmentos. Ejercicio xs segmento de ys en clase * 13/4 Parcial * 16/4 Feriado * 20/4 **Practico 3**. Historia del modelo computacional imperativo. Sentencias y estados (sin bucles). Hasta ej 1.g y 2.c. * 23/4 Bucles (final ejercicio 1 y 2). Predicados y anotaciones de programas (ej 3). Terna de Hoare y corrección (ej 4 y 5). Wp de skip, abort, composición y asignación (hasta ejercicio 6.e). * 27/4 Wp if. Hasta ejercicio 7.d) * 30/4 Teorema de invariancia. Hasta ejercicio 7. * 4/5 Derivación de asignaciones y if (ej 8 y 9). * 7/5 Derivación con invariante dado (ej 12) * 11/5 Algorítmo de la división. Modelo computacional con arreglos (ej 13 en adelante). * 14/5 **Practico 4**. Tecnicas para encontrar invariantes: termino de la conjunción. Ejercicios 1 y 2. * 18/5 Técnica de reemplazo cte. por variable. Ej 3 a 6. Para la casa especificar ej 7 y 10. * 21/5 Técnica de fortalecimiento de invariantes. Técnica de predicados intermedios (solo un ej). * 25/4 Feriado. * 28/4 Semana de Mayo. * 1/6 Repaso de predicados intermedios. Técnica de fortalecimiento de guarda. * 26/5 Consulta. Ej 12 * 29/5 Consulta. Problemas de Borde. * 2/6 Problemas de Borde. */