Programa Analítico

PROGRAMA ANALÍTICO DE ASIGNATURA

1. DATOS GENERALES

ASIGNATURA               : Programación II
PRE-REQUISITOS        : INF-120, MAT-103
SIGLA Y CODIGO         : INF-210
CURSO                          : Tercer Semestre
HORAS                          : 6
CREDITOS                     : 5
PROFESOR                    : Ing. Juan Carlos Contreras Villegas
REVISADO EN               : Agosto de 2013

2. JUSTIFICACIÓN
         La materia de programación II es un nexo entre las materias de Programación I y Estructuras de Datos I, pues complementa los conceptos de Programación orientada a objetos iniciados en Programación I e introduce los conceptos de Recursividad y Análisis de algoritmos que son la base fundamental para el diseño de estructuras de datos.

3. OBJETIVOS
3.1.  OBJETIVO GENERAL
Al finalizar el curso el estudiante será capaz de:
- Programar en pequeña escala aplicando los conceptos de programación orientada a objetos, realizando previamente un diagrama de clases que modela la aplicación.
-      Fomentar la participación del alumno en el desarrollo de trabajos en equipo.
-      Comparar, resolver y evaluar algoritmos desde el punto de vista de complejidad y costo asintótico, como también conocer las limitaciones de los mismos.
-  Aplicar técnicas de recursión para la solución de problemas algorítmicos.

3.2.  OBJETIVOS ESPECÍFICOS
 Al finalizar el curso el estudiante será capaz de:
-     Describir los conceptos que caracterizan al modelo OO.
-   Valorar en qué medida las técnicas OO favorecen la calidad del software, analizando sobre todo cómo facilitan la reutilización, extensibilidad, herencia y polimorfismo.
- Contrastar como diferentes lenguajes de programación OO (Delphi, C++,Java y Visual Basic) reflejan los conceptos del paradigma.
-      Modelar problemas con un diseño de diagramas de clases.
-      Utilizar correctamente la recursividad en el diseño de algoritmos.
-      Contrastar soluciones iterativas y recursivas.
-      Podrá comparar, resolver y evaluar algoritmos desde el punto de vista de complejidad y costo asintótico, como también conocer las limitaciones de los mismos.
-    Programar en C++, realizando aplicaciones propias en el ámbito de los contenidos.

4. CONTENIDO MÍNIMO
Fundamentos de algoritmia; Recursividad; Programación Orientada a objetos.

5. UNIDADES DEL PROGRAMA ANALÍTICO



UNIDAD I: Recursividad
Tiempo: 36 horas (6 semanas)
Objetivos
  • Recordar el concepto del principio de inducción completa como base para los algoritmos recursivos
  • Resolver algoritmos utilizando recursión
Contenido
  1. Concepto
  2. Principio de Inducción Completa (P.I.C.)
  3. Algoritmos recursivos usando el primer principio de inducción
3.1        Algoritmos con Números
3.2        Algoritmos con cadenas
3.3        Algoritmos con Vectores
3.4        Algoritmos con Matrices
4. Algoritmos recursivos usando el segundo principio de inducción.
4.1        Algoritmos con cadenas
4.2        Algoritmos con Vectores
4.3        Algoritmos con Matrices
4.4        Aplicaciones de algoritmos recursivos


UNIDAD II: Análisis de algoritmos
Tiempo: 36 horas (6 semanas)
Objetivos
  • Conocer los conceptos de análisis de algoritmos, tiempo y complejidad
  • Analizar algoritmos de complejidad lineal, cuadrática, logarítmica y n-logarítmica.
  1. Introducción
1.1  Definición de algoritmo
1.2  Historia de los algoritmos
  1. Cálculo de tiempo (T(n))
2.1 Conceptos
2.2 Algoritmos Constantes
2.3 Algoritmos Lineales
2.4 Algoritmos Cuadráticos
2.5 Algoritmos Logarítmicos
2.6 Algoritmos n-Logarítmicos
2.7 Algoritmos cúbicos
  1. Cálculo de complejidad ( O(n) )
3.1 Conceptos
3.2 Notación asintótica

