Programación y Método Científico

Contenido

1. Eric Báez Bezama

From: Eric Báez Bezama
Date: 27 Aug 2003 at 6:31
Asunto: Exploración de código libre para comprender método científico

Holas.

Tal como consulto en el asunto, estoy detrás de experiencias de divulgación y motivación para niños y jóvenes en edad escolar, para inculcarles un conocimiento temprano de la informática plena, concebida como ciencias aplicadas, cuyo desarrollo exige la aplicación del método científico (observación, deducción/inducción)

"El método científico, basado en la experimentación y la elaboración de teorías que explican los fenómenos de tal modo que posteriormente éstos puedan comprobarse y reproducirse en forma experimental se plasmará a través del estudio y análisis del código fuente de los programas , los que luego, al ser compilados, reflejan las técnicas de programación aplicadas."

  • Hay contrastación de la hipótesis: tu código fuente es escrutado por otros de la comunidad , aprobado y refutado
  • Son reglas matemáticas que tratan de modular-programar la realidad a través de un proceso social (levantamiento de requerimientos, modelación, tipo de interfaz, HCI, programación, depuración, evolución).

Esto puede ser explicado con analogías, (la receta para hacer pasteles, el conjunto de ideas, personajes y escenarios que se plasman en un cuento, siguiendo un argumento lógico, la revisión de una bicicleta, para detectar ruiditos y afinarla, los algoritmos como ejercicios lógicos y de toma de decision)

Si tienen sugerencias, conocen de curriculums o materiales de libre disponibilidad, favor avisar.

1.1. Daniel Ajoy

From: Daniel Ajoy, dajoy at openworldlearning.org
Date sent: Wed, 27 Aug 2003 09:35:00 -0500

Eric, De lo que entiendo podría intentarse dos tipos de actividades:

  1. estudiar aspectos del entorno/realidad e intentar modelarlos en programas
  2. estudiar código fuente para comprender su funcionamiento y utilizar esta compresión para algún propósito (mejorar el código, modificarlo, crear nuevo código que interactue con el original)

Sobre el punto 1, con el lenguaje Logo se han realizado muchas experiencias:

  • dibujar un cuadrado (utilizando comandos) y otras figuras geométricas
  • dibujar una casa
  • hacer recorrer la tortuga por un trayecto/laberinto (con comandos)
  • dibujar el sistema solar
  • dibujar el aula de clase
  • hacer un plano del sector donde se encuentra el lugar de aprendizaje
  • dibujar un jardín (como muchas flores, de muchos pétalos, de arcos de círculo)
  • dibujar una ciudad (como muchos edificios de muchas ventanas, de cuadrados)
  • dibujar las formas de los cristales de nieve
  • dibujar las celdas de una colmena / una pared de ladrillos
  • dibujar un cielo estrellado
  • dibujar un triángulo rectángulo (adelante 10, giraizquierda 90 grados, adelante 10, giraizquierda 45 grados, adelante CUANTO??)
  • simular movimientos (lanzamiento de una roca, saltos, rebotes, choques)
  • simulación de poblaciones animales en competencia en una planicie

A LogoWriter Ecology Simulation by Thomas F. Trocco

This paper describes simulations developed by a New York City teacher and his students that explore interactions between plants and animals in a pond. 1993

Sobre el punto 2, he estado pensando por algún tiempo que podrían desarrollarse una serie de "juegos", relativamente simples

La actividad consistiría en que el estudiante analice el código de estos juegos para generar programas que representen jugadores. De tal manera que los jugadores programados "ganen" el juego. Por ejemplo:

  • Programa a explorar: adivina el número que estoy pensando, en cada intento sólo te diré si tu número es mayor o menor que mi número. Programa jugador: intenta un número, recibe "mayor" o "menor", piensa, e intenta otro número.
  • Programa a explorar: moonlander
  • Programa a explorar: "concentration"
  • Programa a explorar: el juego de cartas llamado "intermedio"
  • Programa a explorar: "batalla naval"
  • Programa a explorar: había un juego en las PC antiguas que funcionaba con el qbasic llamado Gorillas en la que dos monos gigantes parados en los techos de edificios se lanzaban bananas explosivas en rutas parabólicas afectadas por el viento.
  • Programa a explorar: nim
  • Programa a explorar: Treasureworld
  • Programa a explorar: avaricia (Rex Boggs plays greed)

Daniel

2. Dr. Eduardo Rivera Porto

APRENDIZAJE ASISTIDO POR COMPUTADORA,
DISEÑO Y REALIZACION
POR DR. EDUARDO RIVERA PORTO
CAPITULO SEIS / MODELO DE APRENDIZAJE
http://www.geocities.com/eriverap/libros/Aprend-comp/capi6.html

