Computador para Aprender sobre el funcionamiento del Computador:
Curso de Sistemas Digitales para computación basado en un simulador

Alejandro Valerio Arvizu
Milton E. Villegas Lemus
avalerio@mimas.cic.itcr.ac.cr
mvilem@mimas.cic.itcr.ac.cr
(506)5528517

Resumen

Este artículo presenta un método para el desarrollo de un curso de sistemas digitales: un único proyecto utilizando un simulador. Se muestra una revisión histórica del proceso de incorporación del proyecto a un curso en principio teórico. Se describe brevemente cómo una herramienta de simulación puede utilizarse para montar un proyecto en un curso semestral indicando sus principales ventajas y los requisitos del simulador. Además se explica cuales son las características principales del proyecto y el impacto que tiene el proyecto en el proceso de enseñanza-aprendizaje.
 
 

Preliminares

Es habitual que en el programa de estudios de Ciencias de las Computación, Ingeniería en Computación, Informática o Ingeniería de Sistemas aparezca un curso de Sistemas Digitales. Generalmente, éste es correquisito o prerequisito de un curso programación en ensamblador y al curso de Redes de Computadores. Con esto, se pretende que el ingeniero en formación amplíe o complete un modelo de estudio del computador. Para un ingeniero en computación, este es el curso de nivel de máquina más bajo que se encontrará. De esta forma, se aprovechó este curso para experimentar que los estudiantes siguieran un enfoque sistémico a la solución de problemas mediante una herramienta de simulación. En general, el programa de Ingeniería en Computación de nuestra institución carece de materias con fase de experimentación. Generalmente se hace énfasis en la construcción y poco en el método. Cuando el estudiante se le enfrenta con un ambiente que desconoce, no se le incentiva una forma sistemática para conocerlo. Muchas veces se le obliga a centrarse en la obtención de un producto.
 
 

Objetivos
 

Los objetivos propuestos que se han perseguido al organizar un curso de sistemas digitales con un enfoque experimental son los siguientes:

· Fomentar una disciplina de trabajo en el estudiante.

· Aumentar la motivación del estudiante, en un curso cuyo desarrollo se trató en forma teórica en el pasado. Los estudiantes pueden llegar a implantar sus diseños funcionales sin que las variables electrónicas distraigan.

· Facilitar el aprendizaje de los diferentes conceptos por construcción o utilización de bloques básicos.

· Aumentar el espíritu de trabajo en grupos.

· Insertar la documentación como parte de la disciplina de trabajo en el desarrollo de un "proyecto experimental".

· Promover en el estudiante la habilidad de detectar y estudiar las variables importantes cuando se enfrenta a un nuevo paradigma.


Ubicación y características generales del curso
 

El curso de Sistemas Digitales: Arquitectura II está ubicado, dentro del plan de estudios, al final del segundo año y comienzo del tercero. Para ese nivel, el estudiante sabe programar, utiliza y es capaz de diseñar con estructuras de datos, organización de archivos y desenvolverse con lenguaje ensamblador. La asignatura es semestral y tiene una intensidad de 4 horas semanales: dos por sesión.
 


Algo de Historia: Los orígenes del proyecto
 

El proyecto tal y como se ejecuta actualmente sufrió una serie de cambios a lo largo del tiempo, producto de problemas ocurridos e ideas nuevas que se fueron incorporando progresivamente.

A continuación se describen las etapas para llegar a un esquema de curso basado en proyecto.

Algunas Prácticas (Etapa 1)

En el año 1991 se comenzaron a probar simuladores de circuitos digitales con ejercicios elaborados en lecciones. Se implantaron algunas soluciones propuestas en los libros guía para circuitos típicos como sumadores, multiplexores (mux), decodificadores y contadores.

De esta forma se asignó a los estudiantes la implantación de algunos circuitos típicos prediseñados en la literatura y el diseño e implantación de otros circuitos particulares sencillos como alarmas para diferentes dispositivos, convertidores de código etc. Para éstos últimos se buscaba que fueran fáciles de probar.

Por ser de propósito experimental, estos ejercicios cubrían un porcentaje de la nota de tareas y evaluaciones cortas del curso y no estaban plasmados explícitamente como un rubro aparte.

Esta estrategia de uso de simuladores permitió conocer los ambientes de simulación, tanto para el profesor como para el asistentes y los estudiantes.

Si algo salía mal, no estaba en juego gran porcentaje de la nota del curso. Esto permitió crear una cultura alrededor del software, es decir, conocer las fortalezas y debilidades, conocer algunas particularidades. El conocimiento generado producto de la realización de estas prácticas no quedó en un documento sino en la experiencia de los estudiantes. Este conocimiento se transmitió de generación en generación en forma verbal, en apuntes de clase o en los trabajos mismos.

Los simuladores usados en esta etapa fueron: "Capilano Logic Works" y "Koppie Von DigSim".

Proyecto al finalizar el curso (Etapa 2)

De varios ambientes de simulación estudiados, una vez establecidos los alcances y debilidades de cada uno, se seleccionó uno adecuado para soportar un proyecto de alguna envergadura (implantación de circuitos, mínimo dos niveles de encapsulamiento, manejo de múltiples líneas, compuertas básicas, opción de impresión y almacenamiento de circuitos).

En el año 1992 se realizó una implantación de circuitos de memoria de un computador de 6 bits, un teclado y la unidad de control. Se aumentó el porcentaje de la nota asignada al proyecto, por lo tanto, la especificación debía ser más detallada y estructurada. Se generó un documento escrito donde se describía las funciones de los circuitos, las líneas de entrada, las líneas de salida y las formas de prueba. El proyecto se presentaba al finalizar del periodo lectivo en una sola entrega. Un inconveniente importante es que requería de tiempo de laboratorio en una época crítica del semestre.

Proyecto a lo largo del curso (Etapa 3)

Se escogió un solo proyecto, con entregas parciales, para realizar a lo largo del curso. El proyecto debía integrar la mayor cantidad de conceptos que se estudiarían en el curso. La definición tenía más relevancia ya que la ponderación de la nota asignada al proyecto era alta. La especificación se les podía entregar por partes y su desarrollo debía ir en paralelo a la presentación temática del curso.

Con este nuevo esquema, los primeros trabajos planteados fueron bastante complejos. Las entregas parciales fueron siete. Se experimentó con trabajo en grupo de tres personas. Se observó la necesidad de aprovechar la experimentación y plasmarla en un documento que respalde la experimentación. Se le agregó la característica de formalidad propia de los informes de laboratorio.

Posteriormente, se trató de reducir la cantidad de circuitos a implantar, eliminando la redundancia. Se hizo énfasis en los conceptos básicos para los siguientes cursos, especialmente Arquitectura III (computación de alto desempeño).

También se escogió un nombre para las entregas parciales: "Experiencias", pues se trataba de hacer que el estudiante experimentara sistemáticamente y generara un documento que evalué su experimentación.

Hoy día, las experiencias forman parte de la cultura de la carrera. Hasta hoy son cuatro años de prueba, con resultados halagadores por parte de estudiantes y colegas.
 


El simulador: La herramienta del proyecto
 

El uso de simuladores ayuda al desarrollo de un proyecto de alta dificultad eliminando aquellas variables que no deseen estudiarse (ya sea por su alta complejidad o porque no son el objeto de estudio) y abstrayendo los detalles importantes de un modelo. Esto aplica al campo de arquitectura de computadores, compiladores, sistemas operativos, investigación de operaciones, etc.

Es por este motivo que el curso de Sistemas Digitales se ha incluido esta herramienta de trabajo. Los estudiantes no están a este punto habituados a trabajar con elementos electrónicos. Al tratarse de un curso de sistemas digitales, los proyectos no deben incluir, en la medida de lo posible, componentes típicos de la electrónica. Se está trabajando a un nivel de abstracción superior. Sin embargo, para poder plasmar soluciones tangibles a los problemas del curso debe poder construirse los circuitos de alguna manera.

El simulador garantiza que todos los conceptos de ese nivel de abstracción sean cubiertos sin entrar en detalles de implantación física de los elementos.

