Sie sind auf Seite 1von 11

GUÍA DE ESTUDIO DE LA ASIGNATURA

GRADO ESTRATEGIAS DE PROGRAMACIÓN Y ESTRUCTURAS DE


DATOS

Equipo docente: Julio Gonzalo Arroyo, José Ignacio Mayorga


Toledano, Fernando López Ostenero y Agustín Delgado Muñoz

2015-2016

GRADO EN INGENIERÍA INFORMÁTICA


GRADO EN TECNOLOGÍAS DE LA INFORMACIÓN

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA


Contenido
1. PLAN DE TRABAJO................................................................................................................................................3
2.- ORIENTACIONES PARA EL ESTUDIO DE LOS CONTENIDOS...................................................................6
2.1 UNIDAD DIDÁCTICA I: CONCEPTOS FUNDAMENTALES DE ALGORITMIA Y ESTRUCTURAS DE DATOS.....................6
2.1.1. Descripción detallada de los contenidos.....................................................................................................6
Tema 1: Estructuras de datos..............................................................................................6
Tema 2: Programación recursiva........................................................................................6
Tema 3: Análisis básico de algoritmos...............................................................................7
2.1.3. Resultados de aprendizaje asociados a los contenidos................................................................................7
2.1.4. Bibliografía básica y material complementario..........................................................................................7
2.2 UNIDAD DIDÁCTICA II: IMPLEMENTACIÓN DE ESTRUCTURAS DE DATOS...............................................................7
2.2.1. Descripción detallada de los contenidos.....................................................................................................7
Tema 4. Listas.....................................................................................................................7
Tema 5. Pilas y Colas.........................................................................................................8
Tema 6. Árboles..................................................................................................................8
Tema 7. Árboles binarios de búsqueda...............................................................................8
2.2.2. Resultados de aprendizaje asociados a los contenidos................................................................................8
2.2.3. Bibliografía básica y material complementario..........................................................................................8
2.3. CONTEXTUALIZACIÓN...........................................................................................................................................9
3.- ORIENTACIONES PARA LA REALIZACIÓN DEL PLAN DE ACTIVIDADES...........................................9
3.1 MEDIOS Y RECURSOS...........................................................................................................................................10
3.2. EVALUACIÓN.......................................................................................................................................................10
3.2.1. Realización de la práctica..........................................................................................................................10

ESTRATEGIAS DE PROGRAMACIÓN Y ESTRUCTURAS DE DATOS


2
1. PLAN DE TRABAJO
Esta es la segunda parte de la guía del curso para la asignatura “Estrategias de
Programación y Estructuras de Datos” perteneciente a los estudios de grado de la
UNED (grado en Informática y grado en Tecnologías de la Información). En ella se
detalla el plan de trabajo para la asignatura y se dan orientaciones para el estudio de
los contenidos y para la realización del plan de actividades.

Esta asignatura requiere un estudio metódico y continuado a lo largo del cuatrimestre.


Por ello es conveniente planificar las etapas de estudio desde el comienzo y dedicar
semanalmente el tiempo necesario; de lo contrario será difícil asimilar la asignatura y
adquirir la práctica necesaria para superar la asignatura (y, en particular, la práctica y el
examen presencial).

Recordamos (ver primera parte de la guía) que el objetivo de la asignatura es que el


estudiante adquiera la capacidad para usar estructuras de datos avanzadas para el
manejo de información en los programas informáticos, así como la capacidad para
pensar en soluciones recursivas a problemas de programación. También debe asimilar y
ser capaz de aplicar diversos algoritmos relacionados con las estructuras de datos
básicas, considerando la relación entre coste computacional y sencillez de cada
algoritmo para resolver un problema dado. Además de estos resultados específicos de
la asignatura, el estudiante profundiza aquí en el desarrollo de otras competencias de
los grados de informática, como resultados adicionales del aprendizaje: (i) saber utilizar
entornos de desarrollo y prueba de programas; y (ii) implementar soluciones a
problemas específicos mediante técnicas y herramientas de programación, planteando
correctamente las distintas fases para la construcción de un programa, desde el
planteamiento del problema hasta su programación.

La asignatura tiene asignados 6 créditos ECTS (European Credit Transfer System), de


los cuales cuatro son de teoría y dos de práctica. Un crédito equivale a 25 horas de
trabajo del estudiante; por tanto, se deberían dedicar aproximadamente unas 150 horas
de estudio y trabajo en total a lo largo de las trece semanas disponibles para el curso.

