Programa de la asignatura - Universidad de La Serena
Transcripción
Programa de la asignatura - Universidad de La Serena
Diseño y Análisis de Algoritmos. (DAA-2016) Programa de la asignatura Diseño y Análisis de Algoritmos Dr. Eric Jeltsch F. TEL: 4-0-2 Requisitos Informales: Se espera que el alumno tenga sólida base en Programación Orientada a Objetos, así como el manejo para abordar problemas de análisis y desarrollos matemáticos. Requisitos Formales: Aprobadas las asignaturas de Programación y Fundamentos de Informática Teórica. Descripción de la Asignatura: Es un curso del Ciclo Superior, teórico- práctico, que entrega las herramientas para reconocer, evaluar, recomendar y diseñar estructuras de datos apropiadas para enfrentar diversas aplicaciones o requerimientos. Al mismo tiempo en los Laboratorios, se utiliza el lenguaje Java como lenguaje de programación y la Programación Orientada a Objeto como paradigma para implementar los diversos algoritmos con la programación genérica. Se llevan a cabo diversas actividades y proyectos que se derivan de los contenidos. Objetivos: Al término del curso el alumno podrá proponer, reconocer y diseñar algoritmos según metodologías apropiadas, tales como Dividir para Reinar, Heurística Greedy y Programación Dinámica. Podrá comparar, construir y evaluar algoritmos, esto último, desde el punto de vista de complejidad y costo asintótico, así como conocer las restricciones de los mismos. Podrá también analizar, recomendar y aplicar una diversidad de estructuras abstractas de datos y algoritmos en diversos ámbitos, de acuerdo a parámetros teóricos y prácticos. Además el alumno en los Laboratorios seguirá desarrollando habilidades en la programación en Java, y en el uso y manejo de librerías, con las cuales podrá realizar sus propias aplicaciones en el ámbito de los contenidos. Metodología: Para cumplir con los objetivos se utiliza una metodología de tipo Teórico - Práctico. La Teoría se realiza mediante la presentación de los contenidos, fundamentos y algoritmos con ejemplos típicos de los temas, utilizando transparencias y link apropiados. Se mantendrá un sitio Web con secciones de ejercicios, problemas y pruebas de años anteriores. Para la sección de Práctica se entrega un material de apoyo (Libro Guía Web). Las actividades se realizan en forma semanal con una duración de 1 bloque (2 horas), de las cuales se utilizan para monitorear los estados de avance de los proyectos. Están programadas 3 evaluaciones, y un Proyecto Final, que debe resumir (o contener) los temas abordados en los Laboratorios y/o Teoría. La disposición y participación de los alumnos en clases y laboratorios es fundamental. Por tal motivo, se recomienda que se consideren 12 horas a la semana (extra a las 6 horas correspondientes al TEL), para el estudio y practicas personales de la asignatura. Suponiendo que un alumno debe realizar en total 40 hrs. a la semana, como actividad académica. Exposiciones y Ejercicios: Otra forma de evaluar el desempeño del alumno es la de exponer o presentar una propuesta en forma resumida, concisa y clara. Una tarea fundamental es el saber redactar, presentar y preparar un informe, para luego entregarlo de manera didáctica y clara, frente a sus pares. Al mismo tiempo, por el material pedagógico y didáctico que se ha ido generando, se entregaran guías de ejercicios y/o problemas para que los alumnos lo resuelvan y lo expongan. De ahí, la exigencia de exponer algunos temas y al final del semestre presentar un Portafolio con todas las actividades del semestre resueltas y mejoradas. En particular, se promoverá la incorporación del editor de texto LATEX en la presentación y resolución de los ejercicios. Evaluaciones: Teoría ( 3 Pruebas, con el mismo valor ) = 50% _____________________________________________________________________________ Escuela de Ingeniería en Computación, Universidad de La Serena. 1 Diseño y Análisis de Algoritmos. (DAA-2016) Dr. Eric Jeltsch F. Laboratorios ( aprox. 3 evaluaciones (o estados de avance) + Proyecto Final, con el mismo valor) = 50% Fechas de Pruebas y Examen, por fijarse. Prueba nº 1, Prueba nº 2, Prueba nº 3, Examen: por confirmar. TEORIA - Contenidos CAPITULO 1 - Introducción a la asignatura Contenidos: Se entrega una introducción al curso y como el programa sustenta otras asignaturas del plan de estudio de la carrera, así mismo se aborda el estado del arte de la asignatura, sus prerrequisitos. Enfatizar en la relevancia y pertinencia de la asignatura en el contexto del plan de estudio de la carrera y de su futuro profesional. CAPITULO 2 - Introducción al Análisis de Algoritmos Contenidos: Introducción al Análisis de Algoritmos. Algoritmos, Análisis de Algoritmos, Diseño de Algoritmos, Notación Asintótica. Cálculos asintóticos. Repasos fundamentales de Matemática en el contexto de los temas. Repasos fundamentales de Probabilidades y Estadística en el contexto de los temas. Enfasis en medir la eficiencia de un algoritmo, ya sea Tiempo y Espacio, considerando peor caso, mejor caso y caso promedio. CAPITULO 3 - Métodos de Resolución de Recurrencias Contenidos: Métodos de Resolución de Recurrencias. Método de Sustitución, Iteración, Arboles Recursivos, Teorema Maestro. Introducción a la metodología Dividir para Reinar. Enfasis en la aplicación de los métodos. CAPITULO 4 – Estructuras de datos Contenidos: Arboles. Torneos, Arboles ABB, Heap, AVL, Arboles 2-3, 2-3-4, Red-Black, B-tree, Arboles Splay y otros. Enfasis en transformaciones, rotaciones, buscar, insertar y borrar con sus costos asociados y aplicaciones. CAPITULO 5 - Algoritmos de Ordenamiento Contenidos: Algoritmos de Ordenamiento y su análisis. HeapSort, ShellSort, QuickSort, StoogeSort y otros. Estabilidad, Ordenamiento en Tiempo Lineal. CountingSort, RadixSort, BucketSort. Enfasis en saber su funcionamiento y rendimiento según sea el caso con aplicaciones. Tentativo: Hasta aquí los contenidos para Prueba nº 1. CAPITULO 6 - Estructuras de Datos Avanzadas Contenidos: Estructura de Datos Avanzadas. SkipList, Trie, Arboles Sufijo, Arboles Búsqueda Digital, Arboles Trie y Patricia, y otros. Enfasis en transformaciones, rotaciones, buscar, insertar y borrar con sus costos asociados y aplicaciones. CAPITULO 7 - Estructuras de Datos Avanzadas (Heaps) Contenidos: Heaps. Heaps Binomial, Heaps Fibonacci. Enfasis en transformaciones, rotaciones, buscar, insertar y borrar con sus costos asociados y aplicaciones. _____________________________________________________________________________ Escuela de Ingeniería en Computación, Universidad de La Serena. 2 Diseño y Análisis de Algoritmos. (DAA-2016) Dr. Eric Jeltsch F. CAPITULO 8 – Hashing Contenidos: Hashing. Tablas de Hashing, Resolución de Colisiones, Análisis Asintótico con y sin Probabilidad. Enfasis en la aplicación a diccionarios. CAPITULO 9 – Metodologías Dividir para Conquistar, Programación Dinámica, Programación Greedy. Contenidos: Fuerza Bruta. Enfasis en ejemplos y aplicaciones, por ejemplo: Multiplicación Optima de Matrices, Formas de Parentizar, Problema de la Mochila (0-1), Código de Huffman, CAPITULO 10 – Recuperación de la Información. Contenidos: Introducción, Documentos, Corpus Estructuras de consulta. Modelo booleano, modelo vectorial CAPITULO 11 – Evaluación y Relevancia de la Información recuperada. Contenidos: Inverted index, Stemming, Porter's stemming tool,y otros. Tentativo: Hasta aquí los contenidos para Prueba nº 2. CAPITULO 12 - Algoritmos de Grafos Contenidos: Algoritmos de Grafos. Grafos Dirigidos, no-dirigidos, lectura en grafos, por ejemplo: Búsqueda a lo ancho, Búsqueda en Profundidad, Orden Topológico. Arboles Expandido Minimal, Algoritmos de Kruskal, Prim y otros. Énfasis en la ejecución y aplicación de los algoritmos en algún contexto. CAPITULO 13 - Aplicaciones Varias de los Grafos Contenidos: Camino Minimal, Algoritmos de Dijkstra, Bellman - Ford, Floyd - Warshall, Flujo Máximo (Ford Fulkenson), y otros. Énfasis en la ejecución y aplicación de los algoritmos en algún contexto. CAPITULO 14 - String Matching Contenidos: String Matching. Búsqueda de strings: autómata finito, algoritmos de Knuth-MorrisPratt, Boyer-Moore, Rabin-Karp, Shift-Or, y otros. Énfasis en la ejecución y aplicación de los algoritmos en algún contexto. CAPITULO 15 - Introducción a la Geometría Computacional Contenidos: Geometría Computacional. Aplicaciones: Cáscara Convexa, Graham's Scan, y otros. CAPITULO 16 - Computabilidad Contenidos: Problemas NP- Completo, NP- Hard y otras clasificaciones. Énfasis en la importancia del tópico en problemas y aplicación de los mismos. CAPITULO 17 - Y que más..... Contenidos: Se entrega una visión de futuro en el contexto de la asignatura y como ella sustenta otras materias. Tentativo: Hasta aquí los contenidos para Prueba nº 3. Resumen Fundamentos: Análisis & Diseño de Algoritmos, Rango o ámbito de las Funciones, Recurrencias, Rudimentos matemáticos. Ordenamiento: Heapsort, Priority Queues, Quicksort, Sorting en tiempo lineal. Estructuras de Datos: Stacks y Queues, Linked Lists, Trees, Hash Tables, Binary Search Trees, Balancing Trees: Red-Black Trees. Recuperación de la Información: Modelos y métodos, basados en la librería Lucene. _____________________________________________________________________________ 3 Escuela de Ingeniería en Computación, Universidad de La Serena. Diseño y Análisis de Algoritmos. (DAA-2016) Dr. Eric Jeltsch F. Algoritmos de Grafos: DFS, BFS, Topological Sort, MST, Shortest paths. Bibliografía: (*) texto guía, es decir 80% del curso está basado en él. Aho, Hopcroft, Ullman. "The Design and Analysis of Computer Algorithms", AddisonWesley 1974. Aho, Hopcroft, Ullman. "Data Structures and Algorithms", Addison-Wesley 1983. Gonnet, Baeza-Yates "Handbook of Algorithms and Data Structures", Addison_Wesley, 1991. Shimon Even, "Graph Algorithms", Computer Science Press, Inc.1979. Horowitz, Sanhi, "Fundamentals of Data Structures", Computer Science Press, Inc.1982. Robert Kruse, "Estructura de Datos y Diseños de Programas", Prentice Hall, 1988. (*) Cormen, Leiserson, Rivest, "Introduction to algorithms", McGraw-Hill, 1990 y otros. Sara Baase, " Computer Algorithms: Introduction to Design and Analysis, 2Ed." Addison_Wesley, 1988. Mark Allen Weiss , "Data Structures and Algorithm Analysis (in Java)", Addison_Wesley, 1999. Standish, "Data Structures, Algorithms, and Software Principles", Addison_Wesley, 1998. Sedgewick, "Algorithms" , Addison_Wesley, 1996. Goodrich, Tamassia, "Data Structures and Algorithms in Java", John Wiley & Sons, Inc.1998. Manning C, Raghavan P, and Schütze H. Introduction to Information Retrieval. Cambridge University Press, 2008. Available Online (http://nlp.stanford.edu/IR-book/#anchor01). Hearst, M. Search User Interfaces. Cambridge University Press, 2009. Available Online (http://searchuserinterfaces.com/) LABORATORIOS - Contenidos Objetivo: Profundizar el manejo de alguna plataforma o herramientas de desarrollo, por ejemplo, Netbeans, Eclipse u otra, bajo el paradigma Orientado a Objetos. Preparar al alumno en el aprendizaje y aplicación de algunas API’s de Java, que en el transcurso de la carrera le serán de gran utilidad, por ejemplo Collections, Generics, LUCENE y otras. Se trabaja bajo proyecto con alguna aplicación que convoque la mayoría de los conceptos que se entregaron en teoría, en especial los algoritmos y estructuras de datos. El contexto está abierto. Bibliografía y enlaces Web de utilidad: http://java.sun.com/downloads/ Horstmann, Cornell, "Core Java Vol I-Fundamentals", JavaSeries, 1999. Deitel & Deitel, " How to program Java2", 3 Ed., Prentice Hall, 2000. Mark Allen Weiss , "Data Structures and Algorithm Analysis in Java" Addison_Wesley, 1999. Goodrich, Tamassia, "Data Structures and Algorithms in Java", Addison_Wesley, 1998. _____________________________________________________________________________ Escuela de Ingeniería en Computación, Universidad de La Serena. 4