[UCR]
[/\]

Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
[<=] [home] [<>] [\/] [=>

CI-1201 Programación II

I Semestre 1999 Profesor Adolfo Di Mare
Profesor Ricardo Villalón

REQUISITOS

CI-1101 Programación I Horas: 4
CI-1104 Estructuras Discretas I Créditos: 4

OBJETIVO

      Enfrentar al estudiante a problemas de programación de mediana complejidad como medio para justificar la necesidad de usar módulos reutilizables para contruir programas y sistemas.

CONTENIDO

  1. El lenguaje C++
  2. Programación orientada a los objetos
  3. Clases, parametrización, polimorfismo
  4. Memoria estática vs. memoria dinámica
  5. Contenedores básicos (lista, pila, cola, conjunto, árbol)
  6. Biblioteca STL para C++
  7. Compilación separada
  8. Programación por eventos
  9. Excepciones
  10. Ambientes de programación
  11. Diseño de programas
  12. Precondiciones y postcondiciones
  13. Depuración y prueba de programas

CONTENIDOS ESPECIFICOS

      El curso integra la teoría y la práctica. La teoría es relativamente fácil de digerir, y está bien explicada en los libros de texto. La parte práctica es más difícil de dominar, pues requiere de una exposición en carne viva a problemas reales.

      Como complemento a las prácticas, durante el curso se hará especial incapié en aplicar el concepto de abstracción, según está definido en [LG-86]. El curso consta de varios ingredientas altamente relacionados. Primero se exponen los conceptos de abstracción y especificación en el marco del lenguaje C++, y se discuten en el contexto de la programación por objetos. También se revisan algunas técnicas generales para depuración de programas. Durante todo el curso se estudian algunos tópicos básicos de estructuras de datos.

      Con el fin de introducir muchos de los algoritmos y estructuras de datos que serán usados en el curso siguiente (CI-1303 Estructuras de datos y análisis de algoritmos), en muchos casos las tareas cortas incluirán uso de listas, colas, pilas y árboles. Para esto en el curso se cubrirá el equivalente de los dos primeros capítulos de [AHU-84]. Durante el curso el estudiante trabajará en diversos proyectos para que logre fluidez en conceptos como punteros, uso de archivos, manejo de pantallas y ventanas, y recursividad. El estudiante conocerá las herramientas básicas del programador profesional. Se espera del estudiante un buen dominio del C++. Se hará especial énfasis en lograr que el estudiante domine los conceptos de abstracción y especificación, y se hará un extenso uso de herramientas diversas de programación.

      Las tareas escritas consistirán en "premios", esto es, asignaciones cortas que cada estudiante debe cumplir. Es obligación del estudiante el realizar todas las lecturas asignadas, y también entregar un resumen de una página por cada una de las lecturas. En la medida de lo posible, el profesor asignará una lectura o tarea corta en cada lección.

      Los estudiantes deberán hacer al menos un programa grande (de más de 1500 líneas), y durante todo el semestre tendrán asignaciones cortas programadas. Después de tomar el curso, cada estudiante sabrá como hacer la documentación de un programa.

      Este curso requerirá de un gran esfuerzo de programación. Al terminar el curso, el estudiante será capaz de a producir programas de alta calidad.

EVALUACION

      El peso de la evaluación estará en los exámenes, aunque es indispensable que todos los estudiantes realicen los proyectos.
Examen Parcial #1   15%      Tareas Programadas   30%      (Prof. Di Mare)
Examen Parcial #2   20%      Otros 5%  
Examen Final   30%           
 
Examen Parcial #1   20%      Tareas Programadas   25%      (Prof. Villalón)
Examen Parcial #2   20%      Quices y otros 15%  
Examen Parcial #3   20%           


INDICE DE MATERIALES DEL CURSO

Exámenes
P#1  -  P#2
Final
Tareas
#1  -  #2  -  #3  -  #4
#5  -  #6  -  #7
Tareas
# 1: Compilación de programas que usan STL
# 2: Traducción de un programa Pascal a C++
# 3: Traducción de una clase Pascal a C++
# 4: La Clase Lista
# 5: La Clase Polinomio
# 6: La Lista Parametrizable
# 7: Programación por eventos

LIBRO DE TEXTO

      La teoría del curso se tomará del libro [LG-86]. Es conveniente que cada estudiante tenga acceso al libro de Bjarne Stroustrup sobre C++ [Str­98], que es el lenguaje que se usar  como marco de referencia en todo el curso. Este libro tiene un costo de unos $ 45, y se puede conseguir en Internet. Cada estudiante es responsable de conseguir sus libros. Además, en el sitio Internet del curso habrá material adicional (como los FAQ's).

[AHU­84] Aho, Alfred V. & Hopcroft, John E. & Ullman, Jefrrey D.: Data Structures and Algorithms, Addisson-Wesley Publishing Co., 1984.
[LG­86] Liskov, Barbara & Guttag, John: Abstraction and Specification in Program Development, McGraw-Hill, 1986.
[Str­98] Stroustrup, Bjarne: The C++ Programming Language, 3rd edition, ISBN 0­201­88954­4; Addison-Wesley, 1998.
      http://www.research.att.com/~bs/3rd.html

Capítulo 1
Capítulo 2
Capítulo 3
    [C++]     Book Pool
Amazon
Barnes && Noble
Book Wire


C++: FAQ's y Links

BIBLIOGRAFIA

Aho, Alfred V.; Hopcroft, John E.; Ullman, Jefrrey D.
"Data Structures and Algorithms"; Addisson Wesley Publishing Co.; 1984.
Di Mare, Adolfo
"Convenciones de Programación para Pascal"; Reporte técnico ECCI-01-88; ECCI-UCR; 1988.
      http://www.di-mare.com/adolfo/p/convpas.htm
Di Mare, Adolfo
"Abstracción de Datos en Pascal" Reporte técnico PIBDC-01-89; ECCI-UCR; 1989.
Kernighan, Brian
"El lenguaje de programación C"; Prentice Hall; 1986.
Liskov, Barbara & Guttag, John
"Abstraction and Specification in Program Development"; McGraw-Hill; 1986.
Musser, David R.
"The C++ Standard Template Library" (Internet reference index), 1998.
      http://www.cs.rpi.edu/~musser/stl-book/
Myers, Glenford
"The Art of Software Testing"; John Wiley & Sons; 1978.
Nelson, Mark
"C++ Programmer's Guide to the Standard Template Library", IDG Books Worldwide, ISBN 1-56884-314-3, 1995.
Stepanov, Alexander & Lee, Meng
"The C++ Standard Template Library", Generic Programming Project, Hewlett Packard Research Labs, 1995.
      ftp://butler.hpl.hp.com/stl/stl.zip.
Stroustrup, Bjarne
"The C++ Programming Language"; 3rd edition; Addison-Wesley; 1998.

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>

[mailto:] Ricardo Villalón <ricardo@rhed.co.cr>
Copyright © 1999
Derechos de autor reservados © 1999
[home] <> [/\]