algoritmia y complejidad - uah€¦ · 2 guÍa docente nombre de la asignatura: algoritmia y...

22
ALGORITMIA Y COMPLEJIDAD Grado en Ingeniería Informática Universidad de Alcalá Curso Académico 2019/2020 Curso 2º Cuatrimestre 2º

Upload: others

Post on 20-Jun-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

ALGORITMIA Y COMPLEJIDAD

Grado en Ingeniería Informática Universidad de Alcalá

Curso Académico 2019/2020

Curso 2º – Cuatrimestre 2º

Page 2: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

2

GUÍA DOCENTE

Nombre de la asignatura: Algoritmia y Complejidad

Código: 780021

Titulación en la que se imparte:

Grado en Ingeniería Informática

Departamento: Departamento Ciencias de la Computación

Carácter: Optativa de tecnología especifica (1) Créditos ECTS: 6

Curso y cuatrimestre: Segundo Curso / Segundo Cuatrimestre

Profesorado: Francisco Manuel Sáez de Adana Herrero

Horario de Tutoría: El horario de Tutorías se indicará el primer día de clase

Idioma en el que se imparte: Español

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

1 Las asignaturas optativas de tecnología específica dan lugar a la mención y en este Grado son obligatorias de cursar.

Page 3: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

3

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 Informatics Engineering. The subject introduces the students in the fundamental principles and technics about the design of algorithms and the analysis of their complexity i.e. about the methods for solving problems by means of computers and the cost of their implementation, including the study of the effectiveness and efficiency 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 reasoning and Discrete Mathematics.

Page 4: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

2. COMPETENCIAS

Competencias generales: CG8 Conocimiento de las materias básicas y tecnologías, que capaciten para el aprendizaje y desarrollo de nuevos métodos y tecnologías, así ́como las que les doten de una gran versatilidad para adaptarse a nuevas situaciones. CG9 Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. Capacidad para saber comunicar y transmitir los conocimientos, habilidades y destrezas de la profesión de Ingeniero Técnico en Informática.

Competencias específicas: CC1 Capacidad para tener un conocimiento profundo de los principios fundamentales y modelos de la computación y saberlos aplicar para interpretar, seleccionar, valorar, modelar, y crear nuevos conceptos, teorías, usos y desarrollos tecnológicos relacionados con la informática. CC3 Capacidad para evaluar la complejidad computacional de un problema, conocer estrategias algorítmicas que puedan conducir a su resolución y recomendar, desarrollar e implementar aquella que garantice el mejor rendimiento de acuerdo con los requisitos establecidos. CC4 Capacidad para conocer los fundamentos, paradigmas y técnicas propias de los sistemas inteligentes y analizar, diseñar y construir sistemas, servicios y aplicaciones informáticas que utilicen dichas técnicas en cualquier ámbito de aplicación.

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.

Page 5: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

5

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.

Page 6: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

6

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 voraces: Estructuras de datos usadas habitualmente, concepto de los algoritmos voraces, eficiencias frecuentes y ejemplos. Tema 3. Algoritmos Divide y vencerás: Estructuras de datos habituales, concepto de los algoritmos tipo Divide y vencerás, 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

Page 7: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

7

Bloques de contenido (se pueden especificar los temas si se considera necesario)

Total de clases, créditos u horas

Introducción a la algoritmia Introducción a la algoritmia 12 horas

Algoritmos básicos Algoritmos voraces Algoritmos divide y vencerás Algoritmos de programación dinámica

24 horas

Algoritmos avanzados Uso de recursión intensiva

14 horas

No determinismo y Clases de complejidad Algoritmos no deterministas Complejidad

6 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 estudio, se podrán utilizar, entre otras, las siguientes actividades formativas:

Page 8: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

8

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

Page 9: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

9

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 CE2- 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 casos prácticos programados de laboratorio. 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 bloques temáticos 1 y 2. 2.-Prueba de evaluación intermedia (PEI 2) De carácter escrito, consistente en la resolución de problemas y cuestiones sobre los bloques temáticos 3 y 4 3.-Prueba de evaluación intermedia de laboratorio (PEIL 1), consistente en la entrega y defensa de una serie de ejercicios relativos 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 bloques temáticos de la asignatura y de sus prácticas de laboratorio.

Page 10: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

10

Criterios de calificación 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 ordinaria-evaluación continua la relación entre los criterios, instrumentos y calificación es la siguiente:

