Programa de la asignatura Curso: 2008 / 2009 ESTRUCTURAS DE DATOS (1292) PROFESORADO Profesor/es: BRUNO BARUQUE ZANÓN - correo-e: bbaruque@ubu.es JUAN JOSÉ RODRÍGUEZ DÍEZ - correo-e: jjrodriguez@ubu.es FICHA TÉCNICA Titulación: INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN Centro: ESCUELA POLITÉCNICA SUPERIOR Nombre asignatura: ESTRUCTURAS DE DATOS (1292) Código de la asignatura: 1292 Tipo de asignatura: Troncal Nivel / Ciclo: 1 Curso en el que se imparte: 2 Duración y fechas: Anual Créditos: 12.0 Créditos teóricos: 9.0 Créditos prácticos: 3.0 Áreas: LENGUAJES Y SISTEMAS INFORMATICOS Tipo de curso: Oficial Descriptores: Según BOE Requisitos previos: Según BOE Idioma: Español COMPETENCIAS TRANSVERSALES O GENÉRICAS INSTRUMENTALES Análisis y síntesis: 4 Organización y planificación: 3 Comunicación oral y escrita en la lengua nativa: 2 Conocimiento de una lengua extranjera: 2 Conocimientos de informática relativos al ámbito de estudio: 4 Gestión de la información: 4 Resolución de problemas: 4 Toma de decisiones: 2 PERSONALES Trabajo en equipo: 2 Trabajo en un equipo de carácter interdisciplinar: 1 Pág. 1/7
Trabajo en un contexto internacional: 1 Relaciones interpersonales: 1 Reconocimiento a la diversidad y la multiculturalidad: 1 Razonamiento crítico: 3 Compromiso ético: 2 SISTÉMICAS Aprendizaje autónomo: 3 Adaptación a nuevas situaciones: 3 Creatividad: 3 Liderazgo: 1 Conocimiento de otras culturas y costumbres: 1 Iniciativa y espíritu emprendedor: 2 Motivación por la calidad: 3 Sensibilidad hacia temas medioambientales: 1 COMPETENCIAS ESPECÍFICAS CONOCIMIENTOS DISCIPLINARES (SABER) Comprensión, por el alumno, del papel que juegan los tipos abstractos de datos. Introducción a la metodología de los tipos de datos: abstracción. Separación de la especificación de un tipo de datos, de su implementación; de forma que el alumno trabaje y resuelva problemas con las especificaciones de los tipos, sin hacer referencia a su implementación. Estudio de los tipos abstractos de datos más importantes, tanto elementales como no elementales, en memoria principal. Estudio de los tipos abstractos de datos más importantes, tanto elementales como no elementales, en memoria secundaria. HABILIDADES PROFESIONALES (SABER HACER) Uso eficiente de los tipos abstractos a disposición del alumno en los programas que construya, eligiendo los más adecuados para cada problema concreto. Saber elegir la implementación más adecuada a cada tipo abstracto de datos, según el problema para el que se aplique y lo crítico de sus necesidades de espacio y tiempo. Implementaciones estáticas versus implementaciones dinámicas. Saber calcular la eficiencia de algoritmos simples, incluyendo los algoritmos recursivos. Comprender que si para un problema se dispone de más de un algoritmo que lo resuelva, es necesario realizar la elección de uno de ellos sobre criterios teóricos sólidos, estudiando la eficiencia en tiempo y en espacio; así como la eficiencia teórica versus la empírica. ACTITUDES (SABER SER - SABER ESTAR) Pág. 2/7
COMP. ACADÉMICAS (SABER TRASCENDER) OTRAS COMPETENCIAS ESPECÍFICAS OTROS OBJETIVOS DE LA ASIGNATURA METODOLOGÍA Y RECURSOS PARA EL APRENDIZAJE Clases magistrales en teoría. Prácticas guiadas. Trabajos prácticos a entregar. BREVE DESCRIPCIÓN DE LAS ACTIVIDADES PRÁCTICAS Las prácticas del primer cuatrimestre serán en C, las del segundo en Java. Por tanto, no se recomienda matricularse de esta asignatura sin haberse matriculado de Metodología de la Programación. Las primeras sesiones prácticas de cada cuatrimestre se dedicarán a introducir el entorno y bibliotecas de los lenguajes, mientras que en las últimas los alumnos deberán implementar los enunciados propuestos. SEGUIMIENTO DEL ALUMNO Y CRITERIOS DE EVALUACIÓN Para aprobar la asignatura es necesario aprobar tanto la teoría como las prácticas. La teoría se evaluará mediante exámenes escritos. Además del examen ordinario (junio) y el extraordinario (septiembre), habrá un examen parcial (febrero). El examen parcial es eliminatorio, los alumnos que lo aprueben deberán también presentarse al examen final, pero sólo con la parte de la asignatura correspondiente al segundo cuatrimestre. La práctica se evaluará mediante entrega de trabajos prácticos. El examen podrá incluir cuestiones relativas a los trabajos prácticos. La calificación final vendrá dada por la teoría al 70% y la práctica al 30%. BIBLIOGRAFÍA BÁSICA SOBRE LA MATERIA Diseño de Programas: Formalismo y Abstracción, Ricardo Peña Marí, 3ª edición, 2005, Prentice Hall, Estructuras de Datos en Java, Mark A. Weiss,, 2000, Addison Wesley, Estructuras de datos y métodos algorítmicos: ejercicios resueltos, Narciso Martí Olliet, Yolanda Ortega Mallén, José Alberto Verdejo López,, 2004, Prentice Hall, BIBLIOGRAFÍA COMPLEMENTARIA A Practical Introduction to Data Structures and Algorithm Analysis, Clifford A. Shaffer,, 1998, Prentice Hall, Algorithms and Data Structures: the Science of Computing, Dogulas Baldwin, Greg W. Scragg,, 2004, Pág. 3/7
Charles River Media, Algorithms in Java, Part 5: Graph Algorithms, Robert Sedgewick, 3rd edition, 2003, Addison Wesley, Algorithms in Java, Parts 1-4, Robert Sedgewick, 3rd Edition, 2002, Addison-Wesley, Classic Data Structures in Java, Timothy Budd,, 2001, Pearson Education, Data Structures and Algorithms in Java, Michael T. Goodrich, Roberto Tamassia, 3rd edition, 2004, Wiley, Data Structures, Algorithms, and Applications in Java, Sartaj Sahni,, 2000, McGraw Hill, Estructuras de Datos con C y C++, Yedidyah Langsam, Moshe J. Augenstein, Aaron M. Tenembaum,, 1997, Prentice Hall, Estructuras de Datos, Algoritmos y Programación Orientada a Objetos, Gergory L. Heileman,, 1998, McGraw-Hill, File Structures: An Object Oriented Approach witch C++, Michael Fok, Bill Zoellick, Greg Ricardi,, 1998, Addison Wesley, Fundamentos de Algoritmia, Gilles Brassard, Paul Bratley,, 1997, Prentice Hall, Fundamentos de Estructuras de Datos: Soluciones en Ada, Java y C++, Zenón José Hernández Figueroa y otros,, 2005, Thomson, TADs, Estructuras de datos y resolución de problemas con C++, Larry N. Nyhoff,, 2006, Prentice Hall, RECURSOS DE INTERNET OBSERVACIONES Y OTROS DATOS Pág. 4/7
ESTRUCTURA DE CONTENIDOS (TEMAS) ESTRUCTURAS DE DATOS (1292) Introducción > Tipos Abstractos de Datos Conceptos y Definiciones Especificación Formal Tipos de Datos Escalares Registros, Vectores y Cadenas > Algoritmos Tiempo de Ejecución Notación Asintótica Recursividad Ecuaciones en Recurrencia Algoritmos Voraces Algoritmos Divide y Vencerás Algoritmos de Vuelta Atrás Programación Dinámica Estructuras lineales > Listas Implementaciones Contiguas Implementación de Estructuras Genéricas Implementaciones no Contiguas Variaciones: Doblemente Enlazadas, Circulares Aplicaciones > Pilas y Colas TAD Pila Análisis y Evaluación de Expresiones Pilas: Implementaciones TAD Cola Aplicación: Simulaciones Colas: Implementaciones Bicolas, Colas de Prioridad Eliminación de la Recursividad > Ordenación Listas Ordenables y Ordenadas Búsqueda Binaria Algoritmos Básicos (n^2) de Ordenación Ordenación Shell Ordenación por Mezcla Ordenación Rápida > Tablas Hash TAD Tabla Hashing Pág. 5/7
Dispersión Cerrada Agrupamiento Dispersión Abierta Estructuras no lineales > Árboles Recorridos Implementaciones > Árboles Binarios Recorridos Implementaciones Montículos Códigos de Huffman > Árboles Binarios de Búsqueda Operaciones Profundidad Promedio Árboles Equilibrados > Grafos Representación: Matriz y Lista de Adyacencia Recorridos: en Profundidad y en Anchura Clasificación Topológica Componentes Conexas > Grafos Ponderados Implementaciones Árboles Expandidos Mínimos: Prim, Kruskal Caminos Mínimos: Dijkstra, Floyd Estructura de Partición Ficheros > Ficheros Secuenciales Sistema de Ficheros Secuenciales Cronológicos y Ordenados Ordenación de Ficheros Secuenciales > Ficheros de Acceso Relativo y Directo Acceso Relativo Acceso Directo Encadenamiento sin y con Reemplazamiento Dispersión Extensible > Ficheros Indexados Ficheros Indexados Ficheros Invertidos Árboles Multicamino Árboles B y B+ Pág. 6/7
Pág. 7/7