Los contenidos del curso están organizados en dos unidades didácticas: en la primera
se abordan los conceptos fundamentales de estrategias de programación y estructuras
de datos, y en la segunda se pasa de las estructuras de datos como nociones
abstractas a discutir sus posibles implementaciones. En el cuadro siguiente se muestra
el cronograma con las pautas adecuadas para que el estudiante medio, que comienza a
estudiar al principio del segundo cuatrimestre, alcance los objetivos del curso. Este
cronograma incluye los contenidos y las actividades previstas para cada tema.

ESTRATEGIAS DE PROGRAMACIÓN Y ESTRUCTURAS DE DATOS


3
CONTENIDOS PLAN DE ACTIVIDADES

UNIDAD DIDÁCTICA I:
Conceptos fundamentales de algoritmia y estructuras de datos
(6 SEMANAS)
TEMA 1: Estructuras de Datos básicas (Semanas 1-2)
1. Leer detenidamente el capítulo 6 del
1. Concepto de estructura de datos. texto base de la asignatura, a excepción de
2. Pilas los apartados 6.7, 6.8, 6.9 y 6.10.
3. Colas. 2. Leer los apartados 6.8 y 6.9, así como la
introducción del apartado 6.7 del texto base
4. Listas enlazadas de la asignatura para ampliar conocimientos.
5. Árboles generales 3. Leer detenidamente los apartados
6. Árboles binarios de búsqueda 18.1.1, 18.2 y 19.1.1 del texto base de la
asignatura.

TEMA 2: Programación Recursiva (Semanas 3-4)


1. Recursión: concepto. 1. Estudiar el capítulo 7 del texto base de
la asignatura, a excepción de los
2. Fundamentos matemáticos
apartados 7.5, 7.6 y 7.7.
3. Recursión básica
2. Realizar los ejercicios correspondientes
4. Aplicaciones numéricas propuestos para ese capítulo.

TEMA 3: Análisis básico de algoritmos (Semanas 5-6)


1. Análisis básico de algoritmos: concepto y
ejemplos. 1. Estudiar el capítulo 5 del texto base de
la asignatura
2. Eficiencia y coste asintótico: reglas
generales para la notación O(). 2. Estudiar el material adicional sobre
cálculo de la eficiencia y resolución de
3. Reglas prácticas para el cálculo de la recurrencias disponible en el entorno virtual
eficiencia y resolución de recurrencias. de la asignatura.
4. Aplicación a problemas de búsqueda 3. Realizar los ejercicios propuestos en
estática. ese capítulo.
5. Comprobación del análisis de un algoritmo 4. Comenzar el trabajo con la práctica de
y limitaciones del análisis de coste la asignatura.
asintótico.

ESTRATEGIAS DE PROGRAMACIÓN Y ESTRUCTURAS DE DATOS


4
CONTENIDOS PLAN DE ACTIVIDADES

UNIDAD DIDÁCTICA II:


Implementación de estructuras de datos
(7 SEMANAS)
TEMA 4: Listas (Semana 7)
1. Estudiar los apartados 17.1 y 17.2 del
capítulo 17 del texto base.
2. Leer los apartados 17.3 y 17.4 del
capítulo 17 del texto base de la asignatura
1. Ideas básicas
para ampliar conocimientos.
2. Implementación en Java
3. Realizar los ejercicios sugeridos en ese
capítulo.
4. Continuar el trabajo con la práctica de la
asignatura.

TEMA 5: Pilas y colas (Semana 8)


1. Estudiar los apartados 16.1 a 16.3 del
capítulo 16 del texto base.
2. Leer el apartado 16.5 del capítulo 16 del
1. Implementación estática con vectores texto base de la asignatura para ampliar
2. Implementaciones dinámica con listas conocimientos.
3. Comparación de ambos métodos 3. Realizar los ejercicios sugeridos en ese
capítulo.
4. Continuar el trabajo con la práctica de la
asignatura.

TEMA 6: Árboles (Semanas 9 y 10)

1. Árboles generales 1. Estudiar el capítulo 18 del texto base.


2. Árboles binarios 2. Realizar los ejercicios sugeridos en ese
capítulo.
3. Árboles y recursión
3. Continuar el trabajo con la práctica de la
4. Recorrido de árboles asignatura.

TEMA 7: Árboles binarios de búsqueda (Semanas 11 a 13)


1. Estudiar los apartados 19.1 a 19.4 del
capítulo 19 del texto base.
1. Ideas básicas 2. Leer la introducción de los apartados
2. Búsqueda por posición en el orden 19.5 y 19.6 del capítulo 19 del texto
base de la asignatura para ampliar
3. Análisis de las operaciones de los árboles
conocimientos.
binarios de búsqueda
3. Realizar los ejercicios sugeridos en ese
4. Árboles AVL
capítulo.
4. Finalización de la práctica.

