horas de trabajo dirigido – htd: 48 horas de ... aguilar, luis. fundamentos de programación....

16
1. IDENTIFICACIÓN DE LA ASIGNATURA NOMBRE DE LA TECNOLOGIA: SISTEMAS NOMBRE DE LA ASIGNATURA: ESTRUCTURA DE DATOS AREA: ESPECÍFICA TECNOLÓGICA NIVEL: 3 CREDITOS: 3 HORAS DE TRABAJO DIRIGIDO – HTD: 48 HORAS DE TRABAJO AUTÓNOMO – HTA: 96 TOTAL HORAS – TH: 144 TOTAL SEMANAS TRIMESTRE: 8 2. PRESENTACIÓN Esta asignatura es uno de los pilares básicos en los programas académicos relacionados con las ciencias de la computación. Sus inicios coinciden con el nacimiento de la programación, cuando surgen los lenguajes estructurados como Pascal; pero ha sido en la década de los noventa cuando aparecen los conceptos clásicos de las estructuras de datos. La consolidación de las estructuras de datos ha tenido como finalidad la resolución de problemas de computador. Las soluciones que se construyen constan de algoritmos y medios para almacenar datos que faciliten la adecuada gestión de la información. Es en este sentido donde cobran importancia las colecciones de de datos, ya que los algoritmos operan mas fácilmente sobre ellos, que sobre datos sin ningún tipo de organización. El contenido del curso profundiza en las estructuras de datos más utilizados en programación para la representación de la información, desarrolla técnicas para el análisis y diseño de algoritmos y proporciona principios de programación para tipos de datos abstractos, lo cual constituye la base para los cursos del programa vinculados a las áreas de programación visual, programación orientada a objetos y bases de datos. Se utiliza el pseudocódigo como lenguaje para conseguir el formalismo en la resolución de problemas y C++, como mecanismo de descripción de los algoritmos en el computador. 3. JUSTIFICACION Dado que uno de los elementos diferenciadores de la Tecnología en Sistemas es el desarrollo de aplicaciones, esta asignatura se convierte en uno de los elementos primordiales de la tecnología, puesto que su estudio introduce en aspectos como el desarrollo modular de programas, que facilitan la construcción de grandes aplicaciones,

Upload: dinhphuc

Post on 28-Mar-2018

220 views

Category:

Documents


1 download

TRANSCRIPT

1. IDENTIFICACIÓN DE LA ASIGNATURA

NOMBRE DE LA TECNOLOGIA: SISTEMAS NOMBRE DE LA ASIGNATURA: ESTRUCTURA DE DATOS AREA: ESPECÍFICA TECNOLÓGICA NIVEL: 3 CREDITOS: 3 HORAS DE TRABAJO DIRIGIDO – HTD: 48 HORAS DE TRABAJO AUTÓNOMO – HTA: 96 TOTAL HORAS – TH: 144 TOTAL SEMANAS TRIMESTRE: 8

2. PRESENTACIÓN Esta asignatura es uno de los pilares básicos en los programas académicos relacionados con las ciencias de la computación. Sus inicios coinciden con el nacimiento de la programación, cuando surgen los lenguajes estructurados como Pascal; pero ha sido en la década de los noventa cuando aparecen los conceptos clásicos de las estructuras de datos. La consolidación de las estructuras de datos ha tenido como finalidad la resolución de problemas de computador. Las soluciones que se construyen constan de algoritmos y medios para almacenar datos que faciliten la adecuada gestión de la información. Es en este sentido donde cobran importancia las colecciones de de datos, ya que los algoritmos operan mas fácilmente sobre ellos, que sobre datos sin ningún tipo de organización. El contenido del curso profundiza en las estructuras de datos más utilizados en programación para la representación de la información, desarrolla técnicas para el análisis y diseño de algoritmos y proporciona principios de programación para tipos de datos abstractos, lo cual constituye la base para los cursos del programa vinculados a las áreas de programación visual, programación orientada a objetos y bases de datos. Se utiliza el pseudocódigo como lenguaje para conseguir el formalismo en la resolución de problemas y C++, como mecanismo de descripción de los algoritmos en el computador.

3. JUSTIFICACION Dado que uno de los elementos diferenciadores de la Tecnología en Sistemas es el desarrollo de aplicaciones, esta asignatura se convierte en uno de los elementos primordiales de la tecnología, puesto que su estudio introduce en aspectos como el desarrollo modular de programas, que facilitan la construcción de grandes aplicaciones,

