Topic outline

  • Estructuras de Datos y Algoritmos (2010)

    maquinas-termicas.jpg


    Profesores

    Michael González Harbour

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




    El principal objetivo de este curso es conocer los fundamentos del diseño, análisis e implementación de estructuras de datos básicas y de sus algoritmos de manipulación, aplicando los principios de abstracción y descomposición orientada a objetos. Asimismo se pretende conocer las principales aplicaciones de las estructuras de datos básicas. El lenguaje de programación en el que se basa el curso es Java. El material se estructura en dos partes: en la primera se definen las principales estructuras de datos abstractas y se analizan desde la perspectiva del usuario; en la segunda parte se profundiza en las técnicas de implementación de estas estructuras de datos.


    Palabras Clave de la Asignatura

    Java, Estructuras de Datos, colas, pilas, árboles, Informática, algoritmos, Programación, listas, grafos

  • Programa

    programa

    Datos identificativos de la Asignatura

    • Denominación: Estructuras de Datos y Algoritmos (2010)

    • Código: 

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

    • Área de Conocimiento:

    • Tipo: Troncal

    • Curso y cuatrimestre: Segundo

    • Título: Grado en Ingeniería Informática

    • Centro: Facultad de Ciencias

    • Web:

    • Profesor responsable: Michael González Harbour


    Programa de la asignatura

    Objetivos de Estructuras de Datos y Algoritmos

    • Conocer los fundamentos del diseño, análisis e implementación de estructuras de datos básicas
    • Conocer los fundamentos del diseño, análisis e implementación de sus algoritmos de manipulación

         - aplicando en ambos los principios de abstracción y descomposición orientada a objetos.

    •  Conocer las principales aplicaciones de las estructuras de datos básicas

     

    Objetivos concretos: conocimientos

    •  Conocer las especificaciones abstractas de las principales estructuras de datos
    •  Conocer los principales algoritmos de manipulación de las estructuras de datos básicas
    •  Conocer las principales aplicaciones de las estructuras de datos básicas
    •  Conocer distintas técnicas de implementación de las estructuras de datos y sus propiedades

     

    Objetivos concretos: Habilidades

    •  Ser capaz de aplicar los principios de abstracción a las estructuras de información
    •  Saber diseñar la estructura de datos más eficiente para un determinado problema, dados unos requisitos de coste temporal y espacial
    •  Ser capaz de implementar estructuras de datos básicas usando un lenguaje orientado a objetos
    •  Ser capaz de razonar sobre la eficiencia de las diferentes implementaciones de una estructura de datos

     

    Programa

    1. Introducción

    • Estructuras de datos abstractas
    • Eficiencia de las estructuras de datos
    • Interfaces y herencia múltiple
    • Estructuras de datos genéricas
    • Colecciones
    • Iteradores
    • Relaciones de igualdad y orden

     

    2. Estructuras de datos lineales

    • Colecciones o bolsas
    • Conjuntos
    • Listas y vectores
    • Pilas
    • Colas
    • Colas de prioridad
    • Mapas
    • Aplicaciones

     

    3. Estructuras de datos jerárquicas

    • Árboles
    • Recorrido y ordenación de los nudos
    • El ADT árbol
    • Árboles binarios
    • Búsquedas en árboles binarios
    • Aplicaciones

     

    4. Grafos y caminos

    • Concepto de grafo
    • Definiciones
    • La interfaz de las aristas
    • La interfaz de los grafos
    • Recorridos y búsquedas
    • El problema del camino mínimo con y sin pesos
    • Grafos acíclicos
    • Aplicaciones

     

    5. Implementación de Listas, Colas y Pilas

    • Introducción a la implementación de estructuras de datos
    • Pilas, colas y vectores implementados mediante arrays
    • Implementaciones con listas enlazadas simples
    • Listas enlazadas con cursores
    • Listas doblemente enlazadas

     

    6. Implementación de mapas, árboles y grafos

    • Mapas y conjuntos implementados mediante tablas de troceado
    • Técnicas de troceado abierto
    • Técnicas de troceado cerrado
    • Implementaciones de árboles
    • Implementaciones de árboles binarios
    • Árboles binarios equilibrados y conjuntos ordenados
    • Árboles AVL
    • Árboles rojinegros
    • B-árboles
    • Implementación de colas de prioridad y conjuntos ordenados mediante montículos binarios
    • Implementación de grafos
  • Bibliografía

    Bibliografía Básica

    • Mark A. Weiss. “Estructuras de datos en Java” Addison Wesley, 2000.

     

    Bibliografía Complementaria

    • S. Zakhour, S. Hommel, J. Royal, I. Rabinovitch, T. Risser, M. Hoeber, “The Java Tutorial Fourth Edition”. Pearson Education, 2006
    • The Java Tutorials. http://java.sun.com/docs/books/tutorial/
    • Aho, A.V., J.E. Hopcroft, J.D. Ullman, Estructuras de datos y algoritmos, Addison-Wesley, 1988.
    • Arnold, K., J. Gosling, D. Holmes, El Lenguaje de Programación Java, 3ª Ed., Addison-Wesley, 2001.
    • David A. Watt, Deryck F. Brown, “Java Collections”. Wiley, 2001
    • Frank M. Carrano and Janet J. Prichard, “Data Abstraction and Problem Solvig with Java”, Addison Wesley, 2001
    • Michell Waite, “Data Structures & Algorithms in Java”, Waite Group Press, 1998
  • Materiales de Clase

    • MC-F-003. Estructuras de datos jerárquicas

    • MC-F-005. Implementación de listas, colas y pilas

    • MC-F-006. Implementación de mapas, árboles y grafos

  • Prácticas

  • Otros Recursos

  • Pruebas de Evaluación

    Curso 2006-2007

     

    Curso 2007-2008

     

    Curso 2008-2009

    Criterios de Evaluación

     

    PROCEDIMIENTO ORDINARIO: evaluación mixta, con un 40% de peso correspondiente al trabajo continuo en las prácticas de la asignatura y un 60% al examen final de cuestiones y problemas.

    PROCEDIMIENTO EXTRAORDINARIO: previsto para la evaluación de Septiembre; se podrá admitir en la convocatoria de Junio en casos excepcionales y justificados (estudiantes a tiempo parcial, enfermedad, etc.) una evaluación única de las prácticas en el laboratorio, mediante un examen de prácticas. A este examen se podrá optar tras la entrega de los informes de las prácticas y ejercicios obligatorios de la asignatura. El examen final de cuestiones y problemas es el mismo que el del procedimiento ordinario. Los pesos de cada examen también (40% examen de prácticas, y 60% examen de cuestiones y problemas).

    En ambos procedimientos es preciso superar por separado las prácticas y el examen de cuestiones y problemas.

     

    Descripción de la evaluación continua: actividades que debe desarrollar el alumno y su valoración

    La evaluación continua se realizará a través de la valoración de las prácticas y de la colección de ejercicios que deben ser resueltos por el alumno.

    Criterios de evaluación de las prácticas:

    a) Trabajo en el laboratorio

    • Conocimientos: Conocimiento de los conceptos de algoritmos y del lenguaje Java
    • Grado de Resolución: Grado de resolución de la práctica alcanzado durante las horas en el laboratorio.

    b) Informes sobre las prácticas

    • Especificación y diseño: Facilidad para especificar diseñar y comprender algoritmos.
    • Estilo: Estilo de programación, claridad del código, documentación del código.
    • Organización: Organización del informe, claridad en la exposición
    • Fecha de entrega: Entrega del informe dentro del plazo marcado, con el objetivo de conseguir una evaluación realmente continuada.

     

    El profesor de prácticas puede pedir que se muestre el correcto funcionamiento de la práctica en el laboratorio. Las prácticas cuyo informe se presente con retraso de hasta una semana tendrán un punto menos (sobre 10) y las de informes presentados con retraso entre una y dos semanas tendrán tres puntos menos. Las entregas pasadas dos semanas del plazo se calificarán con cero, pero su presentación es obligatoria.

     

    Descripción del examen final (duración, se pueden llevar apuntes o no, tiene partes diferenciadas o no, se promedian teoría y problemas o no, etc).

    El examen final escrito de cuestiones y problemas tiene como objetivo evaluar los conocimientos teóricos y prácticos para que lo que se plantearán una serie de preguntas y ejercicios de mediana complejidad. La duración será de 180 minutos, más un descanso en medio. Se podrán utilizar apuntes y bibliografía.

    El examen de prácticas del procedimiento extraordinario es un examen en el laboratorio con el objetivo de evaluar la capacidad del alumno de llevar a la práctica sus conocimientos. Tendrá una duración de tres horas en las que se pedirá el diseño de una estructura de datos especificada por el profesor, de una aplicación sencilla que la utilice, y su codificación en lenguaje de programación, utilizando los equipos del laboratorio.

     

    Observaciones

    Para superar la asignatura es preciso superar tanto el examen como las prácticas. La nota final estará compuesta por:

    • 60% examen escrito de cuestiones y problemas
    • 40% nota de prácticas

    En caso de que una de estas partes no se supere, la nota final será el mínimo de 4.5 y la media obtenida.

    En caso de aprobar únicamente una de las dos partes en la convocatoria de junio, se guardaría la nota de esa parte para septiembre.

     

    Software

    Entorno de desarrollo Bluej, con compilador Java de Sun, versión 6 o superior, y sistema operativo Linux.

    Editor de texto emacs.

  • Guía de Aprendizaje

  • Sobre el profesor

    Logo de la UC

     

    Michael González Harbour

    Catedrático de Universidad

    Departamento de Matemáticas,

    Estadística y Computación