Guía Docente 2018-19
ESTRUCTURA DE DATOS

DATOS BÁSICOS DE LA GUÍA DOCENTE:

Materia: ESTRUCTURA DE DATOS
Identificador: 33417
Titulación: DOBLE GRADO EN INGENIERÍA INFORMÁTICA Y BIOINFORMÁTICA
Módulo: PROGRAMACION Y DESARROLLO
Tipo: OBLIGATORIA
Curso: 2 Periodo lectivo: Primer Cuatrimestre
Créditos: 6 Horas totales: 150
Actividades Presenciales: 63 Trabajo Autónomo: 87
Idioma Principal: Castellano Idioma Secundario: Inglés
Profesor: PEREZ PEREZ, MARIA FRANCISCA (T) Correo electrónico: mfperez@usj.es

PRESENTACIÓN:

La asignatura “Estructuras de datos” proporciona a los alumnos conocimientos y competencias necesarias para avanzar en su desarrollo como profesional informático. Para resolver un problema determinado informáticamente, no es suficiente con implementar el primer código que aparece en la mente del programador. Un buen profesional busca la solución más elegante y eficiente que resuelva correctamente la situación planteada. Para ello es necesario conocer en detalle las estructuras de datos adecuadas para cada situación, así como saber analizar el rendimiento de los algoritmos diseñados para poder elegir en cada momento la implementación idónea. En esta asignatura se estudiarán en detalle estos aspectos de la programación de tal forma que el alumno será capaz de diseñar, documentar e implementar correctamente tipos abstractos de datos. Al mismo tiempo se hará especial hincapié en la capacidad de abstracción y optimización de los algoritmos que se implementen para mejorar las competencias de programación del alumno.

COMPETENCIAS PROFESIONALES A DESARROLLAR EN LA MATERIA:

Competencias Generales de la titulación G02 Capacidad innovadora para proponer y encontrar formas nuevas y eficaces de realizar cualquier tarea y/ o función dentro de su entorno profesional con una elevada motivación por la calidad
G05 Capacidad para adaptarse a diferentes entornos con una actitud positiva y optimista y orientar su conducta a la consecución de metas
G06 Capacidad para analizar y resolver los problemas o imprevistos complejos que puedan surgir durante la actividad profesional dentro de cualquier tipo de organización socio-económica
G08 Habilidad para comunicarse eficazmente sobre distintos temas en una variedad de contextos profesionales y con los diferentes medios disponibles
G09 Capacidad para tomar decisiones de manera imparcial y desde un punto de vista racional
G10 Capacidad crítica y analítica en la evaluación de información, datos y líneas de actuación
G13 Capacidad para utilizar estrategias de aprendizaje individuales orientadas a la mejora continúa en el ejercicio profesional y para emprender estudios posteriores de forma autónoma
G14 Capacidad de abstracción para manejar diferentes modelos complejos de conocimiento y aplicarlos al planteamiento y resolución de problemas
Competencias Específicas de la titulación E03 Capacidad para reconocer los principios teóricos y aplicar satisfactoriamente los métodos prácticos apropiados para el análisis y la resolución de problemas de ingeniería
E04 Capacidad para mantener una actitud abierta a la innovación y la creatividad en el marco de la profesión de ingeniería
E08 Capacidad para comunicarse productivamente con clientes, usuarios y colegas, tanto de modo oral como por escrito, con el fin de transmitir ideas, resolver conflictos y alcanzar consensos
E09 Capacidad para mantener las competencias profesionales mediante el aprendizaje autónomo y la mejora continua
E11 Capacidad para mantenerse al día en el mundo tecnológico y empresarial en el ámbito de las tecnologías de la informática y comunicaciones
E12 Capacidad para gestionar la complejidad a través de la abstracción, el modelado, las ?best practices?, los patrones, los estándares y el uso de herramientas apropiadas
E13 Capacidad para identificar, evaluar y usar tecnologías actuales y emergentes, considerando su aplicabilidad en función de las necesidades de individuos y organizaciones
E16 Capacidad para comprender un dominio de aplicación hasta el punto de ser capaz de desarrollar aplicaciones IT adecuadas para el mismo
E17 Capacidad para identificar y analizar las necesidades de los usuarios con el objetivo de diseñar soluciones IT efectivas y usables que puedan integrarse en el entorno operativo del usuario.
E18 Capacidad para identificar y definir los requisitos que deben ser satisfechos por los sistemas IT para satisfacer las necesidades planteadas por organizaciones o individuos
E20 Capacidad para realizar el diseño detallado de los componentes del proyecto (procedimientos, interfaz de usuario, características de equipos, parámetros de los sistemas de comunicaciones, etc.).
E27 Capacidad para elaborar y mantener documentación descriptiva de la génesis, producción y operatividad de los sistemas informáticos