gracias a principios como la abstracción, la comprensibilidad y la reutilización del software. Estos principios ofrecen las estrategias para alcanzar competencias en la introducción y descripción de las estructuras de datos que se encuentran en casi todos los programas de computador y conducen además a la construcción de bibliotecas de componentes de la programación orientada a objetos, de tanta actualidad en el mercado. Para cursar esta asignatura es recomendable conocimientos de informática y tener competencias en la resolución de problemas que requieren la utilización de condicionales, ciclos, arreglos unidimensionales y bidimensionales. Igualmente, el manejo de un lenguaje de programación estructurada como Java o C++, facilita que se alcancen los objetivos propuestos en el curso. La asignatura le aporta al plan de estudios las herramientas necesarias para abordar con éxito las materias de Sistemas Operacionales, análisis y diseño de sistemas I y II, y las líneas de énfasis actuales. Todas estas, indispensables en la consolidación de un profesional capaz de responder a las labores relacionadas con el análisis, diseño y desarrollo de software.

4. COMPETENCIAS 4.1 PARA EL DESARROLLO DEL CONOCER O COGNOSITIVAS Reconoce la importancia que tienen las estructuras de datos en los sistemas de

información.

Identifica los diferentes tipos abstractos de datos (TDA) y las operaciones que sobre ellos se pueden aplicar.

Define las ventajas de la programación modular en la solución de problemas complejos.

4.2 PARA EL DESARROLLO DEL HACER O PROCEDIMENTALES Diseña algoritmos utilizando tipos abstractos de datos. Efectúa procedimientos que garanticen eficiencia en la ejecución

Realiza algoritmos recursivos usando las estructuras de datos estudiadas.

Realiza diferentes operaciones sobre tipos de datos abstractos.

Utiliza el paradigma de la orientación a objetos en algoritmos con el propósito de abstraer datos y encapsular.

4.3 PARA EL DESARROLLO DEL SER, ACTITUDINALES Y DE CONVIVENCIA Demuestra comportamiento ético, tanto en lo personal, como profesional. Desarrolla habilidades para relacionarse con los demás y para el trabajo en equipo. Muestra un comportamiento adecuado en contextos específicos y/o en el medio en

que se desenvuelve.

5. OBJETO DE ESTUDIO La información que se procesa en un sistema de información es un conjunto de datos, que pueden ser simples o estructurados. Los datos simples son aquellos que ocupan sólo un localidad de memoria, mientras que los estructurados son un conjunto de casillas de memoria a las cuales hacemos referencia mediante un identificador único. Debido a que por lo general tenemos que tratar con conjuntos de datos, es necesario tratar con estructuras de datos adecuadas a cada necesidad. Las estructuras de datos son una colección de datos cuya organización se caracteriza por las funciones de acceso que se usan para almacenar y acceder a elementos individuales de datos. En ellas, es indispensable conocer la manera en que se colocan los elementos dentro de la estructura, pues esto afecta la forma de operar sobre ellos y la forma de acceder a cada elemento.

6. PROBLEMA Las estructuras de datos junto con otros componentes como las bases de datos y los lenguajes de programación, conforman una solución tecnológica integral dentro de un sistema de información. Cada una de estas estructuras tiene un una metodología, un fin y una manera definida de acceder a sus elementos. En la elección del tipo de datos abstractos TDA que se vaya a implementar se deben tener en cuanta aspectos como la memoria disponible, la complejidad del problema y la cantidad de datos a almacenar y gestionar. En esta decisión se debe evaluar también el proceso del negocio y el lenguaje en que se implementará. El desconocimiento de algunos de los aspectos mencionados puede hacer que todo el engranaje informático presente fallas en el acceso para almacenar y recuperar datos.

7. OBJETIVOS DE FORMACION 7.1 GENERAL Aplicar los conceptos relacionados las principales estructuras de datos, sus formas de representación, el uso de la memoria dinámica y las operaciones que se puedan realizar sobre ellas, en la selección de las técnicas algorítmicas mas adecuadas en resolución de problemas complejos teniendo en cuenta las necesidades y el contexto. 7.2 ESPECIFICOS Reconocer los tipos abstractos de datos como estructuras dinámicas que son la base

de muchas aplicaciones. Implementar y operar sobre los diferentes tipos abstractos de datos Aplicar la recursividad como herramienta de construcción de programas eficientes. identificar los conceptos básicos del diseño descendente de estructura de datos. Aplicar todos los conceptos adquiridos mediante resolución prácticas, en donde se

elija la representación más eficiente. Implementar las estructuras de datos utilizando el lenguaje de programación C++ o

