Beruflich Dokumente
Kultur Dokumente
DEPARTAMENTO DE SISTEMAS
AO CUATRIMESTRE VIGENCIA
OBJETIVOS
Que los alumnos logren:
PROGRANA ANALITICO
Unidad 1. Introduccin.
Lenguajes de programacin de tercera generacin. Programacin no estructurada y
estructurada. Programacin modular (procedimientos y funciones). Lenguajes tipados y no
tipados. Tipificacin fuerte/dbil, esttica/dinmica. Mapeo de la realidad a un programa
estructurado. El tratamiento de los datos por parte de un programa estructurado. Tipos de
variables. Tipos estructurados. Tipos definidos por el usuario. Variables estticas y
UNIVERSIDAD CAECE 1
dinmicas. Uso de punteros. El problema de la liberacin de memoria de variables
dinmicas. Abstraccin y encapsulamiento. Los TADs. Especificacin axiomtica
(funcional) e implementacin de TADs. Componentes de la especificacin axiomtica
(constructores, proyectores, otras operaciones y axiomas). Tipos de datos de
implementacin bsicos (enteros, booleanos, reales, caracteres, strings) y estructurados
(arreglos, registros y punteros). Introduccin a los tipos paramtricos. Manejo de tipos
variables en especificacin e implementacin (con o sin restricciones de existencia de
ciertas operaciones sobrecargadas). Operaciones de implementacin. Operaciones
constructoras y destructoras.
Unidad 2. Recursin.
Definicin y objetivo de la recursin. Relacin entre recursin e induccin matemtica.
Recursin sobre procedimientos y funciones. Diferencias y casos. Casos base y recursivo.
Definicin funcional de la recursin (axiomas), y su relacin con la recursin sobre
algoritmos (procedimientos y funciones imperativas). Recursin aplicada sobre estructuras
de datos bsicas (nmeros naturales como simples nmeros).
El concepto de orden bien fundado sobre la estructura (muy bsico e intuitivo) para
explicar la terminacin de un algoritmo recursivo (o definicin completa de una funcin
recursiva).
Implementacin de la recursin (explicacin de la pila de registros de activacin).
Recursin simple, doble (mutua). Recursin directa, indirecta. El concepto de
backtracking.
Estructuras de datos recursivas: nmeros naturales con la notacin de constructores
(constante cero y funcin sucesor), listas y otras similares.
Modularidad aplicada a la recursin. Definicin de especificaciones
axiomticas/algoritmos en funcin de otras especificaciones axiomticas/algoritmos.
Definiciones de especificaciones / implementaciones de TADs en funcin de otros TADs.
Recursin de pila (stack recursion), de cola (tail recursion). Comparaciones.
Cundo y cmo evitar la recursin. La recursin de cola como iteracin. Conversin de
recursin de cola a iteracin. Utilizacin de estructuras de pila/cola explcitas para evitar la
recursin.
UNIVERSIDAD CAECE 2
Idea bsica. Definicin del TAD. Definicin estructural recursiva funcional. Definicin
funcional (axiomtica) de operaciones sobre rboles binarios (recursivas de pila, recursivas
de cola-iterativas, iterativas con uso de estructuras de pila/cola explcita). Recorridos
depth-first (pre-order, in-order, post-order). Recorrido breadth-first. Insercin y borrado de
elementos. Otras operaciones.
Arboles binarios ordenados. Diferencias con los rboles binarios comunes. Diferencias
respecto al TAD anterior. La problemtica de la igualdad semntica (existentes en los TAD
donde un mismo elemento se puede representar de muchas formas -con uso de diferentes
constructores-). Insercin de elementos. Eliminacin de elementos (por fusin y por copia).
Implementacin de operaciones definidas axiomticamente.
Arboles n-arios. Operaciones de recorrida y otras operaciones elementales.
Explicacin de existencia de rboles balanceados (no se trabajarn).
Unidad 4. Grafos.
Definicin. Usos. Conceptos generales. Definicin del TAD. Grafos comunes.
Representacin de grafos con nodos adyacentes, matriz de adyacencia y matriz de
incidencia. Grafos orientados (dgrafos). Grafos completos. Grafos bipartitos. Grafos
bipartitos completos. Grafos con peso. Grado de un vrtice. Subgrafos. Caminos. Circuitos.
Caminos de longitud fija en grafos representados con la matriz de adyacencia. Recorrida de
grafos (depth-first y breadth-first). Obtencin de caminos de longitud ms corta (algoritmo
de Dijkstra, algoritmo de Ford, algoritmo de Prim).
Tcnicas de deteccin de ciclos. El concepto de rboles como grafos. Arboles generadores
o rboles de expansin. Obtencin de rboles generadores (algoritmo de Kruskal,
algoritmo de Dijkstra). Ordenamiento topolgico en digrafos -por precedencia de nodos-.
Grafos eulerianos. Obtencin de caminos eulerianos y semi eulerianos (algoritmo de
Fleury). Grafos hamiltonianos. Teorema de Ore. Aristas crossover. Algoritmo de deteccin
de caminos hamiltonianos. Coloreo. Algoritmo de coloreo secuencial. Introduccin a la
planaridad.
Unidad 9. Interfaces.
Definicin. Relacin de las interfaces con la herencia mltiple. Diferencias con la herencia.
Concepto de implementacin de interfaces por parte de clases. La clusula implements.
Implementacin de interfaces por parte de clases (con y sin uso de generics). Las interfaces
Comparable y Comparator. Las interfaces Iterator, List, Set y Map, y clases que las
implementan. Herencia de interfaces. Definicin de objetos de clases annimas inline que
implementan una interfaz. Tipificacin sobre el uso de interfaces e implementacin de
interfaces por parte de clases.
BIBLIOGRAFA OBLIGATORIA
BIBLIOGRAFA COMPLEMENTARIA
Okasaki, Chris (1998). Purely functional data structures. Cambridge University Press.
[captulos 2 y 3]
Abelson, Harold / Sussman, Gerald Jay / Sussman, Julie (1996). Structure and
implementation of computer programs. MIT Press. [captulos 1 y 2]
UNIVERSIDAD CAECE 6
Bracha, Gilad (2004). Generics in the Java programming language. (tutorial).
METODOLOGA
Aprobacin de dos exmenes parciales escritos (el primero en pseudocdigo escrito -de
las unidades 1 a 5-, y el segundo en lenguaje Java en mquina -de las unidades 6 a
11-).
UNIVERSIDAD CAECE 7