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

Documentos relacionados