====== Algoritmos y Estructuras de Datos I - 2019 1er cuatrimestre ====== {{ :algo1:portada.jpg?150 }} ¡¡Bienvenidos a la página de Algoritmos I!! [[http://www.famaf.proed.unc.edu.ar/course/view.php?id=458|Aula Virtual]] (recuerden inscribirse). /* ===== Novedades ===== */ ===== Docentes ===== **Teórico/Práctico**: Damián Barsotti, Demetrio Vilela, Mauricio Tellechea. /* Ayudantes: Jonathan David Mutal, Illak Zapata. */ **Laboratorio**: * //Docentes//: Martín Domínguez, Juan Cruz Rodríguez, Rafael Jorge. * //Ayudantes//: PERETTI, Nicolás; GOBBI, Matías y STEINBERG, Matías ===== Horarios ===== **Teórico/Practico**: martes y jueves de 14 a 18 hs, aula 16. **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 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 segundo cuatrimestre de 2016 o en el primero de 2017. */ /* - las notas son números redondos */ /* ===== 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. */ /* ¿Qué pasa si promociono el teórico y no apruebo el taller? */ ===== Notas de parciales, recuperatorios y finales ===== * {{:algo1:2019-1:algoritmos_i_2019_primer_cuatrimestre_-_teorico.pdf |1er parcial}} * {{ :algo1:2019-1:algoritmos_i_2019_primer_cuatrimestre_-_teorico_-_parciales.pdf |2do parcial y promoción}} * {{ :algo1:2019-1:algoritmos_i_2019_primer_cuatrimestre_-_final_1.pdf |Final 1/7}} * {{ :algo1:2019-1:algoritmos_i_2019_primer_cuatrimestre_-_final_2.pdf | Final 23/7}} * {{ :algo1:2019-1:algoritmos_i_2019_primer_cuatrimestre_-_final_3.pdf |Final 6/8}} /* * {{:algo1:2016-2:2016c2recup1.pdf|Recuperatorio 1er parcial}} (con solución ej. 3) * {{:algo1:2016-2:2016c2recup2.pdf|Recuperatorio 2do parcial}} (con solución ej. 3) */ ===== Material de Teórico/Práctico ===== * [[http://www.cs.famaf.unc.edu.ar/~damian/calcprog|Libro de la materia]] /* * Notas de clase: * {{:algo1:clases_teoricas_2014-2.pdf|Programación funcional (Marianela Morales, 2014)}} * {{:algo1:clases_teoricas_2016-2.pdf|Programación imperativa (Lucía González, 2016)}} */ Lógica: * {{:algo1:2018-1:digesto.pdf|Digesto}} de axiomas y teoremas para cálculo proposicional y expresiones cuantificadas. * {{:algo1:2018-1:cuantificador_n.pdf|Anexo}} (axiomas y teoremas cuantificador de conteo). Programación funcional: * {{:algo1:2018-1:listas.pdf|Digesto}} de funciones de listas y propiedades. Programación imperativa: * {{ :algo1:2019-1:imperativo.pdf |Digesto}} para la programación imperativa. * {{ :algo1:2019-1:pasos_bucle.pdf |Pasos Sugeridos para Derivar un Bucle}} (heurística). /* * {{:algo1:2014-2:ejemplo_parcial1.pdf|Ejemplo de 1er parcial.}} * {{:algo1:2016-1:ejemplo_parcial2.pdf|Ejemplo de 2do parcial.}} */ Ejemplos de finales: (**OJO:** los ejercicios varían por cambios en los contenidos de la materia y por diferencias entre cursado y recursado.) * {{:algo1:2017-2:2016c2final1.pdf|5 de diciembre de 2016}} * {{:algo1:2017-2:2016c2final2.pdf|X de diciembre de 2016}} * {{:algo1:2017-2:2016c2final3.pdf|15 de febrero de 2017}} * {{:algo1:2017-2:2016c2final4.pdf|3 de marzo de 2017}} [[:algo1:bibliografia2|Más bibliografía y material acá.]] ===== Prácticos ===== * {{ :algo1:2019-1:practico1.pdf |Práctico 1: Expresiones Cuantificadas y Formalismo Básico}} * {{ :algo1:2019-1:practico2.pdf |Práctico 2: Especificación, Derivación y Verificación de Programas Funcionales}} * {{ :algo1:2019-1:practico3.pdf |Práctico 3: Introducción a la Programación Imperativa}} * {{ :algo1:2019-1:practico4.pdf |Práctico 4: Cálculo de Programas Imperativos}} ===== Material de laboratorio ===== | ^ Enunciado ^ Material ^ Fecha corrección ^ ^ Repaso Linux|:::|{{https://cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/clase2_linux.html| Linux y consola}} | ::: | ^ Proyecto 1 | {{https://cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/proy1_2018.pdf| Proyecto 1}} | [[http://aprendehaskell.es/main.html|Aprende Haskell por el bien de todos! (cap. 1 al 6)]] | 8/4| ^ ::: | ::: |{{https://docs.google.com/presentation/d/1U2OyJe_rN31UA8xx6geh9wvfJeRWBzjO26IrjN8UBFQ/edit?usp=sharing|Tipos: polimorfismo y alto orden}} | ::: | ^ Proyecto 2 | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/proy2_2019.pdf|Proyecto 2]] | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/clase_2_ejemplo_tipos.hs|Ejemplos tipos de datos (archivo .hs)]] | 22/4| ^ ::: | ::: |[[https://docs.google.com/presentation/d/15dhZOodeKXUirtK9Lf2Nwy1AgMdovnVdm5CenyGnFiY/edit?usp=sharing|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_2019.pdf|Proyecto 3}} |[[https://docs.google.com/presentation/d/114itNZPAAtXG0_8avrz9j5enHamy-6nfIn8mROo2blQ/edit?usp=sharing|Moldelo Computacional]]| 20/05| ^ ::: | ::: | [[https://docs.google.com/presentation/d/1HCyDerNvBff_2PfKvsj7JXJSW8oAJ-53EEnkcb-X1Pw/edit?usp=sharing|Intoducción al Lenguaje C]] | ::: | ^ Proyecto 4 | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/proy4_2019.pdf|Proyecto 4]] | |10/06| ^ ::: | ::: | [[https://docs.google.com/presentation/d/1X95n3wuOyGzji8VZWUv6_8o1cE0FP-3iD64CmqApIN4/edit?usp=sharing|Teórico sobre C: Assert, Funciones y Estructuras]] | ::: | ^ ::: | ::: | [[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/arreglo.c|Código Arreglo]] | ::: | ^ ::: | ::: | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/inicializar.c|Ejemplo de inicialización de arreglos]] | ::: | ^ ::: | ::: | [[http://www.cs.famaf.unc.edu.ar/~mdoming/docencia/algo1/struct_ejemplo.c|Ejemplo de uso de Struct]] | ::: | /* */ /* Enunciados y teóricos de años previos: * 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://gist.github.com/zhaidongplus/5113855|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 darla. ==== Teórico/Práctico ==== * 12/3 Presentación de la materia. Derivación y verificación de programas. **Practico 1**. Expresiones Cuantificadas. Hasta ej 9. * 14/3 Reglas para la cuantificación general. * 19/3 Cuantificador N. Análisis por casos y pruebas de implicación descargando antecedentes. * 21/3 Consulta. **Practico 2**. Inducción. Demostración por inducción de propiedades. Inducción sobre listas. Recursión lineal ej. 3. * 26/3 Recursión lineal. Modularización. * 28/3 Esquemas inductivos. Generalización por abstracción. * 2/4 Feriado * 4/4 Consulta. * 9/4 Segmentos. * 11/4 Consulta. * 16/4 Feriado * 18/4 Feriado * 23/4 ** 1er Parcial** * 25/4 Paro * 30/4 Paro * 2/5 **Practico 3** (Modelo computacional imperativo). Estados y transiciones. Anotaciones con predicados. * 7/5 Terna de Hoare. Weakest Precondition (asignación, composición secuencial). * 9/5 Weakest Precondition (if). Teorema de la invariancia. * 14/5 Derivación de asignación e if. * 16/5 Arreglos. /* Derivación con invariantes.*/ * 21/5 **Practico 4**. Tecnicas para encontrar invariantes: termino de la conjunción. * 23/5 Técnica de reemplazo cte. por variable. * 28/5 Técnica de fortalecimiento de invariantes. * 30/5 Problemas de Borde. * 4/6 Consulta * 6/6 **2do Parcial** * 11/6 Problemas con estados intermedios. * 13/6 Consulta. * 18/6 **Recuperatorio**. * 20/6 Feriado ==== Taller ==== *11/3: Formación de grupos. Presentación de proyecto 1 y auto-repaso de linux. *18/3: Teórico: map, filter, polimorfismo paramétrico, clases, aplicación parcial. *25/3: Teórico de Taller: Tipos, clases de tipos y más. *1/4: trabajo en el proyecto 1 *8/4: Corrección de proyecto 1. Presentación de proyecto 2. *15/4: Teórico de Taller: Tipos de datos, deriving, case, Maybe. *22/4: Corrección de proyecto 2. - Presentación de proyecto 3. *29/4: Teórico: Introduccióna C *6/5: Teórico: Exprorar estado con GDB. *13/5: Teórico: Instrucciones en C - Exprorar estado con GDB. *20/5: Corrección de proyecto 3. Presentación de proyecto 4 *27/5: Teórico: programación en C. *3/6: Teórico: arreglos y estructuras en C. *10/6: Corrección de proyecto 4. ===== Bitácora Teórico/Práctico ===== Acá pondremos lo que efectivamente fuimos dando en cada clase. * 12/3 Presentación de la materia. Derivación y verificación de programas. **Practico 1**. Expresiones Cuantificadas. Pueden hacer hasta el ej 9. * 14/3 Reglas para la cuantificación general. Pueden hacer hasta el ej 14. Falta dar propiedad del max min del digesto. * 19/3 Cuantificador N. Análisis por casos y pruebas de implicación descargando antecedentes. Pueden terminar el práctico. * 21/3 Consulta. **Practico 2**. Inducción. Verificacion y demostracion. Inducción sobre listas. Pueden hacer hasta 4. * 26/3 Recursión lineal. Modularización. * 28/3 Esquemas inductivos. * 2/4 Feriado * 4/4 Generalización por abstracción. * 9/4 Segmentos * 11/4 Consulta. * 16/4 Feriado dia del docente * 18/4 Feriado seman santa * 23/4 ** 1er Parcial** * 25/4 Paro * 30/4 Paro * 2/5 **Practico 3** (Modelo computacional imperativo). Estados y transiciones. Anotaciones con predicados. * 7/5 Terna de Hoare. Weakest Precondition (asignación, composición secuencial). Weakest Precondition (if). * 9/5 Revision if. Teorema de invariancia * 14/5 Ejercicos de demostración con invariantes. Derivación de asignación * 16/5 Arreglos. /* Derivación con invariantes.*/ * 21/5 **Practico 4**. Tecnicas para encontrar invariantes: termino de la conjunción. * 23/5 Técnica de reemplazo cte. por variable. * 28/5 Técnica de fortalecimiento de invariantes. * 30/5 Problemas de Borde. * 4/6 Consulta /* * 8/5 Derivación de asignación e if. * 10/5 Derivación con invariantes. * 15/5 Arreglos * 17/5 **Practico 4**. Tecnicas para encontrar invariantes: termino de la conjunción. * 22/5 Semana de Mayo * 24/5 Semana de Mayo * 29/5 Técnica de reemplazo cte. por variable. * 31/5 Técnica de fortalecimiento de invariantes. * 5/6 Problemas de Borde. * 7/6 Consulta. * 12/6 **2do Parcial** * 14/6 Problemas de Borde. Consulta. * 19/6 Consulta * 21/6 Recuperatorio */