Java y aplicando los principios de ocultación, abstracción y modularidad. Aplicar y adaptar las estructuras de datos a nuevos requisitos de operación y

representación de información.

8. CONTENIDO Se describen de forma general las unidades temáticas y sus contenidos.

Unidad No. 1 Tipos abstractos de datos 1. Abstracción 2. Tipos Abstractos de Datos - TAD 3. Punteros 4. Procedimientos con punteros Unidad No. 2 TAD Lista 1. Implementación de listas enlazadas 2. Operaciones de dirección: siguiente, anterior, último 3. Inserción y borrado de elementos de una lista 4. Recorrido de una lista 5. Listas doblemente enlazadas

6. Listas circulares 7. Listas doblemente enlazadas circulares

Unidad No. 3 TAD Pilas 1. Implementación de pilas como arreglos 2. Implementación de pilas mediante variables dinámicas 3. Notaciones prefija y postfija para la evaluación de expresiones aritméticas 4. Algoritmo para evaluar expresiones aritméticas

Unidad No. 4 TAD Colas 1. Implementación de colas como arreglos 2. Implementación de colas como listas 3. Bicolas 4. Colas de prioridades Unidad No. 5 Recursividad 1. Implementación de procedimientos recursivos 2. Algoritmos de vuelta atrás (backtraking)

9. ESTRATEGIAS 9.1 APRENDIZAJE EN EL TRABAJO PRESENCIAL La asignatura se desarrolla de acuerdo al programa establecido, teniendo la participación directa y comprometida de los estudiantes. Exposiciones magistrales sobre aspectos teóricos, los temas investigados y las lecturas recomendadas. Análisis de los principales tipos abstractos de datos básicos para la solución de problemas complejos. Plenarias sobre investigaciones relacionadas con la asignatura. Análisis de sistemas operativos existentes, de acuerdo a parámetros como calidad, seguridad, confiabilidad y rendimiento.

Prácticas sobre diseño e implementación de algoritmos utlizando los tipos abstractos de datos adecuados para un problema determinado. Trabajos y exposiciones sobre los avances y nuevas tecnologías que utilizan programación modular y orientada a objetos. Informes orales y escritos de todos los trabajos propuestos. 9.2 APRENDIZAJE EN EL TRABAJO AUTONOMO Informes de lectura sobre temas propuestos. Preparación de exposiciones de acuerdo a los temas desarrollados en clase. Desarrollo de aplicaciones usando tipos abstractos de datos. Consultas en bibliotecas e Internet sobre temas propuestos. 9.3 DE INVESTIGACIÓN FORMATIVA Informes de lectura, mapas conceptuales y mapas mentales sobre temas relacionados con las estructuras de datos. Prácticas y talleres que incentiven el trabajo en equipo, la investigación y la creatividad. Proyectos de aula, desarrollando el aprendizaje basado en proyectos, cuya finalidad es que el alumno se aplique los conceptos básicos de las estructuras de datos en diferentes contextos. Aprendizaje basado en problemas, en donde primero se presenta el problema, se identifican las necesidades de aprendizaje, se busca la información necesaria y finalmente se regresa al problema, para darle solución.

10. RECURSOS Para el desarrollo de la asignatura se necesita contar con los siguientes recursos: 10.1 ESPACIO Aula de clase Sala de cómputo Aula de multimedia Biblioteca

10.2 MEDIOS Equipos de cómputo Lenguajes de programación C++ ó Java Proyector de diapositivas (herramientas multimediales) Internet Tablero Documentos de apoyo sobre temas relacionados con la asignatura 10.3. TIEMPO El desarrollo de la asignatura se organiza por sesiones de 120 minutos presenciales semanales, equivalentes a 48 horas de trabajo presencial en el trimestre. Los alumnos tendrán 96 horas de trabajo independiente o autónomo.

11. DESARROLLO DE CONTENIDOS

Sesión Desarrollo de

contenidos por tema Objetivo de aprendizaje

Descripción de actividades según los ambientes de

aprendizaje **

HTP HTA Logros conceptual, procedimental y

actitudinal

Bibliografía y lecturas de apoyo

1, 2, 3

Abstracción Tipos Abstractos de Datos - TAD Punteros Procedimientos con punteros

Reconocer que son los tipos abstractos de datos (TDA) y los punteros que se utilizan en la construcción de procedimientos

Taller de repaso sobre arreglos. Clase magistral sobre generalidades de los TDA. Consulta sobre la importancia de los punteros en la implementación de TAD.

