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
- Concepto
- Principio de Inducción Completa (P.I.C.)
- 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 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
- Concepto
- Principio de Inducción Completa (P.I.C.)
- 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.
- Introducción
1.1 Definición de algoritmo
1.2 Historia de los algoritmos
- 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
- 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
- Introducción
- 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
9. Programacion en C++ como si estuviera en primero versión 2004
http://www4.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/cpp/basico/cppbasico.pdf
UNIDAD II: Análisis de algoritmos
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
|
Descripción
|
Tipo Eval.
|
Temas
|
Calific.
|
1er Parcial
|
En máquina
|
I
|
35%
|
2do Parcial
|
Escrito
|
II
|
30%
|
3er Parcial
|
Proyecto
|
III
|
35%
|
9. Programacion en C++ como si estuviera en primero versión 2004
http://www4.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/cpp/basico/cppbasico.pdf