42
PROGRAMACIÓN MEDIANTE DISEÑO Innovar la enseñanza y el aprendizaje de la computación 24/03/2022 1

Programación mediante diseño1

Embed Size (px)

Citation preview

15/04/2023 1

PROGRAMACIÓN MEDIANTE DISEÑO

Innovar la enseñanza y el aprendizaje de la computación

15/04/2023 2

Impulsado por el PLT, busca ampliar en órdenes de magnitud el alcance de la enseñanza de la computación

15/04/2023 3

Enseñar a programar con base en la aritmética y el álgebra es la mejor forma de demostrar la profundidad, amplitud y belleza del cómputo

15/04/2023 4

Introducir la enseñanza de la programación empleando lenguajes profesionales ni hace justicia a la computación ni atrae a los estudiantes a la misma

15/04/2023 5

Desde la educación media hasta el doctorado

15/04/2023 6

En nivel secundaria parte de la solución computacional de problemas que habitualmente aburren a los estudiantes

15/04/2023 7

Cuánto avanza un cohete que asciende a velocidad constante

15/04/2023 8

Pero con aritmética de imágenes

15/04/2023 9

¿Cómo la aritmética de imágenes se parece a la aritmética de números?

15/04/2023 10

¿Cómo una función que relaciona la velocidad con la altura de un cohete es igual a una animación?

15/04/2023 11

Inicialmente, se requiere convertir un estado a una imagen

15/04/2023 12

Se requiere un lenguaje que soporte aritmética y álgebra de imágenes

15/04/2023 13

Si se tiene un estado inicial con un determinado valor, se requiere que con cada tic del reloj cambie el estado, y que con cada cambio se dibuje el estado siguiente

15/04/2023 14

p. e. (big-bang 0

[on-tick add1]

[to-draw altura])

15/04/2023 15

Mejor: (big-bang 100 [on-tick sub1] [to-draw altura])

15/04/2023 16

Donde la representación de eventos con el teclado y el ratón es:

15/04/2023 17

(big-bang estado0(on-key manejador-teclas)(to-draw render-imágenes))

15/04/2023 18

(big-bang estado0

(on-mouse manejador-eventos-ratón)

(to-draw render-imágenes))

15/04/2023 19

;; Mundo EventoTecla -> Mundo

(define (manejador-mundo mundo-actual tecla) … )

15/04/2023 20

Un video juego puede ser:

1. algo como estado inicial del mundo

2. con el que con cada tic se calcule el estado siguiente, e.s.

3. y/o con el que con cada evento tecla se calcule el e.s.

4. y/o con el que con cada evento mouse se calcule el e.s.

5. y con el que cada evento, se calcule la imagen correspondiente

15/04/2023 21

¿Esto motiva a los estudiantes, los beneficia?

15/04/2023 22

Sí, ya que pronto escriben videojuegos sencillos mediante sólo matemáticas de secundaria como lenguaje de programación

15/04/2023 23

Ver http://www.bootstrapworld.org/

15/04/2023 24

Quienes pronto buscan más matemáticas: funciones condicionales, geometría, trigonometría, analítica, entre otras. Mejorando su desempeño en ellas.

15/04/2023 25

Al mismo tiempo que buscan programar más y mejor con estructuras, vectores, uniones, listas, gráficas, árboles y funciones que producen y consumen funciones.

15/04/2023 26

…y módulos, clases, objetos, así como otros medios de organización, …

15/04/2023 27

…pasando de una programación divertida con matemáticas simples al diseño sistemático de programas…

15/04/2023 28

…demandando diversos lenguajes de programación y recetas de diseño…

15/04/2023 29

Estas ideas se plantearon inicialmente en lenguajes que en su momento estuvieron de moda: C++ y Scheme

15/04/2023 30

Igualmente se pudieron plantear en Basic, Java, JavaScript, Python o Ruby on Rails… sin embargo,

15/04/2023 31

… en todos surgen problemas graves en el reporte de errores o de sintaxis, pues presuponen un programador profesional que conoce suficientemente el lenguaje

15/04/2023 32

Aprender sistemáticamente diseño de programas requiere una serie de lenguajes de enseñanza que no coinciden con un lenguaje profesional

15/04/2023 33

Además de requerirse indicaciones de las fases de cómo pasar de la declaración del problema a la formulación computacional de una solución

15/04/2023 34

Fases que permitan ver en cuál está un estudiante y si está atorado como resolver dicha situación

15/04/2023 35

Desde un inicio se requiere aprender un proceso de diseño sistemático de programas

15/04/2023 36

Se requieren orientaciones de diseño (recetas) que correlacionen la forma de los datos con dichas fases

15/04/2023 37

Datos atómicos, enumeraciones, estructuras, uniones, recursivos o mutuamente recursivos…

15/04/2023 38

Correlacionados con el problema, acompañados de la declaración de propósito y de contrato, con ejemplos funcionales, formatos o esquemas, codificación y pruebas.

15/04/2023 39

Se requiere soporte de pruebas automáticas…

15/04/2023 40

No es problema de programar en un lenguaje “X”, sino de vincular las matemáticas con el diseño de programas

15/04/2023 41

Alinear la ‘rogramación con la ‘ritmética, conduciendo al diseño sistemático en cualquier lenguaje, a principios sólidos de ingeniería de software…a la investigación en lenguajes de programación.

15/04/2023 42