Ministerio de Educación Superior Universidad Central “Marta Abreu” de Las Villas TESIS EN OPCIÓN AL TÍTULO DE MASTER EN COMPUTACIÓN APLICADA Título: Organización del conocimiento de la asignatura Programación II para Ingeniería Informática basada en mapas conceptuales. Autor: Lic. Yolanda Soler Pellicer. Tutor: Dr. C. Mateo Gerónimo Lezcano Brito. 2007 “Año 49 de la Revolución” Índice Pág. INTRODUCCIÓN .................................................................................................................................. 1 1 CAPÍTULO I. LA TECNOLOGÍA EDUCATIVA Y LOS AMBIENTES DE APRENDIZAJE. HERRAMIENTAS PARA ELEVAR LA EXCELENCIA DEL PROCESO DOCENTE. ......................... 6 1.1 Introducción ........................................................................................................................... 6 1.2 La tecnología educativa en el proceso de enseñanza-aprendizaje. ................................. 7 1.2.1 Caracterización histórico-tendencial de las aplicaciones educativas. ................................. 7 1.2.2 Caracterización psico-pedagógica .................................................................................... 10 1.2.2.1 Los ambientes de aprendizaje potenciados por la tecnología. ................................. 10 1.2.3 Técnicas de enseñanza constructivista asistidas por computadoras................................ 11 1.2.3.1 Los medios y herramientas que apoyan el aprendizaje. .......................................... 13 1.2.3.2 Los Mapas Conceptuales en la enseñanza .............................................................. 14 1.2.3.3 Mapas Conceptuales en el estudio de la programación. .......................................... 15 1.2.3.4 Herramientas para la creación de mapas conceptuales. .......................................... 17 1.2.3.4.1 Ventajas de CmapTools el diseño de mapas conceptuales................................ 18 1.2.3.4.1.1 Recursos e informaciones en un mapa conceptual. .................................... 19 1.2.3.4.1.2 Permisos y Control de Accesos ................................................................... 20 1.2.3.4.1.3 Interacción de los actores en el proceso de autoaprendizaje y construcción del conocimiento. ............................................................................................................... 20 1.2.3.4.1.3.1 Trabajo colaborativo. ............................................................................ 21 1.2.3.4.1.4 Uso de Listas de discusión. ......................................................................... 22 1.2.3.4.1.5 El uso del Cmap en la modalidad de Educación a Distancia...................... 23 1.2.4 Aplicaciones educativas en la enseñanza de la asignatura de Programación II. ............. 25 1.3 Resumen del capítulo. ......................................................................................................... 26 2 CAPÍTULO II. ANÁLISIS DE LOS CONTENIDOS DE LA DISCIPLINA TÉCNICAS DE PROGRAMACIÓN PARA INGENIERÍA INFORMÁTICA. ................................................................. 28 2.1 Introducción. ........................................................................................................................ 28 2.2 El diseño a nivel mundial de la carrera de Ingeniero en software. ................................. 29 2.3 Concepción y desarrollo de la carrera de Ingeniería Informática en Cuba. .................. 31 2.3.1 Modificaciones introducidas al Plan de Estudios C del Ingeniero Informático. ................. 31 2.4 Sistema de conocimientos y propuesta de organización de la disciplina Técnicas de Programación de Computadoras. ................................................................................................... 32 2.4.1 Consideraciones sobre el diseño de la disciplina. ............................................................. 33 2.4.1.1 Sistema de conocimientos de Programación II. ....................................................... 35 2.4.1.1.1 Propuesta de organización de los contenidos. .................................................... 36 2.4.1.1.1.1 Tipos Abstractos de Datos en el nivel primario de contenidos. ................... 36 2.4.1.1.1.2 Representación de la relación entre Tipos Abstractos, Estructuras y Tipos de Datos. ...................................................................................................................... 38 2.4.1.1.1.3 Vínculo con los temas de diseño y análisis de algoritmos desde la asignatura de Programación II........................................................................................... 39 2.4.1.1.1.4 Paradigmas de la programación usados para implementar estructuras de datos. ...................................................................................................................... 40 2.4.1.1.1.4.1 Programación funcional. ....................................................................... 41 2.4.1.1.1.4.2 Programación Lógica. .......................................................................... 42 2.4.1.1.1.4.3 Paradigma de la Programación Orientada a Objeto. ............................ 42 2.4.1.1.1.4.4 Lenguajes de Programación Orientados a Objeto (LOO). ................... 43 2.4.1.1.1.5 Los Tipos Abstractos de Datos y su implementación en un Lenguaje Orientado a Objeto. ........................................................................................................... 43 2.4.1.2 Vinculación de la propuesta organizativa con las orientaciones del Plan de Estudios D. ............................................................................................................................... 45 2.4.1.3 La propuesta como apoyo al Sistema Bibliográfico de la asignatura. ...................... 46 2.5 Resumen del capítulo. ......................................................................................................... 47 3 CAPÍTULO III. PROPUESTA METODOLÓGICA PARA LA ORGANIZACIÓN DEL SISTEMA DE CONOCIMIENTOS EN LA ASIGNATURA PROGRAMACIÓN II DE LA CARRERA DE INFORMÁTICA. .................................................................................................................................. 48 3.1 Introducción. ........................................................................................................................ 48 3.2 Mapa conceptual que organiza el sistema de conocimientos de la asignatura Programación II. ................................................................................................................................ 49 3.2.1 Mapa Tipos Abstractos de Datos....................................................................................... 49 3.2.1.1 Aporte a la sistematicidad e integración de conocimientos. ..................................... 50 3.2.1.2 Contribución al desarrollo de la cultura de la profesión. ........................................... 52 3.2.2 Mapa Estructuras de Datos. .............................................................................................. 53 3.2.2.1 Estructuras de Datos lineales. .................................................................................. 54 3.2.2.1.1 Mapa conceptual Arreglos. .................................................................................. 55 3.2.2.1.1.1 Introducción al análisis de la complejidad en el estudio de los algoritmos. . 57 3.2.2.1.2 Mapa conceptual Listas. ...................................................................................... 58 3.2.2.1.3 Mapa conceptual Pilas......................................................................................... 59 3.2.2.1.3.1 Aplicaciones de Pilas. Procesos Recursivos. .............................................. 60 3.2.2.1.4 Mapa conceptual Colas. ...................................................................................... 61 3.2.2.2 Estructuras de Datos no Lineales. ............................................................................ 62 3.2.2.3 Mapa Técnicas de Diseño y Análisis de Algoritmos. ................................................ 62 3.2.3 Propuesta metodológica para el uso de esta herramienta. ............................................... 63 3.2.3.1 Indicaciones para los docentes. ................................................................................ 64 3.2.3.2 Indicaciones para los estudiantes. ............................................................................ 65 3.2.4 Aportes de la propuesta al desarrollo de la asignatura y la carrera. ................................. 66 3.3 Resumen del capítulo .......................................................................................................... 67 4 CONCLUSIONES ....................................................................................................................... 68 5 RECOMENDACIONES .............................................................................................................. 69 6 BIBLIOGRAFÍA .......................................................................................................................... 70 Resumen Se realiza una evaluación histórico-tendencial y psicopedagógica de la Tecnología Educativa y los ambientes de aprendizaje, como herramientas que permiten elevar la excelencia del proceso docente, destacando la importancia de los mapas conceptuales, su utilización en la enseñanza de la programación y las ventajas que brindan para organizar los contenidos de una determinada materia. Los resultados de este trabajo incluyen un análisis crítico del sistema de conocimientos de la disciplina Técnicas de Programación de Computadoras de la carrera Ingeniería Informática, del nivel de precedencia de los contenidos y la necesidad de vincular en la asignatura Programación II los temas de diseño y análisis para obtener algoritmos eficientes. Se crea un mapa conceptual que muestra la relación entre los Tipos Abstractos, las estructuras de datos, los algoritmos que implementan sus operaciones, características, conceptos y aplicaciones, algunas resultantes de los Proyectos de Curso de la asignatura. Introducción / 1 Introducción La tecnología educativa hace uso de herramientas que ayudan a las instituciones docentes en la formación y preparación de los estudiantes, así como a mejorar los procesos de evaluación, 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. (Bravo, 2000) La computadora como instrumento pedagógico ha demostrado su eficacia cuando se aplica para apoyar la enseñanza y el aprendizaje de procesos complejos, abstractos o difíciles de visualizar en su medio real. Es, entonces, válido el planteamiento de Ortiz (2001), al considerar el aprendizaje, como un fenómeno subjetivo que posee un carácter complejo y susceptible de ser analizado desde diferentes puntos de vista o enfoques, ya que el hombre, por su propia flexibilidad, es capaz de incorporar nuevos conocimientos de múltiples y variadas formas. (Ortiz, 2001) En el proceso de enseñanza-aprendizaje de la asignatura Programación II de la carrera de Ingeniería Informática, se han enfrentado problemas con la asimilación, análisis y creación de habilidades en el alumno que les permitan el diseño adecuado, eficiente y óptimo, de las estructuras para representar la información y las operaciones básicas que con ellas se realizan. Existen deficiencias en el uso de la representación secuencial, ya estudiada en la asignatura que le precede, y su aplicación en el diseño de estructuras complejas. No se evidencia una vinculación adecuada entre los conceptos estudiados, lo que influye negativamente en la solución óptima de los problemas. En la investigación realizada con el objetivo de encontrar herramientas que apoyaran el proceso de vinculación e integración de los contenidos de la asignatura Programación II, se encontraron sistemas como el propuesto por Almeida (2003), un sitio web sobre estructuras de datos con animación de sus operaciones básicas; en el servidor de la aplicación CmapTools, diseñada por Introducción / 2 Cañas (2004) para la creación de mapas conceptuales, no se encontró ninguno que representara los contenidos de la asignatura; el mapa conceptual hipermedial Kellu, creado por Uviña y colaboradores (2005), muestra las definiciones básicas de trabajo con las estructuras, fundamentalmente, los nexos entre los conceptos, sin apoyarlos con informaciones y recursos; el sistema Xtango, desarrollado por Axoft (2005), presenta las operaciones con las estructuras y la representación gráfica de las acciones de forma estática. Teniendo en cuenta el diseño curricular de la asignatura, se comienzan a impartir los contenidos relacionados con Tipos Abstractos de Datos y las listas enlazadas como estructura de datos, se realiza una analogía con una estructura lineal ya estudiada, los arreglos, y se muestra la diferencia entre la representación de memoria secuencial y enlazada. Desde este momento se evidencian grandes insuficiencias en la definición de arreglos, por lo que se necesita profundizar en el manejo de la representación secuencial dada la incidencia que tiene en el logro de los objetivos de la asignatura Programación II, afectándose, además, la selección eficiente de estructuras para representar la información. La situación expuesta 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. De ahí, la importancia que el contenido desarrollado en la asignatura Programación II tiene desde diferentes puntos de vista; teórico y educacional, metodológico, técnico, económico, desde el punto de vista práctico y de aporte a la producción y la sociedad. Basándose en esta realidad se debe considerar si:  ¿Las técnicas de Enseñanza Asistida por Computadoras (EAC) tendrán un impacto positivo en el Proceso Docente Educativo de la asignatura Programación II? Introducción / 3  ¿Existen teorías educativas que aporten el fundamento pedagógico a sistemas de ayuda al diseño de algoritmos y de las Estructuras de Datos usadas para representar la información?  ¿Se han combinado elementos de las tendencias pedagógicas contemporáneas y las herramientas informáticas en la solución de este problema?  ¿Es necesario analizar el currículo de la carrera de Informática y la disciplina de Técnicas de Programación para realizar una propuesta metodológica que organice el sistema de conocimientos de la asignatura Programación II?  ¿Es significativa la organización del sistema de conocimientos de la asignatura en forma de Mapa Conceptual? Luego de analizadas estas interrogantes se evidencia la necesidad de organizar los contenidos de la asignatura Programación II, aprovechando las ventajas que ofrecen las herramientas informáticas y los ambientes de aprendizaje constructivistas, especialmente la enseñanza significativa y los mapas conceptuales. Problema: ¿Cómo organizar los contenidos de la asignatura Programación II a través de una herramienta didáctica apoyada en mapas conceptuales? Estas aplicaciones muestran el interés por buscar vías que apoyen el proceso de enseñanza aprendizaje de los temas de estructuras de datos, es por ello que en el presente trabajo, el Proceso Docente Educativo de la asignatura Programación II de la carrera de Ingeniería Informática constituye el objeto de la investigación y el campo de acción es el sistema de conocimientos de la asignatura. Los resultados obtenidos permiten cambiar viejos paradigmas de enseñanza tradicional y utilizar un medio que contribuye a organizar en forma de sistema los Introducción / 4 contenidos de la asignatura, poniendo las técnicas de diseño y análisis de algoritmos al alcance de los estudiantes. En base a la experiencia acumulada y a las facilidades que brindan actualmente la Tecnología de la Información y las Comunicaciones y la Informática Educativa, se proponen los siguientes objetivos: Objetivo General: Diseñar un mapa conceptual que organice el sistema de conocimientos de la asignatura Programación II, mostrando las relaciones entre los distintos Tipos Abstractos, las estructuras de datos, los algoritmos que implementan sus operaciones, sus características, conceptos y aplicaciones. Objetivos Específicos: 1. Definir el ambiente de aprendizaje a utilizar, valorando la influencia de la Enseñanza Asistida por Computadoras, y en especial de los mapas conceptuales, en la enseñanza de la Programación. 2. Analizar los contenidos de la disciplina Técnicas de Programación de Computadoras, la relación y precedencia de sus asignaturas determinando los aspectos que afectan el proceso docente como sistema. 3. Crear una herramienta que, partiendo de los conceptos conocidos y a través de las relaciones con nuevos conceptos, logre un nivel de integración de los contenidos relacionados con los Tipos Abstractos, las Estructuras y los Tipos de Datos, incorporando al sistema elementos multimediales, simulaciones, imágenes y facilidades para el trabajo colaborativo en red. Estructura y contenido del trabajo El cuerpo de la Tesis se compone de tres capítulos, cuyos contenidos se describen a continuación. Capitulo I. “La Tecnología Educativa y los ambientes de aprendizaje. Herramientas para elevar la excelencia del Proceso Docente.” En él se realiza una caracterización histórico-tendencial y psicopedagógica de la Tecnología Educativa, y de los ambientes de aprendizaje centrados en el alumno. Se hace énfasis en el uso de los Mapas Conceptuales en la enseñanza y Introducción / 5 especialmente en el estudio de la programación. Se plantean las ventajas del CmapTools como herramienta de apoyo a la enseñanza significativa, las que incidieron en su elección para la creación del mapa conceptual de la asignatura Programación II. Capitulo II. "Análisis de los contenidos de la disciplina de Técnicas de Programación para Ingeniería Informática.” En este capítulo se profundiza en el diseño de la carrera del Ingeniero Informático en el contexto internacional y nacional, especialmente en la disciplina Técnicas de Programación de Computadoras y la asignatura Programación II. Se describe el necesario perfeccionamiento de los Planes de Estudio provocado por el desarrollo acelerado de la tecnología y por el surgimiento de nuevos medios y ambientes de apoyo al autoaprendizaje y se destacan los aspectos que aún son susceptibles de mejorar teniendo en cuenta las orientaciones para la elaboración del Plan de Estudios D en la carrera. Capitulo III. "Propuesta metodológica para la organización del sistema de conocimientos en la asignatura Programación II de la carrera de Informática" Se describe la propuesta de organización del sistema de conocimientos de la asignatura Programación II, a través de un mapa conceptual, que incluye opciones para el trabajo colaborativo, permite compartir y adicionar nuevos conocimientos y muestra la relación entre los diferentes conceptos que se manejan al realizar el diseño de las operaciones básicas de las estructuras de datos. Se detallan los mapas principales y los recursos que lo forman. Se realizan recomendaciones a profesores y estudiantes para el uso del mapa conceptual en el proceso de enseñanza-aprendizaje de la asignatura. Capítulo I / 6 1 Capítulo I. La Tecnología Educativa y los ambientes de aprendizaje. Herramientas para elevar la excelencia del Proceso Docente. 1.1 Introducción Desde los albores de la historia humana, aprender ha sido una característica propia de cada ser humano, 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. Las exigencias de la vida moderna, dinámica, competitiva y llena de información, han dirigido a la sociedad en la búsqueda de nuevos modelos, técnicas y sistemas que permitan adquirir esos conocimientos de una manera eficaz y eficiente. La educación como concepto no puede ser expresada por una terminología global. Los sistemas de enseñanza parten de varios métodos que pretenden formalizar una metodología adecuada a las necesidades de nuevos estudiantes, algunas de ellas definen a la educación como un proceso de construcción y transformación del ambiente en el que se desarrolla el educando. (Bravo, 2000) En la actualidad el proceso de enseñanza aprendizaje se caracteriza por una mayor heterogeneidad y diversidad en el alumnado, una estrecha relación y complementación entre tecnología y enseñanza y un desarrollo vertiginoso de las Tecnologías de la Información y las Comunicaciones, de ahí la necesidad de buscar nuevos modelos que ayuden a proyectar la enseñanza bajo esta nueva perspectiva. El desarrollo de medios tecnológicos está logrando no sólo cambiar los sistemas de relación ser humano-medio, sino también, instalarse como componente cultural, por lo que su utilización en la enseñanza es imprescindible. En el presente capítulo se hace una caracterización de la Tecnología Educativa y los ambientes de aprendizaje, desde el punto de vista histórico y psicopedagógico, particularizando en el uso de los mapas conceptuales en la enseñaza de la Programación, como fundamentos y antecedentes del presente trabajo. Se Capítulo I / 7 exponen las facilidades del CmapTools como herramienta para la creación de mapas conceptuales. 1.2 La tecnología educativa en el proceso de enseñanza- aprendizaje. Las tecnologías de la información obligan a modificar la organización de la educación, porque crean entornos educativos que amplían considerablemente las posibilidades del sistema, no sólo de tipo organizativo, sino también de transmisión de conocimientos y desarrollo de destrezas, habilidades y actitudes. La clave está en transformar la información en conocimiento y, éste, en educación y aprendizaje significativo. (Ruiz, 1996) Cuando el alumno puede asociar el contenido que recibe con el conocimiento acumulado y la experiencia anterior, encuentra significado a lo que aprende, la motivación puede estar dada, además, por el uso de medios que lo asistan en el proceso de aprendizaje. En el análisis realizado por Lezcano (1998), se constata que el sistema educacional cubano es una institución que imparte una educación formal que ha comprendido la necesidad de incorporar a sus metodologías el uso de herramientas que faciliten el aprendizaje, y siendo más ambiciosos, el autoprendizaje. Coincidiendo con este autor, puede añadirse que en el proceso de enseñanza-aprendizaje de las técnicas de programación estas herramientas constituyen, a la vez, objeto de estudio e instrumento pedagógico. 1.2.1 Caracterización histórico-tendencial de las aplicaciones educativas. En época tan temprana como la década del 50 se desarrollaron sistemas mecánicos y electromecánicos que permitían la presentación de programas lineales, basados en el principio de respuesta activa. (Chambers, 1983) La programación lineal tuvo su principal limitación en el hecho de no permitir la ramificación del proceso de enseñanza de acuerdo a la validez de las respuestas, Capítulo I / 8 lo que se resolvió, en parte, con la programación ramificada, la cual utiliza las respuestas del alumno para controlar el material que se mostrará a continuación. Ruiz (1996), plantea que desde principios de la década del 60, las computadoras sirvieron como base a los sistemas de enseñanza automatizados. Los materiales de la denominada enseñanza programada que se desarrollaron consistían en secuencias de pasos pequeños para asegurar que las respuestas fueran correctas con el fin de que el aprendiz recibiera un conocimiento reforzado. Esta constituyó la idea central en el desarrollo de software educativo, especialmente en los primeros programas asistidos por computador, progresivamente, con el paso del tiempo, en la medida que los educadores han adquirido mayor experiencia en el uso de las tecnologías de la información, y éstas han logrado incorporarse a los ambientes de aprendizaje, el diseño se ha ido haciendo más complejo y los principios pedagógicos que lo representan son más variados. Barrios (1997), expone que a fines de los años 60 las investigaciones en esta esfera habían languidecido considerablemente, aunque existía la convicción de que la Enseñanza Asistida por Computadora debía proporcionar nuevos e importantes cambios a la enseñan; el mismo autor plantea que en 1971 la National Science Foundation (NSF) de los Estados Unidos de América decide invertir 10 millones de dólares durante cinco años en los proyectos Time Sharing Interactive Computer Controlled Information (TICCIT) y Programmed Logic for Automatic Teaching Operation (PLATO), la finalidad de estos proyectos era demostrar que la Enseñanza Asistida por Computadora podía proporcionar mejor enseñanza a menor costo. (Barrios, 1997) En esa época las computadoras eran bastante costosas y de interfaces poco flexibles, por ese motivo las premisas que rigieron aquellos proyectos no son exactamente las reglas que se emplean actualmente para la producción de ambientes educativos asistidos por computadora. El estancamiento en la producción de aplicaciones educativas se produce nuevamente a finales de los años 70 y hasta comienzos de los 80, debido principalmente a la falta de madurez del desarrollo tecnológico: los reducidos rendimientos y prestaciones de las computadoras en comparación con sus costos, Capítulo I / 9 según plantea Lezcano (1998), y también debido al escaso desarrollo conceptual y metodológico. Un importante momento para los sistemas de Enseñanza Asistida por Computadoras 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. (Lezcano, 1998) 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, como los sistemas SESE, SEP y Progen, desarrollados por Lezcano (1998), en el Centro de Estudios Informáticos de la Universidad Central de Las Villas. Los dos primeros utilizan técnicas de Enseñanza Asistida por Computadoras para la enseñanza de tópicos básicos de la disciplina Inteligencia Artificial; el último es una herramienta que genera en forma automatizada sistemas expertos que utilizan el lenguaje Prolog como máquina de inferencia, la que, unida al método que la sustenta, permite establecer una relación importante entre las asignaturas de Programación Lógica e Inteligencia Artificial. En la actualidad se abren las puertas al desarrollo de las técnicas de Inteligencia Artificial, Aprendizaje Reforzado (Reinforcement Learning) y agentes inteligentes que ayuden a la navegación por los sistemas de enseñaza automatizada. (Bello et al., 2000; Holland et al., 2000) Diversos autores, como Bravo (2000), Julian y Botti (2000), consideran que los agentes constituyen el próximo avance más significativo en el desarrollo de sistemas y pueden ser considerados como la nueva revolución en el software. Teniendo en cuenta las evaluaciones del conocimiento, los agentes deben tener acceso a bases de datos que permitan tomar decisiones a partir de una diversidad de situaciones y de acuerdo a la apreciación del estado actual del conocimiento del estudiante. (Julian y Botti, 2000) Un momento importante en la aplicación de la tecnología en los procesos docentes lo constituye el desarrollo de las redes de información que ofrecen herramientas como la World Wide Web, los motores de búsquedas, el correo electrónico, las herramientas para la discusión y la conferencia, para el trabajo en grupo y de Capítulo I / 10 colaboración, así como las tecnologías de presentación multimedia, hacen posible el desarrollo de comunidades de aprendizaje a través de la comunicación entre personas ubicadas en diversas partes del mundo, de manera relativamente poco costosa. (Lucero, 2004) Si la infraestructura de apoyo al proceso docente lo permite, se considera vital el uso de la interactividad y las comunidades de aprendizaje, mediante ellas se logran la retroalimentación y el enriquecimiento del proceso, para el alumno y el profesor. 1.2.2 Caracterización psico-pedagógica Hodson (1996) y Holland et. al. (2000), reconocen que la Enseñanza Asistida por Computadoras 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, los estudiantes tienen la posibilidad de observar la simulación del comportamiento de los sistemas que están estudiando, a la vez que se les presenta un gran cúmulo de información bien dosificada de acuerdo a estrategias pedagógicas cuidadosamente diseñadas, no obstante, en cada caso, es necesario ser minucioso al elegir el tema que se tratará y la forma en que será abordado. (Hodson, 1996) Gorga y Madoz (2000), asimismo, consideran que lo más importante es introducir la aplicación educativa siguiendo un método, los cambios en los medios implican necesariamente profundos cambios metodológicos. Paralelo a la aparición de nuevos medios tecnológicos se han desarrollado estrategias y conceptualizaciones para fundamentar que las herramientas computacionales constituyen un método para descubrir, describir, organizar y cuantificar la información. 1.2.2.1 Los ambientes de aprendizaje potenciados por la tecnología. Una vía necesaria para incorporar las Tecnologías de la Información y las Comunicaciones en el contexto académico, es crear ambientes que conviertan el aprendizaje en significativo, el que concibe las ideas expresadas simbólicamente y Capítulo I / 11 relacionadas esencialmente con lo que el alumno conoce, produciéndose una modificación de la información recién adquirida. (Ausubel et al., 1997) La construcción del conocimiento comienza con la observación y reconocimiento de eventos y objetos a través de conceptos que ya se poseen. Otro elemento importante en la teoría de Ausubel (1997), es la posibilidad de incorporar información nueva a un sistema organizado de conocimientos previos en el que existen elementos que tienen alguna relación con los nuevos. A juicio de varios autores, una estrategia pedagógica a emplear para la Enseñanza Asistida por Computadoras aplicada a las Ciencias de la Computación es la enseñanza significativa y el enfoque constructivista. (Lezcano, 1998; Chestlevar, 2001) 1.2.3 Técnicas de enseñanza constructivista asistidas por computadoras. Para Vigotsky (1988), el alumno no descubre el conocimiento, sino que lo construye, en base a su maduración, experiencia física y social, es decir al contexto o medio ambiente. El punto crucial y definitorio del enfoque constructivista, según Piaget (1989) y Duffy (1991), se manifiesta en la posibilidad humana de abstraer en los objetos algunos pocos rasgos para construir criterios de agrupamiento de los objetos abstraídos. (Vigostky, 1988; Piaget, 1989; Duffy, 1991) Los primeros pasos en el uso de software educativo como material didáctico con el enfoque constructivista fueron dados por Papert (1999), el cual desarrolla una línea de software que corresponde a los lenguajes para el aprendizaje y de ella surge el lenguaje LOGO, que a partir de su desarrollo en el Instituto Tecnológico de Massachussets (MIT) fue y es utilizado en numerosas escuelas y universidades en un sentido constructivista del aprendizaje. Existen técnicas de enseñanza que se enmarcan en el enfoque constructivista asistido por computadoras, como son:  Ambientes de modelación. Permiten que el aprendiz construya modelos, por ejemplo LOGO y los ambientes basados en él. (Papert, 1999) Capítulo I / 12  Ambientes hipermedios. Presentan la información en 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 sí se presentan en forma expositiva. (Bravo, 2000)  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. (Hennessy, 2003)  Ambientes de mapas conceptuales. Permiten formar conceptos relacionados entre sí. (Cañas y Novak, 2004)  Ambientes colaborativos. Buscan propiciar espacios en los cuales se favorezca el desarrollo de habilidades individuales y grupales a partir de la discusión entre los estudiantes al momento de explorar nuevos conceptos. Lo innovador en los ambientes colaborativos es la introducción de la informática a estos espacios, sirviendo las redes virtuales de soporte, lo que da origen a los ambientes Computer-Support Collaborative Learning - Aprendizaje colaborativo asistido por computador (CSCL). (Lucero, 2004) Podría definirse el aprendizaje colaborativo como el conjunto de métodos de instrucción y entrenamiento apoyados con tecnología, así como de estrategias para propiciar el desarrollo de habilidades mixtas, aprendizaje y desarrollo personal y social, donde cada miembro del grupo es responsable tanto de su aprendizaje como del de los restantes miembros del grupo. (Lucero, 2004) Según Heao (2004), diseñar ambientes de aprendizaje que permitan integrar el potencial de las Tecnologías de la información y las Comunicaciones, a través de recursos didácticos en línea, supone proveer experiencias de aprendizaje auténtico que permiten al que aprende desarrollar conocimientos significativos, aplicables y facilitar actividades y oportunidades interactivas. (Heao, 2004) Capítulo I / 13 En ambientes colaborativos, se espera que la tecnología apoye el pensamiento creativo, autoaprendizaje, compromiso, responsabilidad, participación, organización, crecimiento individual y grupal. (Stojanovic, 2002) 1.2.3.1 Los medios y herramientas que apoyan el aprendizaje. La enseñanza significativa se centra en procurar que el aprendiz llene los vacíos existentes en su estructura de memoria para lo cual toma en cuenta que los estudiantes no son receptores pasivos de conocimiento, sino por el contrario, participantes activos en la interpretación de los modelos (muchas veces analogías) que ellos mismos o el profesor les propone para que intenten aprender aquello que aún no saben. Ausubel (1997) es, probablemente, el autor que más desarrolla un modelo de aprendizaje que se apoya en los medios, considera que la materia queda mediada ante el alumno por un complejo entramado de recursos, siendo el papel del profesor el de un organizador de esos medios y del proceso. Arana (2000), considera que en el proceso de comprensión e interacción del alumno con la realidad viene a mediar todo un conjunto de sistemas de representación que utilizan símbolos (verbales o no); Pérez (2001), añade que sin ellos tal comprensión e interacción se encuentra seriamente comprometida. (Arana y Batista, 2000; Pérez, 2001) La clave de la utilización de los medios de enseñanza está en rentabilizar sus propiedades con el objetivo de aumentar el grado de relevancia de los conocimientos. (Álvarez, 2001) Es por ello vital considerar que los aspectos más relevantes de los medios no son la información que transmiten ni su accesibilidad o disponibilidad para ser utilizados en el aula, sino, precisamente, qué símbolos utilizan, cómo los organizan y estructuran. En investigaciones realizadas Estrada (2002) y Santillana (2002), corroboran que la tecnología, en sí misma, no afecta al aprendizaje, sino más bien, es el sistema de símbolos que utiliza y el modo en que se compatibiliza con los ya existentes, gestual, icónico, verbal, matemático, y que, en algunos casos, pudiera implicar alguna jerarquía. (Estrada y Febles, 2002; Santillana, 2002) Capítulo I / 14 Por tanto, una de las preocupaciones en la enseñanza es precisamente la de promover competencias (aprendizajes) en el alumnado que le faciliten comprender, explicar la realidad y resolver sus problemas. (Uviña et al., 2005) La comprensión holística conlleva tanto a atender su heterogeneidad como a traducir los diferentes modos de representarla. 1.2.3.2 Los Mapas Conceptuales en la enseñanza Basándose en el aprendizaje como procesamiento de información, Novak y Gowin (1988), introducen el Mapa Conceptual como una respuesta a la línea de Ausubel del aprendizaje significativo dentro del marco de un programa denominado “Aprender a Aprender”. En ellos, el conocimiento está organizado y representado en todos los niveles de abstracción, situando los más generales e inclusivos en la parte superior y los más específicos y menos inclusivos en la parte inferior. Novak (1991), ha descrito el acto de hacer mapas como una actividad creativa, en la cual el estudiante debe hacer un esfuerzo para aclarar significados, identificando los conceptos importantes, relaciones y estructura del contenido tratado. La creación de conocimiento requiere un alto nivel de aprendizaje significativo, los mapas conceptuales facilitan este proceso, por lo que resultan importantes en el aprendizaje, principalmente debido a que:  Facilitan una rápida visualización de los contenidos de aprendizaje.  Favorecen el recuerdo y el aprendizaje de manera jerárquica organizada  Permiten una rápida detección de los conceptos claves de un tema, así como de las relaciones entre los mismos.  Favorecen el desarrollo del pensamiento lógico.  Los materiales elaborados utilizando Mapas Conceptuales facilitan el estudio independiente.  Permiten que el alumno pueda explorar su conocimiento previo acerca de un nuevo tema, así como la integración de la nueva información que ha aprendido. Capítulo I / 15  Organizan los conocimientos a partir de las principales relaciones entre los conceptos.  Favorecen el trabajo colaborativo. (Novak, 1991) Ontoria (1993), considera que los mapas conceptuales constituyen un recurso esquemático para representar un conjunto de significados conceptuales incluidos en una estructura de proposiciones. Estas pueden ser explícitas o implícitas. Los mapas conceptuales proporcionan un resumen esquemático de lo aprendido, ordenado de una manera jerárquica. (Novak y Gowin, 1988; Ontoria, 1993) 1.2.3.3 Mapas Conceptuales en el estudio de la programación. La enseñanza de la programación, como parte fundamental de la formación profesional de las carreras de Ciencias de la Computación, ha sufrido cambios importantes que han estado aparejados al desarrollo de la tecnología y la enseñanza, muchos de ellos se han basado en el surgimiento de nuevos paradigmas de programación. (Castillo y Barberán, 2000) Entre los principales obstáculos que aparecen para el aprendizaje y aplicación de un lenguaje de diseño de algoritmos pueden puntualizarse los siguientes: • El alumno se ve necesitado de manejar un gran número de nuevos conceptos e integrarlos de manera significativa. En los algoritmos, las acciones complejas suelen definirse en términos de otras acciones más sencillas. Esto hace que la comprensión acabada de las acciones más simples redunde en beneficios para entender aquellas más complejas. • Las acciones tienen dos aspectos que están estrechamente relacionados entre sí: una sintaxis (reglas de redacción de las acciones en un algoritmo), y una semántica (significado formal y preciso de una acción dada). • El alumno se enfrenta a la necesidad de manejar un lenguaje objeto (para elaborar algoritmos) y un metalenguaje (para hablar acerca de cómo se comporta el lenguaje algorítmico). • Existen conceptos relativamente complejos interrelacionados entre sí. (Chestlevar, 2001) Capítulo I / 16 Escribir un programa de computadora utilizando un Lenguaje de Programación requiere del alumno varias competencias y habilidades, que involucran básicamente la capacidad de manipular un conjunto de abstracciones interrelacionadas para la resolución de problemas. En tal sentido, el proceso de enseñanza-aprendizaje de un Lenguaje de Programación es extremadamente complejo. La tarea de aprender a manipular el conjunto de símbolos asociado a un lenguaje conforme a una sintaxis, relacionándolos con una semántica, demanda un esfuerzo considerable para los alumnos de los primeros años de la carrera. A esto se suma, en muchos casos, una formación deficiente que les dificulta organizar nuevos conceptos de una manera ordenada para construir taxonomías y diferenciar propiedades que permitan establecer pautas para razonar sobre ellas. En este contexto, Stojanovic (2002), propone el uso de mapas conceptuales para la enseñanza de conceptos básicos de programación y desarrollo de algoritmos. (Chestlevar, 2001; Stojanovic, 2002) Respecto a las destrezas cognitivas, los Mapas Conceptuales desarrollan conexiones con ideas previas, la capacidad de inclusión, la diferenciación progresiva entre conceptos, la integración o asimilación de nuevas relaciones entre ellos. (Moreira, 2002) Al revisar los textos tradicionales de enseñanza de programación en el ámbito universitario se comprueba que mayoritariamente no hacen uso de un lenguaje de diseño de algoritmos para enseñar a programar y, en su lugar, apelan directamente a un lenguaje de programación. Ese acercamiento prescinde, muchas veces, de una clara identificación de cómo se interrelacionan distintos conceptos teóricos entre sí, el resultado es que muchos se presentan independientemente y sólo a través de la práctica el alumno llega a interrelacionarlos. Esto puede motivar la exploración de distintas técnicas didácticas que facilitan a los alumnos una mayor comprensión y vinculación de los temas presentados. Capítulo I / 17 Los mapas conceptuales brindan una presentación integradora y ofrecen un recurso esquemático de lo aprendido, donde se muestran las relaciones jerárquicas y los niveles de abstracción. (Cañas y Novak, 2004) En programación se da el caso particular de que todo concepto expresado a través de la sintaxis de un lenguaje tiene su correlación con un significado operacional (semántica), y dicho significado estará definido de manera composicional, en término del significado de otros conceptos más elementales. El mapa conceptual, puede ser usado, entonces, como una herramienta de organización, asociación, validación, interrelación, discriminación, descripción y ejemplificación de contenidos, con un alto poder de visualización. La incidencia de los mapas conceptuales en la pedagogía moderna para definir y organizar planes de estudio, currículos, programas de asignaturas y para la acción directa en el proceso de aprendizaje ha trascendido las aspiraciones iniciales de su creador. El trabajo con los Mapas Conceptuales permite que el proceso de enseñanza- aprendizaje se desarrolle centrado en el alumno y no en el profesor, atendiendo el desarrollo de destrezas, no conformándose sólo con la repetición memorística de la información por parte de alumno, pretendiendo un desarrollo armónico de todas las dimensiones de la persona, no solamente intelectuales. 1.2.3.4 Herramientas para la creación de mapas conceptuales. Los mapas conceptuales son un aporte que en sus inicios, no estaba relacionado con las redes de cómputo o comunicación, pero al ser éstos un potente recurso educativo y la educación no ser más que una forma especial de comunicación, el uso de los mapas, empleando las redes de información se hace más eficiente tanto cuantitativa como cualitativamente. El desarrollo de las redes facilitó la aparición de aplicaciones o herramientas que permiten, con gran facilidad, compartir, crear y editar mapas conceptuales, en una institución e incluso a escala mundial. (Díaz y Leal, 2004) Capítulo I / 18 En el desarrollo de esta investigación se evaluaron varias herramientas para desarrollar mapas conceptuales, algunas, como Shared Space, constituyen herramientas potentes, este último fue diseñado principalmente para la educación, ofrece facilidades para el trabajo colaborativo, las discusiones de temas, puede generar mapas compatibles con CMapTools, posee sofisticadas herramientas de navegación y búsqueda, apertura y creación rápida y fácil de nuevos espacios de información, eficiente ayuda en línea, pero sólo es compatible con arquitectura y sistema operativo Macintosh. (Copsey, 2005) Otras son utilizadas con fines comerciales, como MindMapper, MindGenius, ConceptDraw, VisualMind; algunas se encuentran disponibles en Internet y de código abierto, como, FreeMind, escrito en Java, que constituye la primera aplicación libre para la creación de mapas conceptuales, aunque presenta limitaciones al añadir recursos multimediales al nodo o concepto del mapa y no permite el trabajo colaborativo. (GAelLimited, 2004; CSO, 2005; TechnM, 2005; BosleyGroup, 2006; MedioWiki, 2006) 1.2.3.4.1 Ventajas de CmapTools el diseño de mapas conceptuales. Durante los últimos doce años, el “Institute for Human and Machine Cognition” (IHMC), ha estado desarrollando CmapTools, un software libre con ambiente cliente-servidor que permite, entre otras opciones, construir y compartir mapas conceptuales. El software se usa extensivamente por personas de diferentes edades y en una gran variedad de aplicaciones y se ha creado teniendo en cuenta la colaboración en ambientes educativos, principalmente para escuelas y universidades. (IHMC, 2005) La herramienta CmapTools cumple con los requisitos indispensables para ser usada como parte de una estrategia de enseñanza significativa, enmarcada en la construcción del conocimiento, como es la propuesta realizada en este trabajo para la asignatura Programación II de la carrera de Ingeniería Informática. La figura 1.1 muestra desde la ventana Vistas de la herramienta CmapTools toda la organización de las carpetas que contienen los mapas y recursos asociados a los conceptos, almacenados en el disco de la computadora local o a través del servicio remoto compartido en sitios con la comunidad del Cmap. Capítulo I / 19 Figura 1.1. Ventana para visualizar la organización del CmapTools. 1.2.3.4.1.1 Recursos e informaciones en un mapa conceptual. Una operación importante en la creación de un mapa conceptual es la de añadir información al mismo, a través de la inclusión de nuevos conceptos y relaciones hasta obtener un modelo de conocimiento. El CmapTools permite incluir un nuevo concepto, crear proposiciones o relaciones, crear carpetas, importar, adicionar y editar enlaces a recursos (Figura 1.2) y enlazar proposiciones entre varios mapas creados con CmapTools. (Cañas et al., 2003a) Figura 1.2. Recursos en CmapTools. Capítulo I / 20 Esta opción es importante en el desarrollo de mapas conceptuales con fines docentes y para la construcción del conocimiento, ya que en su creación pueden encontrarse colaborando varios equipos de estudiantes, los cuales desarrollan de forma independiente mapas relacionados con diferentes temas que pueden unirse mediante relaciones entre conceptos afines, así se vinculan mapas de varias asignaturas o disciplinas. 1.2.3.4.1.2 Permisos y Control de Accesos El CmapTools permite controlar la accesibilidad y permisos de una carpeta localizada en Cmaps en Mi Computador o en Sitios Compartidos. El administrador de un sitio autoriza a otros usuarios a crear, usar y acceder a los mapas, carpetas y recursos en ese sitio, también puede modificar los permisos ya existentes. (Cañas y Hill, 2004a) Cuando no se ha especificado ningún administrador para una carpeta, la autoridad sobre la lista de permisos de la carpeta está determinada por el primer administrador que se encuentre, ya sea en el directorio padre, o en un subsiguiente directorio antecesor, o en la misma raíz. El directorio raíz puede estar dentro de Cmaps en Mi Computador o en un sitio de la red CmapTools. 1.2.3.4.1.3 Interacción de los actores en el proceso de autoaprendizaje y construcción del conocimiento. La opción de controlar la accesibilidad permite personalizar el trabajo con los estudiantes en el proceso de enseñanza-aprendizaje del tema representado en el mapa conceptual, ya que el profesor/administrador concede los accesos y los permisos para modificar y añadir información a los alumnos/usuarios en dependencia al nivel de desarrollo alcanzado en relación con el tema que se trata. Uno de los propósitos en esta investigación, además de ofrecer una herramienta que organice los conceptos y los relacione creando proposiciones a través del mapa conceptual de la asignatura, es el enriquecimiento del mismo, a través de la inclusión de informaciones y recursos, resultado de la creación de los estudiantes. Capítulo I / 21 1.2.3.4.1.3.1 Trabajo colaborativo. La arquitectura cliente - servidor, junto con una colección de sitios Públicos (Servidores Cmap) en los que cualquier usuario de Internet puede crear una carpeta y construir, copiar o publicar sus mapas conceptuales, proporciona un ambiente adecuado para compartirlos y permite la colaboración durante la etapa de construcción (Figura 1.3). Los mapas guardados en estos servidores también generan automáticamente una página web y pueden ser observados por cualquier usuario solo utilizando un explorador de Internet. (Cañas et al., 2003a) Las formas de colaborar son variadas, incluso existe una sesión de colaboración sincrónica donde los usuarios modifican el mapa concurrentemente, para lo cual se comunican a través de una ventana de Chat y por medio de Anotaciones (pos-it- notes) se facilita la revisión y colaboración por pares. Los aspectos discutidos, se pueden agregar al mapa después de seleccionarlos y, a través de Hilos de Discusión, se adicionan a un nodo (concepto). El sistema apoya la construcción de modelos de conocimiento: grupos de mapas conceptuales y recursos asociados sobre un tema en particular. CmapTools brinda la posibilidad de guardar el proceso de construcción del mapa conceptual, permitiendo al profesor evaluar y conducir su construcción y desarrollo. La reproducción también identifica cuál usuario llevó a cabo cada paso, y ese aspecto es esencial para apoyar el trabajo colaborativo. De hecho, la reproducción de los mapas conceptuales creados por un individuo revela los procesos por los cuales el aprendizaje significativo está ocurriendo. A pesar del formato de estilo libre que pueden tomar, las características específicas de mapas conceptuales bien construidos (estructura, semántica, contexto, etc.) brindan una abundancia de información sobre la cual se pueden desarrollar Figura 1.3. Sitios Públicos del CmapTools en Internet. Capítulo I / 22 herramientas inteligentes que ayuden al usuario en el proceso de la construcción de los mapas. (Cañas y Hill, 2004b). En la red Cmap comparten mapas conceptúales prestigiosas universidades del mundo como la de Extremadura, España; la de Los Andes, Colombia; de California Irving, de Massachussets y centros de investigación como el National Aeronautics and Space Administration, NASA en Estados Unidos; la Universidad Agrícola de Sydney; la Universidad Claude Bernard Lyon, Francia, la de Aizu; Japón y el Institute for Human and Machine Cognition, entre otros. (IHMC, 2005) 1.2.3.4.1.4 Uso de Listas de discusión. Las listas de discusión en el mapa conceptual pueden añadirse a proposiciones (forman parte del modelo de conocimiento), conceptos y frases de enlace, los cuales son partes del mapa conceptual, el cual puede ser almacenado en un servidor Cmap. Tienen un creador, al cual se le solicita su ID+contraseña. A ellas acceden también otros usuarios a través de una participación anónima o mediante autentificación. Tienen una fecha de vencimiento y asociado también un mensaje al usuario sobre la fecha en que expira. Permiten suministrar información a través del correo electrónico a los usuarios. (Cañas et al., 2003b) Su uso aporta una relación constante de los estudiantes y el profesor y entre estudiantes que colaboran y aprenden sobre el tema propuesto con lo cual se llega a formar una comunidad en torno a un interés común. En las listas de discusión creados para discutir un tema relacionado con un concepto del mapa se pudo comprobar que los estudiantes, además de plantear sus dudas, sugerencias y presentar incluso sus algoritmos al criterio del profesor y el resto de los miembros de la listas de discusión, se preocupan por la calidad de los textos tanto en contenido como en redacción, ortografía, gramática y otras características del lenguaje escrito. El profesor como coordinador principal debe escoger los temas de mayor dificultad para el estudiante y en los que la orientación al trabajo independiente ha sido más Capítulo I / 23 profunda. De ser posible es recomendable seleccionar a un estudiante que colabore como facilitador, esto ayuda a los usuarios a compartir información relevante a la temática, en discusión libre y amistosa. 1.2.3.4.1.5 El uso del Cmap en la modalidad de Educación a Distancia La Educación a Distancia es una estrategia educativa basada en el uso intensivo de las tecnologías de la información y las comunicaciones, estructuras operativas flexibles y métodos pedagógicos altamente eficientes en el proceso enseñanza- aprendizaje, que permiten que las condiciones de tiempo, espacio, ocupación o edad de los estudiantes no sean factores limitantes o condicionantes para el aprendizaje. (Bravo, 2000) Las Nuevas Tecnologías en la educación a distancia se practican en la actualidad, por numerosas instituciones, empleando redes de información globales, la tecnología computacional móvil, el desarrollo de la multimedia y los avances de la telecomunicación. Existen instituciones en el mundo, que trabajan exclusivamente a partir del modelo de educación a distancia, aprovechando los programas de las universidades tradicionales e incorporándolos, con diferentes modificaciones a este tipo de enseñanza. Otros han desarrollado Aulas Virtuales y han incorporado modernas aplicaciones interactivas para la comunicación. (Antúnez et al., 2004) El mapa resultante de esta investigación se encuentra accesible desde todas las Universidades que pertenecen a la Red Nacional del Ministerio de Educación Superior, al utilizar la herramienta en red una vez que el mapa se ha guardado en el Servidor, automáticamente se almacena una versión que permite visualizarlo como una página web. Al realizar una búsqueda directamente en Internet, usando un buscador o metabuscador e incluyendo en el perfil de búsqueda las palabras claves necesarias aparecerá la página con la información que se encuentra en el servidor Cmap. En la figura 1.4 se muestra la información de la carpeta Tipos Abstractos de Datos del servidor Cmap de la Universidad de Granma. Capítulo I / 24 Figura 1.4. Página web que muestra la carpeta Tipos Abstractos de Datos La herramienta CmapTools, permite al usuario realizar búsquedas en Internet de forma sencilla, introduciendo en una ventana el perfil de búsqueda, también posibilita realizarla en Servidores Cmap, incluyendo mapas conceptuales que están relacionados con la información buscada, puede trabajar automáticamente con los términos del mapa, de un concepto o frase de enlace, obteniéndose todos los recursos o mapas relacionados con este término. (Cañas y Hill, 2004a) Este proceso tiene gran importancia en la creación del mapa y de la estructura y relación de los contenidos representados, ya que la información así obtenida puede usarse para mejorar el mapa propio. La posibilidad de que el mapa diseñado como resultado del proceso de enseñanza, por parte del profesor, y enriquecido producto del autoaprendizaje en el caso de los alumnos se encuentre en Sitios Compartidos por el Cmap en Internet hace que el trabajo realizado sea útil a otros usuarios y sirva como retroalimentación al recibir sugerencias para mejorarlo. También le permite al profesor comparar el proceso de construcción del conocimiento por parte de alumnos de diferentes centros de enseñanza, evaluar la calidad de las habilidades alcanzadas y rediseñar y enriquecer la estrategia de enseñanza utilizada. Capítulo I / 25 El mapa conceptual propuesto para la asignatura Programación II puede ser utilizado, además, instalando la aplicación CmapTools (cliente), abriendo la carpeta UdG Cmap y seleccionando el mapa Tipos Abstractos de Datos. Estas ventajas de la herramienta CmapTools permiten usarla en la modalidad de educación a distancia, la cual da validez a los principios de educación para todos, aprender a aprender, la enseñanza-aprendizaje personalizada, la educación para toda la vida, es decir, la educación permanente o continua. El módulo de comparación de mapas y generación automática de una versión HTML apoyan al usuario en el uso de los mapas en un ambiente educativo. Por los aspectos señalados se escoge esta herramienta para el desarrollo de la propuesta resultante de esta investigación. 1.2.4 Aplicaciones educativas en la enseñanza de la asignatura de Programación II. En los últimos años se han intensificado los esfuerzos por diseñar aplicaciones de ayuda a la comprensión de los contenidos de la asignatura Programación II, entre ellas, la propuesta por Ruiz (1996), que muestra de forma gráfica las operaciones básicas con ciertas estructuras de datos, simulando el proceso que se ejecuta. (Ruiz, 1996) Señas y Moroni (2003), plantean la experiencia en el uso combinado de los llamados Esquemas de Ejecución Algorítmica (EEA), representaciones gráficas para visualizar la ejecución de un algoritmo y los Mapas Conceptuales Hipermediales (MCH). Los EEA ayudan a comprender la relación entre el algoritmo, como entidad estática, y el dinamismo de su ejecución, constituyen, además, una herramienta valiosa para la etapa de prueba y verificación. Por otra parte, el alumno crea el MCH del tema sobre el que trata el problema a resolver, lo que representa una ayuda significativa para la comprensión del mismo. (Señas y Moroni, 2003) La herramienta EDApplets, una aplicación web orientada a la enseñanza- aprendizaje de los algoritmos y la programación en las ingenierías se basa en la tecnología de Applets Java, está orientada a la animación y visualización mediante trazas de algoritmos y estructuras de datos. La herramienta permite cubrir diversos Capítulo I / 26 aspectos en una enseñanza que puede ser dirigida a distintos estilos aprendizaje. (Almeida et al., 2003) Algunos ejemplos de herramientas informáticas para la creación de animaciones de algoritmos lo constituyen 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 requiere grandes recursos del sistema donde debe ser instalado, puede utilizarse en ambiente web y, finalmente, el modelo conceptual que utiliza es sencillo. (Axoft, 2005) 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. El análisis realizado permite corroborar que el enfoque constructivista se adapta a la enseñanza de la programación de computadoras y que en esta investigación se utilice para dar solución al problema planteado. 1.3 Resumen del capítulo. La enseñanza es una tarea compleja que necesita de recursos que ayuden a hacerla más amena y productiva y el aprendizaje, al igual que cualquier evento social, es un fenómeno complejo, que se resiste a la redacción lineal y causal que a menudo se le impone; éste no puede ser interpretado como una simple secuencia de acciones, sino en términos de una danza estructurada, con una compleja coreografía de eventos. Es por eso que teniendo como base los modelos teóricos presentados en este capítulo, hemos elegido, diferentes elementos del enfoque constructivista, de la enseñanza significativa y en especial del uso de los mapas conceptuales, incorporando a éste, el trabajo colaborativo en red y la simulación como medio de enseñanza. Es muy ambicioso pretender abarcar en una sola investigación todos Capítulo I / 27 los temas que se tratan en la disciplina de Técnicas de Programación, por lo que se seleccionaron los de la asignatura Programación II, de modo que la experiencia lograda sirva para futuras generalizaciones hacia otros contenidos. En el próximo capítulo se realizará un análisis del diseño de la carrera de Ingeniería Informática, fundamentalmente de la disciplina de Técnicas de Programación de Computadoras y la asignatura Programación II. Se evaluará la importancia de los temas de diseño y análisis de algoritmos que se tratan en la carrera de forma dispersa, lo que afecta considerablemente la integración de estos contenidos y su asimilación por parte de los estudiantes. Capítulo II / 28 2 Capítulo II. Análisis de los contenidos de la disciplina Técnicas de Programación para Ingeniería Informática. 2.1 Introducción. Desde 1960 comenzó el diseño a nivel mundial del currículo de las carreras de Computación. En 1968 la Association for Computing Machinery (ACM) publica el reporte Curriculum´68, el cual ofrece detalladas recomendaciones sobre los programas académicos. (ACM, 1968) En nuestro país surge la carrera de Ingeniero en Sistemas Automatizados de Dirección en 1976. Desde su comienzo se mantiene la evaluación y perfeccionamiento de los Planes de Estudio, proceso continuo y labor ininterrumpida de la Educación Superior. Como consecuencia de ello, en determinados momentos, adquiere tal significación que se necesita modificar los planes de estudio. El ingeniero informático tiene como objeto de estudio el desarrollo de sistemas informáticos con inclusión o no de ayuda a la toma de decisiones, tanto en organizaciones productivas como de servicio, con el propósito de obtener un incremento en la eficacia y eficiencia de su funcionamiento con técnicas que le permiten delimitar los procesos computacionales, la información a procesar y las interrelaciones correspondientes; así como programar aplicaciones con alto nivel de profesionalidad. (MES, 1998a) En el presente capítulo se realiza un esbozo de la carrera de Ingeniería Informática en el contexto nacional e internacional y su constante perfeccionamiento, debido, por una parte, al impacto que la tecnología ha tenido en la educación, y por otra a la incansable búsqueda de profesores e investigadores de nuevos ambientes de autoaprendizaje. Se hace énfasis en cómo la propuesta de éste trabajo se inserta en las orientaciones básicas para la elaboración del Plan de Estudios “D”, teniendo en cuenta la esencialidad del contenido, la semipresencialidad, el uso de las Tecnologías de la Información y las Comunicaciones en el Proceso de Docente Educativo y sobre todo su aporte a la nueva Estrategia Curricular de autoaprendizaje o “Aprender a Aprender”. Se analiza el diseño de la disciplina de Capítulo II / 29 Técnicas de Programación y de la asignatura de Programación II, considerando la necesidad de incluir desde los primeros años los elementos de Diseño y Análisis de Algoritmos en la disciplina. 2.2 El diseño a nivel mundial de la carrera de Ingeniero en software. En los últimos 14 años cuatro organizaciones han dirigido el desarrollo de los currículos de computación para los colegios y universidades del mundo: la Association for Computing Machinery (ACM), considerada como el centro de las investigaciones científicas que examinan nuevas estrategias y teorías que fundamentan la ciencia de la computación; la Association for Information System (AIS), fundada en 1994, apoya a los especialistas en Sistemas de Información; la Association for Information Technology Professionals (AITP), organizada en 1951, que congrega a los profesionales que usan la tecnología en los negocios y otras esferas; la Computer Society del Institute for Electronicaland Electronic Engineers (IEEE-CS) surgida en 1946 y ha suministrado recomendaciones a los currículos de ingenieros en computadoras, en software, tecnólogos en computación y de ciencias de la computación. Actualmente centra su trabajo en la especialidad del ingeniero en software. (ACM et al., 2004) En 1990 los investigadores de la ACM y la IEEE-CS comienzan a vislumbrar que la computación se desarrolla ampliamente y en varias dimensiones, surgen nuevos programas de estudios y se hace difícil la elección de una u otra especialidad por parte de los estudiantes y la comunidad. Por estas razones emprenden la tarea de elaborar un reporte que proponga pautas orientadoras para el diseño de nuevas carreras en computación, que brinde una visión de los aspectos que identifican a cada especialidad y los temas que son comunes, con un detallado análisis de la incidencia en la carrera de los componentes organizacionales, de sistemas de información, aplicaciones tecnológicas, métodos y técnicas de software, infraestructura de sistemas, hardware y arquitectura de computadoras y el grado de teoría y práctica de cada uno. (ACM et al., 2004) Capítulo II / 30 En 1998 se crea el Proyecto de Educación del Ingeniero en Software - Software Engineering Education Project (SWEEP) – que tiene como objetivo el rediseño curricular de la carrera, plasmado en el reporte SE2004, en el que participan varios países e instituciones interesadas en la calidad del graduado de este perfil. El reporte centró su atención en los conocimientos asociados al perfil del ingeniero en software y la pedagogía para impartirlos. (ACM et al., 2004) En el reporte de la ACM y IEEE-CS (2005), se plantea que los avances tecnológicos influyen en la inclusión de nuevos tópicos en las carreras en esta etapa, debido, fundamentalmente, a la aparición y desarrollo de la World Wide Web y sus aplicaciones; la tecnología de redes, particularmente aquellas basadas sobre TCP/IP; los recursos multimedios; las Bases de Datos Relacionales; la Programación Orientada a Objetos; el uso de sofisticadas Interfaces de Programación (Application Programmer Interfaces, APIs); la seguridad y criptografía y los Dominios de Aplicación. Se definen nuevos contenidos, se proponen las disciplinas de cada carrera y las orientaciones metodológicas para que cada centro docente estructure el currículo propio según sus intereses y las demandas de la sociedad, teniendo en cuenta los temas esenciales. (ACM y IEEE- CS, 2005) La carrera de Ingeniero en Software tiene una base teórico-conceptual que incluye nociones de otros campos, como las matemáticas, las ingenierías, la administración de proyectos, las ciencias económicas y de otros diversos dominios de aplicación. En el Currículo del 2005 se define un área esencial del conocimiento, denominada Fundamentos de la Computación, que incluye cursos sobre Programación (control y datos, recursividad), Algoritmos, Estructuras de Datos/Representación (estáticas y dinámicas) y Complejidad, entre otras. En esta propuesta se analizan los temas comunes al resto de las especialidades de computación y los que le confieren identidad propia al Ingeniero en Software, como son, el análisis y modelación de problemas; diseño, verificación, validación, calidad y administración de software. (ACM y IEEE-CS, 2005) Capítulo II / 31 2.3 Concepción y desarrollo de la carrera de Ingeniería Informática en Cuba. A tono con el surgimiento y evolución de la carrera de Ingeniería en Software diseñada a nivel mundial, en Cuba se crea la especialidad de Ingeniero en Sistemas Automatizados de Dirección Técnico Económico (SAD-TE) con el objetivo de formar un especialista que comenzaba a ser necesario a la economía del país y debido a la cantidad de máquinas computadoras electrónicas, y otros medios técnicos de computación que se preveía fuesen introducidos paulatinamente en ministerios y empresas con el fin de hacer más eficiente la dirección y la gestión productiva y de servicios. Desde el principio se concibió al especialista con un perfil amplio de formación, que incluía la automatización de los sistemas de información y de toma de decisiones para la gestión y los procesos tecnológicos. (MES, 1998a) La constante evolución de la informática obliga a que el Plan de Estudios de la carrera sea sumamente flexible para asimilar los cambios tecnológicos que tienen lugar, esto requiere que periódicamente se analicen y evalúen los resultados alcanzados y la calidad de los egresados, permitiendo perfeccionar los planes y programas, manteniendo la actualización técnica y añadiendo nuevos contenidos necesarios para la formación integral del Ingeniero. El MES (1998a), representado en la Comisión Nacional de la carrera, luego de seis cursos de aplicación, valora integralmente el Plan de Estudios C y cataloga sus logros de muy satisfactorios teniendo en cuenta la calidad de la preparación del graduado y se constata la necesidad de introducir modificaciones que lo adapten a los nuevos requerimientos; no solo provenientes del avance de la ciencia y la tecnología de la computación y las comunicaciones, sino también de la sociedad y la economía cubanas en las que la informática ha continuado introduciéndose y desarrollándose vertiginosamente. 2.3.1 Modificaciones introducidas al Plan de Estudios C del Ingeniero Informático. En el Plan de Estudios C Modificado, desarrollado por la carrera, MES (1998), se introducen variaciones, entre las que se encuentran: Capítulo II / 32  Otorgar mayor importancia a la transmisión de datos y redes de computadoras. Se tiene en cuenta que la integración de los medios de comunicación con los medios de cómputo ya es una realidad cotidiana.  Se concibe la integración entre los proyectos de curso y la Informática Aplicada en la etapa de Práctica Profesional en todos los años de la carrera. Se refuerza la creación de habilidades de trabajo en grupo y la ejercitación de roles propios de un grupo de proyecto, para crear habilidades, tales como, programar lo especificado por otro, especificar para que otro programe y dirigir programadores. Con estos cambios se logra una expresión más madura del Plan de Estudios original, lo que redunda en la formación de un graduado mejor preparado para dar respuesta a las necesidades y realidades nacionales; pero al mismo tiempo de un nivel equivalente al promedio internacional en la profesión. Se derivan las dos disciplinas integradoras, columna vertebral de la carrera, Técnicas de Programación de Computadoras e Ingeniería y gestión de software. 2.4 Sistema de conocimientos y propuesta de organización de la disciplina Técnicas de Programación de Computadoras. Los elementos que componen la disciplina de Técnicas de Programación estuvieron presentes desde el primer Plan de Estudios “A”, elaborado para la especialidad de Ingeniería en Sistemas Automatizados de Dirección. (MES, 1998b) Al analizar los Planes de Estudios, desde el surgimiento de la carrera, se comprueba que el desarrollo de los contenidos abordados ha sido muy dinámico, especialmente en los últimos años, pues se ha tratado de impartir conocimientos y desarrollar habilidades acordes con el acelerado progreso de esta rama en el mundo. El Ingeniero Informático requiere una profunda preparación en las técnicas modernas de modelación de datos y de programación, ya que ellas constituyen el instrumento más importante que le permite al egresado hacer un uso eficiente y verdaderamente profesional de las computadoras en cualquier actividad de las Capítulo II / 33 más diversas esferas. Por todo ello, el objeto de estudio de esta disciplina está constituido por la modelación de los datos, tanto en memoria interna como externa; el diseño de algoritmos y la teoría de lenguajes. La disciplina de Técnicas de Programación mantiene una estrecha relación con el resto de las disciplinas y es la responsable de transmitir los fundamentos de la programación, identificada al perfil terminal del graduado. La mayor vinculación se logra a través de los Proyectos de Curso y las Prácticas Profesionales, las que tienen como objetivos fundamentales en primer año la solución de problemas simples usando la filosofía orientada a objetos; en segundo, el diseño de estructuras de datos y algoritmos complejos, desarrollando y poniendo a punto programas en lenguajes de alto nivel y documentar programas; en tercero, la solución de problemas de gestión mediante aplicaciones que hagan uso de los Sistemas de Gestión de Bases de Datos. En el análisis del sistema de conocimientos de la disciplina Técnicas de Programación, realizado en esta investigación, se considera que existen aspectos que contribuyen al dominio de las técnicas de programación de computadoras, como son que los contenidos están dosificados de los más simples a los más complejos, las asignaturas de Práctica Profesional aportan el componente laboral al proceso docente y consolidan los contenidos impartidos, la distribución de las horas lectivas para cada asignatura es adecuada. 2.4.1 Consideraciones sobre el diseño de la disciplina. Teniendo en cuenta los resultados docentes de la disciplina integradora Técnicas de Programación en los cuatro años de experiencia de la carrera en la Universidad de Granma, se determina que existen deficiencias en el diseño que influyen negativamente en el proceso de enseñanza-aprendizaje, fundamentalmente en el desarrollo de las habilidades en el diseño de algoritmos. Las asignaturas Lógica Matemática, Matemática I, Algebra Lineal e Introducción a la Informática constituyen prerrequisitos para recibir las de Técnicas de Capítulo II / 34 Programación. En la Figura 2.1 se muestra la organización de la disciplina, las asignaturas tienen un nivel de precedencia de acuerdo con el sistema de conocimientos y habilidades propuestos; se imparten Programación I, Programación II, Programación III, Sistemas de Bases de Datos; estas son, a su vez, precedentes de Programación IV y Proyecto de Programación. Práctica Profesional I se desarrolla al concluir la asignatura Programación I, Práctica Profesional II tiene como precedentes Programación II y Programación III y la Práctica Profesional III; Sistemas de Bases de Datos, Programación IV y Proyecto de Programación. Figura 2.1. Precedencia de las asignaturas en la disciplina de Técnicas de Programación. El sistema de conocimientos de la asignatura de Introducción a la Informática incluye elementos para describir algoritmos y programación en un lenguaje de alto nivel, profundizando más en los conceptos básicos para la utilización de máquinas computadoras, la historia de la informática (nacional e internacional), elementos de ética informática, software de uso general, aplicación de los principios del enfoque sistémico, definición de sistema, tipos, ejemplos, ciclo de vida de un proyecto de TÉCNICAS DE PROGRAMACIÓN DE COMPUTADORAS MATEMÁTICA Matemática I Algebra Lineal INTELIGENCIA ARTIFICIAL Lógica Matemática INGENIRÍA Y GESTIÓN DE SOFTWARE Introducción a la Informática PI P II PIII SGB D PIV PP I PP II Proy. Prog. PPIII Capítulo II / 35 Sistema Automatizado, Internet y sus posibilidades y el estado actual de los medios técnicos más utilizados. La asignatura Programación I es la encargada de lograr que los alumnos diseñen algoritmos simples para resolver tareas de poca y mediana complejidad, expresando el algoritmo de solución de un problema mediante algún instrumento de descripción formal, aplicando los principios de la programación al diseño de un algoritmo, programándolo en un Lenguaje Orientado a Objetos, utilizando los arreglos en la solución de problemas de mediana complejidad. La asignatura tiene 96 horas y un Proyecto de Curso. (MES, 1998b) En el análisis realizado se constata la alta carga de nuevos contenidos que debe asumir esta asignatura, por una parte los temas de diseño de algoritmos y por otro la implementación de los mismos en un Lenguaje de Programación Orientada a Objetos, filosofía que reciben por primera vez y que requiere capacidad de pensamiento abstracto y lógico que, en la mayoría de los casos están comenzando a desarrollar con la asignatura. (Guerrero, 2006) Esta realidad afecta la calidad en el cumplimiento de los objetivos instructivos y del sistema de habilidades, por lo que los estudiantes de segundo año de la carrera presentan serias deficiencias en el diseño de algoritmos, incluso, de escasa complejidad. 2.4.1.1 Sistema de conocimientos de Programación II. El estudio de las estructuras de datos es casi tan antiguo como el nacimiento de la programación, y se convirtió en un tema capital desde finales de la década de los 60. (Badía, 2004) La asignatura Programación II del Plan de Estudios actual se desarrolla en el primer semestre del segundo año de la carrera, tiene como objetivos fundamentales diseñar las estructuras de datos en memoria interna más convenientes para la solución de un problema, definir los procesamientos sobre las estructuras de datos, en función de lograr una solución elegante y eficiente de un problema dado, diseñar algoritmos complejos utilizando técnicas avanzadas y Capítulo II / 36 expresarlos con algún instrumento de descripción formal, definir la necesidad de realizar procesos de ordenamiento o búsqueda en memoria interna, eligiendo los métodos más adecuados, programar y poner a punto algoritmos complejos que incluyan el tratamiento de estructuras de datos, documentando los programas. Se parte del presupuesto que los objetivos de la asignatura que la precede han sido cumplidos óptimamente, pero en un alto por ciento de estudiantes se mantienen insuficiencias, presentando, incluso, dificultades en la definición de arreglos y sus operaciones básicas. Ante esta realidad se considera necesario retomar la definición de esta tipo de datos, su modelo matemático y profundizar en la representación secuencial en memoria por la importancia que tiene para el diseño de estructuras más complejas, que constituyen objeto de estudio de Programación II. Es por ello que en la propuesta de este trabajo se incluye el mapa conceptual de arreglos dentro de las Estructuras de Datos lineales. 2.4.1.1.1 Propuesta de organización de los contenidos. Los estudiantes de la carrera de Ingeniería Informática deben aprender a integrar teoría y práctica, reconocer la importancia de la abstracción y el modelado para adquirir un dominio eficiente del conocimiento que se requiere para apoyar el desarrollo de software en múltiples campos y para apreciar el valor de un buen diseño. Con la aparición de los lenguajes de programación estructurados, surge el concepto de tipo de datos, definido como un conjunto de valores que sirve de dominio de ciertas operaciones. En los lenguajes C, Pascal y similares, los tipos de datos se usan sobre todo para clasificar los objetos de los programas - variables, parámetros y constantes - y determinar qué valores pueden tomar y qué operaciones se les pueden aplicar. 2.4.1.1.1.1 Tipos Abstractos de Datos en el nivel primario de contenidos. En la propuesta de diseño de la asignatura se parte del concepto de Tipos Abstractos de Datos y de forma sistémica se van complementando conceptos que no se habían logrado adquirir de forma sólida en las asignaturas precedentes, como algoritmos, abstracción, tipos de datos, arreglos, punteros. Capítulo II / 37 Knuth (1973) y Lipschutz (1977) coincidieron en la necesidad de emplear una notación formal para describir el comportamiento de las operaciones con los datos, no sólo para impedir cualquier interpretación ambigua sino para identificar claramente el modelo matemático denotado por ellos. La definición de tipo abstracto de datos, abreviadamente, TAD, propuesto por Guttag y Liskov (1986), constituyó un aporte importante; análogamente a los procedimientos, los llamados tipos abstractos de datos constituyen un mecanismo que permite generalizar y encapsular los aspectos relevantes sobre la información (datos) que maneja el programa. Consideran un tipo de dato, no sólo como el conjunto de valores que lo caracteriza, sino también, como las operaciones que sobre él se pueden aplicar, conjuntamente con las diversas propiedades que determinan inequívocamente su comportamiento. (Knuth, 1973; Lipschutz, 1977) Se considera pertinente comenzar el estudio de la asignatura Programación II por la definición de abstracción, como mecanismo fundamental para la comprensión de fenómenos o situaciones que implican gran cantidad de detalles, es uno de los conceptos más potentes en el proceso de resolución de problemas, proporciona la capacidad de manejar un objeto como un concepto general, sin considerar la enorme cantidad de detalles que pueden estar asociados con dicho objeto. Sin abstracción no es posible manejar, ni siquiera entender, la gran complejidad de ciertos problemas. (Guttag y Liskov, 1986) El proceso de abstracción presenta dos aspectos complementarios, resaltar los aspectos relevantes del objeto y no tener en cuenta aspectos irrelevantes del mismo (la irrelevancia depende del nivel de abstracción, ya que si se pasa a niveles más concretos, es posible que ciertos aspectos pasen a ser relevantes). El uso de la abstracción de datos durante el desarrollo del software permite al diseñador concentrase en cómo son usados los datos en el sistema para resolver el problema que le ocupa, sin tener que preocuparse por la representación y tratamiento de los datos en la memoria del computador, de ahí que se plantee que la verdadera utilidad de los Tipos Abstractos de Datos aparece en el diseño de nuevos tipos de datos. (Heileman, 2003) Capítulo II / 38 A primera vista, puede parecer costoso, e incluso absurdo, dividir una aplicación en módulos y escribir procedimientos y funciones para controlar el acceso a la estructura que implementa un Tipo Abstracto de Datos, sin embargo esta metodología abunda en diversas propiedades interesantes:  Abstracción. Los usuarios de un Tipo Abstracto de Datos no necesitan conocer detalles de implementación (tanto en lo que se refiere a la representación del tipo como a los algoritmos y a las técnicas de codificación de las operaciones), por lo que pueden trabajar en un grado muy alto de abstracción. Como resultado, la complejidad de un programa queda fraccionada entre sus diversos componentes.  Corrección. Un TAD puede servir en las pruebas de programas, de manera que en una aplicación que conste de diversos tipos abstractos no tengan que probarse todos a la vez, sino que es factible y recomendable probarlos por separado e integrarlos más adelante. Evidentemente, es mucho más fácil detectar los errores de esta segunda manera, porque las entidades a probar son más pequeñas y las pruebas pueden ser más exhaustivas.  Eficiencia. La separación clara entre un programa y los TAD que usa favorece la eficiencia, ya que la implementación de un tipo se retrasa hasta conocer las restricciones de eficiencia sobre sus operaciones, y así se pueden elegir los algoritmos óptimos. 2.4.1.1.1.2 Representación de la relación entre Tipos Abstractos, Estructuras y Tipos de Datos. Con el objetivo de lograr una integración e inclusión de los nuevos conceptos con los ya conocidos desde la asignatura de Programación I se muestra, en la propuesta organizativa de los contenidos de Programación II, la relación entre los Tipos de Datos, las Estructuras y los Tipos Abstractos, ya que ellos constituyen diferentes niveles en el proceso de abstracción referida a los datos. La implementación de un Tipo Abstracto de Datos supone una traducción de su especificación en la sintaxis de un lenguaje de programación particular. Esta traducción se compone de las declaraciones de variables apropiadas, que sean necesarias para definir los datos y un procedimiento o rutina de acceso que implemente cada una de las operaciones requeridas por el TAD. Entre el nivel de Capítulo II / 39 los tipos de datos y el nivel de los tipos abstractos nos encontramos con las llamadas Estructura de Datos se refiere a una colección de variables que están relacionadas de alguna forma específica. Al nivel de las estructuras de datos, ya no tienen relevancia las operaciones que se puedan realizar sobre los componentes individuales de la misma, solamente la tienen las operaciones que implican a la estructura globalmente. Según refiere Heileman (2003), los datos son las propiedades o atributos (cualidades o cantidades) sobre hechos u objetos que procesa el ordenador. El tipo de datos, en un lenguaje de programación, define el conjunto de valores que una determinada variable puede tomar, así como las operaciones básicas sobre dicho conjunto. Los tipos de datos pueden variar de un lenguaje a otro, tanto los tipos simples como los mecanismos para crear tipos compuestos. En el nivel más alto de abstracción estarían los tipos abstractos de datos, estos se pueden ver como modelos matemáticos sobre los que se definen una serie de operaciones. El tipo abstracto de datos es una colección de valores y operaciones que se definen mediante una especificación que es independiente de cualquier representación. Para representar el modelo matemático básico de un TAD se emplean estructuras de datos y las operaciones definidas en el modelo se representan mediante procedimientos. Un aspecto neurálgico en el análisis realizado con el objetivo de diseñar una estrategia que permita cumplir a cabalidad los objetivos de la asignatura, lo constituye el tema de la eficiencia en el diseño de algoritmos que solucionen problemas complejos. 2.4.1.1.1.3 Vínculo con los temas de diseño y análisis de algoritmos desde la asignatura de Programación II. Al comparar los contenidos de las asignaturas de la disciplina con el sistema de habilidades que deben alcanzar los estudiantes en cada una, se revela que desde Programación I se exige eficacia en la selección de las estructuras para representar la información y la elaboración de programas que hagan un uso eficiente de los recursos de un sistema de cómputo. Sin embargo en el currículo de Capítulo II / 40 la carrera de Ingeniería Informática no existe una asignatura encargada de los contenidos relacionados con las técnicas de diseño y análisis de algoritmos. Estos temas se han distribuido entre las asignaturas de la disciplina de Técnicas de Programación. En la asignatura Programación IV, que se imparte en el segundo semestre de tercer año, se plantea explícitamente el tema de calidad en la programación, conjuntamente con fundamentos de lenguajes y compiladores y diseño de la interfaz de los sistemas, temas, en sí mismos, altamente complejos. La asignatura cuenta con 84 horas lectivas lo que dificulta la profundización y ejercitación adecuada en estos tópicos. (MES, 1998b) En base al análisis del currículo de la disciplina, desarrollado en este trabajo, y a la calidad de las evaluaciones, tanto Pruebas Parciales como los Proyectos de Cursos y Exámenes Finales, se propone la inclusión de una asignatura en la disciplina que trate de forma exclusiva estos temas, contribuyendo al desarrollo del pensamiento lógico, algorítmico y la capacidad de análisis necesarios para el diseño de sistemas informáticos eficientes. Esta modificación puede realizarse sin alterar las horas totales de la disciplina, ya que la asignatura Programación III cuenta con 80 horas y el contenido a impartir es relativamente sencillo, por lo que puede utilizarse un determinado por ciento de horas en la asignatura que se propone. En el presente trabajo se incluye para cada estructura de datos, el análisis de complejidad de las operaciones que sobre ellas se realizan, vinculando, los algoritmos que usen técnicas de diseño con los nodos del mapa conceptual en que esta técnica se desarrolla, como una vía para profundizar en el diseño y análisis de los algoritmos desde los contenidos de la asignatura Programación II. 2.4.1.1.1.4 Paradigmas de la programación usados para implementar estructuras de datos. Capítulo II / 41 En el mapa conceptual que organiza los contenidos de la asignatura se incluye información relacionada con los lenguajes y paradigmas de la programación que implementan las estructuras de datos. El modelo general de las computadoras, desde que fue esbozado por von Neumann, no ha variado significativamente, mientras que la invención humana para proponerse nuevos problemas a resolver, usando la computadora, parece no tener límites. (Aspray, 2000) En consecuencia, los lenguajes de programación tienen que adaptarse a éstas crecientes necesidades y aumentar la expresividad para poder resolver problemas muy diversos y cada vez más complejos. Además, tienen que ofrecer cierta eficiencia en la ejecución. La selección adecuada, tanto de las Estructuras de Datos como de los Lenguajes de programación para implementarlas constituye un reto y un logro difícil de alcanzar. 2.4.1.1.1.4.1 Programación funcional. Tradicionalmente los matemáticos han resuelto problemas usando el concepto de función, la cual convierte ciertos datos en resultados. Si se conoce cómo evaluar una función usando la computadora, se pueden resolver automáticamente muchos problemas. Este análisis fue realizado por algunos matemáticos que consideraron la computadora una herramienta importante para su trabajo, creando los lenguajes de programación funcionales, los que aprovechan la posibilidad que tienen las funciones para manipular datos simbólicos, y no solamente numéricos, y la propiedad que les permite componer, creando de esta manera, la oportunidad para resolver problemas complejos a partir de las soluciones a otros más sencillos. También se incluyó la posibilidad de definir funciones recursivamente. Un lenguaje funcional ofrece conceptos que son muy entendibles y relativamente fáciles de manejar. El lenguaje funcional más antiguo, y seguramente el más usado hasta la fecha, es LISP, diseñado por McCarthy (1995), en la segunda mitad de los años 50. Su área de aplicación es principalmente la Inteligencia Artificial. En la década de los 80 se mostró nuevamente interés por los lenguajes funcionales, añadiendo la tipificación y algunos conceptos modernos de modularización y polimorfismo. (Mcarthy, 1995) Capítulo II / 42 Programar en un lenguaje funcional implica construir funciones a partir de las ya existentes. Por lo tanto es importante conocer y comprender bien las funciones que conforman la base del lenguaje, así como las que ya fueron definidas previamente, de esta manera se pueden ir construyendo aplicaciones cada vez más complejas. (Koschmann, 2001) El uso del LISP en la implementación de Listas, como Estructura de Datos, hace sencilla y elegante la programación de las operaciones básicas y las aplicaciones a problemas concretos, como el cálculo de la derivada de funciones y trabajo con polinomios. 2.4.1.1.1.4.2 Programación Lógica. Otra forma de razonar para resolver problemas en matemáticas se fundamenta en la lógica de primer orden. El conocimiento básico de las matemáticas se puede representar en la lógica en forma de axiomas, a los cuales se añaden reglas formales para deducir aspectos verdaderos (teoremas) a partir de los axiomas. Gracias al trabajo de algunos matemáticos, de finales de siglo pasado y principios de éste, se encontró la manera de automatizar computacionalmente el razonamiento lógico -particularmente para un subconjunto significativo de la lógica de primer orden- que permitió que la lógica matemática diera origen a otro tipo de lenguajes de programación, conocidos como lenguajes lógicos. (Lezcano et al., 2000) En la programación lógica el proceso de descripción de un dominio de aplicación se lleva a cabo mediante la conceptualización de los objetos y las relaciones que hipotéticamente existen, lo cual se expresa a través de un lenguaje formal apropiado. La noción de un objeto puede ser amplia. Dentro de los lenguajes orientados a la lógica tiene significativa importancia el Prolog, que ofrece la ventaja de que él mismo constituye un motor de inferencia para sistemas expertos, con lógica de primer orden en cuyo caso el programa es realmente la base de conocimiento más un conjunto de datos de partida. Es el primer lenguaje lógico y el más conocido y utilizado. Las aplicaciones a la Inteligencia Artificial mantienen el lenguaje vivo y útil. 2.4.1.1.1.4.3 Paradigma de la Programación Orientada a Objeto. Capítulo II / 43 A mediados de los años 60 se empezó a vislumbrar el uso de las computadoras en la simulación de problemas del mundo real. Pero el mundo real está lleno de objetos, en la mayoría de los casos complejos, los cuales difícilmente son representados por los tipos de datos primitivos de los lenguajes imperativos. Así es como, Dahl y Nygaard (1970), definen el concepto de objeto y sus colecciones, llamadas clases de objetos, que permitieron introducir abstracciones de datos a los lenguajes de programación. La posibilidad de reutilización del código y sus indispensables modificaciones, se reflejaron en la idea de las jerarquías de herencia de clases. Se introduce el concepto de polimorfismo. Todos estos conceptos fueron presentados en el lenguaje Simula 67. Aunque diseñado como lenguaje de propósito general, Simula tuvo su mayor éxito en las aplicaciones de simulación discreta, gracias a la clase SIMULATION que facilitaba considerablemente la programación. (Dahl et al., 1970) 2.4.1.1.1.4.4 Lenguajes de Programación Orientados a Objeto (LOO). La concepción de Programación Orientada a Objeto ha originado nuevos lenguajes para expresarla, los Lenguajes Orientados a Objeto (LOO). Algunos de los más importantes son SMALLTALK, Eiffel, Actor, Modular. (Group, 2003; Meyer, 2005) También han surgido extensiones de lenguajes tradicionales, como LISP, Pascal, C, que pretenden establecer un compromiso con sus viejos programadores y las nuevas ideas. (Zarko, 2006) 2.4.1.1.1.5 Los Tipos Abstractos de Datos y su implementación en un Lenguaje Orientado a Objeto. En el diseño organizativo que se propone, para un TAD se especifican las propiedades funcionales de una estructura de datos y sus operaciones, y éstas se implementan en términos de las construcciones existentes en el lenguaje. Este concepto tuvo su primera materialización en el concepto de clase del lenguaje SIMULA 67. (Dahl et al., 1970) Junto con las clases aparecen en este lenguaje el concepto de herencia, mediante la cual las subclases heredan las propiedades declaradas en la interfaz de las Capítulo II / 44 superclases y pueden definir operaciones y datos adicionales que especializan el comportamiento de la subclase. SIMULA tuvo un gran impacto en muchos de los lenguajes de programación modernos. En la asignatura se brinda información a los estudiantes sobre diferentes Lenguajes de Programación Orientados a objetos y las especificidades de cada uno. MODULA-2 ofrece un excelente mecanismo de abstracción de datos, el cual incluye un cierto grado de protección ya que no permite acceder directamente al estado interno del TAD. Presenta algunas limitaciones como que los nombres de los procedimientos usados en un módulo tienen que ser únicos y que los TAD pueden operar un solo tipo de dato. MODULA-2 es uno de los primeros lenguajes de programación ampliamente difundidos en usar la modularidad como un principio fundamental de estructuración. La última versión conocida como Modula-3 fue diseñada por Luca Cardelli. (Cardelli et al., 1989) ADA usa la sobrecarga de operadores (operator overloading) y las unidades de programas genéricas (generic program unit). La primera se refiere a permitir a un programador usar múltiples operadores con el mismo nemotécnico. La distinción entre los operadores puede ser determinada en tiempo de compilación examinando los tipos y el número de parámetros. En general, la abstracción de datos en ADA se realiza usando tres herramientas principales. El package usado para encapsular un conjunto de definiciones relacionadas. El type determina el dominio de una variable (o estructura de datos) y como ésta puede ser manipulada. La definición de generic permite generar varias abstracciones similares desde un patrón. (ANTARESX, 2004) El estado alcanzado en el proceso evolutivo de los tipos de datos en los lenguajes de programación, el cual se pretende sintetizar, presenta algunas limitaciones. En