====== Algoritmos y Estructuras de Datos II ====== * Docentes: * Teóricos: Daniel Fridlender * Prácticos: Juan Durán, Sergio Giro, Alejandro Tiraboschi * Taller: [[http://www.cs.famaf.unc.edu.ar/~damian|Damian Barsotti]], Marcos Dione, Martín Domínguez. * Ayudantes: Dionisio Alonso, Mariano Della Vedova, Eric Destefanis, Ignacio Moretti, Eduardo Pérez. ===== Generalidades ===== * Parciales: 3 (primero: 3/4; segundo: 10/5; tercero: 12/6). * Promoción: no hay. * Regularidad: estando inscripto como regular + aprobando 2 parciales + aprobando el taller. * Examen: examen escrito + resolución de problemas frente a la computadora (2 días). * Alumnos libres: ambas partes del examen contienen ejercicios adicionales. === Preguntas frecuentes === * Si apruebo los parciales pero no el taller, ¿deberé resolver ejercicios adicionales en el examen escrito? Sí, porque vas a rendir como alumno libre. * Si apruebo el taller pero no alcanzo a aprobar dos parciales, ¿deberé rendir un examen de laboratorio con ejercicios adicionales? Sí, porque vas a rendir como alumno libre. * El año pasado aprobé los parciales pero no el taller, ¿debo rendir los parciales nuevamente durante este año? Para poder regularizar, sí. * El año pasado aprobé el taller pero no alcancé a aprobar dos parciales, ¿debo volver a hacer el taller este año? Para poder regularizar, sí. * ¿Puedo rendir el examen final sin haber hecho el taller? Sí. Como alumno libre. * El año pasado regularicé (es decir, estaba inscripto como regular, aprobé los parciales y el taller). Quiero volver a cursar este año. ¿Voy a perder la regularidad obtenida el año pasado? Si te inscribís en la materia automáticamente perdés esa regularidad. Te conviene volver a cursarla sin inscribirte. ===== Teórico ===== ==== Bibliografía ==== * Notas de Algoritmos y Estructuras de Datos II. * {{http://www.cs.famaf.unc.edu.ar/~fridlend/cursos/algoritmos2/apuntes/algoritmos2entrega1.pdf | Primera entrega}}. * {{http://www.cs.famaf.unc.edu.ar/~fridlend/cursos/algoritmos2/apuntes/algoritmos2entrega2.pdf | Segunda entrega}}. * {{http://www.cs.famaf.unc.edu.ar/~fridlend/cursos/algoritmos2/apuntes/algoritmos2entrega3.pdf | Tercera entrega}}. * Brassard and Bratley, Fundamentals of Algoritmics. * Manber, Introduction to Algorithmics: A Creative Approach. * Bibliografía Complementaria * Balcázar, Programación Metódica. * Biggs, Matemática Discreta. * Kaldewaij, Programming: the Derivation of Algorithms. * Blanco, Smith y Barsotti, {{http://www.cs.famaf.unc.edu.ar/~damian/algoritmos1/apunte/main.pdf|Cálculo de Programas}}. * Tutoriales de lenguaje C * {{algo2:cursc.html | En castellano pero básico}} * [[http://www.cs.cf.ac.uk/Dave/C/ | En ingles pero muy completo]] * [[http://hal.famaf.unc.edu.ar/tutorial_C/www.phim.unibe.ch/comp_doc/c_manual/C/cref.html|Manual de referencia en inglés]] * Otros * {{algo2:main:cookoopvsadt90.pdf|Object-Oriented Programming Versus Abstract Data Types}} ==== Clases ==== * martes 6/3: Introducción. Ordenación por selección. ===== Práctico ===== * Éste es el práctico correspondiente a la primera parte de la materia {{algo2:main:ejercicios200701.pdf}}. ===== Laboratorio ===== ==== Horarios ==== * Miercoles 9 a 11 hs: teórico. * Miercoles 11 a 13 hs: Consultas y practica libre. * Viernes 14 a 18 hs: Consultas y correciones de proyectos. Todas las clases son en el laboratorio de computación del 2do piso. ==== Clases ==== * 6/3: Archivos separados. Records. Conceptos iniciales de abstracción. Presentación proyecto 1. Armado de grupos. * 14/3: Tipos abstractos de Datos: concepto de abstracción, función de abstracción, invariante de representación, corrección (diagrama conmuta). Implementación de TAD en C: separación en .h y .c. Proyecto2: arreglos dinámicos en C (calloc, malloc), especificación en .h. * 21/3: Make, Gdb (debugger). * 28/3: Paro. * 4/4: Implementación de TAD's en Haskell: TAD Lista. Implementación de TAD's en C: TAD Lista. Problema de aliasing. Problema de mutabilidad en implementaciones imperativas. {{algo2:main:prog20070404.tgz|Programas ejemplo}}. ==== Proyectos ==== * {{algo2:main:algo2:main:2007:proy1.pdf|Proyecto 1 (Algoritmo de la Division)}} * {{algo2:proy2.pdf|Proyecto 2 (TAD arreglo de enteros)}} * {{algo2:proy3.pdf|Proyecto 3 (Metodos de ordenacion)}} * {{algo2:proy4.pdf|Proyecto 4 (Diccionario sobre arreglos)}}. {{algo2:headers_p04.tgz|Encabezados a usar}} ((Si, los nombres de las funciones han cambiado un poco respecto del planteo del proyecto. Es para una mayor consistencia en los nombres y una interfaz mas parecida a las implementaciones de diccionarios en otros lenguajes.)). {{algo2:libcrw.tgz|Libreria estatica de cintas de lectura y escritura}}. {{algo2:main:diccionario.dic.gz|Diccionario de ejemplo}} * {{algo2:proy5.pdf|Proyecto 5 (Diccionario sobre hash)}} * {{algo2:proy6.pdf|Proyecto 6 (Diccionario sobre arbol binario)}}. {{algo2:main:unordered.dic.gz|Diccionario desordenado}}. * {{algo2:main:notas_talleres.pdf|Notas finales de los talleres}}. ===== Instrucciones para inscribirse en la lista de mails ===== Enviar un mail a: minimalist@hal.famaf.unc.edu.ar con el subject: subscribe alualgo2 El cuerpo del mail se puede dejar en blanco. Despues de enviarlo debe llegar un mail donde diga que la subscripcion fue realizada correctamente. === !! Tener en cuenta !! === Si se cometio un error el sistema enviará un mail avisando. Por lo cual, siempre lea el mail de respuesta a la inscripción y verifique que no hubo un error. Si es así repita el proceso.