El marco de Brennan-Resnick: I. Conceptos.

  • Nivel:
    • Bachillerato
    • E.S.O.
    • F.P.
    • Infantil
    • Primaria
  • Área del pensamiento computacional:
    • Conceptos, Evaluación y Currículum

Posiblemente hayas leído el primer artículo de esta serie y, aunque te haya aclarado algunas cosas, aún te sientas perdido: programación, actividades desenchufadas, robótica, inteligencia artificial (¡encima inteligencia artificial!), y montones de recursos, cursos, proyectos, blogs, actividades, plataformas de programación, robots educativos… Definitivamente, por más ganas que uno tenga, introducirse en este mundo parece una tarea titánica.  

Es como la medina de una gran ciudad árabe: te metes en ella y al instante pierdes el sentido de la orientación, ya no sabes dónde estás…hasta que milagrosamente sales de ella (o más bien te sacan). Y es que para moverse por un terreno complicado es necesario contar con ayuda. Un mapa, una brújula, alguna herramienta que nos permita ubicarnos y orientarnos, que nos ofrezca la seguridad necesaria que se requiere para tomar decisiones acertadas. Y eso es lo que te vamos a ofrecer en los siguientes tres artículos de la serie, la herramienta que te ayudará a moverte por el mundo del pensamiento computacional con soltura: el marco conceptual de Brennan-Resnick

Con esta herramienta en tu poder, podrás adquirir los criterios necesarios para decidir cuestiones como: qué debes aprender como docente, qué debes enseñar a tu alumnado, cómo puede encajar el Pensamiento Computacional en las actividades de tu materia, cómo evaluar, qué tipo de contenidos seleccionar, qué debes buscar, qué desechar (muy importante esto último), discriminar los buenos recursos de los que no son tan buenos, etcétera. Y es que el marco conceptual puede entenderse como una definición operacional de Pensamiento Computacional. Este tipo de definiciones van a lo concreto, a las cosas más características de un concepto, lo que se puede “observar” o incluso “medir”. Por eso son muy adecuadas cuando es difícil definir el concepto que nos traemos entre manos mientras que sus efectos son relativamente fáciles de apreciar. Esto es precisamente lo que ocurre con el caso del Pensamiento Computacional. Por eso, y aún más como docente, nos resultará más útil una definición operacional que nos describa los rasgos característicos del Pensamiento Computacional, que una definición conceptual, que, por otra parte, sigue sin existir de manera consensuada.  

Así que sin más dilación os presentamos el marco de Brennan-Resnick a vista de pájaro: 

Este marco denomina dimensiones a las características observables, y las clasifica en 3 grupos: conceptos (7 dimensiones), prácticas (4 dimensiones) y perspectivas (3 dimensiones).

Para no hacer demasiado largo este recurso, lo hemos dividido en 3 artículos en los que explicaremos cada una de estas dimensiones y las ilustraremos con infografías que te ayudarán a recordarlas y que podrás utilizar como mapa cuando vayas a emprender algún viaje por el universo del Pensamiento Computacional. Comenzamos con los conceptos.

Conceptos computacionales 

Este grupo de dimensiones representa las principales ideas que aprendemos cuando desarrollamos nuestro Pensamiento Computacional.  

Secuencias 

Cuando resolvemos un problema “computacionalmente”, solemos dividirlo en partes más sencillas y fáciles de resolver. Si para resolver cada una de estas partes se requiere la solución o realización de una parte anterior, de manera que todas ellas quedan ordenadas en el tiempo de manera lineal, es decir, una detrás de otra, estamos ante una secuencia. Posiblemente sea este el concepto más básico de todos y es un reflejo perfecto del funcionamiento de una computadora, que realiza una sola operación cada vez. Un programa informático no es más que un conjunto de secuencias. 

 Vamos a ilustrar este concepto con un ejemplo culinario. Queremos cocinar un huevo frito. Las operaciones necesarias para ello son: 

  1. Verter el aceite sobre la sartén 
  2. Calentar el aceite suficientemente, 
  3. Cascar el huevo y arrojarlo al aceite hirviendo 
  4. Esperar un tiempo 
  5. Sacarlo de la sartén y colocarlo en el plato 

Cada operación es estrictamente dependiente de la anterior. No podemos cambiar el orden ni realizar varias de ellas a la vez si queremos disfrutar de nuestro huevo frito. Pues eso es una secuencia. 

 

