Programa y Temario
Programa y Temario
Durante el programa tendrás muchas preguntas y te quedarás estancado alguna vez. Esto
es normal. Aprender desarrollo web y ciencias de la computación es difícil.
Te recomendamos que pienses realmente en tus preguntas y que seas considerado cuando
las publiques. Utiliza el método Rubber Duck Debugging. Te explicaremos los detalles en
clase.
Cuando tengas una pregunta, tu primer paso debería ser pensar en qué es exactamente lo
que no estás comprendiendo. Te recomendamos ampliamente que utilices Google y foros
como Stack Overflow para encontrar respuestas. Ser capaz de encontrar respuestas por tu
cuenta es una habilidad importante como programador.
Sin embargo, estamos aquí para ayudarte. Habla con tus compañeros de equipo. Habla con
el grupo por Slack y no dudes en escribirle a tu instructor.
Llamadas 1 a 1
El instructor puede ayudarte con tu problema a través de Slack o programar una llamada
1-1 contigo. Organizar una llamada 1-1 con el instructor puede ser una forma muy poderosa
de acelerar tu curva de aprendizaje. Es un recurso importante que ofrecemos en Academlo
y sin duda deberías aprovecharlo.
Durante los próximos 10 meses, completarás 5 módulos que van desde los fundamentos de
Javascript hasta los algoritmos y las estructuras de datos.
Palabra final
Como verás, Academlo es una experiencia de alta calidad. El éxito de nuestros estudiantes
es el objetivo más importante y te ayudaremos a estudiar, aprender y conseguir un trabajo.
A veces será difícil, pero estamos aquí para ayudarte en todo lo que podamos.
Proyectos
Durante el programa, tendrás que enviar asignaciones todas las semanas a través de
Google Classroom. Hay algunas asignaciones que deberás completar individualmente y
otras como equipo. Si completas una asignación como equipo, aún esperamos que todos
los miembros del equipo envíen la asignación en Google Classroom.
Grupos de estudio
Son grupos de apoyo, de estudio, tus amigos. Cada grupo consta de 12 estudiantes. Juntos
pueden ayudarse mutuamente en las tareas y durante los proyectos en los que cooperan
para completarlos juntos.
Durante las primeras semanas organizamos pequeños encuentros virtuales donde
conocerás a tus compañeros. Tener una buena relación con tus compañeros de grupo es
importante y te ayudará a tener éxito en Academlo.
Cada equipo tiene su propio canal de Slack para comunicarse como grupo. Utiliza ese canal
de Slack para comunicarte directamente con tus compañeros de equipo.
Normalmente, nuestro objetivo es que cada equipo se reuna y aproveche el espacio para
compartir y aprender, sabemos que estudiar programación puede requerir de paciencia y
disciplina, además creemos firmemente que al compartir con otros compañeros, puedes
mejorar y comprender mejor los temas.
Por favor haznos saber si tu equipo solo tiene pocos miembros o poca interacción. En ese
momento nos aseguraremos de asignarte a un nuevo grupo de estudio
Prueba de 4 semanas
Como parte de Academlo, las primeras 4 semanas son un período de prueba. Si no estás
satisfecho durante las primeras 4 semanas, puedes retirarte del programa.
Sin embargo, también usamos las primeras 4 semanas para evaluar a nuestros estudiantes.
Buscamos estudiantes que tengan una asistencia casi perfecta, que completen todas las
tareas semanales y que hagan un esfuerzo real durante el programa.
Objetivo:
El estudiante obtendrá las habilidades necesarias para desarrollar de manera correcta la
parte visual de un sitio web responsivo sin utilizar librerías/frameworks, así como agregar
contenido dinámico con javascript, trabajar de manera colaborativa con git y finalmente
entender y aplicar conceptos de accesibilidad.
El estudiante también obtendrá conocimientos de programación funcional y programación
orientada a objetos.
Requisitos
El alumno no necesita conocimientos previos, sin embargo, tener conocimientos básicos de
html, css y javascript le facilitarán mucho el aprendizaje.
Temas
● Cómo funciona el internet
● Navegadores
● Elementos y semántica HTML
● Atributos de elementos HTML
● Convenciones para nuestro HTML
● Introducción a CSS
● Selectores
● Pseudo-clases y pseudo-elementos
● Combinación de selectores
● Especificidad
● Propiedades css más utilizadas
Entregable:
Desarrollo de componentes básicos con HTML y CSS.
Temas:
● Modelo de caja
● Posicionamiento
● Flexbox
● Diseño responsivo
● Animaciones
● Primer sitio web: nuestro portafolio
Temas:
● Accesibilidad web
● Git
● Github
● Repositorios remotos
● Despliegue de mi portafolio con github pages
● Despliegue de mi portafolio en Netlify
● Trabajo colaborativo con git
● Proyecto panel de administración en equipo
Temas:
● Introducción a Javascript y sus usos
● Variables
● Tipos de datos
● Operadores
● Uso de funciones
● Conversión de tipos de datos
● Condicionales
● Ciclos
● Convenciones en el código
● Hacker rank
Temas:
● Tipos de funciones
● Call Stack
● Callbacks
● Closures
● Scope
● Métodos nativos en javascript
● Eventos
● Trabajando el DOM con javascript
● Módulos
● JSON
● Almacenamiento en el navegador
Entregable: Sitio web con CRUD de elementos con Javascript, el sitio web debe contar con
login y mantener la sesión iniciada con ayuda del almacenamiento del navegador.
Temas
● Programación funcional
● Introducción a POO
Temas:
● POO
● Promesas
● Async-Await
● Fetch
● HTTP
● Consumo de API
● Presentación del proyecto final
Objetivo: El estudiante aprenderá a crear aplicaciones web con React JS, logrando una
gran interacción con el usuario usando los conocimientos previos de HTML, CSS y
Javascript.
Requisitos:
● Funciones de callback
● Programación orientada a objetos
● Funciones anónimas
Temas:
● ¿Qué es React?
● Single Page Application
● Configurando el entorno de trabajo
● JSX
● DOM y Virtual DOM
● Componentes funcionales
Entregables: Una aplicación que muestre una vista similar a la página de inicio de youtube
con tarjetas que contengan una imagen, titulo, canal, vistas y miniatura, con datos estáticos.
Temas:
● Estado
● Propiedades (Props)
● Componentes de clase
● Eventos
● Tipos de inputs
● Atributos
● Validación de formularios con Formik
Entregables: Una aplicación que permita agregar y validar un usuario a través de los datos
ingresados en un formulario.
Semana 3(10) - Renderizado condicional y Listas
Objetivo: Comprender cómo mostrar y ocultar componentes usando estructuras if, switch o
operadores ternarios.
Temas:
● Uso de if, else, switch en un componente de React
● Operador lógico &&
● Operadores ternarios
● Filtros
● Métodos map, filter, find, findIndex, every, some, splice, slice, push, pop para el
manejo de arreglos
Entregables: Crear una aplicación que muestre una lista de empleados con su información y
que filtre esos usuarios por edad, nombre y cargo.
Objetivo: Comprender las diferentes fases del ciclo de vida de un componente de React y
podrá consumir una API con el conocimiento del ciclo de vida de react.
Temas:
● ComponentDidMount
● ComponentDidUpdate
● ComponentWillUnmount
● Fetch y Axios
● Consumir una API con React
Entregables: Crear una aplicación que consuma la API pokeapi y muestre tarjetas con
información de cada uno de los pokemones, agregar un filtro de búsqueda y un filtro de
características del pokémon (ataque, defensa, velocidad).
Temas:
● Hooks de estado, efecto y contexto
● Hooks vs componentes de clase
Entregables: Crear una aplicación tipo memorama que muestre varios pares de tarjetas
donde el usuario deberá sumar puntos cada vez que acierte en la pareja de tarjetas del
mismo tipo, esta aplicación contará con un temporizador para terminar el juego pasados 2
minutos.
Semana 6(13) - React Router
Objetivo: Construir una aplicación con una navegación entre vistas usando react router.
Temas:
● Rutas estáticas
● 404
● Redireccionamiento
● Rutas protegidas
● Parámetros
Entregables: Extender la aplicación hecha con pokeapi para implementar un inicio de sesión
que te lleve a vista con todas las tarjetas de los pokemones y que cada vez que el usuario
de click en la tarjeta del pokémon, te lleve al detalle del pokemon.
Objetivo: Comprender el propósito del uso de Redux y React en proyectos grandes, los
conceptos de actions, reducers y store.
Temas:
● Propósito de Redux
● Actions
● Reducers
● Store
● Flujo de datos
● Middlewares (logger, thunk)
● Acciones asincronas
Entregables: Crear una aplicación con inicio de sesión y registro en el cual el usuario podrá
ingresar una noticia, editarla, eliminarla y mostrar un panel con las noticias más destacadas
o más vistas, además tendrá un filtro para mostrar las noticias por nombre por más
recientes y por rango de fecha.
Objetivo:
El estudiante aprenderá a construir una aplicación desde el servidor con Node y Express
desde 0 hasta el despliegue en un servidor. Tendrá la habilidad de realizar una API Rest
usando una base de datos relacional, autenticación de usuarios, seguridad ante ataques
XSS y CSRF, podrá validar los datos que recibe el servidor y construirá middlewares
personalizados.
Requisitos:
● Conocimiento intermedio del lenguaje de programación Javascript (funciones de
callbacks, funciones asíncronas).
● Conocimientos básicos de Programación Orientada a Objetos.
● Conocimientos básicos de HTTP.
Temas:
● ¿Qué es node?
● Configurando el ambiente de desarrollo
● Manejo de archivos con filesystem de node
● Servir archivos estáticos
● Creando un servidor con Express
● Middlewares y rutas
● Métodos HTTP
Entregable: Desarrollar una aplicación con node y express que maneje diferentes rutas
típicas de una página web y que en una de las rutas lea un archivo y lo muestre en una
respuesta de tipo HTML.
Objetivo: Construir nuestra primera base de datos usando los conceptos de tabla, columnas,
tipos de datos, relaciones, llaves primarias, llaves foráneas.
Temas:
● Conceptos básicos de base de datos relacionales
● Instalación de postgresql
● Sequelize
● Modelos
● Migraciones
Entregable: Crear una base de datos usando sequelize basándonos en un modelo entidad
relación.
Temas:
● Códigos de estado
● Autenticación
● Middlewares para autenticación
● Seguridad ante XSS y CSRF
● Controladores
Entregable: Crear una API Rest con autenticación para el clientes de una tienda en línea.
Temas:
● Validación y sanitización de datos
● Nodemailer
● Stripe
● Socket io
● Multer
Entregable: Continuar con el desarrollo de la API Rest agregando los módulos de manejo de
productos, pedidos, pagos y se usará Stripe para procesar pagos en línea.
Temas:
● Configurar jest
● Creando pruebas en nuestras rutas/endpoints
● Lanzando las pruebas
● Coverage
Entregable: Probar todas las rutas que construimos en nuestra API Rest y lanzar las
pruebas para corregir bugs y crear un reporte de las pruebas realizadas.
Temas:
● Dudas
● Despliegue de la aplicación en Heroku.
Objetivo:
Aprender los conceptos básicos para crear un API Rest con Django. Al final del curso el
estudiante debe ser capaz de implementar los principales componentes del framework para
crear endpoints y construir su propio API Rest, valiéndose de Django y DRF. Entenderá los
conceptos de modelos, serializadores, vistas, acciones, y el ORM de Django.
Requisitos
● Conocimientos básicos de bases de datos y SQL
● Conocimientos básicos de tecnologías web
● Conocimientos básicos del protocolo HTTP y controladores para acciones base.
Temas:
● ¿Por qué usar Python?
● Setup del ambiente
● Variables
● Tipos de datos
● Estructuras condicionales
● Funciones
● Ciclos
● Trabajar con archivos
● Manejo de errores
Entregable: Contador de palabras, crear un script que lea un archivo de texto y retorne las
10 palabras más repetidas. Debe usar listas, diccionarios, ciclos, funciones, try/except.
Temas:
● Clases
● Instancias
● Métodos
● Herencia
● Interfaces
● Modelo OSI
● Arquitectura cliente servidor
● Patrones de diseño
● API Rest
● Ambientes virtuales
Entregable: Contador de palabras, actualizar el script anterior que lea un archivo de texto y
retorne las 10 palabras más repetidas. Usando clases, métodos, instancias y lo previamente
visto en clase.
Temas:
● Instalación Django
● Creando nuestra primer aplicación con Django
● Modelos
● Bases de datos - ORM
● Views
● Urls
● Templates
● Rutas en templates
Entregable: Crear una aplicación para estudiantes que contenga un modelo Estudiante, una
vista para listar los estudiantes en la base de datos y poder acceder al detalle de cada
estudiante. Además crear un modelo para Clase, y una vista para poder ver la lista de
clases disponibles y al dar click, poder listar los alumnos inscritos a cada clase.
Temas:
● Instalación Django Rest Framework
● Setup
● Serializadores
● Vistas basadas en funciones
● APIView
● Vistas genéricas
● Authenticación
Entregable: Crear un crud para estudiantes y un crud para materias, es necesario que cada
uno tenga implementados su modelo, serializador y vistas para los verbos HTTP.
Temas:
● ModelViewsets
● Acciones
● Filtros
● Paginación
● Permisos
● Correos
Entregable: Crear un proyecto de una librería que contenga las siguientes aplicaciones
libros, autores y editoriales, cada aplicación es un endpoint y debe tener sus modelos,
serializadores y vistas (ModelView set, acciones, filtros y paginación). Al crear un
usuario debe mandar un correo de bienvenida.
Temas:
● Test unitarios
● Celery
● Rabbit
● Swagger
● Proyectos finales
Temas:
● Solución de dudas/problemas
● Entrega del proyecto final
Objetivo: El estudiante comprenderá las estructuras de datos utilizadas con más frecuencia
así como el propósito y ventajas/desventajas de cada una de estas estructuras.
También veremos cómo medir el rendimiento de nuestros programas, así como la manera
de optimizarlos.
Requisitos
● Conocimientos básicos de programación
● Conocimientos básicos de matemáticas
● Conocimientos básicos de Python
Temas
● Tipos de datos
● Estructuras de control
● Funciones
● Manejo de excepciones
● Programación orientada a objetos
● Introducción a algoritmos
● Notación Big O
● Análisis de listas
● Análisis de diccionarios
Temas:
● Pilas
● Colas
● Lista ordenada
● Lista no ordenada
Temas:
● Recursividad
● Leyes de la recursividad
● Marcos de pila: Implementación de la recursividad
● Visualización de la recursividad
● Problemas recursivos complejos
● Programación dinámica
Temas:
● Búsqueda secuencial
● Búsqueda binaria
● Hashing
● Ordenamiento
● Ordenamiento burbuja
● Ordenamiento por selección
● Ordenamiento por inserción
● Ordenamiento de Shell
● Ordenamiento por mezcla
Temas:
● Ejemplos de árboles
● Implementación
● Nodos y referencias
● Árbol de análisis
● Recorrido de árboles
● Árboles binarios
● Análisis de árboles de búsqueda
● Árboles binarios de búsqueda equilibrados
Servidores
Objetivo: El estudiante desarrollará las habilidades necesarias para hacer despliegue de sus
aplicaciones en distintos servicios.
Temas:
● Creando nuestro primer servidor con Digital Ocean
● Consideraciones importantes al crear un servidor
● Usuarios y permisos
● Instalando software para servir sitios web
● Despliegue de un sitio web estático
● Instalando software necesario para servir un sitio construido con node
● Instalando software necesario para servir un sitio construido con python
● Bases de datos
● Respaldos
● Configurando dominios y subdominios
Temas:
● Usuarios
● Amazon SES
● Amazon S3
● Amazon EC2
● Amazon RDS
● Amazon Elastic Beanstalk
● Amazon Cloudfront
Entregable: Despliegue de un sitio web utilizando utilizando todos los servicios vistos.