UNIDAD III: Programación Orientada a Objetos Avanzada
Tiempo: 36 horas (6 semanas)
Objetivos
  • Construir un diagrama de clases aplicando los conceptos de programación orientada a objetos y diagrama de clases
  • Implementar en lenguaje C++ una aplicación pequeña a partir del diagrama de clases.
 Contenido
  1. Introducción
  2. Conceptos Básicos
2.1        Clases y Objetos
2.2        Atributos y Métodos
2.3        Ligadura estática y dinámica
2.4        Polimorfismo
2.5        Sobrecarga de métodos y operadores
2.6        Reescritura de métodos
3.   Diagrama de Clases
3.1        Conceptos
3.2        Relación de Herencia
§  Simple
§  Múltiple
3.3        Relación de Asociación
3.4        Relación de Agregación
3.5        Relación de Composición
3.6        Relación de Dependencia
4     Implementación a partir de un diagrama de clases
5     Proyecto.

6. METODOLOGÍA

Clase magistral
Clases de prácticas dirigidas en la que el estudiante es el principal protagonista
Trabajos de aplicación de tipo práctico y aplicativo

7. CRONOGRAMA

SEMANA
ACTIVIDAD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 Presentación de la materia




















 Unidad I, conceptos




















 Algoritmos con números




















 Algoritmos con cadenas




















 Algoritmos con vectores




















 Algoritmos con matrices




















 Unidad II, conceptos




















 Primera evaluación




















 Análisis de alg. Lineales




















 Análisis de alg. Cuadráticos




















 Análisis de alg. Logarít., n-logaritm.




















 Algoritmos recursivos




















 Unidad III, conceptos clase




















 Segunda evaluación




















 Implementación una clase, sobrecarga




















 Conceptos de diagrama de clases




















 Relaciones de herencia




















 Relaciones de Asociación




















 Relaciones de Agregación,Composición,Uso




















 Proyecto 1ra parte




















 Proyecto 2da parte




















 Examen recuperatorio




















 Entrega de notas finales





















8. SISTEMA DE EVALUACIÓN

         Evaluaciones teórico –práctico de acuerdo al reglamento de la carrera

EVALUACIÓN
Descripción
Tipo Eval.
Temas
Calific.
1er Parcial
En máquina
I
35%
2do Parcial
Escrito
II
30%
3er Parcial
Proyecto
III
35%

9. RECURSOS DIDÁCTICOS

Pizarrón acrílico
Marcadores
Proyector multimedia
Computador para los estudiantes
Internet

10.    BIBLIOGRAFÍA
1.   Eugenio Scalise, Rhadamés Carmona; “Análisis de algoritmos y complejidad”
2.   Instituto Nacional de Capacitación; “Manual de análisis y diseño de algoritmos”
3.   Brassard Bratley; “Fundamentos de Algoritmia”
4.   Baeza Yates ricardo; “Algoritmia”
5.   Pareja Flores Cristobal, Ojeda Aciego Manuel, Adeyro Quezada Ángel, Rossi Jimenez Carlos;  “Algoritmos y programación en Pascal”.
6.   Diego G. Ruiz;”C++ Programación Orientada a Objetos”; MP Ediciones
7.   Francisco Moreno; “Introducción a la OOP”; Editorial grupo EIDOS
8.   Javier García de Jalón, José Ignacio Rodríguez, José María Sarriegui, Alfonso Brazales; “Aprenda C++ Como si estuviera en primero”
9.   Ceballos Francisco Javier.; “Programación Orientada a Objetos con C++”, RAMA.
10.   García Molina, Montoya Dato, Fernández Alemán, Mojado Rosales; “Una Introducción a la programación, un enfoque algorítmico”

REFERENCIAS BIBLIOGRAFICAS EN LA WEB
1.   Blog de la materia
2.   Sobre el origen del principio de inducción matemática:
3.   Manual de análisis y diseño de algoritmos.
4.   Libros de programación
5.   Ejercicios de inducción sobre estructuras numéricas:
6.   Problemas sobre teoría de números:
7.   Mathematical Induction:
8.   Programacion en C++ como si estuviera en primero