====== Algoritmos y Estructuras de Datos II ====== * Docentes: * Teóricos: Daniel Fridlender * Prácticos: Alejandro Tiraboschi. * Taller: [[http://www.cs.famaf.unc.edu.ar/~damian|Damian Barsotti]], Marcos Dione, Martín Domínguez. * Ayudantes: Mihaich Florencia, Budde Carlos, Mariano Volarik, Perez Paladini Agustín, Monti Raul, Bordenabe Nicolas. ===== Generalidades ===== * Parciales: 3 (fechas preliminares: 15/4, 13/5 y 17/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. * Primera parte (análisis de algoritmos) * {{http://www.cs.famaf.unc.edu.ar/~fridlend/cursos/algoritmos2/apuntes/aclase0901.pdf | Primeras dos clases}} y sus {{http://www.cs.famaf.unc.edu.ar/~fridlend/cursos/algoritmos2/preguntas/pclase0901.pdf | preguntas}}. * {{http://www.cs.famaf.unc.edu.ar/~fridlend/cursos/algoritmos2/apuntes/aclase0902.pdf | Tercera y cuarta clases}} y sus {{http://www.cs.famaf.unc.edu.ar/~fridlend/cursos/algoritmos2/preguntas/pclase0802.pdf | preguntas}}. * {{http://www.cs.famaf.unc.edu.ar/~fridlend/cursos/algoritmos2/apuntes/aclase0903.pdf | Quinta y sexta clases}} y sus {{http://www.cs.famaf.unc.edu.ar/~fridlend/cursos/algoritmos2/preguntas/pclase0803.pdf | preguntas}}. * {{http://www.cs.famaf.unc.edu.ar/~fridlend/cursos/algoritmos2/apuntes/divideyvenceras.pdf | Resolución de recurrencias divide y vencerás}}. * {{http://www.cs.famaf.unc.edu.ar/~fridlend/cursos/algoritmos2/apuntes/homogeneas.pdf | Resolución de recurrencias homogéneas}}. * {{http://www.cs.famaf.unc.edu.ar/~fridlend/cursos/algoritmos2/apuntes/nohomogeneas.pdf | Resolución de recurrencias no homogéneas}}. * Segunda parte (estructuras de datos) * a partir de mediados de abril * Tercera parte (algoritmos) * a partir de mediados de mayo * Brassard and Bratley, Fundamentals of Algoritmics. * Manber, Introduction to Algorithmics: A Creative Approach. * Bibliografía Complementaria * Cormen, Leiserson, Rivest y Stein, Introduction to Algorithms. * 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://www.space.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 ==== * 01: (09/03/09 y 11/03/09) Presentación, motivación, ordenación por selección, conteo, ordenación por inserción. * 02: (16/03/08 y 18/03/08) Notación //O//, propiedades, regla del límite, jerarquía de funciones, notación complementaria. * continuará ==== Vínculos interesantes ==== * Algoritmos de ordenación. * {{http://en.wikipedia.org/wiki/Sorting_algorithms | en wikipedia}} * Algunos visualizadores * {{http://www.cs.ubc.ca/~harrison/Java/sorting-demo.html}} * {{http://www.geocities.com/siliconvalley/network/1854/Sort1.html}} * {{http://math.hws.edu/TMCM/java/xSortLab/}} * {{http://www.ida.liu.se/~TDDB28/mtrl/demo/sorting/index.sv.shtml}} * {{http://thomas.baudel.name/Visualisation/VisuTri/}} * Notación //O// * {{http://en.wikipedia.org/wiki/O_notation | en wikipedia}} * Algunos visualizadores * {{http://www.math.com/students/graphing.html}} * {{http://www.coolmath.com/graphit/index.html}} * {{http://rechneronline.de/function-graphs/}} * Árboles binarios * Algunos visualizadores * {{http://webpages.ull.es/users/jriera/Docencia/AVL/AVL%20tree%20applet.htm|AVL}} ===== Práctico ===== * Éste es el práctico correspondiente a toda la materia: {{http://www.cs.famaf.unc.edu.ar/~fridlend/cursos/algoritmos2/ejercicios/ejercicios2009.pdf | Práctico 2009}}. ===== Laboratorio ===== ==== Horarios ==== * Martes 14 a 18 hs: Consultas y correciones de proyectos. * Jueves 14 a 18 hs: Teŕico del taller y consultas. Todas las clases son en el laboratorio de computación del 2do piso. ==== Clases ==== * 12/03: Punteros y memoria dinámica. Modelo de memoria real y modelo abstarayendo direcciones concretas. Variables de tipo puntero. Arreglos. Funciones malloc, calloc y free. * 19/03: Strings en C: características, definición, como parámetro y resultado de funciones, funciones de librerias. Sinónimo de tipos. Estructuras: características, definición con typedef, como parámetro y resultado de funciones, encapsulamiento de arreglos. * 26/03: Punteros a estructuras. Archivos separados. TAD's en C. Cerradura ifndef. {{:algo2:main:2009:clase03.tgz|Ejemplos en clase}}. Presentación proyecto 1 segunda parte (diccionario sobre lista de asociaciones sobre arreglos). * 16/04: Función de abstracción e invariante de representación. Listas ligadas de punteros. Implementación del TAD lista. * 23/04: Cinta sobre listas ligadas de punteros, especificación e implementación. Presentación sobre archivo en disco. * 30/04: Makefile. {{:algo2:main:2008:makefile_generico.gz|Makefile genérico}}. * 07/05: Manejo de errores. Variable errno, funciones perror, err, errx, warn, warnx. Presentación de proyecto Diccionario sobre Abb. * 14/05: Derivacion de versiones iterativas con invariantes de tree_exists y tree_add. * 21/05: Streams en C. Balanceo AVL. Presentación de proyecto de Kruskal. ==== Proyectos ==== * {{algo2:main:2009:proy01_parte1.pdf|Proyecto 1 primera parte}}: Programas con punteros y memoria dinámica. * {{:algo2:main:2009:proy01_parte2.pdf|Proyecto 1 segunda parte}}: Diccionario con lista de asociaciones. Usar el {{:algo1:2007:proy3.pdf|Proyecto 3 de Algoritmos 1}} como referencia. * {{:algo2:main:2009:proy02_parte1.pdf|Proyecto 2 primera parte}}: TAD lista implementado con listas enlazadas de punteros. * {{:algo2:main:2009:proy02_parte2.pdf|Proyecto 2 segunda parte}}: Diccionario implementado sobre cinta. {{:algo2:main:2009:libcrw.tgz|Librería de cintas de lectura y escritura de tuplas en disco}}. * {{:algo2:main:2009:proy03.pdf|Proyecto 3}}: Diccionario implementado sobre abb. * {{:algo2:main:2009:kruskal.pdf|Proyecto 4}}: Algoritmo Kruskal con TAD's. ==== Notas del Taller ==== * Notas Finales de taller: {{:algo2:main:alumnos_notas_finales_corregido.pdf|}} ===== Instrucciones para inscribirse en la lista de mails ===== Ir a la [[http://agni.famaf.unc.edu.ar/cgi-bin/mailman/listinfo/alualgo2|página de la lista]] y llenar los datos. o Enviar un mail a: alualgo2-join@famaf.unc.edu.ar con cualquier subject o cuerpo del mail. Despues de enviarlo debe llegar un mail donde diga que la subscripcion fue realizada correctamente. Hacer un reply con el mismo subjet (pero que no diga Re: ---). === !! 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.