1. UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
Facultad de Ingeniería de Sistemas Computacionales
Departamento de Computación y Simulación de Sistemas
PROGRAMA ANALÍTICO DE ASIGNATURA
I. DATOS GENERALES DE LA ASIGNATURA
1. Denominación de la Asignatura: Estructura de Datos I Código: 8362 Semestre: I
Año: II
2. Carrera: Licenciatura en Desarrollo de Software
3. Tipo de Asignatura: No Fundamental Prerequisitos: Desarrollo de Software I
4. Créditos: 4 Cantidad de Horas Teóricas: 3 Horas de Laboratorio: 2
5. Profesor Responsable de (la elaboración / actualización) del Programa: Ing.
Jacqueline de Ching
6. Fecha de Aprobación del Programa:
II. JUSTIFICACIÓN
El estudio de algunos fenómenos o problemas que se presentan en ciencias y otras
áreas, debe realizarse utilizando técnicas matemáticas que permitan representar
gráficamente estos fenómenos, de forma tal que sea más comprensible y manejable
su solución.
Las estructuras de datos son un conjunto de técnicas matemáticas gráficas, que
ayudan en gran medida a resolver una variedad de problemas en muchas de las
ciencias antes mencionadas, que de otra forma sería prácticamente imposible de
hacer. Lo más importante de todo esto, es la susceptibilidad de estas técnicas de
permitir su programación, resolviendo los problemas o fenómenos antes mencionados
a través del computador.
2. Por otro lado, las estructuras de datos son la base fundamental sobre la cual se
soportan otras estructuras más complejas, pero que agilizan la vida cotidiana de las
organizaciones, tal es el caso de las Bases de Datos.
El manejo eficiente de la información, con algoritmos adecuados y óptimos,
representa otro de los elementos básicos para todo profesional de la informática,
evitando con ello respuestas poco fiables a problemas y en períodos de tiempo no
aceptables.
Todo lo anterior, son razones más que suficientes para justificar el estudio profundo
de las estructuras de datos y del concepto de eficiencia algorítmica.
El curso de Estructura de Datos I, es una parte esencial en la formación del
estudiante de Ingeniería, en donde se abordan temas como los diferentes tipos
estructuras, que son necesarias en el diseño de un programa, y además el estudio de
la recursividad los cuales son necesarios para la solución de problemas por
computadoras.
El curso de Estructura de Datos I, es el primer curso en el cual se pretende que el
estudiante aprenda a manejar las estructuras de datos en su representación y
manejo. Todo ello, con el propósito de que logre implementar proyectos de casos
reales, cuya solución se obtiene utilizando estas técnicas.
III. DESCRIPCIÓN
El curso esta compuesto por los siguientes módulos: 1) Estructuras de Datos
Primitivas, 2)Estructuras de Datos Lineales, en la que se discuten las estructuras de
datos primitivas, simples y lineales en general, su representación y operaciones. 2)
Estructuras Dinámicas de Datos, el cual permite conocer las estructuras tipo
listas enlazadas y el concepto de recursividad.
3. Este curso está ubicado en el segundo semestre de la carrera de Licenciatura
en Desarrollo de Software con un total de 4 créditos. Adicional a esto, para
complementar todo el aspecto teórico es necesario el uso de un lenguaje de
programación orientado a objetos (C++ y Java) y del computador, sin los cuales el
curso perdería su efecto final en el estudiante.
IV. COMPETENCIAS
Básicas Genéricas
Competencia en comunicación
lingüística
Competencia en el conocimiento y
la interacción con el mundo físico
Tratamiento de la información y
competencia digital
Competencia para aprender a
aprender
Autonomía e iniciativa personal
Capacidad de análisis y
síntesis.
Conocimientos generales
básicos.
Solidez en los
conocimientos básicos de la
profesión.
Habilidades elementales en
informática.
Habilidades para recuperar
y analizar información
desde diferentes fuentes.
Resolución de problemas.
Toma de decisiones.
Capacidad de crítica y
autocrítica.
Trabajo en equipo.
Habilidades en las
relaciones interpersonales.
Habilidades para trabajar en
un equipo interdisciplinario.
Capacidad para aplicar la
teoría a la práctica.
Habilidades de
investigación.
Capacidad de aprender.
Capacidad de adaptación a
nuevas situaciones.
Técnicas
Demostrar conocimiento y comprensión de hechos esenciales,
conceptos, principios y teorías relativas a la informática y a sus
disciplinas de referencia.
Encontrar soluciones algorítmicas robustas y correctas a problemas,
comprendiendo la idoneidad y complejidad de las soluciones propuestas
y las restricciones de tiempo y coste.
Programar de forma robusta y correcta teniendo en cuenta restricciones.
4. Demostrar conocimiento y comprensión del funcionamiento interno de
un computador y del funcionamiento de las comunicaciones entre
ordenadores.
V. OBJETIVO GENERAL:
Analizar las diferentes estructuras de datos utilizables en el diseño de
programas.
Conocer las diferentes estructuras de datos lineales para la resolución de
algoritmos.
Analizar los procesos recursivos utilizables en el diseño de programas.
Aplicar los algoritmos adecuados de las diferentes estructuras de datos y
procesos recursivos que permitan la solución de un problema específico.
VI. METODOLOGÍA:
Clases magistrales expositivas, trabajos grupales, trabajos individuales,
investigaciones, sustentaciones en clase.
VII. CONTENIDO
I. ESTRUCTURA DE DATOS FUNDAMENTALES
1. Definición y conceptos básicos
2. Estructura de datos Primitivas.
2.1 Enteros
2.2 Reales
2.3 Caracteres
2.4 Booleanos
3. Estructuras de Datos Simples
3.1 Cadenas
3.2 Arreglos
3.2.1 Dimensiones
3.2.1.1 Unidimensionales
3.2.1.2 Bidimensionales
3.2.1.3 N-dimensionales
3.2.2 Algoritmos de
ordenamiento y su eficiencia
3.2.2.1 Selección
3.2.2.2 Inserción
3.2.2.3 Burbuja
5. 3.2.3.Algoritmos de búsqueda y su eficiencia
3.2.3.1.Secuencial
3.5 Registros
3.5.1 Implementación
3.6 Conjuntos
3.6.1 Implementación
I. ESTRUCTURA DE DATOS LINEALES
1. Introducción
2. Pila
2.1 Operaciones sobre pila
2.2 Implementación de pilas
2.2.1 Algoritmos
2.3 Ejemplos
3. Colas
3.1 Operaciones sobre cola
3.2 Implementación de cola
3.2.1 Algoritmos
3.3 Ejemplos
II. ESTRUCTURA DE DATOS DINÁMICAS LINEALES
1. Variables punteros
1.1 Asignación dinámica de memoria
1.2 Utilización de variables puntero
1.3 Ejemplos
2. Listas enlazadas
2.1 Introducción
2.2 Operaciones sobre una listas enlazadas
2.3 Implementación de una lista enlazada
2.4 Ejemplos
3. Listas enlazadas circulares
3.1 Algoritmos
4. Listas enlazadas circulares con
nodos cabeza
4.1 Algoritmos
5. Listas doblemente enlazadas
5.1 Algoritmos
5.2 Aplicaciones
IV. RECURSION
1.1 Algoritmos recursivos
2.1 Procedimientos recursivos
2.1.1 Ejemplos
6. VIII. EVALUACIÓN
Parciales (3): 35%
Semestral: 35%
Proyectos (3): 15%
Tareas, quices e investigaciones: 15%
VIII. BIBLIOGRAFÍA
1. Dale/Lilly Pascal y Estructura de Datos
McGraw-Hill
2. Tenenbaum/Augenstein Estructura de Datos utilizando Pascal
Prentice Hall
3. Wirth, Niklaus Algoritmos y Estructuras de Datos
Prentice-Hall
4. Lipschuts, Seymour Estructura de Datos - Teoría y Problemas
Mc-Graw Hill
5. Abellanas, Lodares Análisis de Algoritmos y Tecnología de Grafos
Macrobit
6. Grawley Pascal - Programación Estructurada
Prentice Hall
7. Cairo / Guardati Estructura de Datos
Mc Graw-Hill
8. Loomis, Mary E Estructura de Datos y Organización de Archivos
Prentice Hall
9. Aguilar, Luis Joyanes Fundamentos de Programación:
Mc Graw-Hill
Algoritmos y Estructura de Datos
10. Villalobos, Jorge Diseño y Manejo de Estructuras de Datos en C
Mc Graw-Hill
11. Aho / Hopcraft / Ullman Estructuras de Datos y Algoritmos
Addison-Wesley
12. Allen, Mark Estructuras de Datos y Algoritmos
Addison-Wesley
7. 13. Langsam / Augenstein /
Tenenbaum Estructuras de Datos con C y C++
Prentice may
14. Goodrich/Tamasia Estructura de Datos y Algoritmo en JAVA
CECSA