Download Programa de la asignatura con pruebas y Examen

Document related concepts
no text concepts found
Transcript
Diseño y Análisis de Algoritmos. (DAA-2014)
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-2014)
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, 24 de Abril ( Martes )
Prueba nº 2, 29 de Mayo
“
Prueba nº 3, 26 de Junio
“
Examen: 3 de Julio.
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, Algoritmos de Selección, Arboles Min –Max, 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.
CAPITULO 8 – Hashing
_____________________________________________________________________________
Escuela de Ingeniería en Computación, Universidad de La Serena.
2
Diseño y Análisis de Algoritmos. (DAA-2014)
Dr. Eric Jeltsch F.
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 - Programación Dinámica
Contenidos: Fuerza Bruta. Programación Dinámica. Enfasis en ejemplos y aplicaciones, por
ejemplo: Multiplicación Optima de Matrices, Formas de Parentizar, Memoization, Subsecuencia
Común, Arboles de Búsqueda Binaria Optimales, Triangulación del Polígono y otros. Énfasis en la
ejecución y aplicación de los algoritmos en algún contexto.
CAPITULO 10 - Programación Greedy
Contenidos: Programación Greedy. Énfasis en la ejecución y aplicación de los algoritmos en algún
contexto. Por ejemplo: Problema de la Mochila (0-1), Código de Huffman, y otros.
CAPITULO 11 - Programación Dividir para Conquistar
Contenidos: Programación Dividir para Reina. Introducción a otros métodos, tales como Branch
and Bound, Backtracking. Enfasis en ejemplos y aplicaciones, por ejemplo: Skyline, Multiplicación
Rápida de Integer- Matriz, 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.
Aritmética Modular. Criptografía. Énfasis en la ejecución y aplicación de los algoritmos en algún
contexto.
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. Enfasis en orientar al alumno en otros temas, tales como Bioinformática,
Computación Gráfica, Estructuras de datos Bidimensionales, etc.
Tentativo: Hasta aquí los contenidos para Prueba nº 3.
_____________________________________________________________________________
Escuela de Ingeniería en Computación, Universidad de La Serena.
3
Diseño y Análisis de Algoritmos. (DAA-2014)
Dr. Eric Jeltsch F.
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.
LABORATORIOS - Contenidos
Objetivo: Continuar profundizando el manejo de alguna plataforma o herramientas de desarrollo,
por ejemplo, Netbeans, Eclipse u otra. (En especial con la que empezó a trabajar en la asignatura de
Programación (Orientada 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, y otras. Iniciarse en la programación enfocada a servidor usando la plataforma J2EE (Java
2 Enterprise Edition), JME entre otras. Se concluye el curso 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.

Bruce Eckel, "Thinking in Java", 2Ed. 2000. (Fuentes)

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