6 12 Define un TDA y valora su importancia en la resolución de problemas complejos. Utiliza adecuadamente el tipo de dato puntero en diferentes algoritmos.

Becerra Santamaría, César. Estructuras de datos en C++. 756 p Joyanes Aguilar, Luis. Fundamentos de Programación. 3. ed. Madrid : McGraw-Hill, 2003. 1004 p Schildt, Herbert. Fundamentos de Programación en Java 2 SantaFé de Bogotá: Osborne : McGraw-Hill, 2002. 589 p

4,5,6,7,8,9

Implementación de listas enlazadas Operaciones de dirección: siguiente, anterior, último Inserción y borrado de elementos de una lista Recorrido de una lista Listas doblemente enlazadas Listas circulares Listas doblemente enlazadas circulares

Desarrollar algoritmos que realicen operaciones de recorrido, inserción y borrado de elementos utilizando el TAD Lista.

Clase magistral sobre las operaciones del TAD Lista. Ejercicios sobre las operaciones de dirección. Ejercicios sobre inserción y borrado de elementos de una lista. Ejercicios de recorrido de una lista. Prueba escrita sobre el tema

12 24 Define un TAD Lista y valora su importancia dentro de las estructuras de datos. Aplica los conceptos sobre el TAD Lista en el recorrido de estas. Ejecuta operaciones de inserción y borrado de elementos de una lista. Valora la importancia del trabajo en grupo.

Becerra Santamaría, César. Estructuras de datos en C++. 756 p Joyanes Aguilar, Luis. Fundamentos de Programación. 3. ed. Madrid : McGraw-Hill, 2003. 1004 p Schildt, Herbert. Fundamentos de Programación en Java 2 SantaFé de Bogotá: Osborne : McGraw-Hill, 2002. 589 p

10,11,12,13,14,15

Implementación de pilas como arreglos Implementación de pilas mediante variables

Desarrollar algoritmos basados en Pilas y las aplica en las notaciones postfija y prefija para la

Clase magistral sobre las operaciones del TAD Pila. Clase magistral sobre la

12 24 Define un TAD Pila y valora su importancia dentro de las estructuras de datos. Aplica los conceptos

Becerra Santamaría, César. Estructuras de datos en C++. 756 p Joyanes Aguilar, Luis. Fundamentos

dinámicas Notaciones prefija y postfija para la evaluación de expresiones aritméticas Algoritmo para evaluar expresiones aritméticas

evaluación de expresiones aritméticas.

implementación de pilas Ejercicios sobre inserción y borrado de elementos de una lista. Ejercicios de recorrido de una pila. Implementación en un lenguaje de programación de notaciones que permitan evaluar expresiones aritméticas de acuerdo a su notación. Prueba escrita sobre el tema

sobre el TAD Pila en la implementación de notaciones que evalúen expresiones aritmeticas. Ejecuta operaciones de inserción y borrado de elementos de una lista. Valora la importancia del trabajo en grupo. Desarrolla habilidades para relacionarse con los demás

de Programación. 3. ed. Madrid : McGraw-Hill, 2003. 1004 p Schildt, Herbert. Fundamentos de Programación en Java 2 SantaFé de Bogotá: Osborne : McGraw-Hill, 2002. 589 p

16,17,18,19,20,21

Implementación de colas como arreglos Implementación de colas como

Desarrollar algoritmos utilizando los TAD Colas, ya sea como arreglos o como

Clase magistral sobre las operaciones del TAD Cola, de las bicolas y las colas de prioridades.

12 24 Define un TAD Cola y reconoce su importancia dentro de las estructuras de datos. Aplica los conceptos

Becerra Santamaría, César. Estructuras de datos en C++. 756 p Jo Ann Smith. C++

listas Bicolas Colas de prioridades

listas.

Ejercicios sobre la implementación de colas como arreglos y como listas. Taller sobre el recorrido, inserción y borrado de elementos de una cola. Implementación en un lenguaje de programación del TAD cola

sobre el TAD Cola en la implementación programas con estas. Ejecuta operaciones de inserción y borrado de elementos de una cola. Desarrolla habilidades para relacionarse con los demás

desarrollo de proyectos México: International Thomson, 2001. 234 p Joyanes Aguilar, Luis. Fundamentos de Programación. 3. ed. Madrid : McGraw-Hill, 2003. 1004 p Deitel, Harvey M. y Deitel, Paul J..Cómo Programar en Java 5. ed. México : Pearson Educación, 2004. 1325 p Schildt, Herbert. Fundamentos de Programación en Java 2 SantaFé de Bogotá: Osborne : McGraw-Hill, 2002. 589 p