Competencias Resultado

Aprendizaje

Criterio de

Evaluación

Instrumento de

Evaluación

Peso en la

calificación

CG8,CG9, CC1, CC3

RA1-7, RA11 CE1-4 PEI-1 30%

CG8,CG9, CC1,CC3,

CC4 RA8-13 CE1-4 PEI-2 35%

CG8,CG9, CC1,CC3,

CC4 RA1-13 CE5 PEIL-1 35%

Como criterio general, aquellos alumnos en convocatoria ordinaria que no se presentan a la evaluació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) que englobará las partes teórica y práctica de la asignatura.

Competencias Resultado

Aprendizaje

Criterio de Evaluación

Instrumento de Evaluación

Peso en la calificación

CG8, CG9, CC1, CC3,

CC4 RA1-13 CE1-4 PEF 100%

3) Convocatoria extraordinaria En la evaluación extraordinaria, el alumno deberá realizar una prueban de evaluación final (PEF) que englobará las partes teórica y práctica de la asignatura. ´

Competencias Resultado

Aprendizaje

Criterio de Evaluación

Instrumento de Evaluación

Peso en la calificación

CG1, CG8, CC1, CC3,

CC4 RA1-13 CE1-4 PEF 100%

6.BIBLIOGRAFÍA

Bibliografía Básica

Page 11: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

11

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.

Page 12: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

12

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.

Page 13: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

13

ALGORITHMS AND COMPLEXITY

Bachelor’s Degree in Computer Science

Universidad de Alcalá

Academic Year 2019/2020

2nd Year – 2nd Term

Page 14: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

14

TEACHING GUIDE

Course name: Algorithms and Complexity

Course code: 780021

Degree program: Computer Science

Departament: Computer Science

Type: Optional of specific technology (2)

ECTS credits: 6

Year and term: Second year/ Second term

Teacher: Francisco Manuel Sáez de Adana Herrero

Office hours: Indicated on the first day of lessons

Classes offered on: English/Spanish

1. PRESENTATION

Algorithm theory is one of the pillars of programming and its relevance is shown in the

development of any application, beyond the mere construction of programs. This

subject deals with the analysis and design of algorithms, and aims to expose the

student to the necessary techniques for its design and implementation, as well as to

present the tools that allow it to measure its effectiveness and efficiency.

The objective of the subject is not to provide the student with known solutions to

specific problems, but to provide the student with the basic algorithmic techniques that

will allow him to approach the development of correct and efficient programs to solve

non-trivial problems, studying in the development of the subject the techniques and

patterns of design of the most important algorithms (families of algorithms), and

deepening in the design and evaluation of the algorithms themselves.

Prerequisites and Recommendations

Because the subject presents different techniques and advanced data structures for solving problems, the student must know and have practice in imperative programming, and especially in the use of recursion. Therefore, it is recommended that the student has successfully passed the subjects of Fundamentals of Programming and Data Structures. Regarding the mathematical part of the subject, the student should be familiar with the concepts of limit, combinatorial and resolution systems of equations, so the subjects

2 Optional subjects of specific technology result in the Degree’s mention, so they are obligatory in this Degree.

Page 15: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

15

of Mathematical Fundamentals and Discrete Mathematics should have been successfully completed

2. COMPETENCES

General skills:

CG8 Knowledge of basic materials and technologies that enable learning and development of new methods and technologies, as well as to equip them with great versatility to adapt to new situations. CG9 Ability to solve problems with initiative, decision making, autonomy and creativity. Ability to communicate and transmit knowledge and skills of the profession of Technical Engineer.

Specific skills:

CC1 Ability to have a thorough understanding of the fundamental principles and models of computation and know how to apply to interpret, select, assess, model, and create new concepts, theories, uses and technological developments related to computer science. CC3 Ability to evaluate the computational complexity of a problem, meet algorithmic strategies that can lead to resolution and recommend, develop and implement one that guarantees the best performance according to the requirements. CC4 Ability to know the basics, paradigms and own techniques of intelligent systems and analyze, design and build systems, services and applications that use these techniques in any scope.

Outcomes:

LO1-Reason the theoretical foundations of algorithmic schemes.

LO2-Learn to perform the analysis of an algorithm, taking into account its efficiency,

cost, cases, asymptotic notation, etc., understanding it as a quality criterion.

