[UCR]
[/\]

Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática

CI-1101 Programación I

      En este documento están descritos los objetivos y requisitos definidos para el curso en el Plan de Estudios de la carrera. Cuando un profesor imparte el cursos define los contenidos específicos, la bibliografía, forma de evaluación y otros detalles. Las referencias a ese material están en este cuadro:

Año 1995
I Semestre
II Semestre
 
Año 1996
I Semestre
II Semestre
 
Año 1997
I Semestre
II Semestre
 
Año 1998
I Semestre
II Semestre
 
Año 1999
I Semestre
II Semestre
 
Año 2000
I Semestre
II Semestre
 
Año 2001
I Semestre
II Semestre
 
Año 2002
I Semestre
II Semestre
 
Año 2003
I Semestre
II Semestre
 
Año 2004
I Semestre
II Semestre
 
Año 2005
I Semestre
II Semestre
 
Año 2006
I Semestre
II Semestre
 
Año 2007
I Semestre
II Semestre
 
Año 2008
I Semestre
II Semestre
 
Año 2009
I Semestre
II Semestre
 
Año 2010
I Semestre
II Semestre
 
Año 2011
I Semestre
II Semestre
 
Año 2012
I Semestre
II Semestre
 
Año 2013
I Semestre
II Semestre
 
Año 2014
I Semestre
II Semestre
 
 

 

REQUISITOS

CI-1010 Introducción a Computación e Informática Horas: 4
Créditos: 4

 

OBJETIVO

      Proveer al estudiante la formación básica en programación para su adecuado desempeño en los cursos subsiguientes del área de programación, fomentando en el estudiante habilidades generales para la resolución de problemas de programación.

 

OBJETIVOS ESPECIFICOS

      Al finalizar el curso, el estudiante será capaz de:

  1. Diseñar e implementar clases, algoritmos y estructuras de datos de poca complejidad con base en algún lenguaje de programación orientado a objetos.
  2. Estructurar los algoritmos por medio de jerarquías funcionales o procedimentales.
  3. Comprender y usar esquemas procedimentales básicos (de entrada y salida de datos, de bifurcación, de iteración y de recursión), en el diseño de algoritmos de poca complejidad.
  4. Comprender y usar esquemas de estructuras de datos básicos (tanto de memoria estática como de memoria dinámica) en el diseño de algoritmos de poca complejidad.
  5. Comprender y usar esquemas de recursión en el diseño de algoritmos de poca complejidad.
  6. Comprender y usar un grupo pequeño de clases contenedoras (constituido al menos por arreglos, listas, pilas, colas y árboles binarios ordenados) en el diseño de algoritmos de poca complejidad.
  7. Usar con fluidez un ambiente de programación para la elaboración de programas y para su depuración. El ambiente deberá soportar tanto la programación procedimental como la programación por objetos.
  8. Comprender y aplicar esquemas básicos de documentación interna y externa de programas.

 

CONTENIDOS

  1. Nociones básicas de sistema operativo, arquitectura de un computador, lenguaje de programación, algoritmo.
  2. Conceptualización y definición de clases, atributos de clases, instancias de clases, tipos y variables.
  3. Entrada y salida de datos.
  4. Estructuras básicas de control: secuenciación, bifurcación, iteración.
  5. Conceptualización e implementación de métodos por medio de funciones (sin parámetros, con parámetros de valor, con parámetros de referencia).
  6. Distintos tipos de módulos: procedimiento, función, clase, programa, unidad (es decir, un conjunto de procedimientos o funciones y estructuras de datos).
  7. Estructuras de datos basadas en arreglos.
  8. Estructura de una clase: parte pública, parte privada, constructores y destructores.
  9. Funciones recursivas tales como: factorial, Fibbonacci, multiplicación de enteros, potencia de dos números, máximo común divisor de dos números, Torres de Hanoi; además, recorrido, inserción y borrado sobre árboles binarios,
  10. Esquemas genéricos de algoritmos de ordenamiento básicos, tales como: burbuja, selección e inserción. Idealmente, la implementación de estos algoritmos debería estudiarse en el contexto de arreglos básicos, así como de la clase lista.
  11. Algoritmos de búsqueda secuencial y búsqueda binaria.
  12. Diferencia entre memoria estática y memoria dinámica.
  13. Funcionalidad de clases contenedoras básicas: arreglos (unidimensionales y multidimensionales), lista, pila, cola, conjunto, árbol binario ordenado.
  14. Implantación de clases contenedoras básicas: arreglo, lista, pila, cola, conjunto y árbol binario ordenado.

 

CONTENIDOS ADICIONALES

  1. Nociones preliminares de herencia, polimorfismo, clases abstractas, funciones virtuales, abstracción, encapsulamiento y ocultamiento de información.

BIBLIOGRAFIA

Capper, D.M.
"C++ for Scientists, Engineers and Mathematicians"; Springer-Verlag; 1996.
Ceballos, Francisco J.
"Programación Orientada a objetos con C++"; Addison-wesley Iberoamericana; 1993.
Eckel, B.
"Using C++"; Mc-Graw Hill; 1994.
Deitel, H.M.; Deitel, P.J.
"Cómo programar en C/C++, segunda edición", Prentice-Hall, 1994.
      ftp://ftp.prenhall.com/pub/deitel/C++_HTP/C++HTP2e/c++htp2e_examples.zip
Deitel, H.M.; Deitel, P.J.
"C++ How to Program, Third Edition", ISBN-0-13-089571-7, Prentice-Hall, 2000.
      http://www.deitel.com/
      http://deitelandassociates.com/oldsite/books/2000/cpphtp3/cpphtp3_examples.zip
Heileman, Gregory
"Estructuras de Datos, Algoritmos y Programación Orientada a Objetos"; Mc-Graw Hill; 1998.
Ladd, S. R.
"Components and Algorithms"; M & T; 1994.
Stauggard, Andrew Jr.
"Técnicas estructuradas y orientadas a objetos"; Prentice-Hall; 1998.
Sedgewick, Robert
"Algoritmos en C++"; Addison-Wesley; 1995
Stroustrup, Bjarne
"El lenguaje de programación C++ (2nda edición)"; Addison-Wesley Pub. Comp.; 1993.
Stroustrup, Bjarne
"The C++ programming language (3rd ed)"; Addison-Wesley; 1998.
Algún manual del ambiente de programación que se use

MATERIAL DE REFERENCIA

[DiM-88]           Di Mare, Adolfo: Convenciones de Programación para Pascal, Reporte Técnico ECCI­01­88, Proyecto 326­86­053, Escuela de Ciencias de la Computación e Informática, Universidad de Costa Rica, 1988.
      http://www.di-mare.com/adolfo/p/convpas.htm


[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2000
Derechos de autor reservados © 2000
[home] <> [/\]