Papert, el inventor del lenguaje LOGO, se preguntó si el modelo de aprendizaje que se refuerza a través de las computadoras está limitado a contestar preguntas de cierto o falso, es decir promueve más bien el entrenamiento, o si el "software" podía promover otro aprendizaje más creativo, que fertilizara las ideas para la generación de nuevas ideas. Papert como matemático e informático entendió rápidamente que el programar era una actividad creativa de aprendizaje, que podía ser aplicada a otros aspectos del aprendizaje.

Papert propuso que se debería de promover los usos en los cuales se lograra que los alumnos aprendieran a hacer hipótesis y se iniciaran en la investigación hipotética- deductiva. Es decir que a partir de unas ideas sobre el comportamiento de un fenómeno (reglas de programación, pero también reglas de un juego), el estudiante las puedan describir y realizar. Se aprende a hacer exploraciones o búsquedas de resultados. La más común de estas búsquedas es la llamada "qué pasa si", es decir exploraciones no hechas de manera ciega, puesto que se espera una respuesta. Si se confirma la respuesta, entonces la hipótesis puede ser cierta, pero si no se confirma definitivamente no lo puede ser. También se debería de poder concluir otra cosa o formular otras preguntas.

El tipo de aprendizaje anterior no implica nada más trabajar con el pensamiento matemático o de contabilidad, cambiando números en simulaciones del tipo si-entonces, sino que este tipo de pensamiento se puede extender a todas las ciencias o disciplinas. En algunos casos se ha logrado introducir a disciplinas como la Historia, en la que aparentemente todo esta dado y no queda nada más que explicarlo y contarlo. El tratar de entender qué pasó con una situación histórica necesariamente lleva a pensar en el porqué de los mecanismos y si hubiera podido ser diferente. Entonces porqué no realizar una simulación hipotética que permita entender la situación. Qué hubiera pasado en tal o cual batalla si en vez de haber tomado una decisión se hubiera hecho otra. Frecuentemente el sistema educativo inhibe estas facultades naturales de investigación, ya que se da todo asimilado y contestado. La computadora intrínsecamente no la a contra-restar las facultades de investigación, pero la computadora usada de manera adecuada si las puede facilitar enormemente.

Desde hace mucho han existido los juegos de averiguación, intuición etc., con tableros y dados, pero en estos, el tipo de proceso e información involucrada tiene que ser demasiado simple. Es aquí donde la computadora puede ayudar procesando muchas reglas y presentando gran cantidad de información con mayor rapidez para hacer el juego ágil. Se puede decir que tanto las simulaciones como los juegos permiten una modalidad diferente del aprendizaje que rebasa a la instrucción estrictamente y que consiste básicamente en una forma de aprender descubriendo, claro, dentro ciertas guías o reglas.

El aprender por descubrimiento significa el averiguar ya sea por medio de deducción o inducción. En la deducción se infiere a través del uso de ciertas reglas, el comportamiento del fenómeno que se presenta. En la inducción, se infiere a través de la repetición de diferentes comportamientos del fenómeno o de la situación en estudio cambiando alguno de los parámetros o variables, se gana intuición sobre el funcionamiento. Esto último seguramente lo ha experimentado el lector cuando aprendió a conducir un automóvil, en el que a través de la repetición conoce como se comporta su automóvil ante diferentes situaciones, sin necesidad por ello de conocer ni la mecánica, ni las leyes de física que rigen el movimiento del mismo, ni menos aún su solución matemática. Es decir se abstrae y se generaliza en forma no verbalizable el comportamiento, cómo funciona, cómo tiene que reaccionar ante ciertos estímulos del exterior y cómo este comportamiento observado es aprendido para que en futuras ocasiones similares se sepa cual va a ser la respuesta.

El aprendizaje por descubrimiento da al estudiante la oportunidad de sacar sus propias conclusiones y no tener que aprender los resultados como un hecho dado, parcialmente el sujeto es creativo. Así el estudiante, logra interiorizar el funcionamiento a través de un modelo mental que se hace del mismo. En muchos fenómenos de la vida diaria se confronta uno ante situaciones similares, pero el individuo se conforma con un entendimiento vago del fenómeno, lo suficiente para manejarlo para su sobrevivencia.

En el caso del aprendizaje con simulación y juegos se debería además de lograr que el estudiante pudiera verbalizar su comprensión del funcionamiento del fenómeno para posteriormente formalizar el comportamiento mediante matemáticas u otros instrumentos dicho. Con lo anterior se quiere decir que no es suficiente que el estudiante pueda manipular los controles de un juego para viajar simuladamente en el espacio interplanetario, ni que exprese con sus propias palabras el fenómeno, si no que una vez que ha adquirido la experiencia ficticia de dicho viaje, pueda entender el razonamiento formal por ejemplo de la física y matemática que implica un tal viaje.

