4.44.2.5 Programación funcional (18 horas) [Habilidades a,b,i,j]

Referencias Bibliográficas: [Sebesta, 2012,Webber, 2010,Roy and Haridi, 2004] Temas
  1. El efecto de la programación libre:
    1. Llamadas a función que no tiene efecto secundarios, para facilitar el razonamiento composicional
    2. Variables inmutables, prevencion de cambios no esperados en los datos del programa por otro código.
    3. Datos que pueden ser subnombrados o copiados libremente sin introducir efectos no deseados del cambio
  2. Procesamiento de estructuras de datos (p.e. arboles) a través de fuciones con casos para cada variación de los datos.
    1. Constructores asociados al lenguaje tales como uniones discriminadas y reconocimiento de patrones sobre ellos.
    2. Funciones definidas sobre datos compuestos en términos de funciones aplicadas a las piezas constituidas.
  3. Funciones de primera clase (obtener, retornar y funciones de almacenamiento)
  4. Cierres de función (funciones que usan variables en entornos léxicos cerrados)
    1. Significado y definicion básicos - creacion de cierres en tiempo de ejecución mediante la captura del entorno.
    2. Idiomas canónicos: llamadas de retorno, argumentos de iteradores, código reusable mediante argumentos de función
    3. Uso del cierre para encapsular datos en su entorno
    4. Evaluación y aplicación parcial
  5. Definición de las operaciones de orden superior en los agregados, especialmente en mapa, reducir / doblar, y el filtro.
Objetivos de Aprendizaje
  1. Escribir algoritmos básicos que eviten asignación a un estado mutable o considerar igualdad de referencia [Usage]
  2. Escribir funciones útiles que puedan tomar y retornar otras funciones [Usage]
  3. Comparar y contrastar (1) el enfoque procedurar/funcional- definiendo una función por cada operación con el cuerdo de la función proporcionando un caso por cada variación de dato - y (2) el enfoque orientado a objetos - definiendo una clase por cada variación de dato con la definición de la clase proporcionando un método por cada operación. Entender ambos enfoques como una definición de variaciones y operaciones de una matriz [Assessment]
  4. Razonar correctamente sobre variables y el ámbito léxico en un programa usando funciones de cierre (function closures) [Usage]
  5. Usar mecanismos de encapsulamiento funcional, tal como closures e interfaces modulares [Usage]
  6. Definir y usar iteradores y otras operaciones sobre agregaciones, incluyendo operaciones que tienen funciones como argumentos, en múltiples lenguajes de programación, seleccionar la forma mas natural por cada lenguaje [Usage]

Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM