Skip to content

Latest commit

 

History

History
 
 

10-functional

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Functional JavaScript

En este curso exploraremos el paradigma funcional en JavaScript así como varios patrones, técnicas y convenciones asociadas a este paradigma, haciendo uso de las nuevas características de ES2015.

La programación funcional es un paradigma de programación de suma relevancia hoy en día, ya que se presta a resolver problemas de paralelización, asincronía y programación reactiva entre otros. La programación funcional (Functional Programming o FP por sus siglas en inglés) no es realmente un paradigma nuevo, existe desde hace medio siglo, pero recientemente, y en particular en el mundo de JavaScript, se ha convertido en tanto una moda como una necesidad. Poco a poco, desde la proliferación de librerías como underscore y lodash, después la adición de map(), filter(), reduce() y compañía, y ahora con frameworks como React y Redux, conocer el paradigma funcional y estilo declarativo se han convertido en una necesidad para cualquier desarrollador de JavaScript.

Familiarizarnos con la programción funcional en JavaScript y ES2015 nos permitirá más adelante desenvolvernos con naturalidad en React.

Tags: functional, es6, ...

Público objetivo

Este curso está dirigido a desarrolladoras tanto front-end como back-end. JavaScript es un lenguaje de naturaleza funcional. En este curso aprenderás sobre los principios de la programación funcional y cómo se reflejan en JavaScript moderno.

Requerimientos previos

Para poder llevar adelante este curso sin frustración, es recomendable los siguientes conocimientos previos:

Aprenderás

  • ES2015
  • Funciones puras
  • Inmutabilidad
  • Recursión
  • Higher Order Functions
  • Composición de funciones
  • Refactorización
  • Trabajo en equipo
  • Revisión en pares o Peer-review
  • Github issues, branches, pull requests, entre otros.

Producto

  • Refactorizar juego usado en lección 9 usando principios de programación funcional, ES6 y añadiendo un conjunto de pruebas.
  • El "proyecto" está basado en iterar una aplicación existente y llevar a cabo su siguiente release usando metodología ágil.

Syllabus

En esta unidad veremos dos de los principios fundamentales de la programación funcional: cómo evitar el estado compartido usando funciones puras y el concepto de inmutabilidad. La duración estimada de esta unidad es de 3h.

# Tipo Formato Duración Descripción
00 seminario guiado 15min Apertura
01 lectura self-paced 30min Funciones puras
02 practice self-paced 10min Ejercicios de funciones puras
03 lectura self-paced 30min Inmutabilidad
04 practice self-paced 10min Ejercicios de inmutabilidad
05 quiz self-paced 10min Cuestionario
06 seminario guiado 45min Solucionarios y ejercicios guiados
07 quiz self-paced 10min Cuestionario
08 seminario guiado 15min Cierre

Esta unidad es básicamente una sesión de programación por pares. La tarea a realizar será refactorizar varias funciones de un videojuego existente haciendo uso de funciones puras y estructuras inmutables. La duración estimada de esta unidad es de 2h.

# Tipo Formato Duración Descripción
00 seminario guiado 15min Apertura
01 taller self-paced 90min Implementación por pares
02 seminario guiado 15min Cierre

Las funciones de orden superior (Higher Order Functions en inglés), no son más que funciones que reciben otras funciones como argumentos o que retornan una función. En esta unidad veremos este tipo de funciones en acción, incluyendo usos más avanzados como aplicación parcial y currying.

# Tipo Formato Duración Descripción
00 seminario guiado 15min Apertura
01 lectura self-paced 30min Higher Order Functions
02 practice self-paced 10min Ejercicios de HOF
03 lectura self-paced 10min Aplicación parcial
04 practice self-paced 10min Ejercicios de aplicación parcial
05 lectura self-paced 30min Currying
06 practice self-paced 10min Ejercicios de currying
07 quiz self-paced 10min Cuestionario
08 seminario guiado 45min Solucionarios y ejercicios guiados
09 quiz self-paced 10min Cuestionario
10 seminario guiado 15min Cierre

La duración estimada de esta unidad es de 2h.

# Tipo Formato Duración Descripción
00 seminario guiado 15min Apertura
01 taller self-paced 90min Implementación por pares
02 seminario guiado 15min Cierre

Unidad 05: Control de flujo

Como paradigma declarativo, la programación funcional se caracteriza, entre otras cosas, por expresar "repetición" usando recursión en vez de iteración. En esta unidad veremos cómo reemplazar iteración con recursión o higher order functions, así como las ventajas que ofrece el enfoque funcional para manejar asincronía, que es una característica fundamental de JavaScript.

# Tipo Formato Duración Descripción
00 seminario guiado 15min Apertura
01 lectura self-paced 50min Recursión
02 practice self-paced 10min Ejercicios de recursión
03 lectura self-paced 30min Asincronía
04 practice self-paced 10min Ejercicios de asincronía
05 quiz self-paced 10min Cuestionario
06 seminario guiado 45min Solucionarios y ejercicios guiados
07 quiz self-paced 10min Cuestionario
08 seminario guiado 15min Cierre

La duración estimada de esta unidad es de 2h.

# Tipo Formato Duración Descripción
00 seminario guiado 15min Apertura
01 taller self-paced 90min Implementación por pares
02 seminario guiado 15min Cierre

Cada equipo (dos alumnas) tendrá 5 minutos para presentar su demo. La duración estimada de esta unidad es de 2h.


Entregables y evaluación

  • Ejercicios: Durante el curso completarás varios ejercicios en el LMS. Estos ejercicios incluyen tests automatizados con la intención de dar feedback immediato, pero los ejercicios en sí no serán calificados. Se elegirá uno o dos ejercicios junto con el proyecto para la sesión de code review, que sí será calificada.
  • Cuestionarios: Al igual que los ejercicios, a lo largo del curso responderás varios cuestionarios con feedback immediato, y éstos no cuentan para la nota final.
  • Proyecto: Antes de la sesión de code review y las demos, cada alumna debe entregar (via pull request) el código de su proyecto. El proyecto incluye refactorizar varios módulos de una base de código existente.
  • Code review: (50%) La última semana del curso tendrás una sesión de code review con uno de lxs instructorxs. En esta sesión se revisará el código del proyecto así como uno o dos ejercicios realizados durante el curso.
  • Demo: (50%) El curso cerrará con una demo en la que tendrás que presentar al resto de la clase el trabajo realizado y lo aprendido en el proyecto.

Autor(es) / Colaboradores

  • Milton Mazzarri (autor)
  • Lupo Montero (coordinador)
  • Ana Rangel (colaboradora)

Libros

Benchmarks

Cursos similares que sirven como referencia:

Referencias

Capítulos de libros:

Blog posts:

Videos:

Otros recursos: