Sie sind auf Seite 1von 7

UNIVERSIDAD CAECE

DEPARTAMENTO DE SISTEMAS

PROGRAMA ALGORITMOS Y ESTRUCTURAS DE DATOS II


DE:
CODIGO DE LA CARRERA PLAN DE LA CODIGO
CARRERA ASIGNATURA

AO CUATRIMESTRE VIGENCIA

CARRERA: LICENCIATURA EN SISTEMAS

N DE RESOLUCIN MINISTERIAL N DE RESOLUCIN INTERNA

OBJETIVOS
Que los alumnos logren:

Profundizar en la separacin de la especificacin abstracta de tipos abstractos de datos


(TADs) respecto a la implementacin de los mismos.

Conocer nuevas estructuras de datos y combinadores para la especificacin e


implementacin de TADs de un alto nivel de abstraccin y complejidad de
implementacin.

Conocer todas las caractersticas del paradigma de programacin orientado a objetos, y


sus caractersticas de mantenibilidad y extensibilidad respecto al estilo de programacin
conocido hasta el momento.

Poder implementar TADs complejos en un lenguaje de programacin del paradigma de


orientacin a objetos, como el lenguaje de programacin Java, extendidos con el
concepto de orientacin a objetos.

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.

Unidad 3. Arboles binarios.

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 5. TADs de integracin.


Especificacin de TADs combinadores: Unit (tipo con un solo elemento), Maybe (con un
valor de un tipo dado, o bien con un valor nulo), Producto (producto cartesiano, similar
al registro) y Either -unin disjunta- (con o bien un valor de un tipo dado, o bien un valor
UNIVERSIDAD CAECE 3
de otro tipo dado) que se adicionan a los TAD de estructuras recursivas. Definicin de tipos
por equivalencia. Factorizacin y distribucin de tipos. Pasaje de la representacin de un
TAD especificado a partir de combinadores a un tipo de implementacin.
La importancia y representacin del concepto de estado interno de elementos de un TAD.
Operaciones que involucran cambios de estado interno. Estados y transiciones de estado.
Breve introduccin al concepto de mquina de estados.
Especificacin e implementacin de TADs de estructuras complejas (TADs de
integracin) que utilicen las estructuras conocidas combinadas (listas, pilas, colas, rboles
binarios, grafos u otros TADs) con sus operaciones, y tipos estructurados o TADs
combinadores.

Unidad 6. Conceptos elementales de la programacin orientada a objetos.


Problemtica de la representacin de TADs. El TAD combinador Either contra el
concepto de mantenibibilidad y extensibilidad. Naturaleza de la programacin orientada a
objetos. Beneficios. Mantenibilidad y extensibilidad. El concepto de clase y objeto, y su
mapeo a la realidad. Atributos. Mtodos. El polimorfismo en la programacin orientada a
objetos. Beneficios respecto al monomorfismo. Herencia (simple y mltiple). Sobrecarga y
sobreescritura. La tipificacin en los lenguajes orientados a objetos. Tipificacin en las
asignaciones, pasajes de parmetros y retorno de mtodos. Type casting. Covarianza y
contravarianza. Binding dinmico de mtodos y su relacin con el polimorfismo.

Unidad 7. Conceptos bsicos del lenguaje Java.


