Introducción a Ciencias de la Computación II

Guadalupe Ibargüengoitia G.
Alejandro Talavera R
Semestre 2001-II


Objetivo:
  • Se estudiarán las estructuras de datos clásicas en su representación como tipos de datos abstractos para un mejor entendimiento de su definición, a fin de  asegurar abstracción, robustes, encapsulamientos y confiabilidad, para poder incorporarlas en la resolución de problemas computacionales.


  • Aprender los conceptos fundamentales en que se basa la programación orientada a objetos y la utilización de bibliotecas de componentes que implementen las estructuras de datos.


  • Se usarán las bibliotecas de las estructuras de datos de JAVA para incluir en aplicaciones que resuelvan los problemas planteados.


  • Introducción superficial a los problemas de complejidad de algoritmos.

    Metodología de Enseñanza


    Se presentarán cada una de las estructuras de datos clásicas como listas, pilas, árboles, etc., desde elpunto de vista de tipos de datos abstractos (TDA). Para las implementaciones se utilizará JAVA y las bibliotecas que proporciona para incorporarlas en la resolución de problemas.

    Como proyecto final se planteará un problema y se espera que los alumnos decidan las estructuras de datos apropiadas para resolver eficientemente el problema y que el programa funcione correctamente.

    Se pondrán dos exámenes escritos uno sobre estructuras lineales y otro sobre no lineales, que demuestre que se entendieron los conceptos fundamentales de cada estructura de datos.

    Temario:

    I. Conceptos generales

    1. Abstracción de datos y Programación orientada a objetos.

    2. Programando tipos de datos abstractos en JAVA      
    • Especificación        
    • Implementación       
    • Aplicaciones de tipos de datos abstractos (TDA)

    3. Conceptos de Ingenieria de Software al desarrollar programas:            
    • Trabajo con escenarios     
    • Aserciones y verificación     
    • Reutilización de componentes       
    • Ejemplo de aplicación.


    II. Estructuras de datos lineales.

    4. Cadenas. Especificación, implementaciones, aplicaciones.
    5. Listas. Especificación, implementaciones, aplicaciones.
    6. Pilas. Especificación, implementaciones, aplicaciones.
    7. Colas. Especificación, implementaciones, aplicaciones.


    III. Estructuras no lineales.


    8. Arboles. Especificación, implementaciones, aplicaciones.
    9. Gráficas y digráficas. Especificación, implementaciones, aplicaciones. 10. Conjuntos y bolsas. Especificación, implementaciones, aplicaciones.
    11. Diccionarios y colas con prioridad. Especificación, implementaciones, aplicaciones.
    12. Poniendo todo junto para resolver un problema real.
    13. Comparación de distintos algoritmos para búsquedas y ordenamientos.

Evaluación

La evaluación del curso es por los programas de las estructuras de datos que se van entregando (alrededor de 6 tareas) que equivalen al 50% de la calificación.

30% por el proyecto final en que se deberá decidir las estructuras a usar para resolver un problema.

El promedio de los dos exámenes sobre conceptos generales de las estructuras de datos, dará el 20% de la calificación.

Bibliografía.

Texto:

Sahni Sartaj Data Structures, Algorithms, and Applications in Java. Mc Graw Hill Higher Education 2000.

Main Michael Data Structures & Other Objects using Java Addison Wesley 1999

Rowe Glenn W. An Introduction to Data Structures and Algorithms with Java Prentice Hall 1998

Waite Mitchell, Robert Lafore Data Structures and Algorithms in Java Waite Group Press 1998

Bailey Duane A. Java Structures: Data Structures in Java for the principled Programmer Mc Graw Hill 1999

Libros sobre Java:


Savitch Walter JAVA An Introduction to Computer Science & Programming Prentice Hall 1999

Naughton Patrick Java 2: The complete reference Mc Graw Hill 1999

Flanagan David, Java en pocas palabras 2ª Edición McGraw Hill O’Reilly 1999