El Plan de Estudios 2023 puso primera y arrancó con todo. En este artículo compartimos los principales avances sobre el dictado del plan, cómo está resultando su implementación concreta, las gestiones actuales para incluir “Pensamiento Computacional” a partir del CBC 2024 y la experiencia del dictado de  la materia “Introducción a la Programación”,  la primera asignatura de programación incluida en el nuevo plan y desde el primer año de la carrera.

Ante la natural evolución de la disciplina y la necesidad de alcanzar una integridad conceptual en el dictado de las materias, ya está en marcha el nuevo plan de estudios de la Licenciatura en Ciencias de la Computación aprobado a fines de 2022 (ver nota anterior del DC).

El Plan actual permitirá, entre otras cosas, que los y las estudiantes que completen ciertas materias de los primeros tres años y medio de la carrera tengan la posibilidad de obtener el título de Bachiller Universitario en Ciencias de la Computación; mientras que aquellos que completen todas las materias obtendrán el título de Licenciado/a, pero ahora la carrera se puede cursar en solo 5 años (CBC + 4 años de cursada), sin haber modificado la cantidad de materias. Uno de los puntos sobresalientes del plan fue eliminar las “súper materias” (fenómeno llamado por algunos “inflación de materias”), dado que queda sólo una materia con la duración de 15 horas semanales (Algoritmos y Estructuras de Datos en el 2do cuatrimestre). Más allá de los cambios de materias y correlatividades, se observa una fuerte continuidad con el plan anterior, ya que se mantiene la característica distintiva de ser una carrera enfocada en los fundamentos teóricos de la disciplina, y no sólo en su aplicación práctica.

El dictado del nuevo plan comenzó muy bien, con la materia Introducción a la Programación en el primer cuatrimestre, uno de los cambios más importantes que tiene el nuevo plan. Tenemos una gran cantidad de alumnos/as ya que la matrícula está subiendo mucho tanto para Ciencias de la Computación como para Ciencias de Datos. De hecho 750 personas están cursando Introducción a la Programación. Esto agrega un desafío adicional al dictado de esta materia, pero todo viene saliendo muy bien”, puntualiza Santiago Ceria, Director de la Licenciatura en Ciencias de la Computación y Profesor del DC.

Al mismo tiempo, ante el desafío de dictar los dos planes en simultáneo (el de 1993 y el actual de 2023), el Director de la Carrera aclara cómo es la carga de trabajo para los y las docentes: “Mientras un equipo docente está dictando una materia del plan viejo, tiene a su vez que preparar la materia del plan nuevo para dictarla el cuatrimestre siguiente. Pero no dictamos en un mismo momento las materias viejas y las nuevas. Una vez que se empieza a dictar la materia nueva, el alumnado del plan anterior debe cursar la nueva y se le dará por aprobada la vieja. Eso facilita mucho la puesta en marcha del nuevo plan con los mismos recursos”, subraya Ceria.

Cabe aclarar que ya hubo muchísimos pedidos de estudiantes en curso que desean cambiarse al nuevo plan. Según informaron desde el Departamento de Alumnos de la Facultad, más de 80 estudiantes solicitaron el cambio de plan y cada solicitud se evalúa en detalle de acuerdo al caso particular (materias cursadas y aprobadas). Los casos usuales son de estudiantes que tienen aprobado el CBC o sólo Álgebra I y Análisis II. Y hasta el momento hay 20 resoluciones aprobadas para el cambio.

Desde Alumnos recomiendan que, por el momento, para evitar una sobrecarga administrativa, el pase lo pidan todos aquellos estudiantes que tienen cursadas solamente hasta Álgebra y Análisis II, ya que si tienen aprobadas hasta Algoritmos II y III, no habrá materias del plan nuevo que puedan cursar y se tendrán que seguir inscribiendo en las materias del plan viejo hasta equipararse con el plan nuevo.

En cuanto al estado de las discusiones y gestiones actuales para que se pueda implementar el dictado de la materia “Pensamiento Computacional” en el CBC del próximo año, Ceria nos comenta: “Estamos trabajando con un equipo interdisciplinario de gran parte de la Facultad, no sólo para que Pensamiento Computacional se pueda dictar el año que viene sino para que además tenga una perspectiva amplia de las necesidades de todas las carreras. Recientemente tuvimos una actividad donde distintas personas presentaron sus puntos de vista sobre lo que deberíamos dictar. Fue un debate muy enriquecedor. Nos estamos orientando a una materia focalizada en la resolución de problemas prácticos de la vida diaria utilizando la programación, sumando conceptos relacionados con el impacto de la computación en la vida moderna».

