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.