[UCR]
[/\]

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

CI-1402 Organización de Lenguajes de Programación

I Semestre 1998 Profesor Adolfo Di Mare

REQUISITOS

CI-1306 Horas: 4
CI-1302 Créditos: 4

OBJETIVO

      El objetivo del curso es estudiar los lenguajes de programación con el fin de:

OBJETIVOS ESPECIFICOS

      Al finalizar el curso el estudiante será capaz de:

CONTENIDOS

  1. Conceptos formales
  2. Ciclos
  3. Secuenciación
  4. Módulos
  5. Abstracción de procedimientos
  6. Registros de activación
  7. Recursividad
  8. Tipos y objetos
  9. Encapsulamiento de datos
  10. Ocultamiento de datos
  11. Constructores y destructores
  12. Sobrecarga de identificadores
  13. Sobrecarga de operadores
  14. Entrada y salida de datos
  15. Manipulación de hileras
  16. Excepciones
  1. Herencia
  2. Polimorfismo
  3. Parametrización
  4. Procesos
  5. Concurrencia
  6. Programación funcional
  7. Programación lógica
  8. Programación para bases de datos
  9. Interpretadores y compiladores
  10. Eficiencia y recolectores de basura
  11. Ambientes de programación
  12. Control de versiones
  13. Compilación separada
  14. Bibliotecas de programación
  15. Reutilización

METODOLOGIA

      En el curso se discute sobre las cualidades principales disponibles en los lenguajes de programación modernos. Por eso, y también para evitar discusiones puramente teóricas, los estudiantes programarán sus proyectos en los lenguajes C++, Perl, Ada y Java. Se hará énfasis en las cualidades de la biblioteca de plantillas STL, para C++. Como referencia se se usarán los lenguajes Pascal, Lisp, Prolog y Smalltalk.

      Para un curso posterior, el de construcción de compiladores por ejemplo, se deja el estudio histórico de la evolución de los lenguajes, el detalle de los conceptos teóricos que se requieren para especificar lenguajes, o los trucos que han sido desarrollados para implementar compiladores e interpretadores.

      Para complementar las clases magistrales, a lo largo del curso los estudiantes deberán desarrollar dos proyectos. El Primer proyecto consiste en implementar un programa que tome programas fuentes Turbo Pascal, y les de formato de acuerdo a las Convenciones de Programación discutidas en [DiM­88a]. Para este proyecto los estudiantes se organizarán en grupos de tres personas. El segundo proyecto consistirá en escribir un artículo de alrededor de 5,000 palabras, en parejas, sobre un tema relevante al curso. Los dos proyectos deben entregarse una semana antes de que termine el curso.

      Todos los trabajos deben entregarse en formato HTML, para se instalados en el sitio Internet del curso:
      http://www.ecci.ucr.ac.cr/~ci1402

LIBRO DE TEXTO

      Cada estudiante es responsable de adquirir sus libros. Algunos están disponibles en al biblioteca, otros pueden ser adquiridos en Internet, por ejemplo en http://www.amazon.com, y en algunos casos el profesor hará disponible el material para fotocopiar. Además, en el sitio Internet del curso habrá material adicional.


INDICE DE MATERIALES DEL CURSO

Exámenes
P#1  -  P#2
Final
Tareas
#1  -  #2
#3  -  #4
Artículos
#1  -  #2  -  #3  -  #4  -  #5  -  #6  -  #7
#8  -  #9  -  #10  -  #11  -  #12  -  #13
Otros
Proyecto
Quiz #1
Tareas
# 1: Transformación de un autómata no determinista
# 2: Programación de ciclos usando IF y WHILE
# 3: UPpas.pl: Palabras Reservadas para Pascal
# 4: Simulación de parametrización con herencia
Exámentes cortos
# 1 Convenciones de Programación [DiM­88a]
Proyectos
# 1: Programa para verificar Convenciones de Programación

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   20%      Proyecto #1   10%
Examen Parcial #2   20%      Artículo 10%
Examen Final   30%      Otros: 10%

LECTURAS OBLIGATORIAS

[Aus­97] Austern, Matthew H.: The SGI Standard Template Library, Dr. Dobb's Journal, No.268, pp [18­20, 22­24, 26­27, 90], Agosto 1997.
      http://www.sgi.com/Technology/STL/
