Curso Java de Zero a Zen (JAZZ) - Presentación

¡Bienvenidos al Curso Java de Zero a modo Zen!

Con el Curso de Java de Zero a modo Zen, en adelante JAZZ (JAva de Zero a Zen), se pretende pasar de no tener ningún conocimiento a alcanzar un estado de entendimiento más allá del puramente técnico (no sólo saber cómo se implementa una parte en concreto con un lenguaje sino entenderlo como un todo y ser capaz de crear soluciones reutilizables).

Hablando de lenguajes, es un curso de Java porque el lenguaje de programación principalmente usado será Java (aunque se harán referencias a otros para entender mejor algunos conceptos), pero los conceptos que se aprenderán sobre la Programación Orientada a Objetos (POO) son en general válidos independientemente del lenguaje que se use. Estas partes las marcaré con el término NOJAZZ (Not Only JAZZ).

Aunque sea un curso de Java, los conceptos que se aprenderán sobre la Programación Orientada a Objetos (POO) son válidos independientemente del lenguaje que uses.


El otro lenguaje que usaré: el curso entero será en español, con la excepción de los términos anglosajones que se usan cotidianamente en el mundillo.

Este curso no sólo se tratará de una serie de entradas desatendidas en un blog. Es un curso que imparto también presencialmente y que sirve para que mis alumnos puedan tener acceso a mis explicaciones fuera de las sesiones de aula.

Os propongo aprovechar la figura del profesor y la comunidad para lo que no podeis conseguir por otros medios como: libros, videos, webminar, charlas magistrales, etc... lo que tienen en común es que son fuente de conocimiento, pero la comunicación va en un sólo sentido.

El profesor puede particularizar la enseñanza que necesita cada alumno. Por eso es fundamental no sólo leer el código que vaya apareciendo, sino plantear vuestro propio código, otras soluciones distintas y en cuanto tenga tiempo responderé. Para ello os animo a crearos una cuenta en dos sitios web fundamentales: Stackoverflow en español y Code Review (sólo en inglés)

La clave para aprender a programar es: se aprende a programar programando. La única forma de aprender de verdad es corrigiendo vuestros errores, no leyendo la solución definitiva de otro.

Se aprende a programar programando.


De todas formas, tampoco hay que despreciar la capacidad de leer código. Si empiezas el curso realmente desde cero y ahora no eres capaz de entender nada: ese será tu primer paso. Pero con eso no basta. Simplemente te dejo esta reflexión para que vayas apreciando los pasos que vayas dando en el curso (que a veces no nos damos cuenta de lo que vamos mejorando y es un gran aspecto motivador)

Entonces ¿Cómo puedo aprovechar para que revisen mi código?

Los sitios web que mencioné anteriormente son muy buenos para resolver esas dudas. Si quereis que revise vuestro código podeis dejar en un comentario el enlace a vuestra pregunta en esos sitios, o si es muy corto, directamente lo dejais en los comentarios. Os prometo responder en cuanto pueda, pero os pido que primero comprobeis que no existe el mismo caso y está respondido para beneficio de todos.

Estructura de las sesiones (entradas)

Cada sesión tratará sobre un concepto. Este concepto será la base de lo que hay que comprender en esa sesión.

Para explicar y demostrar los conceptos me basaré en videos, generalmente con código que ejemplifica el concepto.

Para profundizar en los temas se añadirán recursos complementarios para ampliar información. Estos recursos sí será normal que estén en inglés pues es la lengua habitual para la documentación oficial, etc... Si existe una versión en español pondré las dos.

Para finalizar, habrá prácticas que ayudarán a asentar los conocimientos y en los que cada uno tendrá que hacer su propio código. La solución estará al alcance, pero se sugiere hacer todo lo posible sin verla, y una vez que se haya encontrado la mejor solución propia, mirar la solución propuesta, compararla y preguntar las dudas. Esto último es muy importante para que la comunidad entera se beneficie.

Las sesiones se harán con explicaciones, demostraciones, recursos complementarios para profundizar y prácticas para asentar los conocimientos.


Poco a poco iré añadiendo el contenido de las sesiones que están programadas en la programación de más abajo, completando sesiones que ya estén montadas para corregirlas, actualizarlas o añadir vuestro feedback y añadir otras nuevas que no estaban desde el principio: es un curso vivo.

