Guía Docente 2019-20
ESTRUCTURA DE DATOS Y ALGORITMOS

DATOS BÁSICOS DE LA GUÍA DOCENTE:

Materia: ESTRUCTURA DE DATOS Y ALGORITMOS
Identificador: 31361
Titulación: GRADUADO EN DISEÑO Y DESARROLLO DE VIDEOJUEGOS. 2013 (BOE 28/03/2014)
Módulo: INFORMÁTICA
Tipo: OBLIGATORIA
Curso: 2 Periodo lectivo: Primer Cuatrimestre
Créditos: 6 Horas totales: 150
Actividades Presenciales: 65 Trabajo Autónomo: 85
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. 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 G06 Capacidad para resolver los problemas o imprevistos complejos que surgen durante la actividad profesional dentro de cualquier tipo de organización y la adaptación a las necesidades y exigencias de su entorno profesional.
G07 Capacidad para manejar diferentes modelos complejos de conocimiento mediante un proceso de abstracción y su aplicación al planteamiento y resolución de problemas.
Competencias Específicas de la titulación E03 Capacidad para desarrollar el uso y la programación de ordenadores, sistemas operativos, bases de datos y programas informáticos y su aplicación en el desarrollo de videojuegos.
E04 Capacidad para comprender y dominar los conceptos fundamentales de matemática discreta, lógica, algorítmica y complejidad computacional, y su aplicación para la resolución de problemas propios de la ingeniería.
E05 Capacidad para programar aplicaciones de forma robusta, correcta, y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados, aplicando los conocimientos sobre procedimientos algorítmicos básicos y usando los tipos y estructuras de datos más apropiados.
Resultados de Aprendizaje R01 Crear algoritmos que cumplan unas necesidades establecidas de una manera óptima y cumpliendo unos estándares de calidad específicos.
R02 Implementar de manera eficiente algoritmos.
R03 Comentar código fuente con calidad.
R04 Comprobar errores de implementación.
R05 Manejar entornos de desarrollo de programación.
R06 Crear y manejar las estructuras de datos.
R07 Optimizar y evaluar algoritmos.

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 28
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 5
Estudio individual 36
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