Diseño y Análisis de Algoritmos. (DAA) Dr. Eric Jeltsch F. Programa de la asignatura Diseño y Análisis de Algoritmos TEL: 4-0-2

Documentos relacionados
ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL FACULTAD DE INGENIERÍA EN ELECTRICIDAD Y COMPUTACIÓN SYLLABUS DEL CURSO Análisis de Algoritmos

UNIVERSIDAD TECNOLOGICA DE PEREIRA FACULTAD DE INGENIERIAS

Algoritmos y Complejidad

Planificaciones Algoritmos y Programación II. Docente responsable: CALVO PATRICIA MABEL. 1 de 8

Planificaciones Algoritmos y Programación II. Docente responsable: CALVO PATRICIA MABEL. 1 de 6

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA)

Planificaciones Algoritmos y Programación II. Docente responsable: CALVO PATRICIA MABEL. 1 de 6

TEMARIO. - Programa de teoría

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA)

UNIVERSIDAD NACIONAL DE TRUJILLO Facultad de Ciencias Físicas y Matemáticas Escuela Académico Profesional de Informática

GUÍA DOCENTE ABREVIADA DE LA ASIGNATURA

Programa del Curso I Semestre, Algoritmos y Estructuras de Datos

Planificaciones Algoritmos y Programación II. Docente responsable: JUAREZ ANDRES ALBERTO. 1 de 9

ANX-PR/CL/ GUÍA DE APRENDIZAJE

1. Conceptos básicos sobre el problema en cuestión y cuestiones afines. 2. Formulación de los correspondientes algoritmos y su pseudocódigo.

Teoría de Algoritmos 2 o curso de Ingeniería Informática

ANX-PR/CL/ GUÍA DE APRENDIZAJE. ASIGNATURA Algoritmica y complejidad. CURSO ACADÉMICO - SEMESTRE Primer semestre

ALGORITMOS Y ESTRUCTURAS DE DATOS

ALGORITMOS Y ESTRUCTURAS DE DATOS

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO

MSC. Oscar Alberto Chávez Bosquez LIA. Ericsson Saldívar Correa Robles. Fecha de elaboración: 28 de Mayo de 2010 Fecha de última actualización:

Planificaciones Algoritmos y Programación II. Docente responsable: WACHENCHAUZER ROSA GRACIELA. 1 de 5

Guía docente de la asignatura

SYLLABUS I. JUSTIFICACIÓN DEL ESPACIO ACADÉMICO

Programa Analítico Asignatura: ESTRUCTURAS DE DATOS Y ALGORITMOS

Planificaciones Teoría de Algoritmos I. Docente responsable: BARRIOS FEDERICO LUIS. 1 de 5

EI MT1008 Programación II

GUÍA DOCENTE DE LA ASIGNATURA

Planificaciones Teoría de Algoritmos I. Docente responsable: WACHENCHAUZER ROSA GRACIELA. 1 de 5

Guía docente de la asignatura

Algoritmos y Estructuras de Datos

Asignaturas: Estructura de Datos y Algoritmos/Algoritmos I Códigos: 3325/3301. Algebra (Algoritmos I)

Algoritmos y Estructuras de Datos I

UNIVERSIDAD AUTÓNOMA DE YUCATÁN FACULTAD DE MATEMÁTICAS

Estructura de datos. Carrera: SCC Participantes

UNIVERSIDAD NACIONAL AUTÓNOMA LICENCIADO EN CIENCIAS DE LA COMPUTACIÓN

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA

ESCUELA SUPERIOR POLITECNICA DEL LITORAL PROGRAMA DE ESTUDIOS

PROGRAMA DE CURSO. FI2003, (CC3102/ MA5201/ Autor), (MA3403/MA3401) Obligatorio para la ICC. Resultados de Aprendizaje

DOCTORADO EN INGENIERÍA DEL LENGUAJE Y DEL CONOCIMIENTO. Área: Ingeniería del Lenguaje y del Conocimiento

INSTITUTO POLITÉCNICO NACIONAL SECRETARÍA ACADÉMICA DIRECCIÓN DE ESTUDIOS PROFESIONALES EN INGENIERÍA Y CIENCIAS FÍSICO MATEMÁTICAS

Ciclo Académico: 2007 Año de la Carrera: Horas de Clases Semanales Régimen de Cursado 3º X (1) Observaciones: (2) Observaciones: Docente/s

Lenguajes III Análisis y Diseño de Algoritmos

UNIVERSIDAD CATÓLICA DEL NORTE PROGRAMA DE ESTUDIOS IDENTIFICACIÓN DE LA ASIGNATURA. Nombre: Estructuras de Datos y Archivos

ESTRUCTURAS DE DATOS II

Guía docente de la asignatura

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD CIENCIAS DE LA COMPUTACIÓN

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA)

Conceptos de Algoritmos, Datos y Programas

Nombre de la Materia Tecnología de Software de Base Electiva Tercer Nivel Ciclo Lectivo 2007 Plan Plan 95 Área

División Académica de Informática y Sistemas

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD CIENCIAS DE LA COMPUTACION

GUÍA DOCENTE 2017/2018. Algoritmos y Estructuras de Datos Grado en INGENIERÍA INFORMÁTICA 2º curso. Modalidad Presencial

DISTRIBUCIÓN HORARIA DE LA ASIGNATURA SEGÚN NORMATIVA

Mar Mie

ÍNDICE TEMÁTICO. Teóricas Prácticas 1 Estructuras fundamentales Introducción a la programación en Java