Paralelismo 

Hay veces que al dividir un problema en partes más sencillas nos damos cuentas de que varias de estas partes podrían ser resueltas o realizadas a la vez, es decir no dependen unas de las otras. En ese caso podemos realizar varias secuencias simultáneamente y resolver más rápidamente nuestro problema. Cuando para resolver nuestro problema aprovechamos esta independencia, estamos aplicando el concepto de paralelismo. 

 Volvamos a nuestro ejemplo culinario. Ahora queremos hacernos un huevo frito con patatas fritas. Al analizar el problema identificamos las siguientes operaciones. 

  1. Pelar las patatas. 
  2. Cortar las patatas. 
  3. Verter aceite sobre una sartén (sartén 1). 
  4. Calentar el aceite de la sartén 1 suficientemente, 
  5. Echar las patatas en la sartén 1. 
  6. Esperar un tiempo para que se hagan las patatas. 
  7. Sacar las patatas de la sartén y colocarlas en el plato. 
  8. Verter aceite sobre otra sartén (sartén 2). 
  9. Calentar el aceite de la sartén 2 suficientemente, 
  10. Cascar el huevo y arrojarlo a la sartén 2. 
  11. Esperar un tiempo para que se haga el huevo. 
  12. Sacar el huevo de la sartén y colocarlo en el plato. 

Aunque podemos realizar el procedimiento siguiendo este mismo orden para resolver nuestro problema, inmediatamente nos damos cuenta de que las operaciones 1, 2, 3, 4, 5, 6 y 7 constituyen una secuencia que es independiente de la secuencia formada por las operaciones 8, 9, 10, 11 y 12. Y esto nos permite reordenar la secuencia total de otra manera más eficaz. Una posible reorganización, teniendo en cuenta que el huevo tarda menos en freírse que las patatas, sería: 1, 2, 3, 8, 4, 9, 5, 10, 6, 11, 12, 7. Aunque sigue siendo una secuencia en el sentido de que se hace una operación cada vez, al intercalar pasos de la secuencia de las patatas con la secuencia del huevo frito, el procedimiento es más rápido. Pues bien, esto es una forma de usar el paralelismo para resolver un problema. 

Pero podemos ir un poco más allá. Si en lugar de contar con una sola persona para hacer las patatas con huevo frito, contamos con dos, podemos optimizar aún más el procedimiento haciendo responsable a una persona de la secuencia de las patatas y a otra de la secuencia del huevo frito.  Aumentamos los recursos y disminuimos el tiempo necesario para tener listo el plato. Esta manera de proceder sí que es auténtico paralelismo: dos personas simultáneamente (en paralelo) trabajan en un mismo problema. 

De estos ejemplos se extrae una idea muy importante. Cuando algunas partes de nuestro problema son independientes entre sí, una adecuada reorganización provoca la sensación de que se están haciendo varias cosas a la vez, de manera que podemos usar el paralelismo incluso cuando sólo podemos actuar secuencialmente. Esto es lo que ocurre en las computadoras que sólo tienen un procesador. No obstante, si disponemos de más recursos, en el caso de una computadora esto significa tener más procesadores, se pueden enviar secuencias independientes a cada procesador y usar el paralelismo en su sentido más estricto. 

 

Bucles 

Algo que ocurre con frecuencia cuando resolvemos problemas “computacionalmente”, es que la repetición de una misma secuencia un número determinado de veces resuelve una parte del problema. Y eso es, ni más ni menos, la idea que subyace bajo el concepto de bucle: la repetición de secuencias. 

Seguimos con nuestro ejemplo del huevo frito. Supongamos que una sola persona tiene que cocinar 4 huevos fritos. La secuencia que aplicaría, siguiendo nuestro ejemplo, sería: 

  1. Verter el aceite sobre la sartén, 
  2. Calentar el aceite suficientemente, 
  3. Cascar el huevo 1 y arrojarlo al aceite hirviendo, 
  4. Esperar un tiempo, 
  5. Sacarlo de la sartén y colocarlo en el plato. 
  6. Cascar el huevo 2 y arrojarlo al aceite hirviendo, 
  7. Esperar un tiempo, 
  8. Sacarlo de la sartén y colocarlo en el plato. 
  9. Cascar el huevo 3 y arrojarlo al aceite hirviendo, 
  10. Esperar un tiempo, 
  11. Sacarlo de la sartén y colocarlo en el plato. 
  12. Cascar el huevo 1 y arrojarlo al aceite hirviendo, 
  13. Esperar un tiempo, 
  14. Sacarlo de la sartén y colocarlo en el plato. 

 Es decir los pasos 3, 4, 5 se repiten 4 veces, de manera que podemos expresar la misma secuencia de esta manera más sencilla: 

  1. Verter el aceite sobre la sartén, 
  2. Calentar el aceite suficientemente, 
  3. Repetir 4 veces 
  • Cascar un huevo y arrojarlo al aceite hirviendo, 
  • Esperar un tiempo, 
  • Sacarlo de la sartén y colocarlo en el plato. 

 En esta nueva secuencia, el paso 3 no es ni más ni menos que un bucle. 

 