Siguiendo un proceso informal, más del estilo de selección natural, se ha elegido un ambiente de simulación para circuitos digitales que es funcional y que permite a los estudiantes trabajar cómodamente.

Las características que se ha logrado determinar son sumamente importantes que posea un simulador para montar un proyecto con un tamaño considerable son:

· Capacidad de encapsular: se desea tener en ocasiones "cajas negras" para formar bibliotecas de circuitos con algunas funciones específicas. Es sumamente importante mantener los conceptos de abstracción y modularidad. Es importante que puedan existir varios niveles de encapsulamiento.

· Etiquetar líneas para hacer seguimiento de señales: al igual que cuando se programa se desean tener maneras de revisar el valor de una variable, cuando se construyen circuitos digitales es importante verificar el valor de una línea en un momento dado. Esto ayuda al proceso de sincronización de señales.

· Manejo de buses: el simulador debe proveer la capacidad de manejar varias líneas en paralelo. Esto se debe a que es común tener que trazar varias líneas en paralelo de un punto a otro del circuito en construcción. Si no hay manejo de líneas en conjunto el proceso se vuelve sumamente tedioso y muy propenso a errores.

· Elementos prediseñados: siempre es importante contar con un conjunto de elementos prediseñados y construidos para simplificar un poco el trabajo de construcción de circuitos y no hacer toda el trabajo de "carpintería".

· Importación y exportación de circuitos: para poder hacer el proceso de documentación es importante tener opciones de impresión de los circuitos.

· Construcción de ROM's: Para algunos ejercicios es necesario construir elementos de memoria llamados ROM. Existen varias opciones para construirlos en la realidad. El simulador puede proveer las capacidades para emular su construcción.


Las características del proyecto
 

Al llegar a este curso el estudiante ha llevado asignaturas de estructuras de computadores básico y lenguaje ensamblador. El proyecto del curso de Arquitectura 2 (sistemas digitales) consiste en construir un computador sencillo completo. Se incluye Unidad Aritmético-Lógica, registros, buses, unidad de control, memoria principal y puertos de entrada-salida. Se separa el proyecto en varias entregas parciales denominadas "Experiencias".

Para desarrollar el curso de esta forma se requiere una inversión inicial alta por parte del profesor (en la especificación, análisis de viabilidad y consistencia del diseño). La especificación debe ser diferente semestre a semestre, ya que las bibliotecas de circuitos básicos se pueden heredar. La idea es que los estudiantes puedan heredar el algoritmo, pero no su implantación en circuito.

Uno de los mayores problemas es establecer la viabilidad del proyecto. Por razones de tiempo, las principales partes del proyecto no son implantadas por el profesor al momento de especificar. Es necesaria la experiencia del profesor y asistentes para realizar la evaluación de la complejidad del proyecto y también para asignar los tiempos de entrega. Generalmente, el tiempo oscila entre semana y media a tres semanas y media.

En la asignatura Arquitectura 2 se ha encontrado un proyecto que integra los conceptos fundamentales del curso, además puede desarrollarse en concordancia con la revisión de los temas, esto ayuda al estudiante a aplicar los conceptos y al final del semestre obtener un producto.

Un proyecto para desarrollar a lo largo de todo un curso es bueno, pues ayuda al profesor a estructurar mejor su curso y centrarlo más alrededor de un objetivo. Los proyectos desarrollados bajo este esquema deben tener una especificación que guíe a los estudiantes en la toma de decisiones de diseño y las partes especialmente difíciles deben definirse en forma muy precisa.

Un proyecto con entregas parciales ayuda al estudiante a distribuir mejor su trabajo en el tiempo. Debe incluirse en el diseño del proyecto "calibradores" que permitan modificar el trabajo semestre a semestre. Esto debido a los problemas de herencia mencionados anteriormente.

Generalmente cuando un proyecto es grande se divide en varias entregas parciales para aumentar la probabilidad de obtener un producto final satisfactorio. Además cada parte debe ajustarse a los conceptos cubiertos hasta ese momento.

