====== Algoritmos y Estructuras de Datos II ====== === /* Está incompleto porque en el 2018 nos quedamos sin la wiki a mitad del cuatrimestre */ ==== ==== Novedades ==== ===== Generalidades ===== ==== Docentes ==== * Teóricos: Daniel Fridlender. * Prácticos: Romina Altamirano, Emmanuel Gunther y Demetrio Vilela. * Laboratorio: * Martes: Santiago Ávalos, Sergio Canchi y Jorge Rafael. * Jueves: Gonzalo Peralta, Leandro Ramos y Leonardo Rodríguez. * Ayudantes: Mauricio Clerici, Santiago Marro y Mauricio Mazuecos. ==== Horarios ==== * Teóricos: lunes y miércoles de 14 a 16hs, en el aula 17. * Prácticos: lunes y miércoles de 16 a 18hs, en el aula 17. * Laboratorio: martes y jueves de 14 a 18hs, en el aula 28 (lab). Los alumnos cuyos apellidos comiencen con "A" hasta "K" inclusive tendrán lab los martes y los alumnos cuyos apellidos comiencen con "L" hasta "Z" tendrán lab los jueves. Si necesitás cambiar, ponete de acuerdo con alguien que quiera el cambio opuesto. ==== Objetivos ==== Se pretende que el alumno adquiera: * capacidad para comprender y describir el problema que resuelve un algoritmo (el “qué”) y diferenciarlo de la manera en que lo resuelve (el “cómo”), * capacidad para analizar algoritmos, compararlos según su eficiencia en tiempo y en espacio, * capacidad y hábito de identificar abstracciones relevantes al abordar un problema, * familiaridad con técnicas de diseño de algoritmos de uso frecuente, * familiaridad con la programación (en el lenguaje c, entre otros) de algoritmos y estructuras de datos, * familiaridad con la utilización de diversos niveles de abstracción y lenguajes de programación. ==== Programa ==== * Los contenidos se dividen en tres partes: * Análisis de algoritmos: algoritmos de ordenación, orden de un algoritmo, recurrencias. * Tipos abstractos de datos: tipos concretos versus tipos abstractos, contador, pila, cola, árboles. * Técnicas de programación: algoritmos voraces, divide y vencerás, programación dinámica, backtracking. * En {{:algo2:main:algoritmos_y_estructuras_de_datos_ii_2015.doc|Programa de la materia}} se encuentra una descripción detallada de los contenidos, como así también de los objetivos de la materia, modalidad de evaluación, etc. ==== Régimen de aprobación, promoción y regularidad ==== * Parciales: 2. * Fechas: 07/05/2018 y {{ :algo2:main:2018.13.parcial2.pdf |18/06/2018}}. * Recuperatorio: 25/06/2018 o 27/06/2018 (a determinar). * Laboratorio: ejercicios y proyecto. También tiene hay dos parciales. La aprobación del día a día a todo lo largo del cuatrimestre, aporta para la promoción. * Regularidad: aprobando dos parciales (eventualmente recuperando uno de ellos) + aprobando los parciales del laboratorio. * Promoción: aprobando cada parcial con 6 o más, con promedio total de 7 o más + aprobando los parciales del laboratorio con 6 o más, con promedio de 7 o más. En los parciales del lab, para la promoción, se cuentan los resultados logrados durante las clases, en el día a día. * Examen final: evaluación por escrito de teórico-práctico + resolución de problemas frente a la computadora (1 ó 2 días, normalmente 2 días). * Alumnos libres: ambas partes del examen (teórico y laboratorio) contienen ejercicios adicionales. * Los alumnos regulares que promocionan sólo los parciales o sólo los proyectos del laboratorio serán exceptuados de rendir la parte promocionada **en las mesas de julio-agosto** de 2018, únicamente. ==== Preguntas frecuentes ==== * La regularidad requiere regularidad en el teórico/práctico y en el laboratorio? * Sí: la regularidad de la materia es un AND de la regularidad del teórico/práctico con la regularidad del taller. * Si apruebo los parciales pero no los proyectos del laboratorio, ¿deberé resolver ejercicios adicionales en el examen escrito? * Sí, porque vas a rendir como alumno libre. * Si apruebo los proyectos del laboratorio pero no alcanzo a aprobar los 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 los proyectos del laboratorio, ¿debo rendir los parciales nuevamente durante este año? * Para poder regularizar, sí. * El año pasado aprobé los proyectos del laboratorio pero no alcancé a aprobar los parciales, ¿debo volver a hacer el laboratorio este año? * Para poder regularizar, sí. * ¿Puedo rendir el examen final sin haber hecho el laboratorio? * Sí. Como alumno libre. Pero deberás demostrar suficientes conocimientos de programación durante el examen. * El año pasado regularicé (es decir, estaba inscripto como regular, aprobé los parciales y los proyectos del laboratorio). 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. * En ese caso, ¿qué pasa si este año promociono? * Te inscribís en la primera fecha de exámenes y te pasamos la nota de la promoción. * Tengo condición de regular y promocioné los parciales pero no los proyectos del laboratorio. ¿Debo rendir el escrito también? * En las mesas de julio-agosto 2018, no. Después de esas mesas, sí. * Tengo condición de regular y promocioné los proyectos del laboratorio pero no los parciales. ¿Debo rendir el laboratorio también? * En las mesas de julio-agosto 2018, no. Después de esas mesas, sí. ===== Evaluaciones ===== ==== Parciales ==== /* * {{:algo2:main:p1.2016.05.02.pdf|2/05/2016}}. * {{:algo2:main:p2.2016.06.15.pdf|15/06/2016}}. * Primer y segundo recuperatorios, 22/06/2016. */ ==== Finales ==== ===== Teórico ===== ==== Horarios ==== Lunes y miércoles de 14 a 16hs, en el aula 17. ==== Bibliografía ==== * Notas de Algoritmos y Estructuras de Datos II. * Buscar en la wiki de años anteriores. * 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.gnu.org/software/gnu-c-manual/gnu-c-manual.html|Manual de referencia en inglés]] \\ This is a reference manual for the C programming language as implemented by the GNU Compiler Collection (GCC). * Otros * {{algo2:main:cookoopvsadt90.pdf|Object-Oriented Programming Versus Abstract Data Types}} ==== Clases ==== * Primera parte: Análisis de Algoritmos. * Primera semana: {{:algo2:main:2018.01.ordenacion.elemental.imprimible.pdf|ordenación elemental.}} * Segunda semana: {{:algo2:main:2018.02.ordenacion.avanzada.imprimible.pdf|ordenación avanzada.}} * Tercera semana: {{:algo2:main:2018.03.recurrenciasdyv.y.jerarquia.imprimible.pdf|recurrencias divide y vencerás, jerarquía de funciones.}} * Segunda parte: Estructuras de Datos. * Cuarta semana: {{:algo2:main:2018.04.tipos.concretos.pdf|Tipos concretos}} y {{:algo2:main:2018.04.tipos.abstractos.pdf|tipos abstractos}}. {{:algo2:main:primerostads.tgz|Especificación de TADs Contador y Pila en Haskell.}} * Quinta semana: {{:algo2:main:2018.05.especificaciones.colas.pdf|Buffer y TAD Cola, ordenación y TAD Cola de prioridades}}, {{:algo2:main:2018.05.implementaciones.contador.pdf|implementación del TADContador}}. * Sexta semana: {{:algo2:main:2018.06.implementaciones.de.tads.pdf| Implementación de pilas y colas}}. * Tercera parte: Algoritmos Avanzados. ==== Vínculos interesantes ==== * Algoritmos de ordenación. * {{http://en.wikipedia.org/wiki/Sorting_algorithms | en wikipedia}} * Algunos visualizadores * [[http://sorting.at/]] * [[http://www.sorting-algorithms.com/]] * [[https://www.cs.usfca.edu/~galles/visualization/Algorithms.html]] * [[http://math.hws.edu/TMCM/java/xSortLab/]] * Algo-Ritmos * [[http://www.youtube.com/watch?v=XaqR3G_NVoo|Ordenación por intercalación]] * [[http://www.youtube.com/watch?v=kDgvnbUIqT4|Ordenación rápida]] * Notación //O// * {{http://en.wikipedia.org/wiki/O_notation | en wikipedia}} * Visualizador * {{http://rechneronline.de/function-graphs/}} * TADs * Algunos visualizadores * Pilas y colas {{http://www.cs.usfca.edu/~galles/visualization/download.html}} * Árboles binarios {{http://webpages.ull.es/users/jriera/Docencia/AVL/AVL%20tree%20applet.htm|AVL}} ===== Práctico ===== * {{:algo2:main:2018.01.practico.pdf|Práctico 1.1}}. Ordenación elemental. * {{:algo2:main:2018.02.practico.pdf|Práctico 1.2}}. Ordenación avanzada. * {{:algo2:main:2018.03.practico.pdf|Práctico 1.3}}. Recurrencias divide y vencerás. Jerarquía de funciones. * {{:algo2:main:2018.04.practico.pdf|Práctico 2.1}}. Tipos concretos. * {{:algo2:main:2018.05.practico.pdf|Práctico 2.2}}. Tipos abstractos de datos (TADs). ==== Horarios ==== Lunes y miércoles de 16 a 18hs, en el aula 17. ==== Guías de ejercicios ==== ==== Notas de parciales ==== ===== Laboratorio ===== Los grupos serán de 2 (dos) personas. Mínimo 2, máximo 2. O sea, 2 :-). ==== Horarios ==== * Martes 14 a 18 hs: Teóricos del taller, presentación de enunciados, entregas y evaluación de proyectos, consultas. * Jueves 14 a 18 hs: Uso del laboratorio y consultas. Todas las clases son en el laboratorio de computación del 2do piso (aula 28). ==== Proyectos ==== * Repositorio de GitLab: https://gitlab.com/famaf-algo2/ayed2-2018 * Los ejercicios del laboratorio se descargan ejecutando el comando $ git clone https://gitlab.com/famaf-algo2/ayed2-2018.git ==== Clases ==== {{:algo2:main:punteros2016-1.odp|Punteros en C}} ===== Instrucciones para inscribirse en la lista de mails ===== Tenemos un googlegroup para los alumnos y los docentes en la siguiente dirección: https://groups.google.com/forum/#!forum/ayed2-famaf Para subscribirse, hacer click en "solicitar membresía" (o "subscribe to this group"). Por favor elegir una dirección de mail que lean todos los días y que no tenga restricciones de tamaño. **No** es obligatorio que sea un email de gmail. Las direcciones de hotmail/outlook están particularmente no recomendadas ya que suelen llenarse rápido y no les llegan los correos. **IMPORTANTE**: una vez que se subscribieron al grupo, ir a la casilla de mail que usaron y aceptar la invitación. ===== Instrucciones para mandar un mail en la lista de mails ===== Para mandar un mail a la lista de la materia, escribir a: ayed2-famaf@googlegroups.com