La historia del PSeInt
Origen y motivación
En la Facultad de Ingeniería y Ciencias Hídricas de la Universidad Nacional del Litoral(UNL), se desarrolla la carrera de Ingeniería Informática desde el año 1999. La asignatura Fundamentos de Programación del primer cuatrimestre plantea como contenidos un laboratorio de lenguaje ANSI/ISO C++ para desarrollar los conceptos básicos de algorítmica computacional y programación. Esta materia se complementa con Programación Orientada a Objetos del segundo cuatrimestre. La experiencia recogida luego de varios años de desarrollar la asignatura, los magros resultados de las primeras evaluaciones y la heterogeneidad de cada una de las sucesivas cohortes que ingresaban a la carrera, llevó a pensar en alternativas superadoras del proceso de aprendizaje. Más aún, considerando que en la asignatura se tratan contenidos claves dentro de la disciplina que da sustento a la carrera.
Teniendo en cuenta que el uso de lenguaje ANSI/ISO C++ para una materia inicial de la programación presenta notorias dificultades para estudiantes inexpertos que deben aprender varios conceptos relativos al diseño de algoritmos y paralelamente lidiar con cuestiones de implementación de las soluciones propuestas relativas a un lenguaje de programación: sintaxis, compilación, mensajes de errores en inglés, depuración, etc., se propuso la siguiente solución: diseñar un pseudocódigo en español, con reglas sintácticas sencillas y básicas, que permitiera concentrar al alumno en la lógica para la resolución de problemas mediante el diseño y la construcción de algoritmos y facilitara el aprendizaje y uso posterior de un lenguaje de alto nivel.
Si bien la utilización del pseudocódigo en el pizarrón a la hora de enseñar los conceptos básicos produjo una avance significativo, existen aún muchos otros factores que afectan el desempeño de los estudiantes y el desarrollo de la asignatura. Partiendo de el hecho de que un problema generalmente puede ser resuelto correctamente de muchas formas distintas y teniendo en cuenta el elevado número de alumnos por comisión y la heterogeneidad de conocimientos de los mismos, se hace imposible en la práctica el seguimiento de todas las soluciones planteadas individualmente por cada alumno. De estas observaciones surge la motivación original de este desarrollo.
Primeros Pasos
Durante el cursado de la asignatura Fundamentos de Programación pude observar las enormes dificultades que tenían muchos de mis compañeros para desarrollar la solución a un problema en forma de algoritmo computacional. Los que teniamos alguna formación básica al respecto (yo programaba en Basic antes de ingresar a la Universidad ;) simplemente debiamos asociar lo que ya conociamos a las estructuras propuestas por la cátedra por lo que dicha asignatura resultaba relativamente simple. Sin embargo, muchos estudiantes que no tenian base alguna demostraban grandes dificultades para entender la lógica subyacente en las estructuras de datos y de control, lo cual llamó poderosamente mi atención y, junto con la necesidad de presentar un proyecto final de software para aprobar la asignatura Programación I(ahora Programación Orientada a Objetos) motivó originalmente este proyecto.
El software comenzó a desarrollarse en octubre de 2003 utilizando Borland C++ Builder debido a que era esta la herramienta que recomendaba la cátedra (por la facilidad que brinda para el desarrollo de interfaces visuales) y estar presente en los laboratorios de la facultad. Comencé con una prueba de concepto, ya que era el primer proyecto que iba a desarrollar con C++. A esta inexperiencia con el lenguaje le atribuyo algunos errores de diseño y muchas desprolijidades o ineficiencias en la implementación que con el tiempo fuí notando y, cuando se podía, corrigiendo. Al ser este un software para uso exclusivamente didáctico, no se presentan grandes problemas de rendimiento (no se tiene que interpretar algoritmos de miles de lineas sumamente complejos) por los que puedo tomarme ciertas libertades en la implementación. Más aún, se debe tener en cuenta que el objetivo principal del intérprete no es sólo interpretar un buen código, sino también señalar correctamente los errores de uno incorrecto.
La versión original, presentado el 29 de diciembre del mismo año, tenía cientos de errores latentes, sólo corría bajo Windows y se limitaba a interpretar el algoritmo o marcar sus errores de sintaxis. El pseudocódigo interpretable era estrictamente el que desarrollaban los apuntes de la asignatura escritos por el Ingeniero Horacio Loyarte y el Doctor Diego Milone. Sugerí en el cuatrimestre siguiente a los responsables de la cátedra ofrecer el software a sus futuros alumnos, pero no obtuve (al menos de parte de los alumnos) la respuesta esperada, por lo que el proyecto pareció terminar allí.
El Resurgimiento
Casi dos años más tarde, gracias a la lista de correo del Grupo de Usuarios de Linux del Litoral(Lugli) llegó a mi la invitación a participar en la recopilación de software libre educativo para el CD Actividades Educativas con Software Libre de la colección ??? que se distribuiría gratuitamente entre los docentes que lo solicitaran promocionado por el Ministerio de Educación de la Nación y llevado a cabo por los grupos gleducar, solar y educ.ar. Sugerí entonces a travez de una lista de correo creada para tal recopilación la inclusión del PSeInt en dicho CD. Por fortuna y azar, uno de los mayores responsables de la recopilación, el profesor Román Gelbort, resultó ser profesor de programación en un colegio secundario, lo que generó gran entusiasmo y me motivó a retomar el desarrollo. Uno de los primeros pasos fué crear el proyecto en SourceForge y publicar así el software bajo la Licencia Pública General (GPL). El siguiente paso fue comenzar a portarlo al sistema operativo GNU/Linux. El intérprete propiamente dicho estaba escrito mayormente en ANSI/ISO C++ por lo que no presentó mayores dificultades, pero la interfaz gráfica debió desarrollarse desde cero, eligiendose para tal fin la librería GTK+ por estar esta presente en la mayoría de las distribuciones de Linux y tener yo alguna experiencia en la utilización de la misma. Finalmente, el día de la presentación del CD, viajé con algunos de los responsables del mismo a Buenos Aires, y conocí personalmente a Patricia Chechele, una de las testers oficiales de la recopilación y profesora de informática, quien además de demostrar gran simpatía por el intérprete, más tarde aportaría numerosos reportes de bugs y sugerencias de gran utilidad.
Luego de esto, sobrevino una etapa de corrección de errores sin grandes avances, hasta que en mayo de 2006 comencé a desempeñarme como ayudante de cátedra de Fundamentos de Programación y Programación Orientada a Objetos en la UNL, comenzando primero como pasante, y luego, en agosto del mismo año, asumiendo el cargo interino luego de concursar por el mismo. Esta posición me permitió observar a los alumnos utilizando el software, encontrar y corregir errores, y realizar ciertas observaciones que derivaron en la implementación de las características de Ayuda Rápida y Diagrama de Flujo. También en este año, presentamos junto con el Ingeniero Horacio Loyarte el trabajo Desarrollo de un Intérprete de Pseudocódigo para la Enseñanza de Algorítmica Computacional en el I Congreso de Tecnologia en Educación y Educación en Tecnología en La Plata. Allí recibí también algunas sugerencias que llevaron a la incorporación del Menu de Comandos.
Finalmente, en octubre de 2006, presenté el trabajo Desarrollo de un Software Intérprete de Pseudocódigo para la Enseñanza de Fundamentos de Programación en el 1er Encuentro de Jovenes Investigadores de Universidades de Santa Fe.
Presente y Futuro
Algunas gratas sorpresas, como los comentarios recibidos de los usuarios, la mención del software en la revista española PC World o la inclusión en otras recopilaciones como cdlibre.org o uptodown.com, muestran como este pequeño y modesto proyecto, en gran parte gracias a su caracter libre, fue difundiéndose en diversos ámbitos y ganando lentamente popularidad como confirman las estadísticas de descargas o visitas al sitio, lo cual genera una provechosa retroalimentación que conduce al mejoramiento del paquete, el cual lejos aún de ser perfecto, presenta ya un funcionamiento más acabado.
Actualmente, estoy a la espera de nuevas sugerencias y a la espectativa de nuevas ideas para continuar mejorando el software.
Ultima actualización: 24/10/2006