Topic outline

  • Estructuras de Datos (2012)

    estructuras.jpg

         

    Profesores

    Mario Aldea Rivas

    Pablo Sánchez Barreiro

    Departamento de Matemáticas, Estadística y Computación

     

     

        

       

       

       

    La asignatura tiene como objetivo dar a conocer los fundamentos de análisis, diseño, implementación, verificación y pruebas de los tipos abstractos de datos básicos y más comúnmente utilizados en el desarrollo de aplicaciones informáticas. Además, el alumno/a aprenderá a usar dichos tipos abstractos de datos como base para la construcción de aplicaciones informáticas, sabiendo elegir según las particularidades de cada aplicación, aquél tipo abstracto de datos que resulte más adecuado, atendiendo principalmente a criterios de eficiencia espacial y temporal.

    The goal of this subject is to make the student able to analyse, design, implement, verify and test basic abstract data types that are most frequently used for the development of software systems. Moreover, the student will learn how to use abstract data types as a cornerstone for the development of software systems, being able to select the abstract data type that is most suitable for an application according to its specific characteristics and considering as the temporal as the spatial efficiency.

     

    Palabras Clave de la Asignatura

    Queues, Tables, Tablas Hash, Hash, Estructuras de Datos, Algebraic Specifications, Colas, Pilas, Tablas de Dispersión, Lists, Stacks, Data Structures, Complexity, Complejidad Algorítmica, Trees, Abstract Data Types, Árboles, Tipos Abstractos de Datos, Especificaciones Algebraicas, Listas.

  • Otros Recursos

    otros_recursos

     

     

    Tema 1. Programación imperativa

    Ejemplos

    • OR-F-001. Módulo complejo (interfaz).

    • OR-F-002. Módulo complejo (implementación).

    • OR-F-003. Proyecto Java herencia múltiple.

    • OR-F-004. Reutilización por composición.

    Referencias

    • OR-F-005. «On the criteria to be used in decomposing systems into modules». (Parnas, 1972).

    • OR-F-006. Entrada Interesante sobre herencia en un Blog.

    • . Desastre Ariane 5 (vídeo).

    • OR-F-008. «Design by contract: the lessons of Ariane». (Jezequel & Meyer, 2002).

    Lecturas (muy) avanzadas

    • OR-F-009. «Doubts about the positive impact of static type systems on programming tasks in single developer projects - An empirical study». (Hanenberg).

    • OR-F-010. «An experiment about static and dynamic type systems». (Hanenberg).

    • OR-F-011. Disertación de Barbara Liskov sobre el «Poder de la abstracción».

    • OR-F-012. «Matters of (Meta-) modelling». (Khüne, 2006).

    • OR-F-013. «Can programming be liberated from the two-level style?: multi-level programming with DeepJava». (Khüne & Schreiber, 2007).

    • OR-F-014. «Object-oriented programming with flavors». (Moon, 1986).

    • OR-F-015. «A monotonic superclass linearization for Dylan». (Barrett et al).

    • OR-F-016. «Morphing: safely shaping a class in the image of others». (Huang et al).

    • OR-F-017. «No silver bullet: essence and accidents of software engineering». (Brooks, 1987).

    Herramientas

    • OR-F-018. «Contract4J: diseño por contrato para Java».

    • OR-F-019. ESC/Java2: verificación automática de programas (Wikipedia).

       

    Tema 2. Fundamentos de complejidad algorítimica

    Bibliografía y recursos

    • OR-F-020. «Fundamentos de algoritmia». (Brassard & Bratley).

    • OR-F-021. Gráficas con tasas de crecimiento.

    • OR-F-022. Lista de problemas NP completos (Wikipedia).

       

    Tema 3. Técnicas de implementación

    Ejemplos

    • OR-F-023. Clase lista enlazada (pseudocódigo).

    • OR-F-024. Ejemplo lista enlazada (Java).

    • OR-F-025. Ejemplo lista enlazada (C#).

    • OR-F-026. Tabla Hash cerrada (orientada a objetos).

    Recursos

    • OR-F-027. Implementación libre colecciones Java.

    • OR-F-028. Apuntes sobre Tablas Hash (Universidad de Granada).

    • OR-F-029. Animación sobre árboles binarios de búsqueda.

    • OR-F-030. Otra animación sobre árboles de búsqueda.

    • OR-F-031. Animación sobre árboles AVL.

    • OR-F-032. Animación sobre Árboles Rojinegros.

    • OR-F-033. Clase magistral sobre árboles balanceados del MIT (Inglés).

       

    Tema 4.  Concepto y especificación de Tipos Abstractos de Datos

    Ejemplos

    • OR-F-034. Especificación algebraica tipo Día-Semana.

    • OR-F-035Especificación algebraica lista inserción cabeza.

    • OR-F-036Especificación algebraica conjunto.

    Bibliografía y recursos

    • OR-F-037. Algebraic implementation of abstract data types». (H. Ehrig, H.J. Kreowski, B. Mahr & P. Padawitz).

    Lecturas (muy) avanzadas

    • OR-F-038. «The algebraic specification of abstract data types». (Guttag & Horning, 1976).

    • OR-F-039. «Limits of the "algebraic" specification of abstract data types». (Majster, 1977).

    • OR-F-040. «Formalizing design patterns: a case study for the iterator pattern». (Alfoudari & Steggles, 2002).

    • OR-F-041. «Abstract data types and software validation». (Guttag et al, 1978).

    • OR-F-042. «Formal specification and analysis of domain specific models using maude». (Rivera et al, 2011).

       

    Tema 5. Tipos Abstractos de Datos Lineales

    Especificaciones Algebraicas TADs Lineales

    TADs Lineales en lenguajes de programación actuales

    Recursos

    • OR-F-058. «LZW data compression». (Nelson, 1989).

    • OR-F-059. Proyecto Java cálculo expresiones polaca inversa.

       

    Tema 6. Tipos Abstractos de Datos Jerárquicos

    Recursos

    • OR-F-060. Implementación y ejemplos árboles.

    • OR-F-061. Akinator (árboles de decisión).

    Lecturas (muy) avanzadas

    • OR-F-062. Binary Space Partition (BSP) (Wikipedia).