Aprender a Programar con Java
├── Fundamentos de Java
│ ├── Sintaxis básica
│ ├── Tipos de datos (int, double, char, boolean)
│ ├── Variables y constantes
│ ├── Operadores (aritméticos, lógicos, relacionales)
│ ├── Estructuras de control (if, else, switch)
│ └── Bucles (for, while, do-while)
│
├── Programación Orientada a Objetos (POO)
│ ├── Clases y objetos
│ ├── Métodos y constructores
│ ├── Encapsulación (getters y setters)
│ ├── Herencia
│ ├── Polimorfismo
│ └── Interfaces y clases abstractas
│
├── Estructuras de Datos
│ ├── Arrays
│ ├── Listas (ArrayList, LinkedList)
│ ├── Mapas (HashMap, TreeMap)
│ └── Conjuntos (HashSet)
│
├── Manejo de Excepciones
│ ├── Try-catch-finally
│ ├── Creación de excepciones personalizadas
│ └── Throws y throw
│
├── Entrada y Salida (I/O)
│ ├── Lectura y escritura de archivos
│ └── Uso de Scanner para entrada de datos
│
├── Librerías y Frameworks Básicos
│ ├── Librerías estándar (java.util, java.io)
│ └── Introducción a frameworks (Spring, Hibernate)
│
├── Entorno de Desarrollo
│ ├── Instalación JDK
│ ├── Uso de IDE (Visual Studio Code)
│ └── Compilar y ejecutar programas Java
│
└── Proyectos y Práctica
├── Programas pequeños (calculadora, juegos simples)
├── Proyectos más grandes (gestores, aplicaciones de consola)
└── Participar en comunidades y retos (HackerRank, LeetCode)