Este repositorio es el lugar donde vamos a ir continuamente diseñando nuestro programa de formación en JavaScript.
En este repo se irán ordenando, desarrollando, discutiendo y proponiendo todo lo que tenga que ver con el diseño de la malla curricular y cursos.
Cuando decimos malla curricular nos referimos al big picture, el hilo conductor que conecta el conjunto de cursos.
Nuestra propuesta de modelo de aprendizaje pretende atacar de frente el desafío de cómo hacer que la teoría se aprenda a través de la práctica. Por ello, la currícula está imaginada como una serie de productos completos, de complejidad y scope incremental.
En este issue puedes seguir y/o participar en la discusión abierta sobre el modelo: Aprendizaje orientado a productos.
Inicialmente, los encargados oficiales de la malla curricular son Lupo Montero, Iván Medina y Rodulfo Prieto, pero está abierta a sugerencias (issues, pull requests, ...) de todo el equipo de formación de Laboratoria así como de la comunidad en general. Queremos hacer una malla abierta.
Como guía en el proceso de diseño de la malla estamos usando un "mapa" de conceptos, tecnologías y herramientas que queremos cubrir en la currícula. Este mapa es un mapa vivo, se basa en feedback de empleadores, instructores y alumnas. Si tienes alguna sugerencia o comentario no dudes en abrir un issue ;-)
Cada curso debe tener un dueño o autor, quien es responsable del curso como unidad atómica. Estos autores podrán ser personal de Laboratoria así como profesionales y expertos de la industria.
Los cursos se dividen en 3 fases:
- Prep: cursos online, de 20 a 30 horas, que se toman antes de ingresar a Laboratoria como parte del proceso de selección
- Bootcamp: cursos de 2 a 4 semanas, a tiempo parcial, que requieren de 35 horas de estudio por semana: 25 horas presenciales (5hrs/día) + 10 horas remoto (2hrs/día)
- Educación continua: cursos de 4 semanas, blended, que requieren de 4 horas de estudio por semana: 3 horas/semana presenciales (1 sesión de 3hrs cada semana) + 1 hora/semana remoto
Cursos dirigidos a personas que nunca han tenido contacto con la programación, o principiantes que quieran iniciarse en el viaje del Full Stack JavaScript.
Recomendamos a todas las interesadas que descarguen y sigan los siguientes cursos interactivos creados por la comunidad de nodeschool. Estos cursos te darán una oportunidad de familiarizarte no sólo con JavaScript, HTML y Git, que son conocimientos esenciales, si no que lo harás en el entorno de la línea de comando (tu nuevo mejor amigo).
- javascripting: Aprende JavaScript aventurándote en el terminal.
- learnyouhtml: Aprende cómo crear tu primera página web.
- git-it: Git-it es una aplicación de escritorio (Mac, Windows, Linux) que te ayuda a aprender Git y GitHub.
Autor: R. Prieto
En un mundo que rápidamente se está digitalizando, aprender a programar abre
nuevas (y muchas veces mejores) oportunidades. Con este curso darás tus primeros
pasos hacia el mundo de la programación. Empezaremos desde cero, enseñándote los
fundamentos de JavaScript
, el lenguaje de programación más popular de la Web.
Main Tags: variables
, tipos datos
, operadores
, condicionales
, loops
,
funciones
El bootcamp es un programa de 24 semanas y consiste en una serie de cursos
de 2 a 4 semanas de duración cada uno. Los cursos diseñados para el
bootcamp tendrán en cuenta que las alumnas estudian a medio tiempo,
dedicando 35 horas por semana (5hrs/día de forma presencial más 2hrs/día
de estudio remoto) y no dominan el idioma inglés. El bootcamp empieza con
una serie común de cursos para todas las alumnas, que forman parte del
Common Core
, y luego continúa en uno de dos tracks de especialización:
Front-End Developer
y UX Designer
.
- Track: Common Core
- Autor: R. Prieto
- Tiempo estimado: 2 a 3 semanas
En este curso aprenderás mejores formas de estructurar y manipular la data de
tu programa haciendo uso de estructuras de datos básicas: arreglos
y
objetos
. Además, aprenderás a utilizar dos programas esenciales para una
developer: la línea de comandos y el controlador de versiones.
Main Tags: arrays
, objects
, CLI
, Git
, Github
.
Secondary Tags: algorithms
, ascii
, searching
, sorting
, properties
,
methods
Con este curso desarrollarás dos programas que tienen una aplicación en nuestra vida cotidiana:
- Tarjeta de crédito válida: crearás un programa que pueda validar si una tarjeta de crédito es válida según el algoritmo de Luhn
- Caesar Cipher: crearás un programa que encripte y decifre mensajes según el algoritmo de cifrado César.
- Track: Common Core
- Autor: Iván Medina & Lalo Gonzalez
- Tiempo estimado: 3 a 4 semanas
En este curso se construirá un sitio dinámico desde cero pasando por las
diversas fases del desarrollo de un producto web. A lo largo de este curso, se
verán temas de maquetación (HTML
y CSS
), lógica (JS
), herramientas de
flujo de trabajo (git
), además de interacción con el DOM
para agregar
dinamismo a través de eventos
.
- Data Dashboard: El entregable final del curso será una web app en la que deberán diseñar la experiencia del producto que consiste en mostrar el progreso de un listado de estudiantes, manipulando data almacenada en un arreglo de objetos y agregando funcionalidad que requiere algoritmos básicos como un filtro de búsqueda y ordenamiento.
Main tags: html
, css
, ux
, git
, js
, logic
, dom
, eventos
.
Secondary tags: semantic markup
, box model
, selectors
, display
,
positioning
, problem solving
, dom
, eventos
,
git
, unix shell
, github-pages
, flows
, sketching
.
- Track: Common Core
- Autor: Iván Medina & Lalo Gonzalez
- Tiempo estimado: 3 a 4 semanas
En este curso crearás una red social. Para ello deberás aprender a
desarrollar una interfaz que se pueda visualizar correctamente en varios
dispositivos (responsive
) y deberás hacer uso de librerías y frameworks que
permitan optimizar el flujo del desarrollo.
Main Tags: mobile-first
, bootstrap
, jquery
, ux research
,
grid-system
, web layouting
, responsive
, usability
.
Secondary tags: big-o
, time-complexity
,
git-workflow
, google-charts/d3
, api
, json
, information-architecture
.
- Track: Front-End Development
- Autor: Belén Recabal & Iván Medina
- Tiempo estimado: 3 semanas
En este curso construirás tu propia librería usando JavaScript, lo cual nos permitirá explorar las particularidades del lenguaje y entender como funciona por dentro, haciendo incapié en temas de performance, uso de memoria y optimización.
- UI Library: El entregable final de este curso será construir una librería para desarrollo de interfaces, teniendo en cuenta el performance y manejo de memoria, que se usará para desarrollar una réplica de Pinterest.
Main tags: types
, operators
, functions
, objects
, scope
, closure
,
execution-context
, linter
.
Secondary Tags: primitive-vs-reference
, bitwise-operators
,
function-statement
, function-expression
, callbacks
, hoisting
, iife
,
apply
, call
, bind
, this
.
- Track: Front-End Development
- Autor: Iván Medina
- Tiempo estimado: 3 semanas
En este curso se verán temas de network
para entender qué es lo que sucede
por detrás de la web (arquitectura cliente-servidor). Profundizaremos en
temas de diseño de APIs para luego poder consumirlos o desarrollarlos.
- AIRDNA clone: El entregable final de este curso es el desarrollo de un sitio como AIRDNA que muestre datos estadísticos en base a ubicaciones integrando el API de Google Maps y personalizando tanto el mapa como marcadores.
Main tags: http
, browser-apis
, api
, json
, rest
, xhr
, firebase
,
deployment
.
Secondary Tags: tcp-ip
, dns
, networking
, geolocation
, web-storage
,
web-sockets
, web-workers
, web-rtc
, auth
, microservices
,
broadcasting
, progressive-web-apps
, cloud computing
, saas-paas-iaas
.
- Track: Front-End Development
- Autor: Iván Medina
- Tiempo estimado: 3 semanas
En este curso vas a salir de JavaScript, y vas a entender como integrar tu
front-end con un back-end. Usaremos Ruby
como lenguaje de programación
aprovechando la sencillez de su framework Ruby on Rails
que integra a Sass
como pre-procesador de CSS.
El desarrollo Front End es un mundo muy amplio tal como lo es el desarrollo Back End, y trabajar éstos en conjunto es algo aún muy común en el desarrollo de software. Veremos cómo implementar lo que ya conocemos hasta el momento dentro de un framework Back End que podría estar realizado en cualquier lenguaje, pero que sigue un patrón muy similar.
- Fiverr clone: El entregable final de este curso es replicar la experiencia del sitio de Fiverr teniendo un Back End que se encarga del enrutamiento y la data, pero pendiente de la implementación del Front End.
Main tags: sass
, rails
, mv* back-end architecture
, database
, routing
.
Secondary Tags: mvc
, orm
, migrations
, templating
.
- Track: Front-End Development
- Autor: L. Montero
- Tiempo estimado: 3 semanas
Los Paradigmas de Programación (Programming Paradigms) son formas diferentes de pensar en cómo se organiza un programa basado en una serie de principios, los cuales resultan en estilos muy distintos y lenguages muy diversos.
En este curso formarás parte de un equipo responsable de extender la funcionalidad de un juego de dos dimensiones escrito en JavaScript. Tu equipo tendrá que dividir tareas, trabajar en parejas y en parelalo y hacer code reviews. Todo el flujo de trabajo será a través de un repositorio alojado en GitHub. Durante la primera semana tu equipo tendrá que extender el juego heredando del prototipo de un constructor ya implementado, mientras que en la segunda semana tendrán que refactorizar el código de la primera semana usando el paradigma funcional.
-
Extender video juego 2d: En este curso formarás parte de un equipo responsable de extender la funcionalidad de un juego 2d. Tu equipo tendrá que dividir tareas, trabajar en parejas y hacer code reviews. Durante la primera semana tu equipo tendrá que extender el juego heredando del prototipo de un constructor ya implementado, mientras que en la segunda semana tendrán que refactorizar el código de la primera semana usando el paradigma funcional.
-
Refactorizar video juego 2d: como ejemplo de programación funcional tendrás que refactorizar el juego con el que se ha estado trabajando en el curso anterior. La versión refactorizada debe usar los principios de FP e incluir tests exhaustivos.
Main Tags: oop
, fp
, bundlers
, prototype
, inheritance
, composition
,
immutability
, testing
, task-runner
.
Secondary Tags: constructors
, factories
, hof
, pure-functions
, es6
,
side effects
, jest
, gulp
.
- Track: Front-End Development
- Autor: M. Crowe
- Tiempo estimado: 1 a 2 semanas
React es una tecnología realmente revolucionaria, que no sólo nos permite encapsular nuestro código en lindos componentes, si no que representa un cambio de paradigma que va mucho más allá del navegador o incluso la web. React es una forma de pensar y construir interfaces, y no está ilimitado a una sóla plataforma; a través de la abstracción de los renderers podemos escribir interfaces nativas para web, mobile, desktop, tv, etc.
- Slack clone: El entregable de este curso será desarrollar una aplicación de mensajería como Slack clone en la que se haga uso de React para la creación de componentes y además combine todo lo visto a lo largo del bootcamp.
Main Tags: react
, jsx
, webpack
, babel
, jest
.
Secondary Tags: es6
, fp
, components
, virtual-dom
.
- Track: Front-End Development
- Autor: ???
- Tiempo estimado: 1 a 2 semanas
El desarrollo de productos con JavaScript involucra muchos conceptos y mucho
código, sin embargo, hay soluciones que ya han sido probadas en el desarrollo
de diversos proyectos que nos dan una estructura y flujo definido, de tal
manera que implementarlo nos permite despreocuparnos de algunos detalles, a
esto se conoce como Framework, y como todo en tecnología, no hay solo una
alternativa, sino, una gama de diversas opciones que nos permiten llegar a la
mejor solución. Como curso final del track de Front End Development
, se
verán 2 conceptos fundamentales: Data Binding
y Virtual DOM
, con esto
durante una semana se llevará a cabo una hackathon en la cual el reto será
desarrollar un producto (debajo se muestra un ejemplo de complejidad) usando
alguna librería y/o framework moderno de JS.
- Kickstarter clone: El entregable de este curso será la réplica del flujo del sitio Punchstarter en el cual debido a la cantidad de vistas y dependencias involucradas en este proyecto, notaremos la necesidad de usar herramientas que hagan nuestro flujo más rápido y eficiente.
Tags: angular
, vue
, typescript
, api
, real-time
.
- Track: Front-End Development
- Autor: ???
- Tiempo estimado: 1 a 2 semanas
Ahora que ya eres una Front-End Developer crack, dedica un par de semanas para crear algo nuevo. ¡Eres libre para crear lo que quieras!
Los cursos de educación continua están dirigidos a un público que
trabaja, y por lo tanto tiene mucho menos disponibilidad de tiempo. Los cursos
de educación continua se diseñan pensando en la modalidad 4x4
: 4 semanas de
duración, dedicando 4hrs/semana: 3hrs/semana presenciales + 1hr/semana de
estudio remoto.
El programa de Educación Continua ofrece una selección de cursos que ayude a las egresadas del bootcamp a seguir creciendo como desarrolladoras, profundizar conocimientos y apoyarlas en el inicio de sus carreras como developers.
Como parte de Educación Continua también ofrecemos algunos cursos del Bootcamp para aquellas personas que quieran repasar el contenido nuevamente para consolidar conceptos, o para aquellas personas de otros tracks (e.g. UX Design) que quieran aprender más de JavaScript.
Los cursos que se dictan en el Bootcmap y se vuelven a abrir en Educación Continua son:
- Crea tu propia librería usando JavaScript / JS Deep Dive
- Programming Paradigms
- Functional JavaScript
- Introducción a React
Los cursos que se dictan únicamente en Educación Continua son:
Autor: Lupo Montero
[:construction: Este curso está en desarrollo :construction:]
El manejo de estado en una aplicación es crítico, y desgraciadamente muchas
veces se hace de forma desordenada y sin mucha consistencia. Redux
nos ofrece
un contenedor de estado que nos ayudará a manejar el estado de forma más
consistente y predecible.
Durante este curso construirás un Single Page App (SPA) con las siguientes características:
- Estar desarrollada íntegramente en
ES6
y empaquetada de manera automatizada conbabel
ywebpack
- Utilizando
react
yredux
- Con por lo menos 6 componentes que especifiquen todas sus props usando
prop-types
- Por lo menos 1 componente conectado al store de
redux
- 3 reducers y por lo menos 3 acciones que desencadenen asíncronía (usando
thunk
,saga
uobservable
). - Contar con scripts
run
,build
ydeploy
, que se encarguen de correr, empaquetar y desplegar la aplicación respectivamente. - Despeglado en Github pages
- Haber administrado y documentado todo el proceso de creación de la aplicación en GitHub.
- Al día de la demo, la aplicación deberá estar publicada en una URL accesible universalmente.
- No es necesario implementar rutas
- No es necesario implementar persistencia
Tags: redux
, react
, reselect
, redux-thunk
, redux-saga
,
redux-observable
, rxjs
, jest
, enzyme
Autor: TBD (help needed)
En este curso construirás una aplicación usando Firebase como backend. Tu aplicación tendrá las siguientes características:
- Usar autenticación con Firebase
- Leer y escribir data de la base de datos a tiempo real de Firebase
- Desplegar por lo menos dos funciones cloud
- Contar con scripts
run
,build
ydeploy
, que se encarguen de correr, empaquetar y desplegar la aplicación respectivamente. - Despeglado en Firebase hosting
- Haber administrado y documentado todo el proceso de creación de la aplicación en GitHub.
- Al día de la demo, la aplicación deberá estar publicada en una URL accesible universalmente.
Tags: cloud
, serverless
, cloud-functions
, cors
, gcp
, firebase
,
auth
Autor: TBD (help needed)
En este curso construirás una aplicación usando Node.js
y MongoDB
, para ser
empaquetada usando Docker
y desplegada en AWS
EC2 Container Service.
Node.js es sin lugar a dudas una de las tecnologías más de moda en Silicon Valley y el mundo. Como desarrolladoras Full Stack JavaScript, Node.js es una de las principales herramientas con las que contamos en nuestro arsenal. Node nos permite llevar nuestro conocimiento de JavaScript más allá del navegador.
En este curso construirás un servidor web que sirva contenido estático además de algunos endpoints dinámicos que sirvan data en formato JSON.
Tags: devops
, webops
, deployment
, maintenance
, management
, backup
,
aws
, nodejs
, mongodb
, docker
, containers
Autor: TBD (help needed)
En este curso contruirás un chat bot y lo desplegarás en la nube, usando Azure.
Tags: bot
, azure
Autor: Aldo Román
Este curso presenta los fundamentos para comprender y utilizar Angular como plataforma de desarrollo web.
Construiremos un juego multijugador basado en Cadáver Exquisito.
Es una técnica usada por los surrealistas en 1925, (...) en el cual los jugadores escriben por turno en una hoja de papel, la doblan para cubrir parte de la escritura, y después la pasan al siguiente jugador para otra colaboración.
Los teóricos y asiduos al juego (...) sostenían que la creación, en especial la poética, debe ser anónima y grupal, intuitiva, espontánea, lúdica y en lo posible automática.
El juego consiste en escribir un texto de manera colaborativa. Cada jugador escribe un texto corto sin poder ver los textos de los demás jugadores. Luego de que todos los jugadores han participado, se unen los textos uno tras otro y se lee el resultado completo.
El backend estará hospedado en Firebase.
Tags: angular
, typescript
, firebase
Autor: TBD (help needed)
Las bases de datos no relacionales (NoSQL) son una nueva generación de bases de datos diseñadas específicamente para enfrentar desafíos de escalabilidad y agilidad en el desarrollo moderno.
En este curso contruirás una aplicación que use una base de datos no relacional de documentos JSON (MongoDB o CouchDB). Los usuarios de esta aplicación deberán poder crear "documentos" de varios tipos que podrán salvar, editar, borrar y sincronizar.
Tags: nosql
, data
, model
, json
, concurrency
, locking
,
partitioning
, search
...
Autor: TBD (help needed)
La primera unix shell
apareció en 1971, con la primera versión de Unix. A
pesar de sus más de 40 años de edad, sigue siendo una tecnología totalmente
vigente, y de alguna forma se ha convertido en el estándar para la interacción
con servidores y sistemas operativos "Unix-like" (GNU/Linux, BSD, MacOS,
Android, ...).
En este curso aprenderás a escribir shell scripts además de construir un
programa con Node.js
para ser usado desde la lína de comando.
Tags: cli
, shell
, bash
, filesystem
, profile
, history
, envirnoment
,
process
, argv
, pipes
, stdin
, stdout
, stderr
, nodejs
, npm
,
npm-scripts
.
[:bulb: Idea para curso :bulb:]
Autor: TBD (help needed)
Tags: schema-design
, sql
, no-sql
, querying
, performance
, orm
.
[:bulb: Idea para curso :bulb:]
Autor: TBD (help needed)
Tags: web-stack
, fullstack-framework
, routing
, mv*
, orm
.
[:bulb: Idea para curso :bulb:]
Autor: TBD (help needed)
Tags: estadística
, map/reduce
, d3
, canvas
, ...
[:bulb: Idea para curso :bulb:]
Autor: TBD (help needed)
Tags: big-O
, adhoc
, search
, sort
[:bulb: Idea para curso :bulb:]
Autor: TBD (help needed)
La ciencia de la computación consiste en el estudio de sistemas computacionales sobretodo relacionado con software, esto incluye su teoría, diseño, desarrollo y aplicación, dicho esto, en este curso se verán estructura de datos más avanzadas que las ya vistas (arreglo y objetos) con el objetivo de entender dónde se aplican y bajo que condiciones.
- SCM like Git: Construcción de un
Source Code Manager
al estilo de git que permita la navegación a través del historial de cambios.
Tags: time complexity
, big-o
, searching
, sorting
, stacks
, queues
,
graphs
, binary-trees
.
Toda contribución es gratamente bienvenida.
Pero POR FAVOR no olvides leer detalladamente la guía para contribuidores antes de enviar un PR.
Todos los materiales de este repo son (c) 2017 Laboratoria.
Este trabajo está publicado bajo la licencia Creative commons Attribution-ShareAlike 4.0.