A debate on teaching computing science

Anuncio
A debate on teaching
computing science
• Basado en “On the cruelty of really teaching computing
science” (Dijkstra, 1989)
• Panelistas: Dijkstra, Parnas, et al.
• Contexto
• Dijkstra:
•
•
“GOTO statement considered harmful” (1968)
Verificación formal y derivación automática
• Crisis del software (1965-1985)
• The mythical man-month (Brooks, 1975)
• No silver bullet (Brooks, 1987)
Novedades Radicales
 Tratamos de unir lo nuevo con lo familiar mediante analogías
 Funciona sólo para cambios graduales, en presencia de cambios
"radicales" las analogías se tornan artificiales.
 No estamos preparados para estas novedades, suelen ser negadas o
ignoradas.
 Las computadoras como novedad radical
 El poder de cómputo inimaginable
 El primer dispositivo digital a gran escala.
 Esfuerzos para negar la novedad
 Ingeniería de Software, "Cómo programar si no puede"
Consecuencias
 Científicas
 La computadora manipula símbolos y produce
resultados.
 Los programas convierten a las computadoras de
propósito general en especializadas sin la necesidad de
tocar un solo cable.
 La ciencia de la computación tiene que ver con la
manipulación mecanizada y humana de símbolos.
 Alternativa al razonamiento humano.
Consecuencias
(Cont.)
 Educativas
 Difícilmente influenciada por la ciencia y mucho por
factores externos.
 Las universidades no profundizan en las ciencias duras.
 No referirse a partes de los programas como si fueran
personas.
 Razonar sobre el programa escrito. La ejecución provee
sólo un modelo que cumple con el programa.
 El “razonamiento operacional” es un "tremendo
desperdicio de esfuerzo mental"
 Consejos para enseñar
Las contestaciones...
Parnas:
 Ingeniería de software: una interpretación distinta
 Testing: two thumbs up!
 Matemática + testing
Otros:






“Tamaño demanda técnicas”
“No tomar nada puro”
Difícil de expresar
Software maintenance
Más paradigmas
La cháchara en la matemática
Interpretación y conclusiones
 Fundamentalista, críticas poco constructivas
 Personajes importantes y debate, pero todos coinciden
en mayor o menor medida con las críticas de Dijkstra
 Ciencias de la Computación
 Manipulación de símbolos (humanos y máquina)
 "Aplicación de lógica a gran escala"
 Programas son fórmulas, programar es derivar la
fórmula o programa
Interpretación y conclusiones (Cont.)
 Enseñar CS? Enseñar ciencias duras, métodos formales
 No ataca el problema de conseguir una especificación
formal:
 Sí reconoce su existencia
 ¿Incluye este problema como parte de CS?
 ¿Ingeniería de Software en CS? Un debate que continua
aún hoy
 Su expectativa a largo plazo es proveer un cálculo
simbólico que sirva como alternativa al razonamiento
humano. Futurología, difícil de opinar.
Descargar