GUÍA DE APRENDIZAJE ESTRUCTURA DE DATOS

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA)

Torruco, Rubén Jerónimo Yedra Fecha de elaboración: Mayo de 2010 Fecha de última actualización: F1103 Estructuras de datos 1/10

PLAN DE ESTUDIOS 2006-II SÍLABO

Materia requisito: DOMINIOS COGNITIVOS (Objetos de estudio, temas y subtemas) I. Introducción al Análisis de Algoritmos.

Asignatura: Estructuras de Datos y Algoritmos Código: Año académico: 2007/2008 Centro:

INSTITUTO POLITÉCNICO NACIONAL SECRETARÍA ACADÉMICA DIRECCIÓN DE ESTUDIOS PROFESIONALES EN INGENIERÍA Y CIENCIAS FÍSICO MATEMÁTICAS PROGRAMA SINTÉTICO

ANÁLISIS Y DISENO DE ALGORITMOS I Semestre 2018

ALGO - Algoritmia

ORGANIZACIÓN DOCENTE del curso

UNIVERSIDAD RICARDO PALMA FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA INFORMÁTICA SÍLABO AÑO ACADÉMICO 2015-II PLAN DE SESIÓN DE APRENDIZAJE

Estructuras de Datos y Algoritmos. Programa de la asignatura

Carrera: SCM Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

Bachillerato en Ingeniería del software

A: Aplicación de las Ciencias y las Matemáticas (A) C: Diseño de Software (T) E: Solución de Problemas (T) K: Herramientas de Ingeniería (A)

! UNIVERSIDAD NACIONAL DE RÍO CUARTO FACULTAD DE CIENCIAS EXACTAS, FÍSICO-QUÍMICAS Y NATURALES DEPARTAMENTO DE COMPUTACIÓN

GUÍA DOCENTE DE LA ASIGNATURA

Gloria Guadalupe González Flores, José Hernández Torruco Fecha de elaboración: 28 de Mayo de 2010 Fecha de última actualización:

División Académica de Informática y Sistemas División Académica Multidisciplinaria de los Ríos Ingeniería en Informática Administrativa

GUÍA DOCENTE Estructuras de Datos

UNIVERSIDAD AUTÓNOMA DE YUCATÁN FACULTAD DE MATEMÁTICAS MISIÓN

PROGRAMA DE LA ASIGNATURA: ANÁLISIS DISEÑO E IMPLANTACIÓN DE ALGORITMOS

Programa de la asignatura Curso: 2008 / 2009 ESTRUCTURAS DE DATOS (1292)

Estructuras de Datos III

GUÍA DOCENTE Estructuras de Datos

GUÍA DOCENTE DE LA ASIGNATURA

Apoyo a la docencia. Web de Martínez Durbán, María Mercedes

Benemérita Universidad Autónoma de Puebla Vicerrectoría de Docencia Dirección General de Educación Superior Facultad deciencias de la Computación

UNIVERSIDAD RICARDO PALMA FACULTAD DE INGENIERÍA

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD CIENCIAS DE LA COMPUTACIÓN

Benemérita Universidad Autónoma de Puebla Vicerrectoría de Docencia Dirección General de Educación Superior Facultad de Ciencias Físico Matemáticas

Programa Educativo (PE): Ingeniería en Ciencias de la Computación. Área: Teoría de la Computación

TÉCNICO SUPERIOR UNIVERSITARIO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN ÁREA SISTEMAS INFORMÁTICOS.

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO

MICTS28. Análisis y diseño de algoritmos. I N G E N I E R Í A MIC Tópicos Selectos Clave de la materia: DES: semestre:

Escuela Técnica Superior de Ingeniería. Informática. Grado en Ingeniería Informática

Transcripción:

Programa de la asignatura Diseño y Análisis de Algoritmos 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 y el concepto de programación genérica. Se llevan a cabo 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, realizando aplicaciones propias en el ámbito de los contenidos. Objetivos Mínimos de conocimientos: Cómo factor mínimo de saberes, capacidades o aprendizajes asimilados están: El alumnos deberá ser capaz de medir la eficiencia de algoritmos desde el punto de vista teórico. Proponer, recomendar e implementar algoritmos clásicos usando o aplicando alguna metodología básica. Manejar y aplicar los conceptos de la POO y sus interfaces gráficas de usuario. Mostrar habilidades en el manejo de una herramienta o entornos de productividad, ya sea Eclipse, Netbeans, u otra. 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). Están programadas en total aprox. 14 sesiones de Laboratorios, frente al PC, además de 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 idea. Creo que es una tarea fundamental 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 1

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 ) = 60% Laboratorios ( aprox. 3 evaluaciones + Proyecto Final, con el mismo valor) = 40% Observación: Como una forma de retroalimentación y marcar un estándar de lo que se espera de los alumnos, es que se mantienen las Pautas de Corrección de pruebas anteriores, en la Secretaría de la Escuela de Ingeniería en Computación. Fechas de Pruebas y Examen, por fijarse. Prueba nº 1, 23 de Abril ( Martes ) Prueba nº 2, 28 de Mayo Prueba nº 3, 25 de Junio Examen: por definir. 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. 2

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 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-Morris- Pratt, 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. 3

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. Bibliografía: (*) texto guía, es decir 80% del curso está basado en él. Aho, Hopcroft, Ullman. "The Design and Analysis of Computer Algorithms", Addison- Wesley 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. 4

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. 5