LO3-Apply with criteria the basic techniques of efficiency analysis and algorithm

design.

LO4-Analyze the correctness of an algorithm using simple verification techniques.

LO5-Recognize the basic algorithmic schemes: divide and conquer, voracious,

dynamic programming, backtracking, ramification and dimensioning algorithms.

LO6-Know some classical algorithms for fundamental problems, and recognize

situations where you can reuse the repertoire of data structures and classical

algorithms.

LO7-Write recursive programs about types that are not necessarily basic and be able

to reason about their correctness and efficiency.

LO8-Be able to use advanced algorithm design and analysis techniques, and know

how to customize general algorithmic schemes to solve problems.

Page 16: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

16

LO9-Have criteria that allow, during the stages of specification, design and

implementation, to choose the most appropriate alternative, and have elements to

argue in a reasoned manner the choices made.

LO10-Take contact with some fundamental techniques of design and analysis of

algorithms, as well as with some advanced programming techniques.

LO11-Know how to identify the most relevant components of a problem and select the

most appropriate algorithmic technique for resolution.

LO12-Be able to select the most suitable types of data to improve the efficiency of an

algorithmic solution.

LO13-Justified design of efficient algorithmic solutions for problems typical of the

academic level of the subject.

Page 17: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

17

3. COURSE CONTENTS

BLOCK 1: Introduction to the algorithm theory Unit 1. Introduction to the algorithm theory: Introduction, basic concepts of the analysis of algorithms, calculation of the size of the problems, asymptotic notation, efficiency orders, resolution of recurrences by means of the characteristic equation. BLOCK 2: Basic algorithms Unit 2. Voracious algorithms: Data structures usually employed, concept of voracious algorithms, frequent efficiencies and examples. Unit 3. Divide and conquer algorithms: Common data structures, concept of divide and conquer algorithms, frequent efficiencies and examples. Unit 4. Algorithms of dynamic programming: Extension of algorithms divide and conquer, reuse of cases through data structures, concept of dynamic programming algorithms, frequent efficiencies and examples. BLOCK 3: Advanced algorithms Unit 5. Use of intensive recursion: Useful implementations of the necessary TADs, exploration of graphs, advantages and disadvantages of the intensive use of recursion, backtracking algorithms, problems of branching and pruning, delimitation of solutions. BLOCK 4: Non-determinism and complexity classes Unit 6. Non-deterministic algorithms: Introduction to non-determinism, numerical probabilistic algorithms, Monte Carlo algorithms, Las Vegas algorithms, Sherwood algorithms, validity of non-deterministic results and advantages and disadvantages against determinism. Unit 7. Complexity: Concept of complexity, classification of P and NP problems, basic complexity results, impossibility of solving all problems

Page 18: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

18

Content blocks Hours

Introduction to algorithm theory Introduction to algorithm theory 12 hours

Basic algorithms Voracious algorithms Divide and conquer algorithms Algorithms of dynamic programming

24 hours

Advanced algorithms Use of intensive recursion

14 hours

Non-determinism and complexity classes Non-determinist algorithms Complexity

6 hours

(*) Include IET (Intermediate evaluation test)

4. TEACHING/LEARNING METHODOLOGY. FORMATIVE ACTIVITIES

4.1. Credit distribution (especify in hours)

Lesson hours: 56 hours + PEC 4 hours

Independent study hours: 90 hours

Total hours 150 hours

4.2. Methodological strategies, materials and didactic resources

The subject Algorithms and complexity is organized as a semester subject of 6 ECTS (150 hours).

In the teaching-learning process of the aforementioned contents, the following training activities will be used:

• Theoretical lessons.

• Practical lessons: solving problems.

• Laboratory sessions

.

Page 19: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

19

• Tutorials: individual and/or group.

In addition, depending on the nature of the different parts of the subject matter, the following training activities may be used, among others:

• Preparation of works with individual responsibility, but with information management as a team.

• Put in common the information, problems and doubts that appear in the realization of the works.

• Organization and realization of public exhibition days with oral presentations and discussion of results.

• Use of Virtual Classroom Platform.

Class activities:

1. In the classroom: exhibition and discussion of the basic knowledge of the subject. Approach and theoretical resolution of exercises and related assumptions. Oriented to the teaching of the specific competences of the subject, especially those related to the techniques of creation and improvement of algorithms.

