ALGORITMIA Y COMPLEJIDAD Grado en Ingeniería Informática Universidad de Alcalá Curso Académico 2015/2016 Curso 3º – Cuatrimestre 1º GUÍA DOCENTE Nombre de la asignatura: Código: Titulación en la que se imparte: Algoritmia y Complejidad 780021 Grado en Ingeniería Informática Departamento: Departamento Ciencias de la Computación Carácter: Créditos ECTS: Obligatoria 6 Curso y cuatrimestre: 3º Curso / 1º Cuatrimestre León González Sotos Consultar en la página web del departamento El horario de Tutorías se indicará el primer día de clase Español Profesorado: Horario de Tutoría: Idioma en el que se imparte: 1. PRESENTACIÓN La algoritmia es uno de los pilares de la programación y su relevancia se muestra en el desarrollo de cualquier aplicación, más allá de la mera construcción de programas. Esta asignatura trata sobre el análisis y diseño de algoritmos, y pretende exponer al alumno las técnicas necesarias para su diseño e implementación, así como presentar las herramientas que le permitan medir su efectividad y eficiencia. El objetivo de la asignatura no es el de aportar al alumno soluciones conocidas a problemas concretos, si no proveer al alumno de las técnicas algorítmicas básicas que le permitirán abordar el desarrollo de programas correctos y eficientes para resolver problemas no triviales, estudiando en el desarrollo de la asignatura las técnicas y patrones de diseño de algoritmos más importantes (familias de algoritmos), y profundizando en el diseño y evaluación de los algoritmos propiamente dichos. Prerrequisitos y Recomendaciones Debido a que la asignatura presenta diferentes técnicas y estructuras de datos avanzadas para la resolución de problemas, el alumno debe conocer y tener práctica en programación imperativa, y especialmente en el uso de la recursión. Por tanto, es recomendable que el alumno haya superado con éxito las asignaturas de Fundamentos de Programación y Estructuras de Datos. En cuanto a la parte matemática de la asignatura, el alumno deberá estar familiarizado con los conceptos de límite, combinatoria y resolución de sistemas de ecuaciones, por lo que las asignaturas de Fundamentos Matemáticos y Matemática Discreta deberían haberse cursado con éxito 2 1.b PRESENTATION Complexity and Algorithms is a compulsory subject, that is taught in the first semester of the third year of the Degree in Informatic Engineering. The subject introduces the students in the fundamental principles and technics about the desing of algorithms and the analysis of their complexity i.e. about the methods for solving problems by menas of computers and the cost of their implementation, including the study of the effectiveness and eficiency of the methods. For a good profit, the student must have good knowledge and skills on the subjects of Programming and Data structure, as much as mathematical reasonnig and Discrete Mathematics. 3 2. COMPETENCIAS Competencias genéricas: CG1-Desarrollar capacidad de análisis y síntesis CG2-Capacidad para crear y utilizar modelos sobre la realidad, y alcanzar una visión de sistema de la verificación y validación. CG3-Desarrollar la habilidad de crear soluciones algorítmicas a problemas y ser capaz de representarla como programa. CG4Desarrollar métodos para el trabajo en equipo. CG5-Obtener una motivación e interés por la calidad. CG6-Conocer e identificar la existencia de metodologías de desarrollo de productos, encaminadas a mejorar la accesibilidad, prestando atención a las particularidades de las personas. CG7-Capacidad de análisis de los requisitos implicados en el diseño, desarrollo e implantación de productos informáticos. CG8-Analizar casos de uso específicos para la aplicación de los conceptos propios de la asignatura y así promover técnicas encaminadas concienciar al futuro egresado en los aspectos de accesibilidad y discapacidad. Resultados de aprendizaje: RA1-Razonar los fundamentos teóricos de los esquemas algorítmicos. RA2-Aprender a realizar el análisis de un algoritmo, atendiendo a su eficiencia, costes, casos, notación asintótica, etc., entendiéndolo como un criterio de calidad. RA3-Aplicar con criterio las técnicas básicas de análisis de eficiencia y diseño de algoritmos. RA4-Analizar la corrección de un algoritmo usando técnicas sencillas de verificación. RA5-Reconocer los esquemas algorítmicos básicos: Divide y vencerás, voraces, programación dinámica, algoritmos de vuelta atrás, ramificación y acotación. RA6-Conocer algunos algoritmos clásicos para problemas fundamentales, y reconocer las situaciones donde poder reutilizar el repertorio de estructuras de datos y algoritmos clásicos. RA7-Escribir programas recursivos sobre tipos no necesariamente básicos y poder razonar sobre su corrección y eficiencia. RA8-Ser capaz de utilizar técnicas avanzadas de diseño y análisis de algoritmos, y saber particularizar esquemas algorítmicos generales para resolver problemas. RA9-Disponer de criterios que permitan, durante las etapas de especificación, diseño e implementación escoger la alternativa más adecuada, y disponer de elementos por argumentar de forma razonada las elecciones realizadas. RA10-Tomar contacto con algunas técnicas fundamentales de diseño y análisis de algoritmos, así como con algunas técnicas avanzadas de programación. RA11-Saber identificar las componentes más relevantes de un problema y seleccionar la técnica algorítmica más adecuada para su resolución. RA12-Ser capaz de seleccionar los tipos de datos más adecuados para mejorar la eficiencia de una solución algorítmica. RA13-Diseñar justificadamente soluciones algorítmicas eficientes de problemas propios del nivel académico de la asignatura. 5 3. CONTENIDOS BLOQUE 1: Introducción a la algoritmia Tema 1. Introducción a la algoritmia: Introducción, conceptos básicos del análisis de algoritmos, búsqueda del tamaño de los problemas, notación asintótica, órdenes de eficiencia, resolución de recurrencias mediante la ecuación característica. BLOQUE 2: Algoritmos básicos Tema 2. Algoritmos Divide y vencerás: Estructuras de datos habituales, concepto de los algoritmos tipo Divide y vencerás, eficiencias frecuentes y ejemplos. Tema 3. Algoritmos voraces: Estructuras de datos usadas habitualmente, concepto de los algoritmos voraces, eficiencias frecuentes y ejemplos. Tema 4. Algoritmos de programación dinámica: Ampliación de los algoritmos Divide y vencerás, reutilización de casos mediante estructuras de datos, concepto de los algoritmos de programación dinámica, eficiencias frecuentes y ejemplos. BLOQUE 3: Algoritmos avanzados Tema 5. Uso de recursión intensiva: Implementaciones útiles de los TAD necesarios, exploración de grafos, ventajas y desventajas de la utilización intensiva de la recursión, algoritmos vuelta atrás (backtracking), problemas de ramificación y poda, acotación de soluciones. BLOQUE 4: No determinismo y Clases de complejidad Tema 6. Algoritmos no deterministas: Introducción al no determinismo, algoritmos probabilísticos numéricos, algoritmos de Monte Carlo, algoritmos de Las Vegas, algoritmos de Sherwood, validez de los resultados no deterministas y ventajas e inconvenientes frente al determinismo. Tema 7. Complejidad: Concepto de complejidad, clasificación de problemas P y NP, resultados básicos de complejidad, imposibilidad de resolver todos los problemas 6 Bloques de contenido (se pueden especificar los temas si se considera necesario) Introducción a la algoritmia Total de clases, créditos u horas 12 horas Introducción a la algoritmia Algoritmos básicos Algoritmos Divide y vencerás Algoritmos voraces Algoritmos de programación dinámica 24 horas Algoritmos avanzados 14 horas Uso de recursión intensiva No determinismo y Clases de complejidad Algoritmos no deterministas Complejidad 10 horas (*) Incluyen PEC (Pruebas de Evaluación Continua 4. METODOLOGÍAS DE ENSEÑANZA-APRENDIZAJE.-ACTIVIDADES FORMATIVAS 4.1. Distribución de créditos (especificar en horas) Número de horas presenciales: 56 horas ; PEC 4 horas Número de horas del trabajo propio del estudiante: 90 horas Total horas 150 horas 4.2. Estrategias metodológicas, materiales y recursos didácticos La asignatura Algoritmia y complejidad se organiza como una asignatura cuatrimestral de 6 ECTS (150 horas). En el proceso de enseñanza-aprendizaje de los contenidos anteriormente reseñados se emplearán las siguientes actividades formativas: • Clases Teóricas presenciales. Clases Prácticas: resolución de problemas presenciales. Prácticas en Laboratorio presenciales. • Tutorías: individuales y/o grupales. • • Además, en función de la naturaleza de las distintas partes de la materia objeto de 7 estudio, se podrán utilizar, entre otras, las siguientes actividades formativas: • • • • Elaboración de trabajos con responsabilidad individual pero con gestión de la información como equipo. Puesta en común de la información, problemas y dudas que aparezcan en la realización de los trabajos. Organización y realización de jornadas de exposición públicas con presentaciones orales y discusión de resultados. Utilización de Plataforma de Aula Virtual. Actividades presenciales: 1. En el aula: exposición y discusión de los conocimientos básicos de la asignatura. Planteamiento y resolución teórica de ejercicios y supuestos relacionados. Orientadas a la enseñanza de las competencias específicas de la asignatura, especialmente las relacionadas con las técnicas de creación y mejora de algoritmos. 2. En el laboratorio: planteamiento y desarrollo de ejercicios prácticos que contribuyan al entendimiento de la materia y al desarrollo de la práctica en el análisis de problemas, razonamiento crítico y comprensión de los métodos de resolución. Actividades no presenciales: 1. Análisis y asimilación de los contenidos de la materia, resolución de problemas, consulta bibliográfica, preparación de trabajos individuales y grupales, realización de exámenes presenciales y autoevaluaciones. Orientadas especialmente al desarrollo de métodos para la autoorganización y planificación del trabajo individual y en equipo. 2. Tutorías: asesoramiento individual y en grupos durante el proceso de enseñanza aprendizaje, bien en forma presencial o a distancia. Materiales y recursos: • • • • • • Bibliografía de referencia sobre la asignatura. Ordenadores personales. Entornos de desarrollo y manuales de uso de los mismos. Conexión a Internet. Plataforma de Aula Virtual y manuales de uso de las mismas. Proyectores. 8 5. EVALUACIÓN: Procedimientos, criterios de evaluación y de calificación Los estudiantes se acogerán a los procedimientos de evaluación según lo articulado en el título 2 (arts. 9 y 10) de la normativa de evaluación de aprendizajes de la UAH. En todo caso, preferentemente se ofrecerá a los alumnos un sistema de evaluación continua que tenga características de evaluación formativa, de manera que sirva de realimentación en el proceso de enseñanza-aprendizaje por parte del alumno. Para ello se establecerán los siguientes procedimientos de evaluación: Criterios de Evaluación Los criterios deben atender a l grado de adquisición de las competencias por parte del estudiante. Para ello se definen los siguientes criterios: CE1- Comprensión y uso de los conceptos y técnicas básicas sobre algoritmos, diseño, análisis, eficiencia, y coste de los algoritmos CE1- Comprensión y uso de los elementos, técnicas y uso de los algoritmos básicos sus estructuras de datos, estrategias básicas, voracidad, eficiencias usuales, reutilización de casos y programación dinámica. CE3- Comprensión y uso de técnicas de recursión intensiva, ventajas e inconvenientes, problemas de ramificación y poda. CE4- Comprensión y uso del no determinismo y de métodos probabilísticos, validez de resultados, ventajas e inconvenientes particulares, así como del análisis fundamental de los problemas de complejidad y de la irresolubilidad algorítmica de determinados problemas. CE5-Capacidad de aplicación práctica en laboratorio. casos prácticos programados de Instrumentos de evaluación Esta sección indica los instrumentos de evaluación que serán aplicados en cada uno de los criterios de evaluación. 1.-Prueba de evaluación intermedia (PEI 1) De carácter escrito, consistente en la resolución de problemas y cuestiones sobre los bloque temáticos 1 y 2. 2.-Prueba de evaluación intermedia (PEI 1) De carácter escrito, consistente en la resolución de problemas y cuestiones sobre los bloque temáticos 3 y 4 3.-Prueba de evaluación intermedia de laboratorio (PEI L 1), consistente en la entrega y defensa de al menos un ejercicio relativo a los conocimientos impartidos en clase de laboratorio, como aplicación práctica de los mismos. 4.-Prueba de evaluación final (PEF) De carácter escrito, consistente en la resolución de problemas y cuestiones sobre los cuatro bloque temáticos de la asignatura y de sus prácticas de laboratorio, así como en la eventual entrega y defensa oral de un trabajo de laboratorio. Criterios de calificación 9 Esta sección cuantifica los criterios de evaluación para la superación de la asignatura 1) Convocatoria ordinaria: evaluación continua En la convocatoria ordinariaevaluación continua la relación entre los criterios, instrumentos y calificación es la siguiente: COMPETENCIA RESULTADO APRENDIZAJE CRITERIO EVALUACIÓN DE INSTRUMENTO DE EVALUACIÓN PESO EN CALIFICACIÓN LA CG1-CG8 RA1-7, RA11 CE1-4 PEI-1 30% CG1-CG8 RA8-13 CE1-4 PEI-2 40% CG1-CG8 RA1-13 CE5 PEIL-1 30% Como criterio general, aquellos alumnos en convocatoria ordinaria que no se presentaen a laevaluación de las prácticas se entenderán No presentados 2) Convocatoria ordinaria: evaluación final en la evaluación final, el alumno deberá realizar una prueba de evaluación final (PEF) y entregar y defender las prácticas (P-n) que cubran los mismos aspectos que las pruebas de evaluación intermedia de laboratorio. COMPETENCIA RESULTADO APRENDIZAJE CRITERIO EVALUACIÓN CG1-CG8 CG1-CG8 RA1-13 RA1-13 CE1-4 CE5 DE INSTRUMENTO DE EVALUACIÓN PESO EN CALIFICACIÓN PEF P-1 70% 30% LA 3) Convocatoria extraordinaria En la evaluación extraordinaria, el alumno deberá realizar una prueban de evaluación final (PEF) y entregar y defender prácticas que cubran los mismos aspectos que las pruebas de evaluacuión intermedia de laboratorio. ´ COMPETENCIA RESULTADO APRENDIZAJE CRITERIO EVALUACIÓN CG1-CG8 CG1-CG8 RA1-13 RA1-13 CE1-4 CE5 DE INSTRUMENTO DE EVALUACIÓN PESO EN CALIFICACIÓN PEF P-1 80% 20% LA 6.BIBLIOGRAFÍA Bibliografía Básica • • • • A.V. Aho, J.E. Hopcroft, J.D. Ullman, Estructuras de datos y algoritmos, Addison-Wesley Iberoamericana, 1988. G.Brassard, P. Bratlet, Fundamentos de algoritmia, Prentice Hall, 1999. G.H. Gonnet, R. Baeza-Yates, Handbook of Algorithms and Data Structures, AddisonWesley, 1991. M.A. Weiss, Estructuras de datos y algoritmos, Addison-Wesley Iberoamericana, 1995. 10 Bibliografía Complementaria • • • • T. Cormen, C. Leirserson, R. Rivest, Introduction to Algorithms, McGraw Hill, 1998. R. Peña, Diseño de Programas. Formalismo y Abstracción. Prentice Hall, 1997. N. Wirth, Algoritmos + Estructuras de datos = Programas. Editorial del Castillo, 1984. N. Ziviani, Diseño de algoritmos con implementaciones en Pascal y C, Thompson, 2007. 11