ASIGNATURA: Estructura de Datos y Algoritmos CREDITOS: 9 TITULACION: Grado en Ingeniería Informática y Doble Grado PLAN: 2010 CURSO: 2 CICLO: 1 CARACTER: Obligatoria. Materias Comunes a la Informática DURACION: anual COORDINADOR: Ricardo Peña Marí PROFESORADO: Ricardo Peña Marí, Manuel Freire Morán, Marco Antonio Gómez Martín, Antonio Sánchez Ruiz-Granados Ramón González del Campo. DESCRIPTOR: Tiene tres partes diferenciadas: el diseño de algoritmos iterativos y recursivos, junto con el estudio de su eficiencia y corrección; la especificación e implementación de tipos abstractos de datos mediante el uso de estructuras de datos eficientes; y la descripcion de dos esquemas algorítmicos muy utilizados. REQUISITOS: Programación estructurada: nivel medio; Tipos de datos elementales: nivel medio; Recursión: nivel elemental; Lógica de primer orden: nivel elemental; Inducción: nivel elemental. OBJETIVOS: Obtener la capacidad de especificar y diseñar correctamente algoritmos iterativos y recursivos en pequeña escala y de analizar su eficiencia. Obtener la capacidad de especificar tipos abstractos de datos (TAD), de implementarlos con la estructura de datos adecuada, de analizar su eficiencia, y de utilizarlos en programas. CONTENIDOS: 1. Conceptos para el análisis de la eficiencia de algoritmos 2. Especificación de algoritmos 3. Diseño de algoritmos iterativos y análisis de su eficiencia 4. Diseño de algoritmos recursivos y análisis de su eficiencia 5. Especificación e implementación de tipos abstractos de datos 6. Tipos de datos lineales: pilas, colas, listas 7. Árboles 8. Tablas 9. Esquema algorítmico de "Divide y Vencerás" 10. Esquema algorítmico de "Vuelta atrás" ACTIVIDADES DOCENTES: Enseñanza presencial teórica. Realización individual de problemas con corrección colectiva en clase. Realización individual de prácticas tutorizadas en el laboratorio. Tutorías individuales. EVALUACION: 1/3 de la nota se obtendrá a lo largo del curso mediante la evaluación de las actividades prácticas. La asistencia a las clases prácticas es obligatoria y evaluable. La evaluación puede incluir además la realización individual de prácticas y problemas, la exposición en público de las soluciones propias, la realización de mini-exámenes escritos, las tutorias obligatorias y cualquier otra que permita conocer el grado de conocimientos y destreza alcanzados por el alumno. 2/3 de la nota se alcanzará mediante exámenes: examen parcial opcional liberatorio a partir de 4 en Febrero. Examen final en Junio de la parte no liberada. Examen final en Septiembre de todo el temario. BIBLIOGRAFIA BASICA: R. Peña. Diseño de programas: Formalismo y abstracción. Tercera edición, Pearson/Prentice Hall 2005. M. Rodriguez Artalejo, P. A. González Calero, M. A. Gómez Martín. Estructuras de datos: un enfoque moderno. Editorial Complutense 2011. N. Martí Oliet, Y. Ortega Mallén, J. A. Verdejo López. Estructuras de datos y métodos algorítmicos: ejercicios resueltos. Colección Prentice Practica, Pearson/Prentice Hall 2003. E. Horowitz, S. Sahni, D. Mehta. Fundamentals of Data Structures in C++. Computer Science Press 1995.