code.then
()
Aprende a programar, y a partir de ahí tú decides. Las posibilidades son infinitas. Code, then do anything.
Idioma  

Filosofía

Acerca de mí

Contenidos del curso

  Puedes traer tu idea de proyecto, o te puedo sugerir uno. Así podré preparar ejercicios a medida que te ayuden a construir el proyecto paso a paso.

Introducción
  1. El ordenador
    • Procesador (CPU)
    • Memoria (Disco duro y RAM)
    • Dispositivos de entrada y salida
    • Sistema operativo
    • Sistema de archivos
    • Línea de comandos (terminal)
  2. Introducción a la programación
    • Lenguajes de alto y bajo nivel
    • Instrucciones, flujo
    • Editores: Sublime, Brackets, Atom
    • Primer programa Hola Mundo
Básico
  1. Variables
    • Definición, propósito, sintaxis, nombres
    • Tipos: número, texto, booleano
    • Valores: literales, calculados
    • Declaración, asignación
  2. Expresiones
    • Definición, tipo, valor
    • Operadores matemáticos: + - * / %
    • Operadores de comparación: == != < > <= >=
    • Operadores lógicos: ! && ||
    • Abreviaciones: += -= *= /=
  3. Control de flujo
    • Condición: if/else, switch
    • Bucle: while, for
  4. Editores avanzados (IDEs)
    • Eclipse
    • IntelliJ IDEA
  5. Funciones
    • Definición, propósito: evitar repetición, organización del código
    • Declaración vs llamada
    • Parámetros, argumentos
    • Tipo de retorno, valor de retorno
    • Típica confusión: mostrar no es retornar
Programando en el mundo real
  1. Sistemas de control de versiones (VCS)
    • Repositorios de código, versiones, colaboración
    • Git (herramienta)
    • GitHub (sitio de repositorios)
  2. Errores, testing
    • Es fácil cometer errores (Google, Stack Overflow, ...)
    • Tests, tests automatizados
    • Excepciones: try catch finally

  Aquí conoces los conceptos más importantes de la programación (en serio) y puedes crear programas sencillos

Clases y objetos
  1. POO (Clases, objetos)
    • Clase (tipo)
    • Objeto (valor)
    • Campos/propiedades (variables dentro de una clase)
    • Métodos (funciones dentro de una clase)
    • La variable implícita this
    • Constructor
    • Miembros de clase (static)
  2. POO: punteros y herencia
    • Punteros
    • Argumentos por valor o referencia
    • Herencia
    • Interfaces
  3. Colecciones
    • Listas y arrays
    • Mapas/diccionarios
    • Árboles
    • Conjuntos
  4. Análisis de problemas
    • Importancia de los nombres
    • Divide y vencerás
    • Ejercicios simples: usa variables, operadores, if, while, colecciones
    • Ejercicios intermedios: organiza el código en funciones
    • Ejercicios complejos: detecta clases (conceptos), métodos y propiedades
  5. Clases útiles del JDK
    • JDK
    • Date, Math, String, wrappers (Integer, Double, etc)
    • Stream (entrada y salida), Reader, Writer (por ejemplo para archivos)
  6. Librerías de terceros
    • Maven
    • Usar una librería: commons-lang
    • Guardar objetos en formato JSON usando otra librería: gson
    • Avance de JavaScript: ver un JSON en acción
Avanzado
  1. Callbacks y reactive streams
    • Callbacks (funciones como argumentos)
    • Java 8 lambdas
    • Java 8 reactive streams
    • Transformar y filtrar colecciones (con y sin streams)
    • Ver callbacks en otros lenguajes (e.g. JavaScript, Ruby)
  2. Conceptos avanzados de programación
    • Patrones de diseño (e.g. observador, plantilla)
    • Familias de clases (DTO, BO, útil)
    • TDD (desarrollo dirigido por tests)
    • Hilos
    • Expresiones regulares
    • Reflection (opcional)

  Aquí ya eres un programador, capaz de construir programas de línea de comandos, y puedes escoger el camino que quieras

Frontend (web)
  1. HTML/CSS
    • Navegadores (muestran HTML/CSS)
    • HTML (XML) : contenido
    • CSS : estilo y disposición
    • Flexbox : disposición más fácil
    • CSS Media queries (responsive)
    • Bootstrap : disposición responsive y estilo
  2. JavaScript
    • JavaScript
    • jQuery
    • AJAX
  3. Herramientas y frameworks
    • Google Maps
    • NodeJS
    • SASS
    • Autoprefixer
    • AngularJS

  Aquí puedes construir una interfaz web para tu aplicación

Full stack
  1. Conectar frontend y backend
    • Frameworks (Spring, Play, Dropwizard, Grails, JSF, ...)
    • Ejemplo práctico: jQuery/AngularJS + API Dropwizard
  2. Bases de datos
    • Introducción a BDs: tablas y SQL
    • SQL
    • JDBC: SQL desde Java
    • JPA: SQL "automático"
    • Bases de datos No-SQL, MongoDB
  3. Publicar un proyecto completo en Heroku
    • Frontend
    • Backend
    • Persistencia
    • Desplegar (Heroku)

  Aquí puedes construir una aplicación web completa con base de datos y hacerla pública en internet


Por qué organicé los contenidos así

Muchos cursos comienzan con temas de frontend como HTML/CSS. Esto puede ser más atractivo visualmente y (engañosamente) más fácil de entender, pero creo que es importante construir antes una base sólida de programación. Con ese conocimiento estarás mejor preparad@ para aprender cualquier lenguaje, framework o herramienta que necesites para alcanzar tus objetivos. Además, disfrutarás de la programación muchísimo más.

Contacto

¿Te interesa? ¿Tienes alguna pregunta? Escríbeme a codethen@gmail.com!