Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1303
II Semestre 1999
[<=] [home] [<>] [\/] [=>]
CI-1303 Organización de Lenguajes de Programación

Tareas Programadas Cortas

      Periódicamente, los estudiantes, en grupos de dos personas, deben entregar una tarea corta, que consiste en implementar dos algoritmos. El pseudo-código de la implementación estará disponible en Internet, o en alguno de los dos libros de texto del curso:

Aho, Alfred V.; Hopcroft, John E.; Ullman, Jefrrey D.
"Data Structures and Algorithms"; Addisson Wesley Publishing Co.; 1984.
Horowitz, E.; Sahni, S.
"Fundamentals of Data Structures"; Computer Science Press; 1982.

      Los estudiantes trabajarán en parejas para que implementen, cada algoritmo, en dos lenguajes diferentes. Siempre deben incluir una implementación C++, pero el segundo lenguaje puede ser cualquiera (Pascal, Eiffel, Visual Basic, xBase, Power Builder, Perl, C-Shell: ¡lo que sea!).

      Aunque dos compañeros pueden trabajar juntos en varias tareas, no pueden hacerlo en más de cuatro. Tampoco puede un estudiante hacer todas sus tareas en un sólo lenguaje, pues es importante que cada uno haga aproximadamente la mitad de los trabajos en C++, y la otra mitad en algún otro lenguaje.

      La lista de las tareas programadas a realizar es la siguiente:

[24-ago-1999]
LinearSearch()
BinarySearch()
[3-set-1999]
BubbleSort()
SelectionSort()
InsertionSort()
[28-oct-1999]
QuickSort()
SelectionSort()
MergeSort()

      Una vez implementados los algoritmos, cada estudiante debe hacer el análisis teórico de su implementación, y debe medir el rendimiento del algoritmos usando muchas corridas de prueba. A fin de cuentas, cada equipo de dos estudiantes debe producir un reporte HTML, que también debe entregar impreso, que contenga la comparación de las pruebas de corrida del algoritmo, escritas en los dos lenguajes. Para comparar los tiempos de corrida se puede usar el reloj interno del computador, usando una clase simila a la clase SFCtimer.pas disponible en:
      http://www.di-mare.com/adolfo/binder/pas/SFCtimer.pas

      La comparación del rendimiento de varios algoritmos debe hacerse cuidadosamente pues de lo contrario se pueden presentar problemas de medición. Por eso, al desarrollar este proyecto, se debe usar una buena metodología. A fin de cuentas, los estudiante deben entregar un reporte de investigación que contenga, al menos, los siguientes puntos:

  1. Implementación de los algoritmos a comparar.
  2. Análisis teórico de los algoritmos a comparar.
  3. Justificación del tipo de comparación a realizar.
  4. Escogencia del tipo de generador de números aleatorios a usar.
  5. Justificación e implementación de los algoritmos de comparación a usar en las pruebas.
  6. Definición del ambiente computacional en que se corrieron las pruebas.
  7. Definición de los tipos de datos a usados en las prueba. Los más comunes son enteros de 32 bits, números de punto flotante de 32 y 64 bits, e hileras de longitud corta (2,4,8 caracteres) y larga (128, 256), etc.
  8. Definición del tamaño de la muestra a usar en cada prueba.
  9. Cuadros y gráficos comparativos de desempeño.
  10. Análisis e interpretación de los resultados.

Puede usar como paradigma el trabajo desarrollado en el Capítulo 8 de la siguiente investigación:
Di Mare, Adolfo
Reutilización de Contenedores Parametrizables con Lenguajes de Semántica Limitada, Tesis de Doctorado, Universidad Autónoma de Centro América. 1999.
      http://www.di-mare.com/adolfo/binder

      El reporte de investigación debe ser entregado en clase, impreso. Además, también debe enviar todo el material a los asistentes del curso por correo electrónico. Para esto, haga un archivo empacado .zip cuyo nombre sea su número de carnet. Incluya en ese archivo lo siguiente:

  1. Un documento en formato HTML que describa el trabajo que realizó. Incluya el nombre del compilador que usó.
  2. El código fuente de su programa.
  3. El código ejecutable de su programa.

      Después de la fecha de entrega del programa, puede usted instalar en su cuenta personal su solución (no instale antes su solución en Internet, pues en ese caso sería usted culpable de facilitar la copia de su trabajo, y en consecuencia se haría acreedor a la sanción respectiva).

      Las cuentas de computador en la ECCI se asignan de acuerdo al número de carnet. Por ejemplo, si su carnet es el número 95-28-09, para entregar su tarea usted debe crear el archivo 952809.zip para enviarlo por correo electrónico a los asistentes del curso. ños

      Luego haga en su cuenta personal un subdirectorio llamado public_html, que es bajo el que se instalan todas sus páginas Internet. Por ejemplo, si su solución está en el archivo HTML llamado "OLP/t3sol952809.htm", entonces usted debe instalar esa página en el archivo
      public_html/OLP/t3sol952809.htm
de su cuenta. Luego, para acceder esa página Internet, debe entrar a este sitio:
      http://anubis.ecci.ucr.ac.cr/~e952809/OLP/t3sol952809.htm

      Como todas las cuentas de estudiante son la letra "e" seguida del número de carnet, para el estudiante de carnet "952809" la cuenta es "e952809". Para indicarle al servidor Internet a cuál cuenta entrar se usa el caracter "~" (Alt-126), seguido del nombre de la cuenta: "~e952809".

[mailto:] Marilyn Bolaños y Mario Tenorio

Soluciones

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