Grado en Ingeniería Informática

Anuncio
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 
Descargar