[All­97a] Allison, Chuck: Error Handling with C++ Exceptions, Part 1, C/C++ User's Journal, Vol.15, No.11, pp [73­80], Noviembre 1997.
[All­97b] Allison, Chuck: Error Handling with C++ Exceptions Part 2, C/C++ User's Journal, Vol.15, No.12, pp [57­61, 63, 65­67], Diciembre 1997.
[Beh­96] Behrendsen, Tim: Better Nested for statements, We have mail, C/C++ User's Journal, Vol.14, No.11, pp [97­98], Noviembre 1996.
[Bel­96] Bell, James M.: Nested for Statements, C/C++ User's Journal, Vol.14, No.7, pp [47, 48], Julio 1996.
[Bet­95] Betz, Mark: Networking Objects with CORBA, Dr. Dobb's Journal, No.236, pp [18­20,22,25,26], Noviembre 1995.
[BM­85] Berry, R.E. & Meekings, B.A.E.: A Style Analysis of C Programs, Communications of the ACM, Vol.28 No.1, pp [80­87], Enero 1985.
[Bou­91] Boundy, David: A taxonomy of programmers, ACM SigSoft, Vol.16 No.4, pp [23­30], Octubre 1991.
[Bri­94] Brinch Hansen, Per: The Programming Language SuperPascal, Software Practice and Experience, Vol.25(5), pp [467­483], Mayo 1994.
[CW­85] Cardelli, Luca & Wegner, Peter: On Understanding Types, Data Abstraction, and Polymorphism, ACM Computing Surveys, Vol.17 No.4, pp [471­522], Diciembre 1985.
[DiM­88a] 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 (ECCI), Universidad de Costa Rica (UCR), 1988.
      http://www.di-mare.com/adolfo/p/convpas.htm
[DiM­94j] Di Mare, Adolfo: Manejo de excepciones en Turbo Pascal, Reporte Técnico ECCI­94­10 (Revisión 4), Proyecto 326­89­019, Escuela de Ciencias de la Computación e Informática (ECCI), Universidad de Costa Rica (UCR), 1994.
      http://www.di-mare.com/adolfo/adt/except.htm
[DiM­96b] Di Mare, Adolfo: Tres formas diferentes de explicar la recursividad; Revista Ingeniería, Facultad de Ingeniería, Universidad de Costa Rica, Volumen 6, Número 2, pp [31­44], 1996.
      http://www.di-mare.com/adolfo/p/recursol-ea-1.htm
[DiM­96d] Di Mare, Adolfo: Tipografía de artículos en Internet, Revista Ingeniería, Facultad de Ingeniería, Universidad de Costa Rica, Volumen 6, Número 2, pp [55­70], 1996.
      http://www.di-mare.com/adolfo/p/typeset0.htm.
