F# y programación funcional
Este módulo propone una introducción progresiva y pragmática a la programación funcional, dirigida a estudiantes que ya dominan Java imperativo y orientado a objetos.
El objetivo principal no es aprender una sintaxis nueva, sino cambiar la manera de razonar sobre los programas:
pasar de una sucesión de acciones a una visión del programa como transformación de datos, legible, verificable y robusta.
Ejes principales del curso
El curso hace hincapié en:
- la legibilidad del código y la comprensión local;
- la reducción de los efectos secundarios;
- la inmutabilidad y la separación entre cálculo y entrada/salida;
- el razonamiento por tipos como herramienta de diseño;
- la iteración sin bucles imperativos (mediante
map,filter,fold); - la recursión y la recursión terminal;
- la composición de funciones y la escritura en pipeline.
Lenguaje y transferencia de competencias
El lenguaje principal es F#, elegido por la claridad de su modelo funcional y de su sistema de tipos.
Al final del módulo se presta especial atención a la transferencia hacia el Java moderno:
- expresiones lambda,
- Streams,
- buenas prácticas,
- límites del estilo funcional en un contexto industrial.
Organización pedagógica
El módulo alterna:
- demostraciones,
- ejercicios guiados,
- prácticas de laboratorio,
con un énfasis constante en:
- la lectura del código,
- la comprensión de los invariantes,
- la capacidad de explicar lo que hace un programa sin simular su ejecución paso a paso.
Objetivos pedagógicos
Al terminar el curso, los estudiantes habrán adquirido reflejos de diseño útiles mucho más allá del paradigma funcional, y directamente aplicables a su práctica diaria de la programación profesional.