Grado en Ingeniería Informática
Modalidad Presencial
Algoritmia
Índice
Algoritmia ...3
Breve descripción de la asignatura ...3
Requisitos Previos ...3
Objetivos de la asignatura ...3
Competencias ...4
Metodología ...5
Temario ...6
Relación con otras materias ...8
Sistema de evaluación ...8
Bibliografía y fuentes de referencia ...8
Web relacionadas ...9
Recomendaciones para el estudio ...9
Material necesario ... 10
Algoritmia
Algoritmia - Tlf: (+34) 902 102 101
Algoritmia
Módulo: Común de la Rama de Informática. Materia: Programación
Carácter: Obligatoria Nº de créditos: 4,5
Unidad Temporal: 2º curso – 1er Semestre
Profesor de la asignatura:Andrés Muñoz Ortega Email:[email protected]
Horario de atención a los alumnos/as: Lunes de 13:00 a 14:00(Fuera de ese horario se puede solicitar cita vía correo electrónico indicado en la línea anterior)
Profesor coordinador de curso:Andrés Bueno Crespo Profesor coordinador de módulo: Andrés Muñoz Ortega
Breve descripción de la asignatura
La asignatura de Algoritmia se basa fundamentalmente en explicar los conocimientos teóricos necesarios para cualquier tipo de programación informática. Con estos conocimientos, el alumno tendrá las herramientas necesarias para encontrar soluciones a diferentes tipos de problemas mediante programación software. En particular, se estudiarán algoritmos de recorrido de estructura de datos lineales y no lineales, algoritmos de clasificación y búsqueda, y técnicas de backtracking y hashing.
Brief Description
This subject is fundamentally based on explaining and understanding the theoretical concepts needed to develop any kind of programming in informatics. With these concepts, the student will have the fundamental tools to develop software solutions to different types of problem. In particular, the following concepts will be studied: Scanning of linear and non-linear data structures, Search and classification algorithms, backtracking and hashing
Requisitos Previos
Son requisitos necesarios los conocimientos impartidos en las asignaturas de Fundamentos de Programación I y II
Objetivos de la asignatura
Los objetivos específicos de la asignatura son:
1. Que el alumno comprenda el esquema de funcionamiento de los algoritmos más importantes de clasificación, búsqueda,backtracking y hashing.
Algoritmia
2. Que el alumno sea capaz de aplicar soluciones óptimas para la resolución de problemas utilizando algoritmos adecuados
3. Que el alumno sepa desarrollar aplicaciones informáticas aplicando el algoritmo correcto para un problema, es decir, que sea capaz de seleccionar un algoritmo de búsqueda, clasificación o backtracking, dependiendo del problema a resolver
4. Que el alumno sea capaz de detectar las importantes diferencias que se pueden obtener, en términos de rendimiento temporal, entre algoritmos aparentemente equivalentes en cuanto a su resultado.
Competencias
Competencias transversales
T1 - Capacidad de análisis y síntesis.
T3 - Capacidad de gestión de la información. T4 - Resolución de problemas.
T5 - Toma de decisiones. T6 - Trabajo en equipo. T11 - Razonamiento crítico. T14 - Aprendizaje autónomo.
T15 - Adaptación a nuevas situaciones. T16 - Creatividad e innovación.
T21 - Capacidad de reflexión.
T22 - Comprender los puntos principales de textos claros y en lengua estándar si tratan sobre cuestiones relacionadas con el ámbito de estudio
Competencias específicas
C6 - Conocimiento y aplicación de los procedimientos algorítmicos básicos de las tecnologías informáticas para diseñar soluciones a problemas, analizando la idoneidad y complejidad de los algoritmos propuestos.
C7 - Conocimiento, diseño y utilización de forma eficiente los tipos y estructuras de datos más adecuados a la resolución de un problema.
C8 - Capacidad para analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados.
Algoritmia
Algoritmia - Tlf: (+34) 902 102 101 Resultados de aprendizaje
RA 2.3.7. Reproducir el esquema de funcionamiento de los algoritmos más importantes de clasificación, búsqueda y backtracking.
RA 2.3.8. Aplicar soluciones óptimas para la resolución de problemas utilizando estructuras de datos coherentes y algoritmos adecuados.
RA 2.3.9.Comparar diferentes soluciones algorítmicas atendiendo a criterios de eficiencia. RA 2.3.10. Desarrollar aplicaciones informáticas aplicando el algoritmo correcto para un problema concreto.
Metodología
Metodología Horas Horas de trabajo presencial Horas de trabajo no presencial Clases en el Aula 15,75 45horas (40 %) Evaluación 4,5 Prácticas 15,75 Tutorías 9 Estudio personal 27 67,5horas (60 %) Lecturas recomendadas y búsqueda de información 6,75 Realización de ejercicios, presentaciones, trabajos y casos prácticos 27 Actividades de aprendizaje virtual 6,75 TOTAL 112,5 45 67,5
Algoritmia
Temario
Programa de la enseñanza teórica
Tema 1. Algoritmos de búsqueda. 1. Búsqueda lineal 2. Búsqueda binaria
3. Búsqueda en árboles binarios balanceados (AVL) 4. Búsqueda de patrones (Fuerza bruta, KMP, BM)
Tema 2. Algoritmos de clasificación y ordenación. 1. Algoritmo de la burbuja
2. Algoritmo de inserción 3. Algoritmo de selección 4. Algoritmo Shell Short 5. Algoritmo Quick Sort
6. Algoritmo de mezcla directa 7. Algoritmo de mezcla natural
Tema 3. Backtracking: Algoritmos de vuelta atrás. 1. Concepto de backtracking
2. Programación con backtracking
3. Ejemplos de algoritmos de backtracking 4. Optimización: Branch and bound
Tema 4. Métodos de almacenamiento y búsqueda mediante cálculo de dirección basado en clave(hashing).
1. Introducción
2. Colisiones y alternativas para su solución 3. Borrado de elementos en tablas hash
Algoritmia
Algoritmia - Tlf: (+34) 902 102 101 4. Reordenamiento en tablas hash
5. Eficiencia de algoritmos hash
Programa de la enseñanza práctica
Práctica 1. Algoritmos de búsqueda
La práctica consistirá en implementar algoritmos de búsqueda lineales y binarios, así como implementación del algoritmo de búsqueda de patrones de fuerza bruta. También se deberá explicar los algoritmos de búsqueda de patrones KMP y BM a partir del código proporcionado por el profesor. Por último se realizará un estudio comparativo de la eficiencia de los algoritmos de búsqueda de patrones estudiados en el correspondiente tema teórico.
Práctica 2. Algoritmos de clasificación y ordenación
La práctica consistirá en implementar diversos algoritmos de clasificación y ordenación vistos en el correspondiente tema teórico y aplicar una serie de benchmarks a estos algoritmos con la finalidad de realizar un estudio comparativo que justifique los diferentes niveles de eficiencia obtenidos con cada algoritmo.
Práctica 3. Backtracking
La práctica consistirá en varios problemas de aplicación real en comercios, procesos industriales, juegos, etc., que deben resolverse por el método de backtracking. Se estudiará la eficiencia de esos algoritmos y posibles mejores mediante la técnica de Branch and Bound.
Práctica 4. Hashing
La práctica consistirá en diseñar, implementar y utilizar diferentes estructuras y técnicas hash para el almacenamiento de una base de datos de clientes. Se realizará un estudio comparativo de las diferentes estructuras y técnicas utilizadas para justificar los diferentes niveles de eficiencia obtenidos.
Se podrá consultar información adicional sobre puntuación, fechas de entrega, enunciado, etc. en el documento de “Normativa de prácticas” que se pondrá a disposición de los alumnos en el Campus Virtual.
Algoritmia
Relación con otras materias
Fundamentos de programación (I y II) y Cálculo
Sistema de evaluación
- Primera prueba parcial: 30% del total de la nota. - Temas 1 y 2
- Prueba final: 30% del total de la nota. - Temas 3 y 4
- Evaluación de prácticas y problemas: 40% del total de la nota.
El profesor se reserva el derecho de mantener una entrevista personal con el alumno para comprobar la autoridad de las prácticas. Una inadecuada defensa de las prácticas supondrá el suspenso de esta parte de la asignatura.
Bibliografía y fuentes de referencia
Bibliografía básica
Hernández Berlinches, R. Problemas de estructuras de datos y algoritmos. 1ª Edición. Editorial Universitaria Ramón Areces, 2006.
Joyanes Aguilar, L. C. Algoritmos, Programación y Estructura de Datos. 1ºEd. McGraw-Hill
Interamericana, 2006. Serie Schaum (accesible mediante la plataforma www.ingebook.com a través de un ordenador con IP de la UCAM o a través de cualquier navegador desdehttp://api.ucam.edu
Más información en http://www.ucam.edu/servicios/informatica/api-virtual) Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein.IntroductiontoAlgorithms. The MIT Press, 3 edition, 2009
Nakamura, C., Adriana, M. Diseño de algoritmos y su codificación en C. 1ª Edición, McGraw-Hill, 2011
Bisbal Riera, J. Manual de algorítmica: Recursividad, complejidad y diseño de algoritmos. Editorial UOC, 2009
Bibliografía complementaria
Joyanes Aguilar, L., Zahonero Martínez, I. Programación en C. Metodología, algoritmos y estructuras de datos.2º Edición. McGraw-Hill, 2005.(accesible mediante la plataforma
Algoritmia
Algoritmia - Tlf: (+34) 902 102 101 desde http://api.ucam.edu Más información en http://www.ucam.edu/servicios/informatica/api-
virtual)
Schildt, H., C. Manual de Referencia. 4ª Edición, McGraw-Hill, 2004
Gottfried, Byron S., Programación en C, Serie Schaum, 2º Edición, McGraw-Hill, 2013 (accesible mediante la plataforma www.ingebook.com a través de un ordenador con IP de la UCAM o a través de cualquier navegador desde http://api.ucam.edu Más información en
http://www.ucam.edu/servicios/informatica/api-virtual)
García Carballería, F. Problemas resueltos de programación en C. Paraninfo, 2009. Wirth, N. Algoritmos y Estructuras de Datos. Prentice Hall, 1991.
Aho, A.V., Hopcroft, J.E., Ullman, J.D. Estructuras de Datos y Algoritmos. Addison-Wesley, 1999.
Web relacionadas
DevC++: IDE y compilador de C para Windows: http://sourceforge.net/projects/dev-cpp/
CodeBlocks: IDE y compilador de C para Windows/Linux: http://www.codeblocks.org/
ACM-ICPC: Concurso internacional de programación de algoritmos: http://icpc.baylor.edu/
AlgorithmStudy: Proyecto de estudio de algoritmos: http://algstudy.sourceforge.net/
IngeBook: Plataforma de libros on-line gratuitos: www.ingebook.com
Accesible a través de un ordenador con IP de la UCAM o a través de cualquier navegador desde
http://api.ucam.edu Más información en http://www.ucam.edu/servicios/informatica/api-virtual
Recomendaciones para el estudio
La asignatura es eminentemente práctica y se centra en la capacidad de resolver problemas y razonamiento crítico del alumno. Por tanto, se recomienda al alumno que siga al día los boletines de prácticas y ejercicios de programación propuestos para cada tema de manera que se refuercen los contenidos teóricos, ya que estos ejercicios prácticos están orientados a que el alumno se plantee las ideas fundamentales detrás de los algoritmos explicados en clase, así como entender y experimentar cómo se obtienen os tiempos de ejecución calculados teóricamente, las posibles mejoras sobre papel de los algoritmos dados, etc.
Aunque los temas de la asignatura pueden estudiarse por separado, el incremento de la dificultad planteado en el curso hace recomendable que el alumno lleve un seguimiento continuo de la asignatura, y no pase a estudiar un tema hasta haber comprendido y controlado los algoritmos e ideas fundamentales detrás de éstos incluidos en cada tema.