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.
Cada curso tendrá una duración de aprox. 4 semanas. Los cursos diseñados para el bootcamp tendrán en cuenta que las alumnas estudian a medio tiempo (dedican tiempo todos los días) y no dominan el idioma inglés. Por otro lado, 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 (aprox. 7h por semana).
Los cursos se dividen en 3 fases:
- Prep: cursos online / proceso de selección
- Bootcamp: cursos blended part-time, 6 meses
- Educación continua: cursos blended 7 horas por semana, 18 meses
Cursos dirigidos a gente que nunca ha 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
Este curso será requisito para acceder al resto de los cursos.
Tags: javascript
, html
, css
, http
, url
, variables
, tipos de datos
,
estructuras de datos
, operadores
, condicionales
, ciclos
, funciones
.
Durante este curso se harán productos como:
- Cajero automático: crea un programa que un cajero automático pueda utilizar para determinar el número mínimo de billetes a entregar dado un monto solicitado.
- ¿Es una tarjeta de crédito falsa?: crea un programa que confirme si una tarjeta de crédito es válida según el algoritmo de Luhn.
- Posts encriptados en Facebook: crea y despliega una web que publica mensajes encriptados en Facebook, que tus amigos solo pueden decifrar regresando a tu web.
El Bootcamp tiene una duración de 6 meses, a tiempo parcial. Las chicas
postularán cuando hayan completado el curso de
Introducción a la programación. Una vez dentro, llevarán durante 9
semanas una serie de temas a la que denominamos Common Core, a partir de ahí
podrán especializarse en 3 perfiles (tracks
): Front-End Developer
,
Maquetadora Web
y UX Designer
.
En este espacio, las estudiantes experimentarán un poco de los diversos tracks con la intención de descubrir su afinidad, no se verán todos los temas en profundidad, pero sí lo necesario para poder entender en qué track especializarse.
Autor: Iván Medina & ???
En este primer 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
, layout
, grid-system
, problem solving
, dom
, eventos
,
git
, unix shell
, github-pages
, flows
, sketching
.
Tiempo estimado: 4 semanas.
Autor: Iván Medina & ???
En este curso se realizará la segunda versión del producto construido en el
curso anterior, mejorando su visualización a través de diversos dispositivos
(responsive
) y haciendo uso de librerías y frameworks que permitan optimizar
el flujo del desarrollo.
- Data Dashboard v2: El entregable final del curso será la versión 2 del primer producto, esto consiste en desarrollar el UI haciendo uso de librerías y frameworks que hagan el flujo más cercano al campo laboral, además, contiene retos técnicos como conectarse a APIs y visualización de datos.
Main Tags: basic-algorithms
, scrum
, mobile-first
, bootstrap
, jquery
,
ux
.
Secondary tags: big-o
, time-complexity
, sorting
, searching
,
git-workflow
, google-charts/d3
, api
, json
, usability
,
information-architecture
.
Tiempo estimado: 4 semanas.
En este track se encontrarán las estudiantes que sientan una mayor afinidad con
la programación y JavaScript de tal manera que puedan especializarse en
Front-End Development
.
Autor: Belén Recabal & Iván Medina
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
.
Tiempo estimado: 3 semanas.
Autor: Iván Medina
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
.
Tiempo estimado: 3 semanas.
Autor: Iván Medina
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
.
Tiempo estimado: 3 semanas.
Autor: L. Montero
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.
- 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
.
Tiempo estimado: 3 semanas.
Autor: M. Crowe
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, ...
- 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
.
Tiempo estimado: 2 semanas.
Autor: ???
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
.
Tiempo estimado: 2 semanas.
En este track se encontrarán las estudiantes que sientan una mayor afinidad con el diseño de experiencia de usuario.
En este track se encontrarán las estudiantes que sientan una mayor afinidad con el desarrollo y diseño de interfaces sin necesidad de profundizar tanto en la lógica de programación.
En este último paso, se dará un espacio para que los diversos tracks se junten y desarrollen productos juntos, enlazando todos los skills aprendidos e integrándolos.
El programa de Educación Continua en principio se ofrece a egresadas de nuestro Bootcamp. Tiene una duración de 18 meses durante los cuales se les quiere ofrecer una selección de cursos que las ayude a seguir creciendo como desarrolladoras, profundizar conocimientos y apoyarlas en el inicio de sus carreras como developers.
Autor: L. Montero
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.
- 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.
Tags: oop
, fp
, constructors
, prototype
, inheritance
, factories
,
composition
.
Autor: Milton Mazzarri
En este curso te familiarizarás con los principios de la programación funcional, tan de moda en el mundo de JavaScript.
- 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.
Tags: fp
, hof
, pure functions
, immutability
, side effects
, es6
,
testing
, jest
.
Autor: M. Crowe
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, ...
- Convertir video juego 2d en React app: Convertir video juego en app con interfaz más completa, high scores, ...
Tags: react
, jsx
, webpack
, babel
, jest
Autor: M. Crowe / L. Montero
...
Tags: react router
, redux
, raduim
, ...
Autor: ???
La web es un ecosistema de estándares, protocolos, lenguajes y software. Pocas veces nos paramos a pensar en todas las piezas que componen este ecosistema vivo, desde el modelo TCP/IP o sistemas operativos, hasta HTML/CSS/JS, pasando por DNS, HTTP (servidores, clientes, proxys), URLs, dominios, ...
Al final del curso habrás construido y desplegado una aplicación usando un dominio de verdad (?) y presentarás una demo donde explicarás la experiencia, lo aprendido y cómo encajan las diferentes piezas del web stack en el producto.
Tags: html
, css
, js
, http
, url
, xhr
, json
, server
, client
, ...
Autor: ???
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: node
, npm
, yarn
, http-server
, filesystem
, static-server
, ...
Autor: ???
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: ???
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
.
Autor: ???
Tags: npm
, http
, fs
, path
, streams
, express
, api-development
,
deployment
.
Autor: ???
Tags: schema-design
, sql
, no-sql
, querying
, performance
, orm
.
Autor: ???
Tags: web-stack
, fullstack-framework
, routing
, mv*
, orm
.
Autor: ???
Tags: docker
, containers
, clusters
, scalability
, partitioning
...
Autor: ???
Tags: estadística
, map/reduce
, d3
, canvas
, ...
Autor: ???
Application deployment, management, maintenance, configuration and repair.
Tags: devops
, webops
, deployment
, maintenance
, management
, backup
,
repair
, debugging
, ...
Autor: ???
Tags: big-O
, adhoc
, search
, sort
Autor: ???
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.