Unidad 1: Introducción                  
1- Complejidad Algorítmica   

1.1 Algoritmia     

1.1.1 Fases en el desarrollo de un algoritmo: 

1.1.2 Verificación y Análisis de Algoritmos    

1.2 Eficiencia de Algoritmos    

1.2.1 Tiempo de ejecución y uso de memoria       

1.2.2 Comportamiento asintótico  

1.2.3 Funciones de complejidad en tiempo más usuales 

1.2.4 Eficiencia versus claridad        

1.3 Elección de un Algoritmo

1.4 Problemas tratables e intratables     

2- Subalgoritmos o Subprogramas        

2.1 Funciones     

2.2 Procedimientos      

2.3 Ámbito: Variables Locales y Globales       

2.4 Comunicación con subprogramas: Paso de parámetros   

2.4.1 Paso por valor 

2.4.2 Paso por parámetro     

2.4.3 Síntesis de la transmisión de parámetros        

3- Recursividad 

3.1 ¿Cuándo no usar la recursión?     

3.2 Algoritmo Divide y Vencerás      

3.3 Algoritmo de vuelta atrás (Backtracking)        

3.4 Problema de la selección óptima          

3.5 Problema de los Matrimonios Estables       

4- Técnicas de diseño de algoritmos     

4.1 Algoritmos de fuerza bruta   

4.2 Algoritmos ávidos o voraces         

4.3 Divide y vencerás y Algoritmos con Retroceso (backtracking)        

4.4 Programación dinámica       

4.5 Algoritmos probabilistas          

Objetivos específicos:

Que los alumnos estén en condiciones de:

·         Evaluar la eficiencia de un algoritmo.

·         Diseñar los algoritmos en base a la técnica que conviene en cada caso.

·         Aplicar conocimientos adquiridos en materias anteriores.

Carga horaria:

Clases teóricas: 8 hs.

Clases Prácticas: 8 hs.

 

Contenidos:

Unidad II – TAD y Estructuras Lineales

1- Tipos Abstractos de Datos (TAD) y Diseño Orientado a Objetos        

1.1 Tipos de datos, estructuras de datos y tipos abstractos de datos

1.2 Especificación de TADs       

1.2.1 El TAD Conjunto.      

1.3 Principios del diseño Orientado a Objetos

   1.3.1 Abstracción

   1.3.2 Encapsulación

   1.3.3 Modularidad

1.4 Estructuras de Dato Dinámicas    

2- TAD Lista  

2.1 Especificación formal del TAD Lista     

2.1.1 Implementación del TAD Lista con estructuras estáticas      

2.1.2 Implementación del TAD Lista mediante variables dinámicas     

2.2 Listas Doblemente Enlazadas    

2.3 Lista Circular mediante variables dinámicas     

3- TAD Pila   

3.1 Especificación formal del TAD Pila       

3.1.1 Implementación del TAD Pila con arreglos  

3.1.2 Implementación del TAD Pila mediante variables dinámicas     

3.2 Aplicaciones de Pilas        

3.2.1 Llamada a subprogramas o procedimientos      

3.2.2 Recursión  

3.2.3 Evaluación de Expresiones Aritméticas mediante Pilas 

3.2.4 Ordenamiento        

4- TAD Cola

4.1 Especificación formal del TAD Cola      

4.1.1 Implementación del TAD Cola con arreglos lineales         

4.1.2 Implementación del TAD Cola con arreglos circulares      

4.1.3 Implementación del TAD Cola con listas enlazadas     

4.1.4 Implementación del TAD Cola con listas circulares

4.2 Colas de Prioridad           

Objetivos específicos:

Que los alumnos lleguen a:

·         Comprender la utilidad del uso de Tipos Abstractos de Datos.

·         Modelar TADs lineales mediante la definición y uso  de Clases en un lenguaje de programación Orientado a Objetos cualquiera.

·         Familiarizarse con su uso y aplicación en estructuras lineales.

·         Reafirmar conocimientos sobre listas enlazadas, pilas y colas.

·         Generar TAD propios para cada una de estas estructuras.

Carga horaria:

Clases teóricas: 6 hs.

Clases Prácticas: 21 hs.

 

Contenidos:

Unidad III - XML