Mientras no haya completado todo el contenido programado, podeis calmar vuestra curiosidad adelantando con el libro que va a servir de guía. Se titula Think Java y podeis descargarlo gratuitamente. Desde aquí agradezco iniciativas como estas de libros de calidad y gratuitos a sus autores Allen Downey y Chris Mayfield. Recordad que nadie vive del aire, que siempre se puede colaborar con un poquito si aprecias un trabajo de calidad y sobretodo, que puede inspirar a otros. Este libro no servirá para todo el curso, pero sí para la parte más básica.

Por otra parte, y para finalizar con el código, siempre podréis acceder a mi repositorio de Github para tener acceso al código.

Programación

Cada sesión es independiente del resto (está claro que las últimas necesitaran conocer las primeras, pero si ya sabes lo anterior por otros medios, el concepto se explicará en una sesión)

Para empezar desde cero, se marca un programa con el orden adecuado de aprendizaje.

Para empezar (no tienen que ver con la programación en sí, pero sí para el desarrollo del curso):

  1. Instalación del Entorno de Desarrollo Integrado (IDE) - Eclipse
  2. Control de versiones - GitHub
  3. Gradle + Eclipse + GitHub

Lo básico:

  1. ¿Qué es programar?
  2. Fundamentos:
    1. ¿Cómo no? Hola mundo
    2. Mostrando más mensajes
    3. Antes de seguir practica con los ejercicios del libro "Think Java"
    4. Variables (definición y uso)
    5. Operadores
      1. Numéricos
      2. De Comparación
      3. Lógicos
      4. Practica con ejercicios
    6. Métodos
      1. Definición y uso básico
      2. Parámetros, argumentos y ámbito (scope)
        1. Practica con ejercicios 
      3. Métodos con retorno
        1. Practica con ejercicios (ejercicios 1, 2 y 4)
    7. Condiciones (if-else)
      1. Practica con ejercicios y ejercicios 3 y 5 de punto anterior
    8. Bucles (loops)
      1. Practica con ejercicios
    9. Arrays
      1. Practica con ejercicios
    10. Contenido básico extra
  3. Pensando en objetos:
    1. Visión general (Fundamentos POO)
    2. Clasificación de Tipos (primitivos y por referencia)
    3. Clases
    4. Objetos
      1. Método toString()
      2. Constructores
      3. Igualdad (equals vs "==")
    5. Herencia
      1. Lo básico (extends y super
      2. Clases abstractas
      3. Clases anónimas
    6. Polimorfismo
    7. Interfaces, lo básico
    8. Colecciones (Collection)
    9. Ordenar colecciones (List)
    10. Interface Comparable
  4. Avanzando hacia la abstracción:
    1. Comparable vs Comparator
    2. Integrando con código externo
    3. Genéricos
      1. Tipo variable
      2. Límites en genéricos (boundary)
      3. Wildcard <?>
  5. Entrada y Salida
    1. Escribir y Leer datos: texto en ficheros
    2. Serialización
      1. Fundamentos: Serialización Simple (ejemplo CSV)
      2. Ejemplo JSON

Si necesitas ejemplos prácticos o preguntas de control, visita donde voy añadiéndolas o haciendo recopilaciones de sitios de referencias.

Para formatear el código se utilizará durante todo el curso la guía de estilo de Google para Java.

4 comentarios:

  1. Buenos días, como puedo hacer para dar entrada de una variable desde la consola. Me explico, Si yo indico en texto "Escribe la base del rectángulo:" necesito que el usuario introduzca un numero Real para que mi programa lo pueda leer. ¿Cuál es la etiqueta que debo usar para poder recibir ese dato desde la consola?

    ResponderEliminar
    Respuestas
    1. Por favor utiliza los comentarios en las entradas que tengan más que ver con la pregunta. En este caso si hablas de variables pues en esa entrada. La entrada de usuario no se ve en esta parte (hay puntos mas importantes), en el libro de referencia puedes verlo en https://greenteapress.com/thinkjava6/html/thinkjava6004.html#sec33

      No recomiendo perder el tiempo con la entrada por consola ya que los usuarios quieren una aplicación web, desktop o móvil (hay asignaturas distintas dedicadas a cada una). Además vas a perderlo dos veces:
      1.- Haciendo el código
      2.- Teniendo que meter datos para probarlo

      Si entiendes lo que se ve en este curso luego usar el resto de clases (Scanner es otra clase más) no tienen ningún misterio.

      Eliminar
  2. Esto esta padre wey! ordenes!

    ResponderEliminar

Compárteme

Entradas populares