AyDA-I 2014
Profesor: Jose Aguilar Sitio de Trabajo: CEMISID Contacto: aguilar@ula.ve Consulta: por email cuadrar cita (en principio después de clases) Información del curso: lista, WhatsApp, dropbox y http://www.ing.ula.ve/~aguilar/actividaddocente/ayda.html Enviarme sus correos al mío (titulo mensaje estudiante IAyDA )
OBJETIVO Este curso es el último de la cadena de programación donde se consolidan las estructuras de datos y algoritmos necesarios para soportar la solución de problemas típicos en las Ciencias Computacionales.
OBJETIVOS ESPECIFICOS Consolidar un alto nivel en el diseño de algoritmos y estructuras de datos. Desarrollar altas habilidades para el análisis de algoritmos. Conocer la estructura grafo y sus principales algoritmos 4
Dinámicas del Curso Orienta encamina Producto Tecnológico Paradigma Pedagógico Plasma conocimiento Posibilita Adquirir Define aspectos Temas del curso Coadyuva Apropiarse de los mismo
Dinámicas del Curso Sinergia Capacitacion De conocimiento Da la habilidad cognitiva Genera destreza Técnica, habilidades práctica Sinergia del Desarrollo Del Producto
Dinámicas Sinergias Esencia Sinergia Capacitación de Conocimientos (SCC) Se aprende a: usar grafos, analizar algoritmos matemáticos, estudiar problemas complejos Cómo se trabaja?: Todo el material en línea, Internet como fuente de conocimiento Espacios de discusión y debate
Sinergias Sinergia Desarrollo de Productos (SDP) Se aprende a definir problemas matemáticos Se aprende a usar librerías Se aprende a documentar Definición y caracterización de dos productos (obras) sobre los cuales se ira plasmando el conocimiento adquirido Los productos (obras) al final deben contener todo el contenido adquirido en el curso inmerso en él
Sinergias Sinergia Desarrollo de Productos Cómo se trabaja?: Metodología Ágil para la gestión y construcción del proyecto Máximo 3 personas por proyecto Se debe dar cuenta del recorrido del desarrollo del producto diariamente (entregan informe de avance) Auto-organizados (pero visibles para todos): 2 Tareas Definición de organización y roles a lo interno Reglas sociales consensuadas de manipulación de grafos de optimización combinatoria
Conocimiento de base Unidad I: Técnicas avanzadas de diseño y análisis Tema 1. Métodos de diseño básicos: Dividir conquistar y backtracking. Tema 2. Programación dinámica: Multiplicación de matrices en cadena, subsecuencia común más larga, triangulación óptima de polígonos. Tema 3. Análisis amortizado: Método agregado, método del contador, método potencial, ejemplos Unidad II: Grafos Tema 1. Fundamentos: Representaciones, búsqueda en amplitud, búsqueda en profundidad, ordenamiento topológico. Tema 2. Árboles abarcadores mínimos: Algoritmo de Prim y algoritmo de Kruskal. Tema 3. Caminos más cortos: Caminos más cortos y relajación, Algoritmo de Dijkstra, algoritmo de Bellman-Ford, Caminos más cortos en grafos dirigidos, restricciones y caminos más cortos (programación lineal), algoritmo de Floy-Warshall y algoritmo de Jonson. Tema 4. Flujo máximo: Redes de flujo y método de Ford-Fulkerson. 10
Conocimiento de base Unidad III: Algoritmos matemáticos Tema 1. Operaciones sobre matrices: Representaciones especiales de matrices, Algoritmo de Strassen, sistemas numéricos algebraicos y multiplicación de matrices, sistemas lineales de ecuaciones, inversión de matrices, matrices simétricas positivas y aproximación de mínimos cuadrados Tema 2. Polinomios y transformada rápida de Fourier: Representaciones de polinomios, Transformada discreta de Fourier, transformada rápida de Fourier. Tema 3. Algoritmos de teoría de números: Nociones de teoría de números, máximo común divisor, aritmética modular, sistemas lineales de ecuaciones modulares, teorema de resto chino, potencias de un entero y algoritmo RSA de criptografía Unidad IV: Completitud NP Tema 1. Problemas NP-completos: Clases P y NP, reducciones polinomiales, problemas NP, algunas pruebas de completitud NP, algoritmos no determinísticos y problemas NP duros: coloreo de grafos, el problema del vendedor viajero, el problema de morral. Tema 2. Heurísticas y algoritmos de aproximación: Algoritmos heurísticos, aproximaciones a problemas NP duros. 11
Conocimiento de base Unidad V: Geometría computacional Tema 1. Algoritmos sobre Polígonos: Teoremas de galería de arte, Teoría de triangulación, área de polígono, intersección de segmentos y algoritmos de triangulación. Tema 2. Partición de polígonos: Partición monótona, trapeciolización, partición en montañas monótonas, triangulación de tiempo lineal, partición convexa. Tema 3. Cerco convexo: Definiciones de convexidad y de cerco convexo, algoritmos cándidos para puntos extremos, cálculo de papel de regalo, cerco rápido, algoritmo de Graham, algoritmos divide-conquista, representaciones poliedrales, algoritmos aleatorizados y cerco n- dimensionales. Tema 4. Diagramas de Voronoi: Definiciones y propiedades básicas, triangulaciones de Delaunay, algoritmos y aplicaciones. Tema 5. Disposiciones de líneas: Definiciones, combinatorias de disposiciones, algoritmo incremental, 3 y n dimensiones, dualidad y diagramas de Voronoi de alto orden. Tema 6. Búsqueda e intersección: Intersección segmento-segmento, intersección segmento-triángulo, pertenencia de punto en polígono, pertenencia de punto en poliedro, intersección de polígonos convexos, intersección de segmentos e intersección de polígonos no convexos.. 12
BIBLIOGRAFIA Brassard, G y Bratley, P. Fundamentals of algorithmics. Prentice Hall, 1996. Cormen, T.; Leiserson, C. y Rivest, R. Algorithms. MIT Press, 1990. Knuth, D. The art of Computer Programming. Vol. 1 y 3. Addison-Wesley. 1975. L. León, Tejiendo Algoritmos, 2008 O Rourque, J. Computational Geometry. Cambrige University Press, 1998. 13
Recorrido Sinergia Desarrollo de Productos Se seguirá metodología ypbl Ramas de: diseño (funcional y técnico) y desarrollo Iterativo (ágil) Cada semana se avanzará en diseño y desarrollo según SCC mostrando: Reutilización de componentes, Herramientas de desarrollo, etc. Prototipos,informes de Avances, informes de iteraciones
ypbl Metodología de aprendizaje inspirada en Ingeniería de software Permite construir aplicaciones reales de software mientras se aprende. Cada Iteración: Cubre un tópico del curso aplicado al producto tecnológico Se redefinen roles en los grupos, recursos usados, cronogramas Interactuamos todos para alcanzar los objetivos de aprendizaje
Desarrollo del curso
Rama Desarrollo Manejo de grafos Problemas de optimización ypbl Rama Funcional Rama Técnica Iteraciones I1 I2 Requerimientos Software Aspectos Análisis Software Plataformas Diseño Modelos Implementación Codigo Pruebas tests Liberación Disposición
Producto Esencial al curso para apropiarse del conocimiento Esencia del producto vs. objetivo del curso Contenido del curso esencial para realizar el producto Cinco plantillas: Plantillas Definición del producto Informes de Avance Informe Final CookBook Uso Primer Avance Diariamente Final de cada iteración Final del curso (2da tarea)
Rama Desarrollo Informes Definición del Producto Rama Funcional Rama Técnica Informes Finales o de Avances : Requerimientos Análisis Diseño Implementación Pruebas Software Software Modelos Aspectos Plataformas Cookbooks: Plataformas de despliegue Plataformas de desarrollo Plataforma de diseño Codigo tests Informe Final Disposición
Evaluación Conocimiento Adquirido (40%) 2 Exámenes Productos (60%) Aplicaciones, tareas, investigaciones, discusiones
Definición del Producto Plantillas Nombre Objetivo Descripción Aplicabilidad del producto Informes de Avance Planificación del avance siguiente Qué se logró en el actual avance Quién hizo qué, dificultades y necesidades
Plantillas Informe Final Presentación del producto Marco Teórico Específico del Producto Diseño del producto Casos de uso prácticos Prototipo y pruebas Conclusiones Formato ieee
Plantillas CookBook 2da tarea Resumen (Abstract) Palabras Claves (Keywords) Contribuyentes (Contributors) Versiones (Releases) Introducción (Introduction) Ingredientes: Definiciones y Terminología (The ingredients: Definitions and terminology) Ingrediente 1 (Ingredient 1) Recetas (Recipes) Receta 1: Una primera receta (Recipe1: A first recipe (e.g. a HelloWorld recipe)) Paso 1: descripción paso 1 (Step1: short description of step 1) Documentación Recomendada (Recommended documentation) Referencia 1 (Reference 1) Retroalimentación (Feedback)
Plantillas CookBook 2da tarea Para la librería aleph http://webdelprofesor.ula.ve/ingenieria/lrleon/aleph/html/ Basado en archivo que estará en drive sobre el cual todos trabajarían Dará 15% puntos extras a la nota final, no es obligatorio
Clase Capacitación Conocimiento Capacitación en producto 1 Introducción a la asignatura Tema 2.1 2 Tema 2.2 Definición Tarea 1 3 Tema 2.3 4 Tema 2.3 y 2.4 Observaciones 5 Tema 4.1 Informe Final Tarea 1 6 Tema 4.2 7 Tema 3.1 Definición Tarea 2 8 Temas Unidad 2 y 4 Examen 9 Tema 3.2 10 Tema 3.3 11 Informe Final Tarea 2 12 Temas Unidad 3 Examen