Aprender a programar o aprender un lenguaje de programación

20 junio, 2013

En este artículo hablaremos un poco de la programación (acción o efecto de programar). Programar es esencialmente el arte de estructurar ideas. De acuerdo con las dos primeras frases de su entrada en la Wikipedia: La programación es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. El código fuente es escrito en un lenguaje de programación. Es por tanto difícil programar sin conocer un lenguaje de programación.

Aprender un lenguaje de programación puede ser fácil o difícil, depende de la persona y del lenguaje. Un lenguaje consta de varios elementos, (i) un léxico básico (afortunadamente muy acotado), expresiones, órdenes, símbolos, etc.  (ii) unas reglas que permiten combinar estos elementos.

Otro problema relacionado pero a su vez distinto es la algoritmia. Un algoritmo es (de nuevo recurriendo a la imprescindible Wikipedia) un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.

Ada Lovelace, matemática británica considerada como la primera programadora de la historia. Imagen de dominio público en aquellos países en los que el copyright expira a los 100 años posteriores al autor.

Cuando nos planteamos los diseños de los grados y másteres, siempre suele haber un cierto debate entorno a la enseñanza de la programación y los lenguajes. Para aprender a programar se requieren de unas nociones iniciales de algoritmia, pero no nos engañemos, para programar bien no hay nada como practicar (¡como todo en esta vida!). Para practicar es básico tener nociones de algún lenguaje. Los tres conceptos  están imbricados. Y este bendito problema es menor si lo comparamos con el debate sobre si hay que aprender primero a programar o ingeniería del SW. En fin, no me meteré aquí en estos jardines…

A menudo las asignaturas de programación añaden más especias al cóctel, teniendo que explicar los diferentes paradigmas (imperativos, funcionales, lógicos, orientación a objetos y otras palabras del mismo grado de diversión aparente).

Con esta problemática en mente, ya algunos semestres antes de mi llegada a la UOC, la dirección creó el «taller de JAVA”. Se trataba de un taller (curso de un mes de duración ubicado “entre semestres”) que permitía a los estudiantes practicar JAVA, para prepararlos de cara a la asignatura de Programación Orientada a Objetos (aproximadamente equivalente a nuestra actual Diseño y Programación Orientada a Objetos). A veces resulta complicado enseñarlo todo a la vez. El estudiante que finalizaba con éxito la primera asignatura de programación, aprendía C, y antes de entrar en el maravilloso mundo de la OaO, tenía la posibilidad de consolidar y practicar la programación, aprendiendo un nuevo lenguaje que sería clave para el resto de su titulación.

El target del Taller de JAVA era situarse en un punto intermedio. Estudiantes con nociones de programación que quisieran aprender JAVA. No podíamos enseñar a programar JAVA y dar nociones de OaO en 4 semanas. Eventualmente el nombre del taller reflejó también este hecho.

Han pasado ya 6 años, y la experiencia nos ha permitido acumular gran cantidad de datos para validar la utilidad de la iniciativa. Veamos pues un par de estadísticas que dan respuesta a algunas preguntas (que probablemente no nos hemos hecho, but anyway).

Desde el semestre 20071, han pasado por las distintas versiones de Programación Orientada al Objeto (POO), 3790 estudiantes. El taller ha sido cursado por 986 estudiantes. Sorprendentemente, sólo 335 han cursado primero el taller y después POO. Si nos centramos en ellos, y seleccionamos el grupo de estudiantes que aprueba el taller y después hace la práctica de POO (que se programa en JAVA, lógicamente), vemos que en promedio, estos estudiantes obtienen 1.83 puntos más en la nota final de prácticas. Un resultado nada despreciable.

Interesante también el dato que más de la mitad de los estudiantes del Taller (651) se matricularon después de haber cursado previamente POO. Probablemente, estudiantes de cursos posteriores que pretendían refrescar sus conocimientos de JAVA de cara al proyecto o a asignaturas relacionadas, o simplemente aprender JAVA debido a que procedían de otras universidades con convalidación de asignaturas. El taller pues cumplía otra función más allá de para lo que fue pensada.

Bien, hasta aquí el tostón (muchas gracias a todos los que han aguantado hasta el final el baile de números). Sólo añadir que desde hace un semestre el taller ha vuelto, se oferta en los cursos de verano. Lo hemos cambiado de raíz, haciéndolo mucho más problem based, con la esperanza de seguir dando servicio a aquellas personas que, independientemente de si están en primero, quinto, o ni siquiera son estudiantes de la UOC, quieren hacer el “port” a JAVA de sus conocimientos (básicos o no) de programación. Este mismo curso se impartirá también el próximo semestre, en colaboración con ATI, para dar soporte a muchos compañeros técnicos de informática que aun no siendo estudiantes UOC, quieran reforzar su base de programación.

Nota: La imagen de hoy se corresponde a un retrato que Margaret Sarah Carpenter  (1793–1872) realizó de Augusta Ada Byron, o Ada Lovelace (1815-1852), brillante matemática británica considerada como una de las primeras informáticas de la historia. A ella se le atribuye el primer algoritmo escrito para ser procesado computacionalmente, y aunque no lo escribió en JAVA, merecía un segundo reconocimiento en el blog.

David Masip es profesor de los Estudios de Informática, Multimedia y Telecomunicación de la UOC. Dentro de los Estudios, es el coordinador de innovación docente y el responsable de las asignaturas de inteligencia artificial. Su actividad de investigación se centra en temas de visión por computador y aprendizaje computacional.

(Visited 50 times, 1 visits today)
Autor / Autora
Comentarios
Deja un comentario