“Introducción a la Programación”: una valiosa experiencia desde el 1er año de la carrera

El requerimiento de dictar programación de manera temprana en la carrera era una necesidad importante que ahora se hizo realidad. “En el plan anterior recién al año y medio de empezar a cursar el CBC el alumnado se exponía a conocimientos específicos de computación y programación. Ahora lo hacen al terminar el CBC, y esperamos que pronto lo hagan durante el CBC. Creemos que esto va a tener un efecto muy positivo sobre la retención, porque es una materia ‘gancho’ para motivar al alumnado a seguir avanzando, descubriendo lo antes posible la ‘magia’ de la programación”, afirma Ceria.

Claramente en este primer cuatrimestre de 2023, las primeras clases de Introducción a la Programación (IP) fueron muy intensas, no sólo porque era la primera vez que se dictaba sino también porque se evidenció mucho interés por parte de alumnos y alumnas en ver cómo iba a ser este nuevo plan de estudios y cómo iba a ser realmente enfrentarse a la primera materia de la carrera teniendo que programar.

Para conocer los pormenores del dictado de IP, entrevistamos a Pablo De Cristofóris, uno de los profesores de la materia, dictada en tres turnos distintos junto a Paula Zabala y Martín Urtasun.

¿Qué receptividad tuviste de los y las estudiantes en estas primeras clases y con qué background venía cada uno?

Pablo De Cristóforis

Se mostraron muy interesados. Algunos estudiantes ya tenían cierta experiencia porque habían cursado el Taller de Álgebra el cuatrimestre pasado pero otros no tenían nada de conocimiento sobre la programación y sobre los lenguajes que íbamos a usar en la materia. Poco a poco fueron viendo de qué se trataba, hicimos mucho hincapié en la materia en no estudiar un lenguaje de programación en particular sino en entender la programación o las ciencias de la computación, como una ciencia que se dedica a resolver problemas y que esos problemas hay que entenderlos bien para poder resolverlos, que es muy importante poder especificar esos problemas para lo cual hubo que introducirse en el lenguaje de la lógica para poder describir más o menos formalmente un problema y después a partir de esa especificación, de esa comprensión más acabada del problema en cuestión, empezar a estudiar algunos paradigmas de programación

¿Con qué paradigmas de programación trabajaron?

Al principio introdujimos el paradigma funcional, que es algo más familiar para estudiantes que no saben programar en ningún lenguaje de programación porque es más parecida a la sintaxis que están viendo en las materias de matemática (Álgebra o Análisis). Y después pasamos a la programación bajo el paradigma imperativo. Y en ese caso también fue interesante el cambio en el lenguaje de programación, porque en la materia de Algoritmos I se venía enseñando programación imperativa con C++, como lenguaje de estudio, y ahora pasamos a Python, que es un lenguaje muy potente y muy popular.

Evidentemente alumnos y alumnas estaban interesados en aprender un lenguaje que hoy en día tiene muchas bibliotecas, muchas APIs, mucha capacidad de interacción con programas, códigos, y sistemas ya hechos por otras personas. Para lo cual, de vuelta es muy interesante e importante aprender a programar respetando las especificaciones, respetando lo que llamamos “contratos”. Esto significa que uno tiene un código, que por ahí no sabe bien cómo está implementado pero si uno conoce la documentación de ese código y sabe cómo es la interfaz para poder manipular ese código, por más que uno no lo haya escrito, que uno no tenga acceso a esos archivos fuentes, a través de la especificación, a través de ese contrato, uno puede utilizar ese código. Con muy pocas líneas de código propio puede hacer un programa que haga cosas bastante interesantes, por ejemplo nosotros en la parte de imperativo mostramos cómo utilizando una API de Google pueden abrir un archivo y traducir de un idioma a otro. Ellos por ahí no tienen idea de cómo funciona el Google Translate o cómo está implementado ese código, pero sí pueden hacer un código propio que utilice a través de una API ese código y entonces poder manipular un archivo y traducirlo.