Se debe definir bien la evaluación del proyecto. Cuando se producen ambigüedades en este aspecto, generan descontento entre los estudiantes y puede causar que los resultados no sean satisfactorios ni para el docente ni para el educando. La política sugerida es se paga (académicamente, otorgando puntos adicionales sobre la nota) cada tarea cumplida. Debe enseñarse que el trabajo no es gratis. Se está formando profesionales que no deben regalar su trabajo.

La forma de especificar el proyecto debe ser tal que no se imponga un diseño en particular (el del profesor) ni tampoco que sea tan abierto que se planteen soluciones o diseños complejos de implantar o tediosos de simular. Se debe eliminar la posibilidad de que el estudiante reduzca el diseño inicial propuesto tendiendo hacia el "facilismo" y no logre los objetivos cognoscitivos esperados. Pero también debe eliminarse la posibilidad que se presenten opciones de diseños irrealizables, tendientes hacia el "complicacionismo" propio de los diseños que consideran todas las posibilidades. Se diseñan para la media de los casos, no para todos.

Como parte de la definición del proyecto se incluye un documento llamado "Documento de Métodos y Técnicas" (ver Apéndice 1) con la descripción detallada de la documentación para cada entrega. Cada documento entregado debe ser técnicamente válido y de alta calidad. Este debe ser autocontenido y suficiente para respaldar las decisiones de diseño tomadas.
 


Ejecución del proceso: el proyecto en acción

Resolución de inconsistencias en la especificación

Normalmente, se deben incorporar modificaciones a última hora (parches), agregados en forma de elementos intermedios para lograr el funcionamiento deseado. Es importante: que los parches no superen un tamaño crítico. Esto es que no sean tan grandes que exijan una redefinición de toda la arquitectura. La definición del margen de modificación lo da la experiencia. La estructura de desarrollo del proyecto permite que los mismos estudiantes (siempre bajo supervisión) propongan la solución a algunas inconsistencias en la especificación. Las soluciones a estas inconsistencias deben ser documentadas según el procedimiento planteado en el documento de métodos y técnicas.

Los planteamientos de los estudiantes se convierten en banco de ideas para los futuros diseños.

Impacto del proyecto en los estudiantes

Algo interesante es que los estudiantes construyan y diseñen en otra área de la ingeniería, pero que aplican los mismos principios que han visto en informática. Se debe recordar que uno de los principios fundamentales de la ingeniería es la optimización.

Un factor observado a lo largo de estos años es el principio de paternidad de los diseños. En general, el estudiante prefiere sus propios diseños a los ajenos que ofrecen mejores posibilidades. Esto, aunado con los problemas de incorporar diseños de terceros cuyo comportamiento no es cien por cien garantizado provoca el efecto
 
 

"pequeño y feo pero es orgullosamente mi hijo".


Se debe abrir la posibilidad a la particularización del diseño y sobre todo hacer explícitas sus limitaciones.

No es del agrado de algunos estudiantes tomar decisiones de diseño debido a que pueden tener consecuencias adversas al final del proyecto. El estudiante estará orgulloso de su producto por el principio de paternidad. Esto da un estímulo adicional a los estudiantes, por lo general, un estudiante motivado por sus resultados del proyecto del curso, obtiene mejor desempeño en esa asignatura.

El proyecto exige disciplina de trabajo, si el estudiante no está habituado se le hace duro. Si no se realiza un trabajo continuo, el grupo se ve obligado a sacar el trabajo en poco tiempo lo que demanda sacrificio de noches de sueño. Se ha experimentado que se cumple la ley de Parkinson: "Un trabajo toma justo el tiempo necesario para desarrollarlo".

Otra exigencia del curso, es la distribución equitativa del trabajo. El trabajo está diseñado para ser desarrollado por dos personas. Si existe un desequilibrio una persona resiente la cantidad de trabajo y se puede ver en problemas para cumplir con la entrega parcial o final. Si un estudiante abandona el curso avanzado el semestre, su compañero de grupo generalmente se ve afectado para la siguiente entrega. Para solucionar este problema se propone el reagrupamiento o en última instancia una amnistía, válida para la siguiente entrega. La amnistía consiste en perder puntos hasta la etapa i, utilizar los productos exitosos de la etapa i de otros compañeros, para obtener y cumplir con los productos requeridos de la etapa i+1. La amnistía puede provocar distorsiones en la equidad con los compañeros.

El curso de sistemas digitales ya de por sí representa una forma distinta de resolver problemas que la mayoría de los programadores (a este punto los estudiantes lo son), ven desde el punto de vista algorítmico. Esto representa un cambio fuerte de paradigma. Es en este momento cuando el estudiante se ve en la necesidad de adaptarse. El profesional en computación está continuamente bombardeado por cambios en sus herramientas de trabajo y debe ser capaz de adaptarse a nuevas tecnologías. El proyecto inscribe al estudiante en un desarrollo complejo con un paradigma nuevo.

Es nuestra hipótesis que un proyecto con estas características obliga a que el estudiante identifique variables similares en dos sistemas homomorfos y realice abstracción de dichas variables. Esto da un buen valor agregado para el estudiante, pues en el futuro le ayudará a reconocer con mayor facilidad los puntos claves (o variables) cuando se enfrente con sistemas nuevos y además pueda aplicar estrategias de solución de sistemas ya conocidos.
 


Bajo la lupa: el proyecto en revisión
 

Las revisiones se hacen sobre entregas parciales de los circuitos diseñados, con circuitos de prueba montados y también con un documento que acompañe la entrega parcial.

Al verse obligado a defender su propuesta de diseño, el estudiante se convierte en un diseñador más diestro.

La copia de los elementos básicos es difícil de detectar, pero la de los diseños más complejos es relativamente fácil. Algunos elementos que facilitan la detección de copia es la impericia en la defensa del proyecto. Se ha observado que el principio de paternidad diminuye la tendencia a la copia.

La revisión del documento se hace en línea con el estudiante (defensa o sustentación). Esto presenta las siguientes ventajas:

· Oportunidad de enterarse de los principales problemas de implantación.

· Se pueden aclarar problemas de enfoque.

· Pueden aclararse dudas sobre el diseño final.

· El estudiante se siente más atendido pues el seguimiento del proyecto es personalizado.

· Se puede controlar a cada grupo en forma personalizada.


La documentación: el proyecto en blanco y negro

Una vez que se toman decisiones en ingeniería, se debe concluir y recomendar métodos, procesos, algoritmos, principios, software, hardware. La documentación es la forma de registrar los resultados para su posterior difusión.

Para este caso se desarrolló un folleto que ilustra con ejemplos la forma de especificar lo que se espera en cada acápite.

La estructura del documento exigido es la de un documento técnico ejecutivo: Conclusiones, Recomendaciones, Análisis de Resultados, Apéndices y Literatura Consultada.

En primer lugar se encuentran las conclusiones, porque en un documento para toma de decisiones, con base en las conclusiones técnicas es que se realizan las Recomendaciones. Este orden de la documentación facilita la revisión.

Estas Recomendaciones se expresan en términos de costo/beneficio de seguir cada recomendación.

El Análisis de Resultados contienen la información que fundamenta cada conclusión y cada recomendación.
 
 

Conclusiones

· Exige tiempo adicional del docente. Tanto para la especificación como para la evaluación.

· Exige disciplina de trabajo por parte de los estudiantes.

· Se logra una conceptualización completa de los términos.

· En el curso de Arquitectura 2 se ha encontrado un proyecto que reúne la mayoría de los conceptos teóricos del curso.

· En tener un proyecto que integra los conceptos de un curso ayuda a que el profesor organice el curso de una mejor manera orientado a la obtención de un producto.

· El que un proyecto sea desarrollado en etapas ayuda al estudiante a distribuir mejor el trabajo durante el tiempo y al docente a controlar y a corregir a tiempo problemas tempranos del desarrollo del proyecto.
 

Referencias Villegas, Milton. Documento de Métodos y Técnicas. Arquitectura 2. 2° Semestre 1995. Cartago, Costa Rica. 1995.