====== Acerca de... ====== ===== 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 y describir 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: 20/04/2020 y 08/06/2020. * Recuperatorio: 17/06/2020. * Laboratorio: ejercicios y proyecto. También tiene 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. 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 (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 hasta febrero** de 2021 inclusive. ===== 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 no se recomienda, puesto que deberás demostrar destreza durante el examen de laboratorio en la resolución de problemas similares a los resueltos durante el cursado del lab. * 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 (fines de junio o principios de julio de 2019) 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 2019, 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 2019, no. Después de esas mesas, sí. ===== Bibliografía ===== * 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}} ===== Vínculos interesantes ===== * Visualizador de ejecución de programas * [[http://pythontutor.com/visualize.html#mode=edit|Python tutor]] Permite visualizar la ejecución de programas en python, c, java entre otros lenguajes. * 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 * [[https://www.youtube.com/watch?v=Ns4TPTC8whw|Ordenación por selección]] * [[https://www.youtube.com/watch?v=ROalU379l3U|Ordenación por inserción]] * [[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 de funciones y su crecimiento * [[http://rechneronline.de/function-graphs/]] * TADs * [[https://www.cs.usfca.edu/~galles/visualization/Algorithms.html]] ===== Grupo de Correo ===== ==== Instrucciones para agregarse al grupo de correo ==== 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 "Accede para ver este grupo" (o "subscribe to this group", o similar). Por favor, además de la dirección de mail asegurarse de proporcionar su nombre y apellido. En caso contrario, no se accederá a la solicitud hasta tanto podamos identificarlo como alumno de la asignatura. 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. Una vez que solicitaron acceder al grupo, aguardar que llegue a su casilla de correo la aprobación de esa solicitud. ==== Instrucciones para mandar un mail a la lista de correo ==== Para mandar un mail a la lista de la materia, escribir a: ayed2-famaf@googlegroups.com