Objetivos
El alumno deberá, tras cursar esta asignatura, poder enfocar el diseño de una estructura de datos de forma abstracta, pensando primero en las operaciones y comportamientos observables por los usuarios de la misma y, más tarde, en los detalles de realización (representación de datos e implementación de operaciones). Deberá poder especificar rigurosamente dicho comportamiento observable sin mencionar las decisiones de implementación. Deberá conocer las familias básicas de soluciones algorítmicas y de estructuración de datos para familias de problemas y ser capaz de identificar un problema aparentemente nuevo con alguna de esas familias.
Objetivo general:
- proporcionar nuevos elementos que permitan superar las limitaciones del diseño descendente para el diseño de programas de media y gran escala;
- estas limitaciones se traducen esencialmente en dos necesidades:
- (1) modularizar el diseño de los programas facilitando el desarrollo independiente de cada módulo, y
- (2) proporcionar nuevos mecanismos que permitan razonar sobre la corrección de programas en los que utilicemos datos estructurados;
- la respuesta a estas necesidades la proporciona el diseño con TAD’s (tipos abstractos de datos).
Objetivos concretos: aprender a…
- identificar, diseñar y definir Tipos Abstractos de Datos (TAD’s) independientemente de su implementación;
- diseñar e implementar TAD’s reutilizables y robustos en un lenguaje de programación modular o en un lenguaje orientado a objetos;
- diseñar e implementar programas robustos de tamaño medio identificando, definiendo e implementando los TAD’s necesarios;
- identificar, utilizar e implementar algunos TAD’s fundamentales, como: pilas, colas, listas, árboles de búsqueda, tablas hash y grafos;
- comparar distintas alternativas de implementación de TAD’s con respecto al tiempo de ejecución de algoritmos y al uso de la memoria, y de seleccionar la más adecuada en cada problema o contexto;
- conocer y aplicar los esquemas algorítmicos básicos (como dividir para vencer, búsqueda con retroceso, voracidad…) a la resolución de problemas.