ESTRATEGIAS DE PROGRAMACIÓN Y ESTRUCTURAS DE DATOS


5
2.- ORIENTACIONES PARA EL ESTUDIO DE LOS
CONTENIDOS
A continuación se incluyen algunas orientaciones para el estudio de los contenidos de
esta asignatura.

2.1 Unidad didáctica I: Conceptos fundamentales de algoritmia y


estructuras de datos

La primera unidad didáctica se estructura en tres temas. Se comienza introduciendo las


estructuras de datos básicas a un nivel conceptual, es decir, en términos de las
operaciones que se definen con independencia de cómo éstas se implementan. A
continuación se estudia la recursividad como estrategia básica en el diseño de
algoritmos y estructuras de datos. Finalmente se presenta el análisis básico de
algoritmos, que se centra en estudiar los recursos en espacio y tiempo de computación
que consume un algoritmo en función del tamaño del problema (es decir, de la entrada
del algoritmo).

2.1.1. Descripción detallada de los contenidos

Tema 1: Estructuras de datos.


Las estructuras de datos consisten en una representación adecuada de los datos, junto
con las operaciones que permite (agrupadas en tres familias: consulta, inserción y
borrado de datos). Normalmente, cuanto más restringidas son las operaciones
permitidas sobre una estructura de datos, más eficiente puede ser su implementación.
En este tema se estudiarán cinco de las estructuras de datos más comunes: listas,
pilas, colas, árboles y árboles binarios. Para cada una de estas estructuras de datos se
estudiará una interfaz Java que contenga el protocolo que debe ser implementado. El
objetivo es definirlas y tener una idea intuitiva de los problemas a los que se pueden
aplicar.

El estudio de implementaciones eficientes para las estructuras de datos presentadas no


se realizará, sin embargo, hasta la segunda unidad didáctica. El objetivo es mostrar que
la especificación de una estructura de datos, que describe su funcionalidad, es
independiente de la implementación.

Tema 2: Programación recursiva.


Los algoritmos y estructuras de datos definidos parcialmente en términos de sí mismos
se conocen como recursivos. La recursión es una herramienta conceptual muy potente
para diseñar y programar algoritmos. En este tema se estudia cómo funciona la
recursión, comenzando por sus bases matemáticas: el principio de inducción. A
continuación se estudian ejemplos de métodos recursivos simples, y se demuestra que
éstos generan respuestas correctas. Finalmente se verán aplicaciones numéricas de la
recursión que nos conducen a la implementación de un algoritmo de implementación.

ESTRATEGIAS DE PROGRAMACIÓN Y ESTRUCTURAS DE DATOS


6
Tema 3: Análisis básico de algoritmos.
Un algoritmo es un conjunto de pasos bien especificados para resolver un problema.
Una vez que se ha especificado un algoritmo para resolver un problema y se ha
comprobado su corrección, el siguiente paso es analizarlo, determinando la cantidad de
recursos que requerirá para su aplicación; en particular, cuanto espacio y cuanto tiempo
consumirá en función del tamaño del problema. En este tema se estudia cómo estimar
el tiempo mínimo necesario para ejecutar un algoritmo, un marco matemático que
describe de forma rigurosa el tiempo de ejecución de un algoritmo, y reglas prácticas
para su cálculo en diversas situaciones. Como estudio de caso se abordará el problema
de la búsqueda binaria.

2.1.3. Resultados de aprendizaje asociados a los contenidos

Tema 1: Comprender y saber aplicar algunas de las estructuras de datos más comunes
a cualquier problema algorítmico. Entender la diferencia entre la especificación de una
estructura de datos y sus posibles implementaciones.

Tema 2: Comprender y saber aplicar la noción de recursividad en el diseño de


algoritmos y estructuras de datos.

Tema 3: Entender en qué consiste el análisis de algoritmos, su potencial y sus


limitaciones, y ser capaz de analizar el coste asintótico temporal en caso peor de los
mismos.

2.1.4. Bibliografía básica y material complementario

El estudio de esta unidad se realiza fundamentalmente a través del texto base de la


asignatura (apartados indicados de los capítulos 6, 7 y 5 respectivamente).

2.2 Unidad didáctica II: Implementación de estructuras de datos

En la primera unidad didáctica se estudia las estructuras de datos más comunes a