2. In the laboratory: approach and development of practical exercises that contribute to the understanding of the subject and to the development of the practice in the analysis of problems, critical reasoning and understanding of the methods of resolution.

Individual study activities:

1. Analysis and assimilation of the contents of the subject, resolution of problems, bibliographical consultation, preparation of individual and group work, realization of self-evaluations. Specially oriented to the development of methods for self-organization and planning of individual and team work.

2. Tutorials: individual and group counseling during the teaching-learning process, either in person or remotely.

Materials and resources:

• Reference bibliography on the subject.

• Personal computers.

• Development environments and manuals for their use.

• Internet connection.

• Virtual Classroom platform and manuals for their use.

Page 20: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

20

5. ASSESMENT

The students shall adhere to the evaluation procedures according to título 2 (arts. 9 y 10) de la normativa de evaluación de aprendizajes de la UAH. In any case, students will preferably be offered a continuous assessment system that has characteristics of formative assessment, so that it serves as feedback in the teaching-learning process by the student. For this purpose, the following evaluation procedures will be established: Assessment criteria The criteria must meet the degree of acquisition of skills by the student. For this, the following criteria are defined: AC1- Understanding and use of basic concepts and techniques about algorithms, design, analysis, efficiency, and cost of algorithms AC2- Understanding and using the elements, techniques and use of basic algorithms, their data structures, basic strategies, voracity, usual efficiencies, reuse of cases and dynamic programming. AC3- Understanding and using techniques of intensive recursion, advantages and disadvantages, problems of branching and pruning. AC4- Understanding and use of non-determinism and probabilistic methods, validity of results, particular advantages and disadvantages, as well as the fundamental analysis of the problems of complexity and the algorithmic irresolubility of certain problems. AC5-Ability for practical application in programmed practical laboratory cases. Evaluation procedures This section indicates the evaluation instruments that will be applied in each of the evaluation criteria. 1.-Intermediate evaluation test (IET1) Of a written nature, consisting of solving problems and issues on thematic blocks 1 and 2. 2.-Intermediate evaluation test (IET2) Of a written nature, consisting of the resolution of problems and questions on thematic blocks 3 and 4 3.-Intermediate laboratory evaluation test (ILET1), consisting of the delivery and defense of a series of exercises related to the knowledge taught in laboratory class, as a practical application of them. 4.-Final evaluation test (FET) Written, consisting of solving problems and questions about the four thematic blocks of the subject and their laboratory practices, as well as the eventual delivery and oral defense of a work of laboratory.

Page 21: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

21

Grading criteria This section quantifies the evaluation criteria for the passing of the subject 1) Ordinary call. Continuous assessment: In the ordinary call-continuous assessment the relationship between the criteria, instruments and qualification is as follows:

Competences Learning

Outcomes

Assessment Criteria

Evaluation Procedures

Weight on the grade

CG8, CG9, CC1, CC3

LO1-7, LO11 AC1-4 IET1 30%

CG8, CG9, CC1, CC3,

CC4 LO8-13 AC1-4 IET2 35%

CG8, CG9, CC1, CC3,

CC4 LO1-13 AC5 IELT1 35%

As a general criterion, those students in ordinary call who do not show up for the assessment of the laboratory will be understood as not presented

2) Ordinary call. Final assessment. In the final assessment, the student must perform a final assessment test (PEF) that will include the theoretical and practical parts of the subject.

Competences Learning

Outcomes

Assessment Criteria

Evaluation Procedures

Weight on the grade

CG8, CG9, CC1, CC3,

CC4 LO1-13 AC1-4 FET 100%

3) Extraordinary call: In the extraordinary assessment, the student will have to make a final evaluation assessment (PEF) that will include the theoretical and practical parts of the subject.

Competences Learning

Outcomes

Assessment Criteria

Evaluation Procedures

Weight on the grade

CG1, CG8, CC1, CC3,

CC4 LO1-13 AC1-4 FET 100%

Page 22: ALGORITMIA Y COMPLEJIDAD - UAH€¦ · 2 GUÍA DOCENTE Nombre de la asignatura: Algoritmia y Complejidad Código: 780021 Titulación en la que se imparte: Grado en Ingeniería Informática

22

6.BIBLIOGRAPHY

There are versions in English of the recommended bibliography. However, the Spanish translations are listed in this section because they are the ones available at the library.

Core bibliography

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.

Further bibliography

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.