Sintaxis bsica del lenguaje Java. Sintaxis de una clase. Tipos y clases. Tipos enumerados.
Atributos y mtodos. Calificadores de visibilidad (public y private) y su significado.
Variables. Asignaciones. Uso de System.out y System.in. Estructuras de control: bloques,
decisiones (if..then.., if..then..else.., switch), iteraciones (while, for). LLamados a
variables, atributos y mtodos. Ejemplos de una clase principal con el mtodo main. Los
tipos bsicos y sus operaciones. La clase String. Creacin de clases simples. Relaciones
(asociaciones) entre clases. Uso de varias clases. La clusula import y la estructura de los
paquetes en Java. El calificador de visibilidad package. Atributos y mtodos static. Uso de
constructores. El identificador this. Java y el garbage collector. La clase Math y sus
mtodos estticos. Clases wrappers. Clases internas (inner classes). Tipificacin bsica en
asignaciones, pasajes de parmetros y retornos de mtodos.
UNIVERSIDAD CAECE 4
Unidad 8. Herencia y polimorfismo.
La herencia y la sobrecarga/sobreescritura en la programacin orientada a objetos.
Subclases. La clusula extends. Verificacin de la herencia implcita de mtodos. El
calificador abstract (para clases y mtodos). Aplicacin de la sobrecarga y sobreescritura
de mtodos sobre mtodos comunes. Definicin de mtodos constructores. El calificador
de visibilidad protected. Uso de los identificadores this y super (tanto en mtodos
constructores como en no constructores). Definicin de objetos de subclases annimas
inline. El componente sintctico final. Tipificacin relacionada con la herencia, sobrecarga
y sobreescritura. Type casting. Tipificacin relacionada con parmetros y valores
retornados de mtodos sobrescritos.
Coercin. Los mtodos equals, toString, y compareTo.
Conceptos de polimorfismo paramtrico (generics) y su uso en el lenguaje Java. Uso de
variables de tipo. Variables de tipo con restricciones (extends y super). Tipificacin sobre
las clases con generics. Utilizacin de clases genricas. Creacin de clases genricas.
Colecciones en Java. La clase array con su sintaxis ([]). Operaciones sobre las colecciones.
Definicin y utilizacin de las colecciones (con y sin uso de generics). Subclasificacin de
colecciones (con y sin uso de generics). Uso de las clases ArrayList, TreeSet, TreeMap y
HashMap con sus mtodos. Tipificacin sobre arrays y colecciones.

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.

Unidad 10. Excepciones.


Definicin. Tratamiento y control de excepciones. El bloque try..catch.. Las excepciones
como clases. Las clases Throwable, Error, Exception y RuntimeException. Excepciones sin
obligatoriedad de tratamiento. Mtodos utilizados por la clase Exception: getMessage(),
UNIVERSIDAD CAECE 5
getStackTrace() y printStackTrace(). Tratamiento simultneo de mltiples tipos de
excepciones. Lanzamiento de una excepcin. La sentencia throw. La delegacin del
tratamiento de excepciones con la clusula throws en signaturas de mtodos. Lanzamiento
de mltiples excepciones. El bloque finally en el tratamiento de excepciones. Creacin de
excepciones. Relacin de las excepciones con la tipificacin.

Unidad 11. Conceptos elementales de la programacin orientada a eventos.


Estructura principal de un programa orientado a eventos. Trazas de ejecucin. Concepto de
eventos. Manejadores de eventos (event handlers). Relacin de eventos con observadores
(observers). Notificaciones. Insercin de cdigo orientado a eventos en un cdigo no
orientado a eventos. Implementacin de la orientacin a eventos en un lenguaje orientado a
objetos. Uso de interfaces y herencia en componentes orientados a eventos.

BIBLIOGRAFA OBLIGATORIA

Drozdek, Adam (2007). Estructura de datos y algoritmos en Java. Segunda edicin.


Mxico: Thompson.

Deitel, P. J. / Deitel, H. M. (2008). Java - Cmo programar. Sptima edicin. Pearson


Education.

Eckel, Bruce (2006). Thinking in Java. Forth edition. Prentice Hall.

BIBLIOGRAFA COMPLEMENTARIA

Rossel, Gerardo / Manna, Andrea (2010). Algoritmos, objetos y estructuras de datos.


Lulu.com.

Weiss, M. A. Data Structures and algorithm analysis in Java. Addison Wesley.

Roberts, Eric (1986). Thinking recursively. Wiley.

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]

Sommerville, Ian (2007). Software engineering. Addison Wesley. [captulo 10]

Bloch, Joshua (2008). Effective Java. Second edition. Sun Microsystems.

UNIVERSIDAD CAECE 6
Bracha, Gilad (2004). Generics in the Java programming language. (tutorial).

METODOLOGA

Clases terico-prcticas (en la primera mitad de la cursada en aula, y en la segunda mitad,


en laboratorio). Resolucin en pseudocdigo de una gua de trabajos prcticos (la primera
mitad de las prcticas) y en lenguaje Java (la segunda mitad). Seguimiento tutorial de un
trabajo prctico grupal desarrollados en lenguaje Java en el laboratorio de la Universidad.

EVALUACIN: APROBACION DEL CURSADO DE LA ASIGNATURA

Cumplimiento del 75% de asistencia a clase.

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-).

Aprobacin de un trabajo prctico grupal desarrollado en lenguaje Java (una entrega).

EVALUACION FINAL: REGIMEN DE APROBACION DE MATERIA

Examen final escrito terico individual.

UNIVERSIDAD CAECE 7

Das könnte Ihnen auch gefallen