Condicionales 

A medida que los problemas que resolvemos se van complicando, cuando los dividimos en partes más sencillas y fáciles de resolver, nos damos cuenta de que algunas secuencias solo deben realizarse cuando se dan ciertas condiciones. Hablamos entonces de secuencias condicionales o simplemente condicionales, las cuales, en combinación con los bucles, resuelven prácticamente todos los problemas que pueden resolverse con una computadora. 

 

Eventos 

Un evento es una cosa que hace que ocurra otra. Hay ciertos tipos de problemas en los que juegan un papel fundamental. Al dividir un problema en partes más sencillas descubrimos que algunas secuencias solo deben realizarse cuando ocurra algo. A ese algo lo denominamos evento. Este concepto puede confundirse fácilmente con el de condicional, pues ambos implican secuencias que pueden ser realizadas o no, dependiendo de otros factores ajenos a la propia secuencia. Y la naturaleza  de ese factor ajeno es lo que va a determinar si debemos utilizar un condicional o un evento cuando resolvemos nuestro problema.

El evento es algo que puede suceder o no a lo largo de la ejecución de un programa; solo cuando sucede se realiza la secuencia asociada al evento. Mientras que el condicional es algo que se comprueba en algún momento del programa; si se cumple la condición se realiza la secuencia asociada. Como ves son cosas bastante parecidas. Tanto, que si entramos a explorar más a fondo cómo se implementan estos conceptos en los entornos de programación, en muchos casos descubriríamos que son equivalentes.  

 

Datos 

Los datos son un concepto que atraviesa de arriba a abajo y de un lado a otro la resolución computacional de problemas. Son la clave que define el problema que vamos a resolver; aparecen al principio del programa, mientras se ejecuta el programa y al final del programa. El programa usará los datos para transformarlos o para comprobar si se deben realizar o no ciertas secuencias (condicionales). Los datos pueden ser números, textos o estructuras más complejas que incluso pueden combinar números y textos. Y en todos los casos se deben guardar en alguna parte. Si nos imaginamos a un programa como una red de tuberías, los datos serían el agua que corre por ellas. En algunos casos, como en ciertas técnicas de inteligencia artificial, los datos llegan a ser la base de la solución de los propios problemas. En definitiva, es más fácil usar datos que definirlos. 

 

Operadores 

Los operadores nos permiten transformar los datos en otros nuevos que nos van acercando a la solución del problema que deseamos resolver computacionalmente. Podemos pensar en los operadores como si fueran máquinas que convierten una materia prima en un producto elaborado. Así por ejemplo, si pensamos en las operaciones matemáticas elementales, el operador suma sería una máquina cuya materia prima serían dos números y cuyo producto elaborado sería otro número que es la suma de aquellos dos. No obstante un operador no tiene por qué corresponderse con una operación matemática. La materia prima de un operador puede ser cualquier número de datos, incluso de distinto tipo. Y el producto elaborado, de nuevo, puede ser cualquier número de datos, incluso de distinto tipo. Todo dependerá de lo complejo que sea el operador.  

Con esta infografía podrás recordar cuando lo necesites los 7 conceptos clave del Pensamiento Computacional. En las próximas semanas continuaremos desarrollando el marco de Brennan-Resnick acercando las dimensiones prácticas y perspectivas para conseguir una visión completa del pensamiento computacional.

Imagen de realización propia a partir de iconos de Flaticon.es y Freepik.es

Fuente: Brennan, K., & Resnick, M. (2012). New frameworks for studying and assessing the development of computational thinking. Proceedings of the 2012 Annual Meeting of the American Educational Research Association. Vancouver: American Educational Research Association., 1, 25.