Descargar

Sistemas de ayuda al diseño para el análisis de calidad y complejidad de algoritmos

Enviado por ysolerp


    Estado del arte

    1. Resumen
    2. Complejidad en el desarrollo de algoritmos
    3. Lenguaje Unificado de Modelado. UML
    4. Métodos Avanzados de Solución de Problemas
    5. El RBC en la informática educativa
    6. El razonamiento basado en casos para tareas de diseño
    7. MALCON: Sistema automatizado de ayuda al aprendizaje y el diagnóstico de malformaciones congénitas
    8. Algunas experiencias
    9. Conclusiones
    10. Bibliografía

    Temática: Análisis de complejidad de algoritmos y selección eficiente de las Estructuras de datos para representar la información. Sistemas de Enseñanza Asistida por Computadora.

    Resumen

    Dada la importancia que para el desarrollo de la sociedad actual tiene la formación de profesionales capacitados en la rama de la Informática y la Computación y más específicamente en la ingeniería de software, se hace necesario que los estudiantes adquieran de forma sólida las habilidades para la creación de algoritmos, éste ha sido el objetivo y la base fundamental que sustenta a las carreras antes mencionadas y en un futuro, quizás no muy lejano, se espera incluso que en la enseñanza media superior se realicen estudios sobre programación de sistemas. Sin embargo, en las disciplinas encargadas de este contenido se han detectado problemas en el proceso de enseñanza-aprendizaje, dada la complejidad que presupone impartir y asimilar temas relacionados con las estructuras de datos y su adecuada selección para representar la información y las operaciones básicas que con ellas se realizan, lo que dificulta la obtención de algoritmos eficientes.

    Reconocida la necesidad expresada anteriormente, proponemos el desarrollo de un sistema de enseñanza asistida por computadoras que ayude a suplir las deficiencias que el estudio muestre. Una forma efectiva sería un medio que integre diferentes técnicas computacionales, de manera que en él se reflejen las mejores vías para ayudar al proceso de enseñanza aprendizaje, todo esto basado en un análisis profundo de la problemática detectada, de forma que se puedan definir los puntos críticos y las invariantes que resulten complejas, es por ello que se hace necesario realizar un análisis del Estado del Arte de las temáticas que intervienen en nuestra investigación.

    Introducción

    El impacto de la Enseñanza Asistida por computadora. Perspectivas para el presente trabajo

    Desde los albores de la historia humana, el aprender ha sido una característica propia de cada individuo, que ha contribuido a fundamentar las bases del desarrollo humano, ya que cuando se aprende, se adquiere el conocimiento por medio del estudio, el ejercicio o la experiencia. A medida que hemos evolucionado como civilización, han surgido personas que se han dedicado al estudio del comportamiento humano, esto ha conllevado a la definición de diversos criterios con respecto al aprendizaje; conceptos, métodos, herramientas y técnicas. Así, con al pasar del tiempo, las exigencias de la vida moderna, (dinámica, competitiva y llena de información), han dirigido a la sociedad a buscar nuevos modelos, técnicas y sistemas que permitan adquirir esos conocimientos de una manera eficaz y eficiente.

    En una sociedad impactada por la ciencia y la tecnología, todo ciudadano necesita de una cultura científico-tecnológica para entender, integrarse y actuar en el mundo que lo rodea. Dado el amplio espectro que abarcan las ciencias en la vida de un ser humano, los objetivos de su enseñanza dentro del tramo obligatorio del sistema educativo no deben apuntar a la formación de científicos rutinarios, sino a impartir un concepto de ciencia para todos que desarrolle actitudes y aptitudes científicas que tengan utilidad genuina en la vida real.

    La educación como concepto no puede ser expresado por una terminología global. Los sistemas de enseñanza parten de varios métodos originados en diversas corrientes ideológicas que pretenden formalizar una metodología adecuada a las necesidades de nuevos estudiantes. El objetivo de un modelo educativo, esta relacionado con una asimilación adecuada y precisa de los conocimientos a partir de un razonamiento que ayude al educando a comprender un fenómeno y de igual forma, le permita proponer alternativas o propuestas conducidas a resolver un problema en concreto. No obstante el anterior planteamiento, existen otras corrientes que definen a la educación como un proceso de construcción y transformación del ambiente en el que se desarrolla el educando.

    A pesar de lo que dictan todas estas filosofías, consideramos que la escuela es una institución que imparte una educación formal que independientemente de seguir una corriente en especial, se ha visto en la necesidad de incorporar a sus metodologías el uso de herramientas que faciliten el aprendizaje.

    Sin llegar a considerarla como una corriente, la tecnología educativa comprende el uso de los instrumentos tecnológicos como herramientas que auxilian a las instituciones educativas a la formación y preparación de los estudiantes, así como a la mejora de los procesos de evaluación educativa, aumentando también el rango de los estudios al ser posible la educación remota sin menoscabo de la calidad de la instrucción recibida.

    En cuanto al alumnado, en nuestro país se busca que sea más participativo e investigador. Para eso se cuenta con distintas herramientas como los libros, manuales, antologías, discos compactos, páginas de Internet, talleres de habilidades directivas entre otras. Para los grupos se pretende que estos interactúen y discutan sus clases, realicen tareas en equipos apoyados con las herramientas tecnológicas.

    Según "no existe informe, estudio, investigación o prospectiva sobre el futuro que no reconozca y señale el papel fundamental de la educación en el desarrollo de los individuos, así como los nuevos retos a los que ésta tendrá que dar respuesta; pero a la vez, se acrecienta el discurso del fracaso del sistema escolar, lo elevado de su costo, la falta de preparación del profesorado, etc."

    Los educadores cubanos son conscientes del papel fundamental que les toca desempeñar y al mismo tiempo no tienen que enfrentar precisamente una visión que puede considerarse como fatalista, de acuerdo a las anteriores afirmaciones. Queda claro que la situación referida responde a otros sistemas educacionales que distan bastante del nuestro; el reto de superar, mejorar y modernizar las técnicas utilizadas en el proceso docente educativo para ajustarlo más a la nueva explosión tecnológica está planteado para todos los educadores del mundo en general y para nuestro sistema de enseñanza en particular, que aspira siempre a ser un sistema de excelencia, lo que sólo se logrará en la medida en que seamos capaces de incorporar los últimos avances de la ciencia y la técnica al proceso de enseñanza y aprendizaje.

    La educación actual, requiere transformar los mecanismos de transmisión del conocimiento, por lo que el proceso de enseñanza-aprendizaje debe estar homologado con los avances tecnológicos. Una de las herramientas que está posibilitando modificar este proceso es la computadora, a través del desarrollo de múltiples aplicaciones educativas.

    La incorporación de metodologías de enseñanza auxiliadas por computadora incrementa la eficiencia en la transmisión y adquisición del conocimiento, permitiendo la manipulación de grandes volúmenes de información, la homogenización del conocimiento, la disponibilidad, masificación y la permanente actualización del mismo. Es muy importante interpretar adecuadamente tanto el rol de las computadoras como herramientas para representar el conocimiento como su carácter de instrumento pedagógico.

    El impacto de las computadoras en la educación ha sido ampliamente estudiado durante los últimos años y no todos los resultados han sido satisfactorios, lo que indica claramente la necesidad de continuar realizando investigaciones que arrojen más luz sobre este importante medio de enseñanza. Adams y colaboradores señalan algunas contradicciones en relación con un estudio sobre el uso de la EAC en la enseñanza de la Matemática: en un extremo se presentan algunos autores que reportan efectos negativos, otros muestran que no hay mejoras con el uso de las computadoras, mientras un tercer grupo sugiere que la EAC ha constituido una valiosa ayuda en el proceso de enseñanza y aprendizaje.

    Hodson reconoce que la EAC no siempre ha disfrutado de una buena reputación, pero en los últimos años con el incremento de la potencia de las computadoras y del software multimedios, además de las técnicas de Inteligencia Artificial (IA), los estudiantes tienen la posibilidad de observar la simulación del comportamiento de los sistemas que están estudiando, a la vez que se le presenta un gran cúmulo de información bien dosificada de acuerdo a estrategias pedagógicas cuidadosamente diseñadas.

    Estudios más recientes muestran resultados positivos, pero en todos los casos queda claro que hay que ser cuidadoso al elegir el tema que se tratará y la forma en que será abordado.

    A juicio Duffy, un enfoque pedagógico a emplear para la EAC aplicada a las Ciencias de la Computación es el enfoque constructivista En un aula el conocimiento se da muchas veces, como algo final en contraposición a lo más importante, el conocimiento como un medio para resolver problemas o comprender eventos. El constructivismo pone especial énfasis en la persona que aprende y lo convierte en un agente activo de su aprendizaje; en este caso el profesor juega el papel de facilitador , en contraposición con la enseñanza más tradicional u "objetivista" en la que la información se transfiere más directamente, por ejemplo, a través del profesor. Las técnicas de enseñanza siguientes se enmarcan en el enfoque constructivista asistido por computadoras:

    • Ambientes hipermedios. Presentan la información en una forma no lineal

    permitiendo que los estudiantes pueden navegar por ella a través de un dominio con enlaces predefinidos entre pequeñas piezas de información. El aspecto constructivista está en el hecho de que el aprendiz determina la secuencia de aprendizaje, pero los conocimientos del dominio en si se presentan en forma expositiva.

    • Ambientes de mapas conceptuales. Permiten formar conceptos relacionados entre si.

    Simulación por computadoras. Son programas que contienen modelos del mundo real. La acción básica del aprendiz es realizar cambios en las variables de entrada y observar las consecuencias sobre las variables de salida

    • Ambientes de modelación. Permiten que el aprendiz construya modelos por ejemplo LOGO y los ambientes basados en él

    Según Glasser el conocimiento engendra conocimiento; en otras palabras la habilidad de construir nuevos conocimientos es una función del aumento de la calidad del conocimiento existente, del razonamiento y otras habilidades intelectuales

    En ese sentido, la educación a todos los niveles se ha enfrentado a la disyuntiva de si la instrucción debe concentrarse en enseñar contenidos o en desarrollar habilidades intelectuales

    La teoría cognoscitiva de Newell y Simon plantea como principio fundamental que la forma en que el conocimiento, las habilidades y las actitudes se aprenden inicialmente, juega un papel determinante sobre el grado en que dichas cualidades pueden ser usadas en otro contexto.

    Un elemento crítico para el fomento del aprendizaje es dejar que los estudiantes resuelvan problemas en un medio que refleje los múltiples usos de su conocimiento, lo que sirve a diferentes propósitos. Según Reeves, con esta perspectiva se logra que los estudiantes puedan comprender el propósito o uso del conocimiento, el aprendizaje deja de ser pasivo y se convierte en activo, los estudiantes conocen diferentes condiciones bajo las que su conocimiento puede usarse.

    Desde la década del 70 se han desarrollado Teorías, Estrategias y Conceptualizaciones para fundamentar que las herramientas computacionales constituyen un método para descubrir, describir y cuantificar la información.

    La Psicología cognitiva considera el aprendizaje como la sucesión de las modificaciones de las estructuras cognitivas que son causa de la conducta del hombre. Se han elaborado diversas teorías acerca de la forma en que se crean y desarrollan las estructuras del conocimiento en las personas. En el aprendizaje por descubrimiento, los aprendices son inducidos a descubrir las reglas del objeto de estudio por sí mismos.

    La Informática Educativa no es una disciplina puramente técnica; sicólogos, educadores y sociólogos discuten con relación a su valor pedagógico real. Hoy en día los avances en la sicología, combinados con la explosión tecnológica, han dado lugar a una serie de sistemas educativos que permiten resolver algunas limitaciones de la educación tradicional.

    En el proceso de enseñanza-aprendizaje de la asignatura de Estructura de Datos, impartida en todas las carreras de perfil informático, se han enfrentado históricamente problemas en la asimilación, análisis y creación de habilidades en el alumno que le permitan una selección adecuada de las estructuras para representar la información y las operaciones básicas que con ellas se realizan, lo que dificulta la obtención de algoritmos eficientes.

    En el mundo esta problemática aun está vigente, a pesar de los esfuerzos que se realizan por utilizar diferentes vías y herramientas para facilitar el aprendizaje y desarrollo de algoritmos, no sólo en países desarrollados.

    Podemos citar ejemplos de algunas herramientas informáticas para la creación de animaciones de algoritmos, Balsa, Zeus, StarLite y Xtango, esta última ofrece una plataforma que soporta una serie de conceptos primitivos útiles para la creación de animaciones, es fácilmente transportable, no exige mucho del sistema donde debe ser instalado, puede utilizarse en la World Wide Web (WWW) y, finalmente, el modelo conceptual que utiliza es bastante sencillo.

    Todas estas aplicaciones muestran de forma gráfica las operaciones básicas con algunas estructuras de datos, simulando el proceso que se ejecuta. En la animación que se muestra en la Figura 1 se diseñaron varias vistas, una de ellas comprende el código del algoritmo a animar, que a su vez se divide en otras pequeñas vistas que contienen pedazos de código correspondientes a los diferentes casos que pueden ocurrir durante la ejecución del algoritmo. Así mismo, por cada caso se originan otras subvistas que despliegan el esquema general del caso y una descripción textual del mismo.

    Para ver el gráfico seleccione la opción "Descargar" del menú superior

    Figura 1. Inserción en árboles Rojo/Negro

    Estas aplicaciones resultan de mucha utilidad en la enseñanza de los temas de estructuras de datos, permitiendo que los estudiantes comprueben de forma gráfica el efecto (representación gráfica) que provoca la causa (algoritmo).

    Sin embargo la lucha por lograr algoritmos eficientes va mucho más allá, se requiere en primer lugar seleccionar la estructura de datos adecuada para representar la información, diseñar el algoritmo y realizar el análisis de complejidad del mismo

    Hasta el momento se han hechos grandes esfuerzos en el mundo por utilizar las técnicas de Enseñanza Asistida por Computadoras para una mejor comprensión de este tema, pero, a nuestro modo de ver, el problema que se plantea no sólo debe analizarse en el momento en que se aprende sino también cuando se desarrolla una aplicación que utiliza algoritmos que por su complejidad pueden dar por resultado que el producto obtenido no sea lo suficientemente eficiente.

    El aprendizaje en múltiples contextos facilita la abstracción del conocimiento. Tomando estos criterios en cuenta consideramos que debemos considerar la experiencia acumulada sobre la EAC para el desarrollo de nuestro sistema. La idea fundamental consiste en facilitar la ejecución real, de manera que los estudiantes:

    • Lleguen a sus propias conclusiones y construyan nuevos conocimientos a partir del sistema didáctico desarrollado.
    • Modifiquen los programas que se ofrecen, a partir del hecho de haber detectado limitaciones para resolver nuevas tareas.
    • Sugieran y usen estructuras de datos que consideren más apropiadas.
    • Sugieran y hagan modificaciones a los diferentes algoritmos o, en casos extremos, recomienden nuevos algoritmos para resolver los problemas presentados.
    • Puedan valorar los cambios, en el caso de ser necesarios, o puedan justificar la permanencia del código y las estructuras de datos presentados, cuando consideren que no es necesario hacer modificaciones.
    • Sean capaces de evaluar la calidad del proceso, no solo al final del proceso, sino en cada una de las etapas previas, logrando así una mayor calidad en el producto final.

    Todo lo anterior implica que subscribimos el enfoque constructivista, por considerarlo una forma apropiada para enseñar a diseñar algoritmos y evaluar su complejidad.

    Complejidad en el desarrollo de algoritmos.

    A lo largo de los años el software se ha vuelto cada vez más complicado. El incremento en la potencia de los ordenadores y la aparición de modernos dispositivos y tecnologías ha generado la necesidad de nuevos sistemas operativos y aplicaciones de mayor complejidad. Simultáneamente, esta complejidad ha traído consigo la demanda de nuevos métodos y herramientas que nos ayuden en la construcción de este software.   

    A nadie que trabaje o haya trabajado en el desarrollo de software le extraña que un proyecto sufra retrasos, o incluso deba cancelarse. La situación es caótica y actualmente, lo que nos sorprende es encontrarnos con un  proyecto que marcha tal y como estaba previsto. Los culpables de esta situación, podemos buscarlos a todos los niveles de la cadena, desde el comercial que vende el proyecto en el tiempo que quiere el cliente sin conocer siquiera las características del sistema a realizar hasta el propio cliente que no sabe lo que quiere hasta que finaliza el proyecto.

    Particularizando, uno de los problemas más comunes en el desarrollo de software es que la mayoría de programadores y analistas es reacia a documentar las decisiones tomadas, bien por falta de tiempo o bien por dejadez y cuando se hace, suele ser algo incompleto, no actualizado y poco consistente, ya que cada miembro del equipo utiliza una serie de símbolos familiares para él pero no para los demás. 

         Otro problema muy habitual, relacionado con el anterior, es la absoluta escasez de procedimientos establecidos dentro de una empresa para desarrollar software. Como mucho, las empresas suelen seguir el método de desarrollo en cascada (requisitos, análisis, diseño, implementación y pruebas).

    Lenguaje Unificado de Modelado. UML

    En este contexto, UML surge como respuesta al primer problema reseñado para contar con un lenguaje estándar para escribir planos de software. Muchos han creído ver UML como solución para todos sus problemas sin saber en muchos casos de lo que se trataba en realidad.  

    El Lenguaje Unificado de Modelado, UML es una notación estándar para el modelado de sistemas, software o no, resultado de una propuesta de estandarización promovida por el consorcio OMG (Object Management Group), del cual forman parte las empresas más importantes que se dedican al desarrollo de software, en 1996.

    UML representa la unificación de las notaciones de los métodos Booch, Objectory (Ivar Jacobson) y OMT (James Rumbaugh) siendo su sucesor directo y compatible. Igualmente, UML incorpora ideas de otros metodólogos entre los que podemos incluir a Peter Coad, Derek Coleman, Ward Cunningham, David Harel, Richard Helm, Ralph Johnson, Stephen Mellor, Bertrand Meyer, Jim Odell, Kenny Rubin, Sally Shlaer, John Vlissides, Paul Ward, Rebecca Wirfs-Brock y Ed Yourdon.  

    En Septiembre de 2001 se ha publicada la especificación de la versión 1.4. UML no es un proceso de desarrollo, es decir, no describe los pasos sistemáticos (que tienen que ver con el segundo problema descrito con anterioridad) a seguir para desarrollar software. UML sólo permite documentar y especificar los elementos creados mediante un lenguaje común describiendo modelos, paso de avance fundamental en la temática que investigamos.

    Modelado

         En todos los ámbitos de la ingeniería se construyen modelos, en realidad, simplificaciones de la realidad, para comprender mejor el sistema que vamos a desarrollar: los arquitectos utilizan y construyen planos (modelos) de los edificios, los grandes diseñadores de coches preparan modelos en sistemas CAD/CAM con todos los detalles y los ingenieros de software deberían igualmente construir modelos de los sistemas software.   

         Un enfoque sistemático permite construir estos modelos de una forma consistente demostrando su utilidad en sistemas de cierto tamaño. Cuando se trata de un programa de cincuenta, cien líneas, la utilidad del modelado parece discutible pero cuando involucramos a cientos de desarrolladores trabajando y compartiendo información, el uso de modelos y el proporcionar información sobre las decisiones tomadas, es vital no sólo durante el desarrollo del proyecto, sino una vez finalizado éste, cuando se requiere algún cambio en el sistema. En realidad, incluso en el proyecto más simple los desarrolladores hacen algo de modelado, si bien informalmente. 

          Para la construcción de modelos, hay que centrarse en los detalles relevantes mientras se ignoran los demás, por lo cual con un único modelo no tenemos bastante. Varios modelos aportan diferentes vistas de un sistema los cuales nos ayudan a comprenderlo desde varios frentes. Así, UML recomienda la utilización de nueve diagramas que, para representar las distintas vistas de un sistema. Estos diagramas de UML son los siguientes:

    • Diagrama de Casos de Uso: modela la funcionalidad del sistema agrupándola en descripciones de acciones ejecutadas por un sistema para obtener un resultado.
    • Diagrama de Clases: muestra las clases (descripciones de objetos que comparten características comunes) que componen el sistema y cómo se relacionan entre sí.
    • Diagrama de Objetos: muestra una serie de objetos (instancias de las clases) y sus relaciones.
    • Diagrama de Secuencia: enfatiza la interacción entre los objetos y los mensajes que intercambian entre sí junto con el orden temporal de los mismos.
    • Diagrama de Colaboración: igualmente, muestra la interacción entre los objetos resaltando la organización estructural de los objetos en lugar del orden de los mensajes intercambiados.
    • Diagrama de Estados: modela el comportamiento de acuerdo con eventos.
    • Diagrama de Actividades: simplifica el Diagrama de Estados modelando el comportamiento mediante flujos de actividades.
    • Diagrama de Componentes: muestra la organización y las dependencias entre un conjunto de componentes.

    Diagrama de Despliegue: muestra los dispositivos que se encuentran en un sistema y su distribución en el mismo.

    Analizando la mayor parte de las aplicaciones software nos podemos encontrar con elementos tan dispares como páginas Web, acceso a bases de datos, código C++, código Java, interfaz CORBA de acceso a un servidor C++, etc. Esta disparidad es el reto básico que tienen que afrontar los vendedores de herramientas CASE que quieran proporcionar un entorno de diseño integrado.

    Con los años va siendo mayor la capacidad de trabajar más con menos herramientas, lo que supone una mayor integración y una menor complejidad en las herramientas CASE, que  lleva a una mayor productividad.

    A la hora de alcanzar una mayor integración, UML se presenta como una buena alternativa, ya que se basa en un metamodelo extensible. El metamodelo UML es un modelo que describe modelos. Una visión de este modelo nos muestra elementos orientados a objetos como clases, atributos y métodos, todos ellos y sus interrelaciones representados como metaclases. Al modelo UML se le pueden añadir más metaclases, por ejemplo para describir modelos entidad-relación, así como realizar extensiones para tratar con interfaces como las definidas usando CORBA. El estándar UML define notaciones para representar la información y su interrelación desde una perspectiva gráfica, además soporta el uso de un formato de intercambio. El CASE Data Interchange Format (CDIF) es un anexo importante al UML, ya que, aunque UML especifica el tipo y la relación que existe entre la información que ha de ser almacenada en una biblioteca (repository), no especifica cómo se debe guardar esta información, dejando la elección a los distintos vendedores. El CDIF permite una representación ASCII para una biblioteca de diseños, dicha representación puede ser utilizada para transferir los datos del diseño de una herramienta CASE a otra, pudiendo ser utilizada por generadores de informes y otras herramientas de este estilo. Cuando decimos que una herramienta OOCASE "genera código", nos estamos refiriendo a cabeceras y prototipos en el caso de C++ o Java y a información de esquema en el caso de bases de datos relacionales. O sea, se proporciona la base para clases, métodos, y atributos en aplicaciones orientadas a objetos, así como tablas, columnas y relaciones en DBMS relacional. El tener una herramienta CASE que proporcione código de aplicación y de base de datos ayuda a garantizar que el modelo y su implementación estén sincronizados. Esta sincronización hace que la herramienta de modelado sea más útil para los desarrolladores. Sin un mecanismo integrado para guardar la implementación y el modelo sincronizados, se produce con frecuencia una desconexión entre ambos. Dicho de otra forma, es frecuente que las mejores soluciones se hagan evidentes en el proceso de implementación, si estas soluciones, que llevan con frecuencia a modificaciones en el diseño, no son realimentadas hacia atrás en el modelo de una forma conveniente, el modelo puede pasar a estar "out of date". El valor intrínseco del modelo se pierde desde el momento en que no podemos confiar en él y por lo tanto deja de usarse. Para soportar la generación de ficheros de cabecera y prototipos de métodos, debe haber una forma de asegurar que la herramienta no sobreescribe el cuerpo de los métodos y otro código y comentarios introducidos por el desarrollador. La forma más fácil y frecuente de hacer esto es introducir información del modelo dentro del código generado. Esto suele llevar a las protestas de los desarrolladores cuando utilizan por primera vez una herramienta de este tipo. Estas protestas son entendibles, ya que la legibilidad del código fuente se reduce de una forma significativa debido a la información introducida por la herramienta CASE en bloques de comentarios. Dos razones reducen la importancia del problema de "polución" del código:

    • Los desarrolladores están acostumbrados a ver los comentarios extra y filtrarlos mentalmente.
    • La utilización cada vez más frecuente de entornos de desarrollo integrado cada vez mas sofisticados (ej.: Visual Basic de Microsoft). Estos entonos ofrecen browsers para clases y métodos que hacen la navegación hacia declaraciones y definiciones específicas más sencillas, con lo cual los desarrolladores pueden evitar el "ruido" introducido en los ficheros de código nativos.

    Las herramientas OOCASE necesitan colaborar con otras aplicaciones a lo largo del ciclo de vida del proyecto. Esto es particularmente cierto en el caso del software de control de versiones. Debido a que los modelos están expuestos a frecuentes cambios durante el análisis y el diseño, muchos vendedores integran ya este tipo de software. Además, las herramientas CASE deben trabajar en un entorno multiusuario ya que los proyectos grandes los modelan y construyen equipos de desarrolladores. Las herramientas CASE que almacenan los modelos en ficheros del sistema operativo en vez de utilizar una biblioteca almacén, deben definir unidades de modelo que puedan ser utilizadas de forma concurrente por diferentes diseñadores y analistas. Estas unidades además deben estar bajo el control de algún software de versiones. La granularidad de las unidades de este tipo es un factor importante ya que con frecuencia diferentes partes del modelo están entrelazadas. Cuando un desarrollador coge una parte del modelo, esa parte debería ser lo suficientemente pequeña como para que otros desarrolladores puedan coger otros elementos del modelo y trabajar de una forma independiente. Hay que tener en cuenta que cualquier parte del modelo que es común a más de una unidad y a la que se acceda con frecuencia, puede convertirse en un cuello de botella para los procesos de modelado. Las herramientas OOCASE seguirán en el futuro soportando diferentes metodologías. Incluso cuando UML alcance su esperada penetración en el mercado, aparecerán otras metodologías con gran número de seguidores, existiendo siempre varias notaciones y metodologías activas. Es por eso, que será importante que las herramientas CASE que ahora almacenan la información del modelo en ficheros evolucionen hacia almacenes a los que puedan acceder diferentes herramientas. Esto hará más fácil el intercambio de información entre herramientas que realizan clases específicas de modelado. De todas formas es también deseable que se reduzca el número de herramientas CASE necesarias para modelar una aplicación.

    El número de herramientas CASE que soporta UML ha crecido muy considerablemente estos últimos años.

    UML sirve para hacer modelos que permitan:

    • Visualizar como es un sistema o como queremos que sea.
    • Especificar la estructura y/o comportamiento de un sistema.
    • Hacer una plantilla que guíe la construcción de los sistemas
    • Documentar las decisiones que hemos tomado

    El modelado sirve no solamente para los grandes sistemas; aún en aplicaciones de pequeño tamaño se obtienen beneficios de modelar, sin embargo, es un hecho que entre mas grande y más complejo es el sistema, el modelado juega un papel más importante. Esto se debe a una razón simple: "Hacemos modelos de sistemas complejos porque no podemos entenderlos en su totalidad"

    Hay límites para el entendimiento de la complejidad. A través del modelado reducimos el ámbito del problema de estudio al enfocar solo un aspecto a la vez.

    UML puede ser usado extensivamente en: Recopilación de requerimientos, Análisis de aplicaciones, Diseño de sistemas, en pruebas, en implementación, en reingeniería y prácticamente en cualquier actividad de desarrollo que sea susceptible de ser modelada.

    Cabe aclarar que aunque UML es orientado a objetos preferentemente, es útil en cualquier modelo tecnológico ya que es independiente de lenguajes de programación o tecnología determinada.

    Beneficios de esta tecnología.

    Los beneficios son claros al ocupar este lenguaje de modelamiento:

    Mejores tiempos totales de desarrollo (de 50% o más). En la mayoría de organizaciones hoy en día el tiempo que pasa desde que un proyecto arranca hasta que se estabiliza es más del doble de lo planeado originalmente. Con el uso de UML las fases de análisis y diseño consumirán mayor tiempo, pero el tiempo de construcción, implantación y estabilización se reducen drásticamente debido a que no hay correcciones mayores en las fases de mayor impacto de un proyecto.

    Mejor calidad. El uso de UML hace indispensable la participación del usuario en la definición de requerimientos y por lo tanto mejora considerablemente el apego del sistema a las necesidades de sus usuarios. El mantenimiento correctivo se reduce drásticamente (hasta un 80% con respecto a un sistema hecho sin metodología). Algo similar ocurre en los proyectos de reingeniería.

    Mejor soporte a la planeación y al control de proyectos. Al existir entregables definidos y estandarizados en las distintas fases de un proyecto y al ser éstos revisables y certificables por gente distinta del autor, tenemos que los planes de trabajo pueden ser fácilmente creados y corroborados en avance. Lo que permite tomar decisiones a tiempo.

    Mayor independencia del personal de desarrollo. Al tener documentadas las aplicaciones en un lenguaje estándar, podemos mover al personal de una aplicación a otra sin correr altos riesgos y sin depender del conocimiento personal de las aplicaciones.

    Mayor soporte al cambio organizacional, comercial y tecnológico. Un modelo permite cuantificar el impacto de un cambio antes de hacerlo y permite ensayar distintos enfoques de solución. Con UML un cambio se puede hacer primero en papel.

    Alto reuso. Los productos de un desarrollo pueden ser usados en otro. Se pueden crear componentes reusables que con la difusión y administración adecuadas minimizarán costos y errores.

    Minimización de costos. Los puntos antes mencionados tienen un impacto económico que generalmente tiende a ser proporcional al tamaño de la organización. {, 2000 #14}

    Al evaluar las ventajas que nos reporta el UML, y los numerosos sistemas que se han implementado basándose en resultados emitidos por el, nos proponemos usar como entrada a nuestro sistema, una salida del UML para suministrar el modelo inicial del algoritmo a desarrollar.

    Para ver el gráfico seleccione la opción "Descargar" del menú superior 

     Métodos Avanzados de Solución de Problemas.

    En nuestro estudio sobre las técnicas de EAC nos encontramos con la aplicación de los Métodos Avanzados de Solución de Problemas (MSP) en la construcción de Sistemas de Enseñanza.

    Desde principios de la década del 60, las computadoras sirvieron como base de los sistemas de enseñanza automatizados. A fines de los años 60 las investigaciones en esta esfera habían languidecido bastante, aunque existía la convicción de que la Enseñanza Asistida por Computadora debía proporcionar nuevos e importantes cambios a la enseñanza.

    En 1971 la NSF (National Science Foundation) de los Estados Unidos de América decide invertir 10 millones de dólares durante cinco años en los proyectos TICCIT (Time Sharing Interactive Computer Controlled Information) y PLATO (Programmed Logic for Automatic Teaching Operation). La finalidad de estos proyectos era demostrar que la Enseñanza Asistida por Computadora (EAC) podía proporcionar mejor enseñanza a menor costo. En esa época las computadoras eran bastante costosas y nada "amistosas", por ese motivo las premisas que rigieron aquellos proyectos no son exactamente las reglas que se emplean hoy en día para la producción de ambientes educativos asistidos por computadora.

    Durante parte de los años 70 y hasta comienzos de los 80 se produce un estancamiento, principalmente debido a la falta de madurez del desarrollo tecnológico: los reducidos rendimientos y prestaciones de las computadoras en comparación con sus costos y también debido al escaso desarrollo conceptual y metodológico.

    Un importante momento para los sistemas de EAC en particular y para el mundo en general fue, sin lugar a dudas, el surgimiento del micro procesador, que rompió con las grandes limitaciones inherentes a grandes centros de cálculo asociados a costos muy elevados e inalcanzables para los sistemas de educación de cualquier país. En los últimos años se han diseñado e implementado ambientes de aprendizaje poderosos, que se compenetran con las características de los procesos de aprendizaje en forma efectiva y que involucran una nueva concepción del aprendizaje.

    Las técnicas de la Inteligencia Artificial se han incorporado a los sistemas de EAC, acuñándose el nuevo término Intelligent CAI (ICAI) lo que ha permitido dotar a los sistemas de EAC de un comportamiento que no se limita a mostrar textos o imágenes. Con estas técnicas, los nuevos sistemas disponen de un verdadero conocimiento sobre la materia que se enseña y permiten mostrar a los alumnos los pasos del razonamiento.

    Los términos «Inteligencia Artificial» y «Educación» definen el carácter distintivo de una actividad de investigación preocupada por el desarrollo de sistemas educativos basados en tecnologías avanzadas ver en la web para poner algo en la base de datos que toman en consideración diversos aspectos del conocimiento. Hoy en día el uso conjunto de las nuevas Tecnologías de la Información y las Telecomunicaciones, y las tendencias pedagógicas, impulsan una constante evolución; desde los primeros programas de enseñanza asistidos por ordenador en los años 50, sistemas Computer Assisted Instruction (CAI), pasando por los Sistemas Tutores Inteligentes (STI) hasta el momento presente en el que las posibilidades de los actuales sistemas hipermedia y multimedia, la World Wide Web y las tendencias de trabajo en grupo (sistemas colaborativos) acrecientan el imparable desarrollo de la instrucción a distancia y no presencial.

    El aprendizaje es una actividad consustancial al ser humano. Se aprende a lo largo de toda la vida, aunque no siempre en forma sistemática: a veces es fruto de las circunstancias del momento; otras de actividades planeadas por alguien (la persona misma o un agente externo) y que el aprendiz lleva a cabo en aras de dominar aquello que le interesa aprender.

    El ambiente de aprendizaje está determinado por el entorno físico, psicológico y las estrategias utilizadas para la enseñanza y aunque resulta importante, no es lo que determina, en última instancia, qué se aprende; es la actividad del aprendiz el punto focal del problema, ya que ni aún en un entorno "ideal" se logrará un aprendizaje efectivo sin que el estudiante desarrolle las actividades asociadas con éste.

    Existen diversas teorías sobre el aprendizaje y en nuestra opinión ninguna de ellas debe ser menospreciada, ya que todas aportan en mayor o menor medida elementos sobre la adquisición del conocimiento. Estas teorías con diferentes matices oscilan entre dos polos:

    • Conductismo.
    • Cognoscitivismo.

    En el primer caso no se toma en cuenta el sujeto que aprende, se consideran sólo las condiciones externas que ayudan al aprendizaje. Se describe como el modelo de la "caja negra" que presenta la enseñanza como pequeños eventos programados, que conducen a lograr un objetivo dado y utiliza reforzamientos de acuerdo a las respuestas obtenidas, teniendo siempre en mente la consecución del objetivo en cuestión.

    Por otra parte, el punto de vista cognoscitivo considera a la persona como lo fundamental y en contraposición al caso previo se dice que es un modelo de "caja transparente", ya que lo que cuenta es el aprendiz dentro de su entorno psicológico y social. Esta corriente centra sus esfuerzos en explicar los procesos mentales y las estructuras de la memoria humana con el fin de comprender la conducta.

    El RBC en la informática educativa.

    En los diferentes tipos de sistemas que se pueden desarrollar en el campo de la informática educativa las herramientas basadas en casos se pueden usar para construir, acceder y usar casos como parte de un marco computacional más amplio. Por ejemplo, en el sistema SHERLOCK, el RBC se emplea para identificar las situaciones y explicaciones previas que podrían potencialmente afectar la explicación que se construye.

    Una componente importante de cualquier proceso de aprendizaje es satisfacer las necesidades de información, acceder a la información que permite responder una pregunta, tomar una decisión, resolver un problema o ayudar a comprenderlo. El acceso a información es una actividad fundamental en el aprendizaje. La ventaja distintiva del empleo de una biblioteca basada en casos para acceder a la información es la posibilidad de integrar gran cantidad de información en representaciones alternativas y de buscarla asociativamente.

    Seguidamente se describen dos aplicaciones del RBC en el área de la instrucción asistida por computadoras.

    El sistema SHERLOCK antes mencionado es un sistema inteligente para entrenar técnicos de aviación en el análisis de problemas en equipos electrónicos complejos, su uso minimiza la interacción con el tutor (humano) y además permite revisar el desempeño del técnico en una sesión posterior, esto último es muy importante pues numerosos experimentos han indicado que como el aprendizaje en el contexto de la solución de tareas es un esfuerzo cognitivo significativo en las sesiones posteriores de trabajo es donde los estudiantes pueden revisar sus propias acciones y compararlas con el trabajo de los expertos y es allí donde se materializa gran parte de la instrucción.

    Cada paso ejecutado por los estudiantes el sistema lo evalúa como "bueno" o "podría ser mejorado". Esta evaluación se realiza determinando cuales rasgos caracterizan la acción y calificándolos en buenos (b), malos (m) o regulares (r), luego SHERLOCK evalúa cada acción con respecto a un conjunto de rasgos a los que se han asociado un juicio sobre si los rasgos indican un resultado bueno o que podría ser mejorado. Para esto se utiliza el razonamiento basado en casos.

    Para ello el algoritmo del sistema construye una estructura de datos denominada Grafo Aciclico Dirigido (GAD) el cual indica las acciones previas que son similares a una dada. La raíz del GAD representa la acción actual y los rasgos de interés (los evaluados de mal). Cada nodo en el GAD representa un conjunto de las acciones que comparten el mismo conjunto de rasgos de interés, mientras más rasgos un nodo tenga en común con la acción actual más semejante será al nodo raíz.

    Una vez encontrada una situación adecuada el sistema decide como usar esta al generar la explicación necesaria en ese momento.

    • RBC y el Diseño Asistido por Computadoras (CAD) en las asignaturas de las carreras de Ingeniería Mecánica.

    1.2 El razonamiento basado en casos para tareas de diseño.

    Anteriormente presentamos un ejemplo de sistema basado en casos para resolver problemas de diseño y la técnica en la que se basa. En este se analizará cómo el razonamiento por analogía y particularmente el RBC se ha utilizado en el desarrollo de sistemas para el diseño asistido por computadoras (CAD systems).

    Kolodner describe la problemática del diseño de la forma siguiente. En el diseño los problemas se definen como un conjunto de restricciones, y el que resuelve problemas se invoca para construir un artefacto concreto que satisfaga las restricciones del problema. Las restricciones ofrecen una guía pero no señalan al que resuelve problemas una dirección de búsqueda particular. El espacio de búsqueda es enorme, pudiendo existir muchas respuestas posibles pero lo suficientemente dispersas dentro del espacio, de modo que los métodos de búsqueda estándares requieren demasiado tiempo para hallarlas. Además, el problema puede ser demasiado grande para resolverlo como un todo pero como sus partes interactúan fuertemente, resolver cada parte aisladamente y luego integrarlas casi siempre lleva a que se violen las interacciones entre las partes (lo que se denomina duramente descomponible).

    A la vez, el dominio del diseño se caracteriza por la relevancia que tienen las experiencias (casos) previas para sugerir ideas que frecuentemente ayudan a enfrentar nuevos problemas de diseño, proponer y refinar las soluciones, criticar y modificar los diseños propuestos y justificar su selección. Sin embargo, a pesar de la aparente abundancia y uso extensivo de los diseños anteriores los diseñadores no tienen siempre acceso a los casos apropiados. Ellos no están organizados en bibliotecas sino que frecuentemente están esparcidos en archivos, publicaciones, libros y en las memorias de otros diseñadores. Algunas firmas tienen pequeñas colecciones con los diseños de su propiedad pero organizadas de forma que resulta difícil determinar su relevancia para con el nuevo problema.

    Es por todo lo anterior que el razonamiento basado en casos puede ofrecer el camino hacia la elaboración del nuevo diseño. En lugar de resolver los problemas descomponiéndolo en sus partes, resolviendo cada parte y recomponiéndolas, un caso sugiere una solución completa, y las partes que no se adecuen a la nueva situación se adaptan. Resolver un problema adaptando una solución vieja evita que el que resuelve problemas tenga que tratar con muchas restricciones que se cumplen en la nueva situación. Aunque sea necesario hacer un trabajo de adaptación considerable esta tecnología es casi siempre preferible a generar una solución desde estadios muy tempranos del diseño cuando hay muchas restricciones y las partes del problema no son fácilmente recompuestas. En la ingeniería y en la arquitectura el proceso de diseño es casi enteramente un proceso de adaptar o mezclar varias soluciones viejas para resolver el nuevo problema.

    La otra contribución importante del RBC es que permite señalar los problemas de las soluciones propuestas.

    Resumiendo, el RBC es útil para tareas de diseño pues este dominio se caracteriza por:

    • Ejecutar un diseño requiere de experiencia previa.
    • Frecuentemente es difícil representar la heurística del experto en diseño a través de reglas.
    • El diseño de un producto se puede realizar a partir de diseños realizados antes.
    • Usualmente están disponibles muchos casos de diseño.
    • Este dominio se caracteriza por la existencia de casos excepcionales con cierta regularidad, lo que dificulta el empleo de reglas u otros medios para realizar generalizaciones.

    Además, el RBC es una tecnología adecuada pues mediante la memoria permanente y los métodos de búsqueda se puede poner a disposición del diseñador un gran volumen de experiencia previa a través de casos resueltos y a partir de esta información el mismo puede construir la solución deseada; lo que esta totalmente de acuerdo con el termino Diseño Asistido por Computadora. Este método es muy usado en las carreras de Mecánica.

    1. MALCON: Sistema automatizado de ayuda al aprendizaje y el diagnóstico de malformaciones congénitas

    En Cuba existen experiencias de la aplicación de sistemas sustentados en RBC en la docencia médica, ejemplo de ello, es la propuesta por el sistema automatizado de ayuda al aprendizaje y diagnóstico de malformaciones congénitas.

    Calidad de software

    Un aspecto importante a considerar en el contexto del análisis y diseño de algoritmos es la calidad final y por etapas del software elaborado.

    Debido a la cantidad creciente de aplicaciones de software educativo que están disponibles para crear y administrar contenidos de cursos basados en tecnología, se plantea la necesidad de contar con técnicas que permitan medir y evaluar los productos desarrollados.

    La evaluación es una de las actividades más comunes entre los seres humanos y de las de mayor impacto en el ámbito educativo: consume una gran cantidad de tiempo y energía de los profesores, afecta a millones de alumnos, repercute en la vida de las familias y, de sus resultados, se siguen consecuencias -impacto- para la sociedad.

    Los criterios ofrecen orientaciones para una descripción del uso posible y pedagógicamente viable. Algunos de los aspectos involucrados en el proceso de enseñanza / aprendizaje que interesan analizar cuidadosamente son los siguientes:

    • la modalidad elegida, el rol que desempeña el evaluador en el proceso, el comportamiento del producto, el uso del producto para lograr los objetivos, el enfoque pedagógico empleado, las actividades cognitivas que persigue, los recursos empleados y el avance de los conocimientos por parte del alumno.

    ALGUNAS EXPERIENCIAS

    Existen numerosos trabajos que hacen referencia a la utilidad y calidad en una herramienta para educación. Uno de los trabajos que se ha tenido en cuenta como referencia importante es "Calidad en Educación a Distancia", de Dr. Richard Bothel y Suzanne Store publicado en 1998 y cuyas ideas se consideran a continuación.

    Los educadores que actualmente desarrollan software educativo que cumplan con las necesidades de los alumnos de hoy en día, continúan enfrentando las disputas de la comunidad de educadores tradicionales y de los organismos de acreditación. Las tecnologías educativas y metodologías de aprendizaje que se emplean para generar programas de educación flexible a los alumnos son considerados como que no cumplen estándares de calidad apropiados. Este supuesto es realizado en función de que "el aula es el mejor lugar para que ocurra el aprendizaje". Las metodologías de Educación basada en Tecnología son principalmente juzgadas en base a su habilidad para duplicar las experiencias del aula. Son necesarios nuevos métodos para asegurar y validar la calidad de los programas de Educación basada en Tecnología.

    Se debe destacar que las experiencias que se mencionan a continuación provienen por un lado de resultados de trabajos efectuados en diferentes ámbitos de investigación empresariales y por otro lado del ámbito estrictamente académico.

    Algunas de las investigaciones realizadas en los últimos años concluyen en que se han obtenido resultados positivos al emplear métodos de educación basados en tecnología. Se ha demostrado que la educación proporcionada utilizando tecnología es equivalente o mejor que la proporcionada en un aula tradicional.

    Otro estudio realizado en 1992, en la Universidad del Estado de Pennsylvania, sugirió que el empleo de entrenamiento basado en tecnología retuvo a los participantes en una proporción igual o superior al de una clase tradicional.

    Por otro lado, otro estudio reveló que la instrucción basada en tecnología que emplea video alcanzó un nivel de retención superior entre un 25% a 50% al de una clase tradicional (Multimedia and Videodisc Monitor, 1992).

    Existen numerosas evidencias que muestran que la calidad del aprendizaje es superior al utilizar entrenamiento basado en tecnología, que la instrucción tradicional (Wall Street Journal, 1996).

    Asimismo, se demuestra que el entrenamiento basado en tecnología puede reducir el tiempo planeado para el curso entre un 20% a 80% comparado con un curso tradicional , debido en alguna medida a que el participante puede "saltar" aquellos conocimientos que tiene incorporado previamente (Training and Development, 1996).

    Asimismo, numerosas empresas han concluido que el entrenamiento basado en tecnología puede reducir hasta un 50% el tiempo empleado comparado con el entrenamiento en una clase tradicional.

    En cuanto al ámbito académico se pueden destacar numerosos estudios y experiencias que demuestran la conveniencia del uso de software educativo basado en tecnología para favorecer la interacción y la motivación en el proceso de enseñanza – aprendizaje/entrenamiento.

    En particular abundaremos en la experiencia realizada con los alumnos de la carrera de Licenciatura en Informática de la Universidad Nacional de La Plata. La misma consistió en que los alumnos asistían al curso de ingreso tradicional y disponían además de una herramienta multimedial que les permitía ejecutar y verificar sus soluciones a los problemas planteados en las prácticas del curso. Se pudo comprobar que esta experiencia ha sido positiva para los integrantes debido a que creció el grado de interés, atención y participación. Además, la utilización de la herramienta sirvió para un mejor análisis y comprensión de los contenidos del curso observados a partir de los resultados del seguimiento efectuado a los alumnos durante el 1er cuatrimestre en la asignatura Programación de Computadoras de la carrera.

    Todas las experiencias referidas anteriormente han tenido en cuenta de alguna manera la evaluación de la calidad tanto del software educativo usado como del proceso de enseñanza aprendizaje.

    En el ámbito de la reflexión científica y de su desarrollo práctico las propuestas para evaluar software educativo han sido casi tan variadas y numerosas como la diversidad y número de quienes se han ocupado de estudiar el tema. Una de estas formas es la de evaluación de software educativo mediante planillas, con experiencias concretas con diferentes productos, con docentes de distinto nivel y también con un número importante de alumnos/usuarios.

    Naturalmente no se trata de un resultado "definitivo", sino la exposición de los aspectos positivos y negativos de los trabajos experimentales realizados en el ámbito académico de la UNLP, trabajo en el que se destaca una metodología que rescata los aspectos multidisciplinarios del producto "software educativo" y trata de obtener una valoración orientativa de la calidad de un determinado producto educativo, valoración que depende del contexto educativo, el perfil de los alumnos, el grado de adaptación del docente y las características mismas del evaluador.

    Conclusiones.

    Con la investigación realizada hemos podido comprobar:

    1. La importancia de las técnicas de Enseñanza Asistida por Computadoras para el desarrollo eficiente del proceso de enseñanza-aprendizaje en el contexto educacional actual.
    2. La aplicabilidad de los Métodos Avanzados de Solución de Problemas y las técnicas de Inteligencia Artificial en la construcción de sistemas de enseñanza.
    3. Los esfuerzos realizados en el mundo por ayudar a estudiantes y programadores a mejorar la calidad del software que se diseña.
    4. Aún existen deficiencias en el proceso de enseñanza-aprendizaje, dada la complejidad que presupone impartir y asimilar temas relacionados con las estructuras de datos y su adecuada selección para representar la información y las operaciones que con ellas se realizan, lo que dificulta la obtención de algoritmos eficientes.
    5. El problema que se plantea no sólo debe analizarse en el momento en que se aprende sino también cuando se desarrolla una aplicación que utiliza algoritmos que por su complejidad pueden dar por resultado que el producto obtenido no sea lo suficientemente eficiente.
    6. Es posible elaborar, como uno de los resultados de nuestra investigación, diseñar una herramienta que ayude al análisis de la complejidad de algoritmos y sus Estructuras de Datos, contribuyendo al desarrollo de productos de software de la más alta calidad, en el tiempo oportuno y con un mínimo costo.

    Bibliografía.

    Adams, J. (1991). "A comparison of computer assisted instructional methods." International Journal of Mathematical Education in Science and Technology 22-6: 889 – 893.

    1. Almeida Campos, S. (1997). MALCON: Sistema automatizado de ayuda al aprendizaje y el diagnóstico de malformaciones congénitas. Relatoría del Taller de Informática en la Educación, La Habana, Cuba.
    2. Anderson, J. R. (1983). The architecture of cognition. Cambridge, MA: Harvard University Press.
    3. Barrios, A. M. (1997). REFLEXIONES EPISTEMOLOGICAS Y METODOLOGICAS EN LA ENSEÑANZA DE LAS CIENCIAS PARA TODOS BOLETIN 44, diciembre 1997 / Proyecto Principal de Educación
    4. Bello, R. (2001). Razonamiento Basado en Casos. Las Villas. Cuba.
    5. BERTONE, D. G., GORGA, MADOZ (1995). Una propuesta de curso interactivo multimedial para el ingreso a Informática en la UNLP. 1er. CACIC., Bahía Blanca.
    6. Blackwell, A. F. (1998). Metaphor or Analogy: How Should We See Programming Abstractions? Proceedings of the 8th Annual Workshop of the Psychology of Programming Interest Group.: 105-113.
    7. Booch, G. (1999). El lenguaje unificado de modelado, Addison-Wesley.
    8. Brandes, A. (1991). Treasureworld: A computer enviroment for the study and exploration of feedback. Constructionism: 391-417.
    9. Bravo, J., Ed. (1999). Aprendizaje por descubrimiento en la enseñanza a distancia: Conceptos y un caso de estudio. Universidad de Castilla-La Mancha., Grupo de Informática Educativa.Departamento de Informática.
    10. Brown, J. S. (1985). "Process versus product: A perspective on tools for communal and informal electronic learning." Journal of Educational Computing Research 2.
    11. Brusilovsky, P. (2000). "Course sequencing for Static Courses? Applying ITS Techniques in Large-Scale Web_Based Education." Proceedings of Intelligent Tutoring Systems Gilles G., Frasson C and VanLehn K. Springer Verlag: 625-634.
    12. Cabrera, A. (1995). "Informática educativa: La revolución construccionista." Informática y Automática 28-1: 24-31.
    13. CHAMPREDONDE, D. G. (1997). Design and Implementation of The Visual Da Vinci Language. . Facultad de Informática, UNLP. Perú.
    14. CHAMPREDONDE, R., DE GIUSTI (1998). Visual Da Vinci Extension for Real Robot Control. LIDI. I Conferencia de robotica, UNLP, Perú.
    15. COHEN, D. K. (1988). Educational technology and School Organitation.
    16. CUBAN, L. (2000). Computers meet classroom: Classroom wins.
    17. Duffy, T. (1991). "Constructivism: New implications for instructional technology." Educational Technology Research & Development.
    18. Gall, J. E. (1994). "A framework for the study of hypertext." Instructional Science 22.
    19. Glaser, R. (1991). Scientific reasoning across different domains. Computer-Based learning environments and problem solving. Berlin, Germany, Spring-Verlag,.
    20. Gómez, D. d. M. M. (2000). TENDENCIA DE FUTURO DE LAS HERRAMIENTAS UML.Consuegra. Estudio de diversas herramientas UML para el desarrollo de software.
    21. GORGA, G. y. M., C (2000). Experiencia en el desarrollo y utilización de un Curso Interactivo Multimedial para el Ingreso a Informática en la UNLP.
    22. Group, O. M. (2000). UML.
    23. Group, O. M. (2001). UML version 1.4.
    24. Hennessy, S. (1993). "Learner perceptions of realism and magic in computer simulations." British Journal of Educational Technology 24.
    25. HODAS, S. (1993). Technology refusal and the organitation nature of schools.
    26. Hodson, D. (1996). "Laboratory works as scientific method: three decades of confusion and distortion." JCS Journal of curriculum studies 28-2.
    27. Jonassen D., M. T. a. M. R. (2001). Sistemas Inteligentes en el ámbito de la educación. 2003.
    28. Jonnan, T. (1996). Discovery learning with computer simulations of conceptual domains. Simpósio Investigação e Desenvolvimento de Software Educativo. Conferências, Universidad Nova de Lisboa, Portugal.
    29. Khasawneh, A. A. (1994). "An intelligent CAI project for teaching mathematical concepts. I." International Journal of Mathematical Education in Science and Technology. 25-4: 325 – 332.
    30. Kolodner, J. L. (1992). "An introduction to CBR." Artificial Intelligence Review 6, 3-34.
    31. Lezcano, M. (1998). "Ambientes de aprendizaje por descubrimiento para la disciplina Inteligencia Artificial".
    32. LOVELESS, T. (1996). Why aren't computers used more in school?
    33. MADOZ, B. (1994). Multimedia y aplicaciones en educación.
    34. MOLINARI, D. G., MADOZ, PESADO. LUBO-1 (1992). Un modelo de máquina abstracta para un primer curso universitario de programación. XIV Conferencia Latinoamericana de Informática. Multimedia and Videodisc Monitor., Perú.
    35. Newell, A. (1972). Human problem solving. Englewood Cliffs, NJ: Prentice Hall.
    36. Ohlsson, S. (1986). "Some principles of intelligent tutoring." Instructional Science 14: 293-326.
    37. PALACIOS, A. C., R. y AINCHIL, V (2000). Teaching Experiences in Programming Using the Visual Da Vinci Language. First International Congreso on Tools for Teaching Logic, , Universidad de Salamanca.
    38. Reeves, T. (1991). Designing CAL to support learning: The case of multimedia in Higher Education. Nordic Conference on Computer-Aided Higher Education, Helsinki University of Technology, Finland, August 1991.
    39. Ruíz, A. J. S. and A. F. P. Ribeiro (1998). Algunos Criterios para la Construcción de Animaciones de Algoritmos con Propósitos Pedagógicos. Venezuela, Laboratorio de Construcción de Herramientas Automáticas (AuTooLab) Centro de Ingeniería de Software Y Sistemas (ISYS) Escuela de Computación, Facultad de Ciencias Universidad Central de Venezuela.
    40. Ruiz, F. (1996). "Nuevas herramientas tecnológicas para la realización de cursos por computador." Revista de Enseñanza y Tecnología, 5: 21 – 31.
    41. RUSSELL, T. (1995). The "No significant difference". Phenomenon.
    42. Sanz, A. (2000). Introducción a UML.
    43. Self, J. A. (1999). "The defining characteristics of intelligent tutoring systems research: ITS care, precisely." Journal of Artificial Intelligence in Education 10-3-4: 350 – 364.
    44. Vazirani, M. J. K. a. U. V., Ed. (2001). An Introduction to Computational Learning Theory, The Bactra Review. Occasional and eclectic book reviews by Cosma Shalizi How to Build a Better Guesser.

     

     

    Autor:

    Lic. Yolanda Soler Pellicer

    Dr. Mateo Lezcano Brito