Guía Docente 2023-24
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: Correo electrónico:

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 G01 Capacidad para utilizar estrategias de aprendizaje en forma autónoma para su aplicación en la mejora continua del ejercicio profesional.
G02 Capacidad para realizar el análisis y la síntesis de problemas propios de su actividad profesional y aplicarlos en entornos similares.
G03 Capacidad para conseguir resultados comunes mediante el trabajo en equipo en un contexto de integración, colaboración y potenciación de la discusión crítica.
G04 Capacidad para hacer un razonamiento crítico de la información, datos y líneas de actuación y su aplicación en temas relevantes de índole social, científico o ético.
G05 Habilidad para comunicar en lengua castellana e inglesa temas profesionales en forma oral y escrita.
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.
G08 Capacidad para comprender el papel del método científico en la generación de conocimiento y su aplicabilidad a un entorno profesional.
G09 Capacidad para trabajar con respeto al medio ambiente y la sociedad mediante el uso adecuado de la tecnología y su aplicación en el fomento de una economía y ambiente sostenible.
G10 Habilidad para dominar las tecnologías de la información y comunicación y su aplicación en su ámbito profesional.
Competencias Específicas de la titulación E01 Capacidad para la resolución de los problemas matemáticos que puedan plantearse en la ingeniería. Aptitud para aplicar los conocimientos sobre: álgebra; geometría; cálculo diferencial e integral; optimización y métodos numéricos
E02 Capacidad para comprender y dominar los conceptos sobre las leyes generales de la mecánica clásica, de campos, ondas y electromagnetismo y su aplicación para la resolución de problemas propios del desarrollo de videojuegos.
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.
E06 Capacidad de conocer, comprender y evaluar la estructura y arquitectura de los computadores, así como los componentes básicos que los conforman.
E07 Capacidad para realizar el diseño, análisis e implementación de aplicaciones fundamentadas en las características de las bases de datos.
E08 Capacidad para conocer y dominar las características, funcionalidades y estructura de los Sistemas Distribuidos, las Redes de Computadores e Internet y diseñar e implementar aplicaciones basadas en ellas.
E09 Capacidad para conocer y dominar las herramientas necesarias para el almacenamiento, procesamiento y acceso a los Sistemas de información, incluidos los basados en web.
E10 Capacidad para conocer las características, funcionalidades y estructura de los sistemas operativos.
E11 Capacidad para desarrollar juegos en red para múltiples jugadores/ as.
E12 Capacidad para comprender y analizar la estructura, organización, funcionamiento e interconexión de los dispositivos y sistemas en las plataformas de videojuegos.
E13 Capacidad para conocer, diseñar y evaluar los principios fundamentales y técnicas de interacción persona computador que garanticen la accesibilidad y usabilidad a los sistemas, servicios y aplicaciones informáticas incluyendo videojuegos.
E14 Capacidad para aplicar los principios fundamentales y técnicas básicas de los sistemas inteligentes y su aplicación práctica en diversos entornos
E15 Capacidad para aplicar los principios fundamentales y técnicas básicas de la programación en tiempo real.
E16 Capacidad para gestionar y planificar de forma completa proyectos de software y manejar las herramientas adecuadas para hacerlo.
E17 Capacidad para comprender y analizar la estructura y funcionamiento de los principales sistemas hardware y periféricos en el ámbito de los videojuegos
E18 Capacidad para comprender y aplicar los principios de ergonomía y "Diseño para todos" con el fin de desarrollar interfaces y dispositivos accesibles de forma universal en el ámbito de los videojuegos.
E19 Capacidad para conocer y aplicar los principios, metodologías y ciclos de vida de la ingeniería de software.
E20 Capacidad para efectuar la generación y análisis de recursos expresivos y narrativos y su aplicación a los videojuegos.
E21 Capacidad para realizar el arte de los videojuegos, crear personajes y ambientes.
E22 Capacidad para manejar técnicas y herramientas de expresión y representación artística.
E23 Capacidad para utilizar procesos creativos en el diseño y desarrollo de videojuegos.
E24 Capacidad de visión espacial y conocimiento de las técnicas de representación gráfica, tanto por métodos tradicionales de geometría métrica y geometría descriptiva, como mediante las aplicaciones de diseño asistido por ordenador.
E25 Capacidad para realizar el diseño y la creación de elementos gráficos y su aplicación en el desarrollo de videojuegos.
E26 Capacidad para realizar el diseño y la creación de personajes animados y su aplicación en el desarrollo de videojuegos.
E27 Capacidad para aplicar los métodos en la creación y preservación de imágenes sintéticas.
E28 Capacidad para realizar el diseño y construcción de modelos con la información necesaria para la creación y visualización de imágenes interactivas.
E29 Capacidad para conocer y aplicar las técnicas de visualización, animación, simulación e interacción sobre modelos.
E30 Capacidad para diseñar, desarrollar, seleccionar y evaluar aplicaciones y sistemas informáticos, asegurando su fiabilidad, seguridad y calidad, conforme a principios éticos y a la legislación y normativa vigente.
E31 Capacidad para realizar la evaluación de videojuegos desde sus diferentes enfoques.
E32 Capacidad para realizar la evaluación, uso y extensión de motores de juegos.
E33 Capacidad para elaborar desarrollos de producción en el campo de los videojuegos.
E34 Capacidad para crear y analizar juegos en sus elementos fundamentales y desarrollar la compresión de cuáles son las claves que determinan su funcionamiento y desarrollo.
E35 Capacidad para conocer y comprender el sector de los videojuegos desde el punto de vista empresarial
E36 Capacidad para identificar y aplicar los aspectos legales y éticos del sector de los videojuegos
E37 Capacidad para diseñar y crear sonidos y entornos sonoros y su aplicación en el desarrollo de videojuegos
E38 Capacidad para realizar un proyecto original que integren las competencias adquiridas en su formación con su presentación y defensa ante un tribunal universitario y que se relacione en el ámbito del diseño y desarrollo de videojuegos.

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


* Guía Docente sujeta a modificaciones