1- Documentos XML

            1.1 Introducción: ¿Qué es XML?

            1.2 Anatomía de un documentos XML

            1.3 Sintaxis correcta y errada

            1.4 Estructura jerárquica de los elementos

            1.5 Cómo mostrar XML

2- Algunos usos

            2.1 SOAP

                        2.1.1 Introducción

                        2.1.2 Mensaje SOAP

            2.2 UDDI

                        2.2.1 Introducción

                        2.2.2 Características de UDDI

            2.3 WSDL

                        2.3.1 Introducción

                        2.3.2 Anatomía de la descripción de un servicio

                        2.3.3 Estructura de los documentos WSDL

Objetivos específicos:

Que los alumnos puedan:

·         Conocer el concepto y uso de XML.

·         Comprender su utilidad.

·         Usarlas.

Carga horaria:

Clases teóricas: 3 hs.

Clases Prácticas: 3 hs.

 

 

Contenidos:

Unidad IV - TAD Árbol

1- TAD Árbol

1.1   Implantación de Árboles N-arios

1.1.1 Transformar árboles n-arios a binarios  

1.2 Árboles Binarios        

1.2.1 Definiciones recursivas

1.2.2 Implementación de Árboles Binarios        

1.2.3 Recorrido de un árbol binario

1.2.3.1 Reconstrucción de árboles binarios a partir de dos de sus recorridos.

1.2.4 Árboles de Expresión

1.2.4.1 Construcción de un árbol de expresión

1.2.5 Árbol Binario de Búsqueda

1.2.5.1 Eficiencia de la búsqueda en un árbol binario          

1.2.6 Árboles Equilibrados (AVL)

1.2.6.1 Rotación Simple          

1.2.6.2 Rotación Doble

Objetivos específicos:

Que los alumnos puedan:

·         Manejar estructuras no lineales de árboles.

·         Comprender su utilidad.

·         Usarlas.

Carga horaria:

Clases teóricas: 3 hs.

Clases Prácticas: 12 hs.

 

Contenidos:

Unidad V – TAD Grafo

1- Conceptos y Definiciones relacionadas con grafos

2- Representación de los Grafos

2.1 Matriz de adyacencia        

2.2 Lista de Adyacencia   

3- Recorridos de un Grafo   

3.1 Recorrido en Anchura o Amplitud       

3.2 Recorrido en Profundidad   

4- Algoritmos fundamentales con Grafos    

4.1 Algoritmo de Dijkstra         

4.2 Algoritmo de Floyd

Objetivos específicos:

Que los alumnos logren:

·         Manipular estructuras no lineales de grafos.

·         Comprender su utilidad.

·         Usarlas.

·         Comprender algoritmos de ruteo de redes de materias posteriores.

Carga horaria:

Clases teóricas: 8 hs.

Clases Prácticas: 15 hs.

 

Contenidos:

Unidad VI – Base de Datos

1- Concepto: Modelo de datos, esquema e instancia       

2- Arquitectura de un Sistema de Gestión de Base de Datos           

     2.1 Arquitectura en capas

     2.2 Independencia de Datos

3- Modelo de Datos           

4- Enfoques  

4.1 Relacional     

4.2 Jerárquico     

4.3 Red  

4.4 Orientada a Objetos        

Objetivos específicos:

Que los alumnos logren:

·         Adquirir los conocimientos básicos sobre base de datos, para dar soporte a materias relacionadas.

Carga horaria:

Clases teóricas: 3 hs.

Clases Prácticas: -

 

Contenidos:

Unidad VII – Almacenamiento de Registros y organización de ficheros primarios

1- Introducción

1.1   Jerarquías de memoria y almacenamiento primario

1.2   Almacenamiento de Base de Datos

   2- Dispositivos de almacenamiento secundario

   3- Acceso paralelo al disco mediante el uso de tecnologías RAID

   4- Almacenamiento intermedio de bloques

   5- Grabación de los registros de un fichero en disco

   6- Operaciones con ficheros

   7- Estructuras de índice para fichero

            7-1 Índices de un solo nivel

            7-2 Índices multinivel

            7-3 Índices multinivel dinámicos basados en Árboles B y B+

            7-4 Índices sobre claves múltiples

Objetivos específicos:

Que los alumnos:

·         Logren conocer y entender las estructuras de ficheros físicos y los métodos de acceso utilizados en los sistemas de base de datos.

Carga horaria:

Clases teóricas: 8 hs.

Clases Prácticas: -