través de su especificación, sin discutir sus posibles implementaciones. En esta
segunda unidad se discuten en detalle las implementaciones alternativas para la
mayoría de las estructuras estudiadas, y las ventajas e inconvenientes de cada una de
ellas.

2.2.1. Descripción detallada de los contenidos


Tema 4. Listas
En este tema se estudia cómo implementar las listas de forma que se permita la
consulta de cualquier elemento mediante una lista enlazada, cuáles son los algoritmos
generales para operaciones sobre listas enlazadas, cómo la clase iteradora proporciona
un mecanismo seguro para recorrer y acceder a las listas enlazadas. También se

ESTRATEGIAS DE PROGRAMACIÓN Y ESTRUCTURAS DE DATOS


7
enunciarán algunas variaciones sobre la estructura de datos lista, como las listas
enlazadas ordenadas, las listas doblemente enlazadas y las listas enlazadas circulares.

Tema 5. Pilas y Colas


Para las pilas y las colas (vistas en el primer tema) existen dos técnicas básicas de
conseguir operaciones (de consulta, borrado e inserción) con coste constante: la
primera consiste en almacenar los elementos de forma consecutiva empleando un
vector, y la segunda en almacenarlos de forma no contigua utilizando una lista
enlazada. En este tema se estudiarán ambas opciones tanto para pilas como para
colas, y se mostrará también la cola doble y cómo puede implementarse utilizando el
mecanismo de herencia propio de la programación orientada a objetos.

Tema 6. Árboles
El árbol es un tipo de grafo fundamental en programación: se usa para almacenar los
ficheros en sistemas operativos, en diseño de compiladores, procesamiento de textos y
en algoritmos de búsqueda. En este tema se estudia una definición de árbol general (y
una discusión sobre cómo se usa en un sistema de ficheros), se estudian los árboles
binarios (en los que ningún nodo puede tener más de dos hijos), y se aprende a
implementar las operaciones sobre árboles usando recursión. Finalmente se estudia
cómo recorrer un árbol de forma no recursiva.

Tema 7. Árboles binarios de búsqueda


Los árboles binarios de búsqueda son una opción alternativa a la lista enlazada que
permite operaciones de consulta más eficientes. El árbol binario de búsqueda es una
estructura de datos que se puede considerar como una extensión del algoritmo de
búsqueda binaria, y permite tanto inserciones como eliminaciones. En este tema se
estudia en qué consiste el árbol binario de búsqueda básico y cómo incluir búsquedas
por posición en el orden y se introduce un modo de reducir el coste en el caso peor (los
árboles AVL). Existen otras variaciones que pueden consultarse en el texto base para
ampliar conocimientos (los árboles rojinegros y los árboles AA).

2.2.2. Resultados de aprendizaje asociados a los contenidos

Al final de la asignatura el estudiante debe tener la capacidad para usar estructuras de


datos avanzadas para el manejo de información en los programas informáticos,
eligiendo por un lado la estructura de datos adecuada para cada problema y por otro
lado la implementación óptima en función del algoritmo elegido; para ello debe ser
capaz de realizar el análisis teórico del coste computacional de cada solución
alternativa, y de implementar y probar las soluciones más adecuadas.

2.2.3. Bibliografía básica y material complementario

El estudio de este módulo se realiza mediante el texto base y los ejercicios que en él se
proponen (apartados indicados de los capítulos 17, 16, 18 y 19 respectivamente).
Además, a través de la realización de la práctica se pondrá en juego y se consolidará lo
aprendido en la asignatura.

ESTRATEGIAS DE PROGRAMACIÓN Y ESTRUCTURAS DE DATOS


8
2.3. Contextualización

Esta asignatura se cursa inmediatamente después de Fundamentos de Programación


en los grados de Informática y Tecnologías de la Información. En ellas se han estudiado
tipos de datos básicos (booleanos, números, vectores, tuplas, registros, punteros, etc.)
y estrategias elementales de diseño algorítmico (en particular, iteración). La primera
unidad didáctica es una continuación natural de lo aprendido en Fundamentos de
programación, pasando a estudiar las estructuras de datos más comunes en algorítmica
y la recursión como la otra estrategia básica de desarrollo algorítmico.

La otra asignatura relacionada es Programación Orientada a Objetos, que se cursa