22,23,24 Implementación de procedimientos recursivos Algoritmos de vuelta atrás (backtraking)

Desarrolla algoritmos Recursivos para mejorar la eficiencia de estos.

Investigación sobre Recursividad y Backtraking. Plenaria sobre casos en los que los procedimientos recursivos y de Vuelta atrás son los adecuados. Taller sobre el tema consultado. Implementación en un lenguaje de programación de algoritmos recursivos.

6 12 Aplica algoritmos recursivos en diferentes contextos. Reconoce los algoritmos de vuelta atrás como eficaz técnica en la resolución de problemas de optimización.

Becerra Santamaría, César. Estructuras de datos en C++. 756 p Jo Ann Smith. C++ desarrollo de proyectos México: International Thomson, 2001. 234 p Joyanes Aguilar, Luis. Fundamentos de Programación. 3. ed. Madrid : McGraw-Hill, 2003. 1004 p Deitel, Harvey M. y Deitel, Paul J..Cómo Programar en Java 5. ed. México : Pearson Educación, 2004. 1325 p

Schildt, Herbert. Fundamentos de Programación en Java 2 SantaFé de Bogotá: Osborne : McGraw-Hill, 2002. 589 p

12. EVALUACION 12.1 CRITERIOS La participación en el trabajo presencial, colaborativo y autónomo. La profundidad, la extensión y la pertinencia de la investigación formativa El cumplimiento en las entregas de las actividades propuestas. La calidad de las presentaciones de los trabajos e informes. La asistencia puntual a las sesiones presenciales Las pruebas escritas y orales. Cualquier otra actividad académica relacionada con la asignatura y que evidencie la profundización de los conocimientos, habilidades y competencias adquiridas 12.2 DE ACUERDO A LA PARTICIPACION Heteroevaluación: se propende por una evaluación continua del proceso de enseñanza y aprendizaje, en un ambiente de cordialidad y respeto. Se evalúa el desempeño de los roles del docente y de los alumnos, la pertinencia y la calidad temática, a través de indagaciones permanentes dentro de las sesiones presenciales. Coevaluación: es una actividad permanente que permite la evaluación del proceso de aprendizaje, que se realiza en las sesiones presenciales entre pares y que además proporciona un clima de trabajo agradable, conociendo y respetando las diferencias. Autoevaluación: se realiza una jornada de autoevaluación como reflexión académica que contribuye a apreciar el nivel de asimilación del aprendizaje propio del educado, desde las competencias del hacer, conocer y ser. 12.3 CUALITATIVA De acuerdo al reglamento estudiantil, se evalúa un 100% , conformado por cinco notas como mínimo.

13. BIBLIOGRAFÍA 13.1 BIBLIOGRAFIA BASICA Becerra Santamaría, César. Estructuras de datos en C++. 756 p Jo Ann Smith. C++ desarrollo de proyectos México: International Thomson, 2001. 234 p Joyanes Aguilar, Luis. Fundamentos de Programación. 3. ed. Madrid : McGraw-Hill, 2003. 1004 p

Deitel, Harvey M. y Deitel, Paul J..Cómo Programar en Java 5. ed. México : Pearson Educación, 2004. 1325 p Schildt, Herbert. Fundamentos de Programación en Java 2 SantaFé de Bogotá: Osborne : McGraw-Hill, 2002. 589 p 13.2 BIBLIOGRAFIA COMPLEMENTARIA http://www.itlp.edu.mx/publica/tutoriales/estru1/ . Tutorial de Estructura de Datos http://www.dei.inf.uc3m.es/docencia/p_s_ciclo/edii/ . Curso de Estructura de datos Aho Ullman, Hopcroft. Estructura de Datos y Algoritmos Allen Weiss, Mark. Estructura de datos y algoritmos Allen Weiss, Mark. Estructura de datos en Java Joyanes Aguilar, Luis y Zahonero Martínez, Ignacio. Estructura de Datos. Joyanes Aguilar, Luis y Zahonero Martínez, Ignacio. Estructura de Datos. Libro de problemas Kruse, Robert L. Estructura de datos y Diseño de Programas Langsam, Yedidyah y otros. Estructura de datos con C y C++ Lipschutz, Seymour. Estructura de Datos. Sedgewick, Robert. Algoritmos en C++ Villalobos, Jorge A. Diseño y Manejo de Estructuras de Datos en C. Wirth, Niklaus. Algoritmos y Estructura de Datos