[Din­92] Dinesh, T B: Extending Compound Assignments for C++, OOPS Messenger, Vol.3 No.1, pp [45­49], Enero 1992.
[Doe­97] Doe, Rodney B.: How to Leak Memory in C++, C/C++ User's Journal, Vol.15, No.3, pp [96­71]; Marzo 1996.
[Gon­91] González, Dean W.: "=" Considered Harmfull, Ada Letters, Vol.XI No.2, pp [56­59], Marzo/Abril 1991.
[HU­79] Hopcroft, John E. & Ullman, Jefrrey D.: Introduction to Automata Theory, Languages and Computation, Addisson-Wesley Publishing Co., ISBN 0-201-02988-X, pp [1­37, 46­54, 77­94], 1979.
[Lea­96] Leatherbarrow, Robin J.: Nested for Statements Revisited, C/C++ User's Journal, Vol.14, No.11, pp [57, 59, 60], Noviembre 1996.
[LG­86] Liskov, Barbara & Guttag, John: Abstraction and Specification in Program Development, McGraw-Hill, 1986.
[LS­98] Laird, Cameron & Soraiz, Kathryn: Get a Grip on Scripts, BYTE, Vol.23 No.6, pp [89, 90, 92, 94, 96], Junio 1998,
[Man­96a] Manning, Evan: Optimization Tip: Chop Out Neddless Roots, C/C++ User's Journal, Vol.14, No.12, pp 35, Diciembre 1996.
[Man­96b] Manning, Evan: Optimization Tip: Ordering of Nested Loops, C/C++ User's Journal, Vol.14, No.12, pp 25, Diciembre 1996.
[MDC­91] Morrison, P. & Dearle, A. & Connor, R. C. H. & Brown, A. L.: An Ad Hoc Approach to the Implementation of Polymorphism, ACM Transactions on Programming Languages and Systems, Vol.13 No.3, pp 342­371, Julio 1991.
[Mey­86] Meyer, Bertrand: Genericity vs Inheritance, OOPSLA'86 Conference Proceedings, pp [391­405], Portland, Oregon, 1986.
[ML­85] Marcotty, Michael & Ledgard, Henry F.: Programming Language Landscape Syntax, Semantics, and Implementation (second edition), Science Research Associates, INC., ISBN 0-574-21945-5, 1985.
[Ret­91] Rettig, Marc: Nobody Reads Documentation, Communications of the ACM, Vol.34 No.7, pp [19­24], Julio 1991.
[RL­98] Resendes, Robert & Laukien, Marc: Introduction to CORBA Distributed Objects, C/C++ User's Journal, Vol.16, No.4, pp [55­58, 60­66], Abril 1998.
[Sch­93] Schwartz, Randall L.: Learning Perl, O'Reilly & Associates, Inc. ISBN 1-56952-042-2, http://www.perl.com, 1994.
[Set­92] Sethi, Ravi: Lenguajes de Programación: conceptos y constructores, Addisson-Wesley Iberoamericana, ISBN 0­201­51858­9, 1992.
[Str­88a] Stroustrup, Bjarne: What is Object-Oriented Programming, IEEE Software, pp [10­20], Mayo 1988.
      http://www.research.att.com/~bs/papers.html
[Van­95] van Hoff, Arthur: Java and Internet Programming, Dr. Dobb's Journal, No.244, pp [56, 58, 60, 61, 101, 102], Agosto 1995.
[Wil­91] Wilkes, Maurice V.: Software and the Programmer, Communications of the ACM, Vol.34 No.5, pp [23­24], Mayo 1991.
[Sch­98] Williams, Jim: Detecting Memory Corruption with Dog Tags, C/C++ User's Journal, Vol.16, No.5, pp 51, Mayo 1998.
[Zig­95] Zigmond, Dan: Generic Programming and the C++ STL, Dr. Dobbs's Journal, No.233, pp [18­20, 22, 24, 96, 98­100], Agosto 1995.
[Zig­96a] Zigmond, Dan: STL Iterators, Dr. Dobbs's Journal, No.248, pp [24, 26­28, 30, 31, 84], Junio 1996.
[Zig­96b] Zigmond, Dan: STL Algorithms, Dr. Dobbs's Journal, No.250, pp [32, 34­36, 92­94], Agosto 1996.

OBRAS DE CONSULTA

[ADA­86] Ada Joint Program Office: The Rationale for the Design of the Ada Programming Language (1986), 1986.
      ftp://ajpo.sei.cmu.edu/public/rationale
[ADA­95] Ada 9X Project Office, The Rationale for the Design of the Ada Programming Language and Standard Libraries, 1995.
      ftp://ajpo.sei.cmu.edu/public/ada9x/mrtcomments/rm9x/v5.95
[BI­88] Borland International: Turbo Pascal version 5.5 Object Oriented Programming Guide, Borland International, California (U.S.A.), 1988.
[Mac­86] MacLennan, Bruce J.: Principles of Programming Languages: Design, Evaluation, and Implementation second edition, CBS College Publishing, ISBN 0-03-005163-0, 1986.
[Mus­98] Musser, David R.: The C++ Standard Template Library (Internet reference index), 1998.
      http://www.cs.rpi.edu/~musser/stl-book/
[Pra­97] Pratt, Terrence W.: Lenguajes de Programación: Diseño e implementación, 3ra edición, Prentice-Hall Hispanoamericana, ISBN 970­17­0046­5, 1997.
[Str­98] Stroustrup, Bjarne: The C++ Programming Language, 3rd edition, ISBN 0­201­88954­4; Addison-Wesley, 1998.
      http://www.research.att.com/~bs/papers.html
[STL­95] 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.

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