====== 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 ===== **Regularidad:** * Teórico/práctico: Dos parciales y un recuperatorio. Sólo se puede recuperar uno de los dos parciales. * Laboratorio: Dos parciales y un recuperatorio. Sólo se puede recuperar uno de los dos parciales. **Promoción:** * Para la promoción de la materia se requiere promocionar independientemente tanto el teórico/práctico como el laboratorio. * Teórico/práctico: Los dos parciales aprobados con nota mayor o igual a 6 y promedio mayor o igual a 7.5. El recuperatorio cuenta para la promoción. * Laboratorio: Dos parciales aprobados con nota **P**. El recuperatorio cuenta para la promoción. **Situaciones particulares:** * Promoción de laboratorio pero no de teórico/práctico: Sólo en este caso se guarda por tiempo limitado la promoción del laboratorio, o sea que sólo hará falta rendir el teórico/práctico (consultar con el laboratorio la duración). * Promoción de teórico/práctico pero no de laboratorio: No se guarda la promoción. ===== 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}} ===== 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]] * Musicalización: * [[https://www.earthtoabigail.com/blog/merge-sort-how-to-understand-an-algorithm-by-creating-music-ruby-sonicpi|MERGE SORT: HOW TO UNDERSTAND AN ALGORITHM BY CREATING MUSIC]] * Video: [[https://www.youtube.com/watch?v=-NKNfP7jfL0|The Sound of Merge Sort - Live Coding with Sonic Pi ]] * [[https://www.earthtoabigail.com/blog/audio-representation-selection-and-insertion-sort-ruby-sonicpi|UNDERSTANDING SELECTION AND INSERTION SORT BY CREATING AUDIO REPRESENTATIONS WITH RUBY AND SONIC PI]] * [[https://www.earthtoabigail.com/blog/audio-representation-bubble-sort-with-ruby-sonicpi| HOW TO CREATE AN AUDIO REPRESENTATION OF BUBBLE SORT WITH RUBY AND SONIC PI]] * Video: [[https://www.youtube.com/watch?v=uyHhlZez_L4|Making Music With Bubble Sort, Ruby and Sonic Pi]] * [[https://www.youtube.com/watch?v=QFW7nRY61XQ|Sorting Myself Out - Live Coding Performance based on Sorting Algorithms using Sonic Pi]] * 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]]