Estructuras de Datos y Algoritmos (EDA)

Un curso sobre Tipos Abstractos de Datos

Objetivos

sin comentarios

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.

Written by Javier Campos

diciembre 15th, 2008 at 8:33 pm

Posted in