¿Cómo se conecta IP con Álgebra I, que se cursa simultáneamente en el nuevo plan?

En el paradigma funcional, los y las estudiantes estuvieron implementando varios de los problemas que están viendo en la materia Álgebra I. Para estos estudiantes fue importante ver cómo algunos conceptos importantes en Álgebra I, como por ejemplo el caso de la inducción y de hacer demostraciones sobre números naturales por inducción, se pueden implementar en el paradigma funcional mediante el mecanismo de recursión.

Eso es algo que rescatamos, que hacíamos anteriormente en el taller de Álgebra y que ahora lo hacemos en Introducción a la Programación. Y después ese mismo problema que resolvieron en el paradigma funcional, podemos volver a resolverlo en el paradigma imperativo, y que entonces  tengan un insight un poco más profundo sobre la diferencia entre los paradigmas de programación y que en realidad a partir de un problema, si uno lo estudia en detalle, si uno lo puede entender o especificar formalmente, eso puede dar lugar a más de una solución, porque uno puede encontrar una solución a un problema y plantear distintos algoritmos y después, a la vez, esos algoritmos uno los puede implementar en más de un lenguaje de programación. Y entonces ver cuál es el paradigma que más conviene utilizar, cuál es el lenguaje de programación más apropiado, empezar a distinguir las distintas propiedades que tienen los lenguajes de programación.

Es importante aclarar que no hacemos foco en que esta es una materia donde estudiamos un lenguaje, sino que el lenguaje de programación en todo caso es una herramienta y nosotros lo que queremos hacer es aprender a programar computacionalmente, aprender a pensar computacionalmente y entender la lógica atrás de la resolución de problemas.

Por último, ¿cómo resulta el hecho de que estudiantes que recién terminan el CBC se enfrenten a la programación, qué conceptos se priorizan en el aprendizaje en este caso?

En el caso de los y las estudiantes que recién terminan en el CBC y tienen que empezar a programar, hay una diferencia muy grande con el plan anterior donde por ahí ya habían cursado Álgebra I, Análisis I y entonces tenían otras herramientas desde el punto de vista matemático, y otro manejo desde el  punto de vista de la lógica y la manipulación con lenguajes formales. En ese sentido, una cosa que hemos hecho en Introducción a la Programación, diferente de lo que se hacía en Algo I, es que los y las estudiantes puedan entender y especificar los problemas, pero hacer foco en la parte de la programación y no tanto en las demostraciones de correctitud o en el hecho de poder especificar un problema utilizando sólo lógica proposicional o de primer orden; que eso fuera en todo caso opcional pero que pudieran especificar problemas utilizando el lenguaje coloquial. Porque sabemos que sobre todo para estudiantes que recién terminan el CBC, es más difícil escribir las cosas cuando todavía no tuvieron las materias de matemática donde se hace mucho foco en cómo se escriben las demostraciones y los predicados lógicos. Entonces flexibilizamos esa parte para que ellos pudieran ir a la parte de programación sin trabarse en las demostraciones o en los aspectos formales y de la lógica formal, sino que entiendan los conceptos detrás de esas expresiones lógicas.

Básicamente hacemos hincapié en el significado y no tanto en la sintaxis, que sería que aprendan a escribirlo bien, en lógica, y que aprendan a demostrar la correctitud de sus algoritmos; sino que aprendan a programar distintos paradigmas en distintos lenguajes de programación, que aprendar a testear sus programas, hicimos énfasis en la parte de verificación funcional a través del testing de caja negra, de caja blanca, pero dejamos para las materias subsiguientes la parte de analizar demostraciones, correctitud, finalización de un programa, porque justamente muchos de los y las estudiantes recién terminaron el CBC y todavía no tienen las herramientas matemáticas para afrontar esas demostraciones formales de correctitud en un código. 

A modo de cierre

Tal como puede apreciarse, el nuevo plan de estudios generó un enorme interés y desafíos tanto para estudiantes como docentes. Y el DC continúa trabajando fuertemente para incorporar una materia específica de computación en el CBC, ajustar el dictado y preparar los contenidos de cada una de las nuevas materias. En próximas publicaciones informaremos sobre más novedades y resultados preliminares de la implementación del Plan 2023, incluso a través de testimonios de estudiantes de la carrera.