simultáneamente con Estrategias de Programación y Estructuras de Datos. En ella se
aprenden los conceptos de programación orientada a objetos a través del lenguaje
Java. Nótese que en esta primera unidad didáctica el trabajo de programación es
mínimo – la mayoría de los ejercicios consisten en trabajo teórico-práctico sobre los
conceptos asimilados en la asignatura --, pero en la segunda unidad didáctica sí se
realizará mucho trabajo de programación en Java. Aunque no será necesario conocer
todos los aspectos de la programación orientada a objetos, si lo será que los
estudiantes tengan una cierta fluidez en el manejo de entornos de programación en
Java. Por ello es más que conveniente que los estudiantes cursen ambas asignaturas
simultáneamente (o, en cualquier caso, que no cursen Programación Orientada a
Objetos con posterioridad a Estrategias de Programación y Estructuras de Datos).

Respecto al estudio de estructuras de datos, esta unidad tiene continuación en la


segunda unidad didáctica, en la que se pasa del concepto y especificación de las
estructuras a sus posibles implementaciones. Respecto al estudio de estrategias
algorítmicas, la continuación natural se encuentra en la asignatura de Programación y
Estructuras de Datos Avanzadas del primer cuatrimestre del segundo curso de grado:
en ella se estudiarán esquemas algorítmicos como divide y vencerás, el esquema voraz
o la exploración exhaustiva de grafos, que no se llegan a cubrirse en esta asignatura.

3.- ORIENTACIONES PARA LA REALIZACIÓN DEL PLAN DE


ACTIVIDADES
En todo momento los estudiantes pueden consultar con su tutor cualquier aspecto
metodológico, logístico o sobre el contenido de la asignatura a través del entorno virtual
de la misma (accesible a través del portal UNED, www.uned.es, en Campus UNED). En el
entorno se pueden también establecer discusiones con el resto de los estudiantes y
contactar con el equipo docente si fuera necesario.

ESTRATEGIAS DE PROGRAMACIÓN Y ESTRUCTURAS DE DATOS


9
Es conveniente acceder con frecuencia al entorno virtual de la asignatura, en el que
puede aparecer material adicional de apoyo durante el curso.

3.1 Medios y recursos

Los medios y recursos de los que dispone el estudiante están descritos en la primera
parte de la guía del curso (sección 11).

3.2. Evaluación

Se utilizarán dos formas de evaluación:

 Las prácticas (realizadas bajo la supervisión del tutor en el centro asociado)


serán evaluadas por el tutor y supondrán un 20% de la nota final. Es un requisito
imprescindible haberlas aprobado para poder superar la asignatura. Se requiere
que el estudiante asista, al menos, a una sesión presencial de tutoría relacionada
con la práctica.
 Una prueba presencial, de carácter teórico-práctico, que será evaluada por el
equipo docente de la asignatura, y supondrá un 80% de la nota final. El examen
podrá incluir preguntas sobre la práctica realizada, y debe obtenerse al menos un
4/10 para que promedie con la nota de prácticas.

3.2.1. Realización de la práctica

El trabajo del curso incluye la realización de una práctica obligatoria de programación.


El enunciado de la misma estará disponible tanto en el curso virtual de la asignatura
como en la página web en abierto, en el departamento de Lenguajes y Sistemas
Informáticos (www.lsi.uned.es).

En el centro asociado se organizarán una serie de sesiones de monitorización del


trabajo práctico; a las que es obligatorio asistir. En el momento de asistir a las sesiones
el estudiante debería haber dedicado ya un tiempo sustancial a reflexionar sobre el
enunciado de la práctica, de forma que pueda resolver tantas dudas como sea posible
con su tutor (nótese que la función principal de la práctica es formativa: está pensada
para formar a los estudiantes antes que para evaluarlos). Las fechas de las sesiones de
asistencia obligatoria y la fecha límite de entrega de prácticas se establecen en cada
centro asociado; los estudiantes deben ponerse en contacto con su centro asociado al
comenzar el cuatrimestre para conocer esas fechas, la forma de entrega (correo
electrónico, CD, etc.), la posibilidad de realizar sesiones especiales de tutoría de cara a
la convocatoria de Septiembre, etc.

Los programas deben compilar independientemente del entorno de edición que haya
sido usado; el estudiante debe especificar claramente los pasos a seguir para el
correcto funcionamiento de las aplicaciones generadas en las prácticas. De no

ESTRATEGIAS DE PROGRAMACIÓN Y ESTRUCTURAS DE DATOS


10
cumplirse este requisito, y en caso de no poder ejecutar una práctica, ésta se
considerará suspensa. Finalmente, cualquier copia en las prácticas dará lugar a un
suspenso para todo el curso académico.

ESTRATEGIAS DE PROGRAMACIÓN Y ESTRUCTURAS DE DATOS


11

Das könnte Ihnen auch gefallen