La Universitat de Carnegie Mellon, primera en el ranking d’universitats americanes que imparteixen la titulació d’informàtica, ha finalitzat fa poc una llarga reflexió sobre els continguts dels cursos introductoris a la titulació. La principal conclusió és que cal introduir una sèrie de canvis en les següents direccions:

Major changes include: 1) revising our introductory courses to promote the principles of computational thinking, for both majors and nonmajors, 2) increasing our emphasis on the need to make software systems highly reliable and the means to achieve this, and 3) preparing students for a future in which programs will achieve high performance by exploiting parallel execution.

La filosofia de fons es basa en el reconeixement de que, després de 70 anys de docència d’aquesta disciplina, s’ha desenvolupat un corpus teòric que permet formular i resoldre problemes (computacionals) d’una forma prou diferenciada a d’altres disciplines.  Aquesta disciplina, que constitueix una de les potes sobre les que ciència entén el món, ha de ser comunicada més clarament del que ho ha estat fins ara.

Com a mostra d’aquesta motivació, una de les reflexions del document (les negretes són meves):

When students learn computer science in high school, one primary objective is to gain advanced placement, skipping over one or more college-level courses. The advanced placement exam is designed to test mastery of freshman-level material. Right now, that exam is largely a test of elementary programming in Java. High school teachers are highly motivated to “teach to the test,” and consequently students are given a very skills-oriented perspective on computer scienceThis conveys a message to many high school students —the very ones we would like to recruit— that computer science has little in the way of intellectual content and that their career opportunities will be limited to sitting in cubicles all day long churning out code that will have little impact on the world.

Aquesta és una reflexió que molts professors i alumnes fariem nostra. Però, com es canvia això?

Evidentment, el document proposa una sèrie de mesures que més val que llegiu de la font principal, però si teniu mandra de fer-ho, us en faig la meva interpretació:

  1. Introduint diferents paradigmes de programació (bàsicament funcional i imperativa) des de molt aviat, per reforçar la capacitat d’abstracció, la formulació algorísmica de problemes o el concepte de modularitat.
  2. Introduint nous aspectes pràctics de la programació, com la necessitat de tenir en compte la natura complexa de la programació (els errors són part del problema, no l’excepció), la programació paral·lela o els sistemes software a gran escala des del principi, reconeixent la importància que han pres en el nostre món.

Des d’un punt de vista més pràctic, Carnegie Mellon no advoca per l’eliminació o minimització de la programació com  aspecte clau dels cursos introductoris:

We continue to believe that writing programs is one of the core activities of a computer science education. Writing code is the means by which we convert general concepts of computing into concrete realizations and in the process gain a more complete understanding of the concepts. We want students—majors and nonmajors—to have the writing of code as one of the sharpest tools in their toolboxes when confronting new tasks.

Però tot això no impedeix treure la següent reflexió: Java no és segurament la millor opció. Els motius són dos:  (i) Implica molta codificació per fer coses molt simples, (ii) amaga massa el que realment està fent.

Una de les opcions a prendre és Python (o similars). Com a llenguatge de scripting té una sintaxi i sistema de tipus simple, però al mateix temps permet abordar problemes computacionals complexes i centrar l’atenció de l’alumne en la part computacional mantenint la part de programació acotada.

Amb aquest moviment Carnegie Mellon s’alinea amb altres universitats punteres, com el MIT, que han seguit el mateix raonament (i han reformulat cursos mítics com el “MIT 6.00 Introduction to Computer Science and Programming“, impartit de forma magistral per l’Eric Grimson).

A la Universitat de Barcelona, durant el procés de reflexió per la confecció de l’actual grau d’informàtica, vam estar reflexionant en la mateixa línia, tot i que la nostra  decisió potser no va ser tant decidida: a primer compaginem Python i Java, i s’hi ha introduït en paral·lel l’algorísmica a la programació, per reforçar el pensament computacional més abstracte. Més endavant s’han reforçat també els coneixements de programació paral·lela. Per tot això, ens reconforta veure que el camí iniciat (possible segurament per la novetat de la informàtica a la UB) no va ser errat i que les universitats punteres de la nostra àrea van adoptant unes idees que no són noves però que són de lenta implementació.

Ahir em vam convidar a donar una xerrada a alumnes d’ESO i Batxillerat (Matefest-Infofest 2011) sobre les raons per estudiar informàtica i vaig preparar aquestes transparències:

 

 

 

Després de la conferència vaig estar parlant amb uns quants alumnes i professors i el regust que va quedar és una mica amarg: la percepció pública de la informàtica continua sent un 95% de mite i un 5% de realitat (mireu les transparències de la xerrada) i aquesta situació és la mateixa tant als bancs dels alumnes com als claustres de professors (amb totes les excepcions que vulgueu).

Es pot capgirar aquesta situació? Jo ho veig difícil sense una acció decidida des dels poders públics a l’escola i els instituts. Quan hi haurà informàtica (informàtica NO és ofimàtica!) al currículum dels nostres fills? Els països avançats han fet molt camí (veure, per exemple, aquesta web), al nostre, el més calent és a l’aigüera.

Tots els que treballem en problemes computacionals que impliquen un mètode experimental hem pesant alguna vegada això: “An article about computational science in a scienti c publication is not the scholarship itself, it is merely advertising of the scholarship. The actual scholarship is the complete software development environment and the complete set of instruction swhich generated the figures.” (Jon Claerbout, 1990).

Hi ha alguna manera de resoldre aquest problema?

En David Donoho, de la Stanford University en proposa una: “A Universal Identi er for Computational Results“. Val la pena llegir-ho!

La foto original:

La foto a un mitjà de comunicació “amb poques manies” respecte a la integritat de la informació: