ESCUELA DE CIENCIAS DE LA                     CI-1201 PROGRAMACION II
COMPUTACION E INFORMATICA                      Prof. Alan Calderón C.
UNIVERSIDAD DE COSTA RICA                         II Semetre 1998

OBJETIVO GENERAL

	Desarrollar  en  el estudiante  sus habilidades  y su  interés 
personal  por  la  elaboración  sistemática,  diseño,  construcción  y 
afinamiento  de  algoritmos  y  programas,  haciendo  énfasis  en   la 
especificación, diseño e implementación de módulos reutilizables.

OBJETIVOS ESPECIFICOS

	Al finalizar el curso el estudiante será capaz de:

1.	Diseñar e implementar programas,  algoritmos y  estructuras de 
        datos de mediana complejidad  utilizando las  técnicas básicas 
        de programación modular de sistemas.
2.	Crear  programas  usando módulos  y componentes  reutilizables 
        usando los fundamentos teóricos de programación  procedimental 
        y programación por objetos.
3.	Programar  diferenciando  el  nivel  de  abstracción  y el  de 
        representación.
4.	Aplicar métodos para la prueba y depuración de módulos.
5.	Aplicar estándares de documentación interna y externa.

CONTENIDOS y METODOLOGIA

	En este curso se estudiarán métodos de trabajo  en equipo  que 
suponen  una  división  de  las  responsabilidades   en  términos   de 
programadores de aplicaciones y  programadores de  herramientas.  Bajo 
este contexto se analizarán los conceptos de abstracción  (de datos  y 
de  funciones)   y  de   encapsulamiento,  herencia,   polimorfismo  y 
composición entre clases. Se estudiarán métodos  de especificación  de 
clases y de funciones, así como  métodos de  verificación y  prueba de 
clases y de funciones.

	El curso se desarrollará en cuatro  etapas: 1)  apropiación de 
los  elementos  básicos  del  lenguaje  C++   (sin  los   aspectos  de 
programación orientada a objetos),  2) uso  y documentación  de clases 
contenedoras básicas (se estudiará la implementación  de pila,  lista, 
arreglo, bag, set, hashTable  y algún  tipo de  árbol balanceado),  3) 
diseño y derivación de una clase contenedora 4) prueba y depuración de 
una clase contenedora.

	En el ambiente de programación Borland  C++ 3.1  se estudiará: 
1)  el  uso  de  los  distintos  módulos  que  provee  el  ambiente de 
programación Borland C++ (archivos *.cpp, *.h,  projects, etc),  2) el 
uso de  las opciones  relevantes del  compilador, 3)  el manejo  de la 
memoria dinámica, 4) la derivación y la composición de clases,  5) así 
como los distintos tipos de polimorfismo y su uso.

EVALUACION

I	Participación.......  10%*
II	Examen Parcial...  20%	(24 de octubre de las 3 a las 6 de la tarde).
III	Examen Final......  25%	(En el periodo de exámenes finales).
IV	Tarea 1..............  10%
V	Tarea 2..............  10%
VI	Tarea 3..............  15%
VII	Tarea 4..............  10%

*NOTA: Se espera una participación activa  del estudiante  que refleje 
un compromiso real con su propio proceso de aprendizaje. Esta  nota de 
participación queda a criterio  del profesor  quien valorará  aspectos 
como:  1)  interés  evidenciado  (participación  en  clase, preguntas, 
consultas,  problemas  encontrados),  2)  entrega a  tiempo de  tareas 
programadas, 3) entrega de tareas cortas (que no tienen peso  asignado 
en la nota), 4) cumplimiento oportuno  de responsabilidades  dentro de 
los equipos de trabajo.

BIBLIOGRAFIA

1) Ceballos,  Francisco  J.  Curso  de Programación  C++ (Programación 
   Orientada   a   Objetos)   Addison-wesley   Iberoamericana.:  1993. 
   Altamente recomendado por tratar a fondo  el lenguaje  así como  la 
   implementación de clases contenedoras complejas.
2) libro de Nancy  Coghi. Muy  recomendable pues  trata a  profundidad 
   aspectos de  estructuras de  datos usando  el lenguaje  C++.  Tiene 
   utilidad en el curso siguiente, CI-1303 Estructuras de datos.
3) libro de prentice. Útil como introducción al lenguaje C++.
4) libro de Deitel. Útil como introducción al lenguaje C++.
5) Joyanes  Aguilar,   Luis.   Borland   C++  (Manual   de  Bolsillo). 
   McGraw-Hill.:1993. Es un manual de referencia bastante útil.
6) Stroustrup, Bjarne.  El lenguaje de programación C++ (2nda edición) 
   Addison-Wesley Pub. Comp.:1993. Excelente  libro escrito  por quien 
   diseñó el lenguaje C++, pero está  dirigido a  personas con  cierto 
   conocimiento de C++.
7) Weiskamp, Keith et. al. Programación Orientada a Objetos con  Turbo 
   C++. Megabyte: 1993.