La formación del modelo mental del funcionamiento intuitivo de un fenómeno, se hace mediante la integración de los cambios que se observan del fenómeno relacionándolo con su contexto y con las ideas preconcebidas del modelo. De esta manera va relacionando los objetos, con el cómo es la interacción de tales objetos y porqué surge un comportamiento particular. Esto último, implica que la evaluación de tales simulaciones y juegos resulta difícil, en cuanto que no hay un estándar de como la persona debe de asimilar el conocimiento. No hay un esquema de lo que es una solución en términos generales. Tal es el caso de los juegos en los que la solución es la realización de una regla que dice cual de los jugadores ganó, pero ésta es sólo una situación entre muchas configuraciones posibles. Uno de los intereses más grande de la simulación y los juegos es el romper el mundo esquematizado y dosificado de la enseñanza tradicional, en disciplinas. Aquí se confronta uno, a problemas reales aunque simplificados, pero que necesitan de muy diversos conocimientos para poder "resolverse", son por naturaleza interdisciplinarios.

Los modelos de simulación frecuentemente implican formulaciones matemáticas que desbordan las posibilidades de realización de muchos estudiantes. Con esto se quiere decir que ha veces es muy difícil el realizar un modelo de simulación, pero esto no siempre es necesario para el aprendizaje. Claro está el diseñador de un modelo de simulación aprendió mucho del fenómeno, pero también lo puede aprender quien trabaja con él.

Es factible mediante un modelo de simulación el explicarle a un estudiante el comportamiento dinámico de un fenómeno haciendo analogías. Sin embargo con la simulación se puede adquirir indirectamente otras habilidades o conocimientos muy importantes, así por ejemplo, para hacer experimentaciones de un fenómeno de laboratorio se necesita saber estadística, se aprende a planear y diseñar los experimentos o simplemente el saber colectar los datos. Otro ejemplo es el analizar una situación a través de una encuesta, pero para realizar una encuesta es necesario el saber formular preguntas, el interpretarlas, el saber tabular los resultados, etc. Un poco más complicado serían habilidades como el organizar un panel de expertos, que se avoquen a contestar algunas preguntas sobre las que no hay datos, sino estimaciones. Frecuentemente, el manejo computadorizado de estas herramientas para estadística, tablas, gráficas etc. es sencillo y no requiere del conocimiento de los algoritmos involucrados.

3. Cómo Conducir Experimentos

How to be a Programmer: A Short, Comprehensive, and Personal Summary
Robert L. Read, read at hire.com
February 10, 2003
http://samizdat.mines.edu/howto/HowToBeAProgrammer.pdf

El difunto, gran Edsger Dijkstra explicó elocuentemente que la Ciencia de las Computadoras no es una ciencia experimental y no depende de los computadores electrónicos. Como él lo pone al referirse a los 60's:

el daño estaba hecho: el tema empezó a llamarse Ciencia de las computadoras (lo cual es, en realidad, como referirse a la cirugía como la Ciencia de los Cuchillos), y se implantó firmemente en la mente de la gente que la Ciencia de las Computadoras se trata acerca de máquinas y sus periféricos.

La programación no debería ser una ciencia experimental, pero la mayoría de programadores profesionales no pueden darse el lujo de dedicar mucho tiempo en lo que Dijkstra llama Ciencia de las Computadoras. Nosotros debemos trabajar en el ámbito de la experimentación, tal como algunos físicos, aunque no todos, lo hacen. Si en treinta años en el futuro, el programar se hace sin experimentación, será un gran logro para la Ciencia de las Computadoras.

Las clases de experimentos que nosotros debemos efecturar incluyen:

  • Probar sistemas con pequeños programas para verificar que se adaptan la la documentación o para entender su respuesta cuando no hay documentación.
  • Probar cambios pequeños en el código para ver si en realidad corrigen un error (bug / bicho).
  • Medir el desempeño de un sistema bajo dos condiciones diferentes debido al conocimiento imperfecto de sus características de desempeño.
  • Revisar la integridad de los datos, y
  • Recolectar estadísticas que puedan dar indicios para encontrar solución a un error complejo o difícil de repetir.

No creo poder en este ensayo explicar el diseño de experimentos; tendrás que estudiar y practicar. Sin embargo, puedo darte unos pequeños consejos.

Primero, trata de ser muy claro con respecto a tus hipótesis, o de la afirmación que estás tratando de verificar. También a veces ayuda escribir la hypotesis, especialmente si te encuentras confundido o estás trabajando con otros.

Frecuentemente te encontraras a ti mismo teniendo que diseñar una serie de experimentos, cada un basado en el conocimiento adquirido en el último experimento que hiciste. Por lo tanto, debes diseñar tus experimentos para que provean la mayor cantidad de información posible. Desafortunadamente, esto está en tensión con el deseo de mantener cada experimento simple, tendrás que desarrollar tu criterio mediante la experiencia.

4. Preguntas, Dudas, Comentarios, Peticiones

Síguenos en Facebook

5. Enlaces

Lenguaje de Programación Logo

Software Abierto y Constructivismo

Programación para niños

Funciones como Máquinas a Explorar


Generado con PureJoy. Creación: 11:49 - Dec 15, 2017. Última Modificación: 17:12 - Apr 02, 2023