REQUISITOS PREVIOS:

Haber cursado la asignatura Fundamentos de Programación o equivalente.

PROGRAMACIÓN DE LA MATERIA:

Contenidos de la materia:

1 - Estructuras elementales de datos
    1.1 - Vectores
    1.2 - Estructuras
    1.3 - Punteros
    1.4 - Cadenas
2 - Tipos abstractos de datos
    2.1 - Abstracción
    2.2 - Modularidad
    2.3 - Abstracción en lenguajes de programación
    2.4 - Tipos abstractos de datos
    2.5 - TAD
    2.6 - Entornos de desarrollo
3 - Listas
    3.1 - Listas enlazadas
    3.2 - Listas doblemente enlazadas
    3.3 - Listas circulares
    3.4 - Implementación de listas
    3.5 - Comprobación de errores de implementación
4 - Pilas y colas
    4.1 - Concepto de pila
    4.2 - Implementación de pilas
    4.3 - Concepto de cola
    4.4 - Implementación de colas
    4.5 - Colas dinámicas
    4.6 - Bicolas
    4.7 - Colas con prioridades
5 - Tablas de dispersión
    5.1 - Concepto de tabla de dispersión
    5.2 - Funciones de dispersión
    5.3 - Colisiones
6 - Análisis de algoritmos
    6.1 - Eficiencia de algoritmos
    6.2 - Notación "O-grande"
    6.3 - Ejemplos
7 - Algoritmos de ordenación y búsqueda
    7.1 - Algoritmos de búsqueda
    7.2 - Algoritmos de ordenación
    7.3 - Ordenación externa
8 - Árboles
    8.1 - Introducción y terminología
    8.2 - Árboles binarios
    8.3 - Estructuras equilibradas de búsqueda
9 - Grafos
    9.1 - Introducción
    9.2 - Representación
    9.3 - Implementación con listas
    9.4 - Recorrido
    9.5 - Conexiones
    9.6 - Caminos
10 - Algoritmos con grafos
    10.1 - Introducción
    10.2 - Ordenación topológica
    10.3 - Caminos con un solo origen
    10.4 - Caminos para todos los nodos
    10.5 - Árbol de expansión de coste mínimo

La planificación de la asignatura podrá verse modificada por motivos imprevistos (rendimiento del grupo, disponibilidad de recursos, modificaciones en el calendario académico, etc.) y por tanto no deberá considerarse como definitiva y cerrada.


METODOLOGÍAS Y ACTIVIDADES DE ENSEÑANZA Y APRENDIZAJE:

Metodologías de enseñanza-aprendizaje a desarrollar:

Volumen de trabajo del alumno:

Modalidad organizativa Métodos de enseñanza Horas estimadas
Actividades Presenciales
Clase magistral 26
Casos prácticos 6
Resolución de prácticas, problemas, ejercicios etc. 12
Exposiciones de trabajos de los alumnos 3
Prácticas de laboratorio 12
Actividades de evaluación 4
Trabajo Autónomo
Asistencia a tutorías 6
Estudio individual 37
Preparación de trabajos individuales 35
Preparación de trabajos en equipo 9
Horas totales: 150

SISTEMA DE EVALUACIÓN:

Obtención de la nota final:

Pruebas escritas: 35 %
Trabajos individuales: 45 %
Trabajos en equipo: 15 %
Participación: 5 %
TOTAL 100 %

*Las observaciones específicas sobre el sistema de evaluación serán comunicadas por escrito a los alumnos al inicio de la materia.

BIBLIOGRAFÍA Y DOCUMENTACIÓN:

Bibliografía básica:

L. Joyanes, I. Zahonero, Algoritmos y estructuras de datos una perspectiva en C, McGraw-Hill
G. Brassard, P. Bratley, Fundamentos de algoritmia, Prentice Hall
Weiss, Mark Allen. Estructuras de datos en Java. Addison Wesley

Bibliografía recomendada:

Páginas web recomendadas:

Programación en C http://cprogramming.com/
Eclipse (entorno de desarrolllo) http://www.eclipse.org/downloads/
Java http://www.oracle.com/technetwork/es/java/javase/downloads/index.html