Tu zona de trabajo: estudia, abre materiales, practica y pregunta cuando te atasques.
El menú de la izquierda es el índice de cursos. Este panel resume cómo usar la plataforma: leer teoría, ver archivos sin descargarlos, bajar guías, copiar código, practicar online y apoyarte en el Mentor IA para entender mejor cada paso.
Impacto de la plataforma
Aprendizaje real con práctica guiada y asistencia de IA
0+
Alumnos formados
0+
Horas impartidas
0+
Ejercicios prácticos
0+
Ejercicios con IA
0%
Satisfacción
Curso Web de Iniciación
De cero a publicar tu primera web en Netlify
HTML
Estructura y etiquetasCSS
Estilos y diseñoJavaScript
InteractividadBootstrap
ComponentesInstala Live Server
Abre VS Code → Extensiones (Ctrl+Shift+X) → Busca "Live Server" → Instalar.
Extensión gratuitaAbre tu archivo .html
Descarga un .html del curso → Abre con VS Code → Clic derecho → Open with Live Server.
Se abre en el navegadorCómo usar los materiales del curso
- Descarga el archivo
.htmlde la unidad que quieras practicar. - Abre VS Code y arrastra el archivo o usa Archivo → Abrir.
- Clic derecho en el código → Open with Live Server.
- Edita el código y guarda (Ctrl+S). La página se actualiza sola.
- Experimenta: cambia colores, textos, añade cosas. ¡Así se aprende!
Checklist antes de empezar
- VS Code instalado
- Extensión Live Server instalada
- Sabes abrir un .html con Live Server
- ¡Listo para la Unidad 1!
Trabajaremos directamente en el código con una clase .html comentada
(estilo Better Comments) y una plantilla rellenable para que el alumno
construya su
primera página paso a paso. La guía .md resume teoría y propone ejercicios cortos.
- 📌 Estructura básica:
Todo documento HTML empieza con
<!DOCTYPE html>, seguido de la etiqueta raíz<html lang="es">. Dentro, el<head>contiene metadatos (ej.<meta charset="UTF-8">,<meta name="viewport">para móviles) y el<title>. El contenido visible se coloca en<body>. - 🧭 Secciones semánticas:
Para que el navegador y lectores de pantalla entiendan la página, usamos etiquetas con
significado:
<header>(cabecera),<nav>(menú),<main>(contenido principal),<section>(bloques temáticos),<article>(artículos o posts) y<footer>(pie de página). - 📝 Contenido:
HTML organiza la información con títulos
h1–h6, párrafos<p>, enlaces<a>, listas<ul>/<ol>con<li>, e imágenes<img>(siempre con atributoalt). - 🔗 Navegación interna:
Puedes crear enlaces que lleven a distintas partes de la misma página usando anclas:
<a href="#id">. Esto sirve para construir un menú simple que “salta” a cada sección. - ♿ Accesibilidad básica:
Es importante mantener una jerarquía clara de títulos (un solo
<h1>y luegoh2/h3en orden), poner texto alternativo a las imágenes y usar atributos comoaria-labeloaria-labelledbycuando sea necesario para que todos los usuarios puedan navegar sin problemas.
⏳ Cargando código...
Trabajaremos directamente en el código con una clase .html comentada
(Better Comments) y una plantilla rellenable para practicar. La guía
.md resume teoría y propone ejercicios rápidos.
- 🎛️ Estilos globales: Lo primero al empezar con CSS es definir la base de la página: una fuente clara, un color de fondo y un color de texto. También se aplican pequeños “reseteos” para que todos los navegadores muestren el diseño igual.
- 🎨 Colores:
Con las propiedades
colorybackground-colordecides la paleta de tu web. Un buen contraste entre texto y fondo hace que la lectura sea más cómoda y accesible. - 🔤 Tipografía:
CSS te permite elegir la
font-family(fuente), controlar el tamaño del texto, hacerlo más grueso o más fino, y usar unidades comopxorempara mantener consistencia en diferentes pantallas. - 📦 Modelo de caja:
Cada elemento HTML se comporta como una “caja” que puedes personalizar con
margin(espacio externo),padding(espacio interno),border(bordes) ybox-shadow(sombras). Entender esto es clave para controlar bien el diseño. - 🧭 Navegación y utilidades: Aprenderás a dar estilo a menús simples y a crear pequeñas clases de utilidad para alinear, centrar o espaciar elementos sin repetir mucho código.
- 🧪 Mini-proyecto: Pondrás en práctica todo lo anterior aplicando CSS a tu portfolio de UT1: darle colores, tipografías y una estructura visual coherente para que se convierta en una página atractiva.
⏳ Cargando código...
Trabajaremos con una clase .html y una plantilla rellenable
para
aplicar
Bootstrap al portfolio de UT1/UT2. La guía .md resume teoría y propone ejercicios
cortos.
- 🔧 ¿Qué es Bootstrap? Es un kit de herramientas que te permite dar estilo y maquetar páginas web sin tener que escribir CSS desde cero. Lo cargas con un enlace (CDN) y ya puedes usarlo.
- 📦 Diseño rápido y ordenado Bootstrap trae un sistema de contenedores, tipografías limpias y utilidades de espaciado que ayudan a que tu página se vea profesional desde el primer minuto.
- 🧱 Grid de 12 columnas Su “rejilla” hace que tu página sea responsiva automáticamente: el contenido se adapta a móvil, tablet o PC sin esfuerzo, solo usando clases ya preparadas.
- 🟦 Componentes listos para usar Menús de navegación, botones, formularios, tablas, alertas, tarjetas y hasta carruseles de imágenes. Todo con un estilo consistente y bonito, listo para personalizar.
- 🗂️ Cards para proyectos Son bloques visuales que combinan imagen + texto + botón. Perfectas para mostrar tus trabajos, productos o ideas sin tener que inventar el diseño.
- 🚀 ¿Por qué usarlo en tu portfolio? Porque con muy poco código consigues que tu página se vea como una web moderna y profesional. Lo que en CSS manual te llevaría horas, aquí lo tienes en minutos.
⏳ Cargando código...
Trabajaremos con una clase .html comentada y una plantilla
rellenable para
integrar JS en el portfolio de UT1/UT2/UT3. La guía .md resume teoría y propone
ejercicios rápidos.
- 🧠 ¿Qué es JavaScript? El lenguaje que hace tu web interactiva: responder a clics, escribir en la página, mostrar/ocultar cosas y actualizar datos sin recargar.
- 🔌 ¿Dónde va el JS?
Dentro de
<script>en el HTML o en un archivo externo.jsenlazado. Ideal: separar el JS en su propio archivo para mantener el código limpio. - 🎛️ Eventos
Acciones del usuario como click, input o submit.
Con
addEventListener“escuchas” esas acciones y ejecutas una función. - 🧩 DOM
El árbol de elementos de tu página. Con
document.querySelectorseleccionas un elemento y contextContent,classListosetAttributelo modificas. - 📨 Formularios
Valida datos, evita envíos vacíos con
event.preventDefault()y muestra feedback visual (mensajes de éxito o error). - 🚀 Mini-proyecto Añadir interacción al portfolio: botón que cambia textos, contador de clics, vista previa de un campo de texto y validación simple del formulario de contacto.
⏳ Cargando código...
Trabajaremos con una clase .html y una plantilla rellenable
listas
para usar.
La guía .md explica cada bloque (tema claro/oscuro, filtro de proyectos, galería
con
modal,
validación de formulario y pequeños retoques de UI).
- 🌗 Tema claro/oscuro
Usa variables CSS y el atributo
data-themeen<body>. La preferencia del usuario se guarda enlocalStoragepara recordar el modo. - 🧱 Maquetación Bootstrap Navbar fija, hero con CTA, grid responsive de “Proyectos” y utilidades de espaciado/colores coherentes.
- 🔎 Filtro de proyectos
Búsqueda en vivo por palabra clave leyendo
data-tags, título y descripción de cada card. - 🖼️ Galería Imágenes que abren un modal a pantalla grande. Sin JS extra: basta con el bundle de Bootstrap.
- ✉️ Formulario Validación con Bootstrap + JS: mensajes claros de éxito/error y reset automático al enviar.
- 🚀 Remate con IA
Pulir microcopys, atributos
altyaria-*, contrastes y CTA. Además, detectar mejoras rápidas de UX, SEO y rendimiento.
⏳ Cargando código...
✅ Pasos (modo rápido)
- Crea una carpeta en tu PC (por ejemplo
mi-web). - Dentro debe existir un archivo llamado
index.html(es el “inicio” de tu web). - Prueba en local: abre
index.htmlo usa Live Server en VS Code. - Entra en Netlify Drop y arrastra la carpeta (o el
index.html). - Netlify te da una URL: abre el enlace, revisa y compártelo.
index.html, rutas rotas a imágenes/CSS (carpetas distintas),
o enlaces con espacios sin codificar.
Enlaces útiles
Más adelante, para un despliegue “pro” (que se actualice solo al cambiar tu código), conecta tu proyecto a GitHub. Para empezar, Drop es perfecto.
DevTools (F12)
- Elements: inspeccionar y editar HTML/CSS en vivo.
- Console: ver errores de JavaScript y probar código.
- Network: analizar peticiones.
- Responsive: probar en móvil/tablet.
Git Básico
git init— Iniciar repositorio.git add .— Preparar cambios.git commit -m "msg"— Guardar versión.git push— Subir a GitHub.
git push.
Plataforma Web Interactiva
Teoría guiada, editor visual y vista previa responsive en una experiencia única.Tu aula web completa en una sola pestaña
Desde aquí entras al entorno donde el alumno estudia la teoría, escribe código, prueba cambios al instante y avanza por unidades sin salir de la misma experiencia.
Estructura, etiquetas y primeras páginas.
Diseño visual, layout y estilos modernos.
Componentes listos y maquetación rápida.
Interactividad, DOM y comportamiento real.
Cada bloque muestra el contenido teórico junto al ejercicio real para que el alumno aprenda con contexto.
El editor forma parte de la experiencia web completa, pensado para practicar con comodidad y continuidad.
Puedes comprobar el resultado en tiempo real y probar el modo móvil sin salir de la experiencia principal.
Entradas rápidas por bloque
Cada acceso abre la plataforma justo en el bloque elegido.
Configuración del entorno y primeras páginas con estructura semántica y etiquetas base.
Ir a inicio y HTMLSelectores, colores, tipografía, cajas y primeras decisiones de maquetación visual.
Ir a CSSSistema de rejilla, componentes reutilizables y aceleración del trabajo responsive.
Ir a BootstrapEventos, DOM y comportamiento dinámico para que la web deje de ser estática.
Ir a JavaScriptIntegración final del portfolio y uso práctico de IA para acelerar iteraciones con criterio.
Ir al proyecto finalHerramientas del navegador, Git y despliegue para subir tu web y trabajar como en un flujo real.
Ir a publicar y depurarXML · XSD · XPath · Lenguajes de Marcas
La parte de datos del módulo de Lenguajes de Marcas. Aquí no hay web ni HTML — esto va de estructurar información, validarla y consultarla. XML es el formato base; DTD y XSD permiten validar que el XML es correcto; XPath permite extraer datos de un documento XML.
El material está organizado en 4 sesiones con teoría, ejercicios y un examen tipo idéntico al de 1º DAM real. Todo se trabaja desde VS Code con la extensión XML de Red Hat — y el laboratorio XPath funciona directamente en el navegador sin instalar nada.
Plan de 4 sesiones
Estructura base: etiquetas, anidamiento, atributos, entidades y CDATA. La diferencia entre bien formado y válido.
Define qué elementos y atributos son válidos. DTD interno, externo, tipos ID e IDREF para referencias entre elementos.
Selecciona nodos de un XML: rutas absolutas y relativas, predicados, funciones count(), sum(), contains(). Laboratorio interactivo en navegador.
Reemplaza a DTD con tipos de datos, restricciones (enumeraciones, patrones, rangos) y referencias con key/keyref.
Un XML está bien formado cuando sigue las reglas sintácticas básicas. Eso no significa que sea válido — puede estar bien formado y tener datos incorrectos según su esquema.
Reglas de XML bien formado
- Siempre hay un único elemento raíz que contiene a todos los demás.
- Todas las etiquetas se abren y se cierran:
<libro>...</libro>o<br/>. - Las etiquetas se anidan correctamente — no se pueden cruzar.
- Los atributos van entre comillas:
id="1". - Caracteres especiales se escapan con entidades:
& < > ". - El documento empieza con la declaración:
<?xml version="1.0" encoding="UTF-8"?>.
Ejemplo
<?xml version="1.0" encoding="UTF-8"?>
<biblioteca>
<libro id="L001">
<titulo>El Quijote</titulo>
<autor>Cervantes</autor>
<año>1605</año>
</libro>
<libro id="L002">
<titulo>Cien años de soledad</titulo>
<autor>García Márquez</autor>
<año>1967</año>
</libro>
</biblioteca>
DTD (Document Type Definition) define qué estructura debe tener un XML para ser válido. Es la forma más antigua de validación — hoy XSD la ha reemplazado, pero sigue saliendo en exámenes de 1º DAM.
Tipos de DTD
- DTD interno: el esquema va dentro del propio XML en el
<!DOCTYPE>. - DTD externo: el esquema va en un archivo
.dtdseparado referenciado conSYSTEM.
Elementos clave del DTD
<!ELEMENT nombre (hijos)>— define qué elementos puede contener.+uno o más,*cero o más,?opcional.<!ATTLIST elemento atributo tipo valor>— define atributos.IDeIDREF— para crear referencias entre elementos (como claves foráneas).
XPath es el lenguaje de consultas para XML. Funciona como las rutas de un sistema de archivos pero seleccionando nodos de un documento XML. El laboratorio HTML permite probar XPath directamente en el navegador.
Expresiones XPath más usadas en examen
//libro— todos los elementos libro en cualquier nivel./biblioteca/libro[1]— el primer libro (índice empieza en 1).//libro[@id='L001']— libro con atributo id igual a L001.//libro[año>2000]/titulo— títulos de libros posteriores al año 2000.count(//libro)— número total de libros.contains(//autor, 'García')— filtra por contenido de texto.//libro/titulo/text()— el texto del elemento titulo.
biblioteca.xml con libros, socios y préstamos.
XSD (XML Schema Definition) es la evolución de DTD. Más potente, más preciso y escrito en XML. Permite definir tipos de datos concretos, restricciones numéricas, patrones de texto y referencias complejas.
Ventajas sobre DTD
- Tipos de datos reales:
xs:string,xs:integer,xs:date,xs:boolean. - Restricciones:
xs:enumeration(valores permitidos),xs:pattern(regex), rangos conminInclusive/maxInclusive. - Referencias con
xs:keyyxs:keyref— equivalente a clave primaria/foránea. - Cardinalidad con
minOccursymaxOccurs(incluyendounbounded).
data/biblioteca_invalida.xml en VS Code, valídalo contra biblioteca.xsd y corrige los errores hasta que el XML sea válido. Es exactamente lo que cae en examen.
Angular moderno Standalone · Router · Forms · RxJS
Abrir plataforma AngularCurso Angular con plataforma propia
Este bloque no abre archivos sueltos sin contexto: centraliza la guia, el codigo TypeScript, la practica y el acceso a un entorno Angular real. Angular necesita proyecto completo para compilar, asi que la plataforma combina lectura, demos y laboratorio externo preparado.
Accesos principales
Ruta completa del curso. Cada unidad tiene acceso directo a la guia, al codigo cuando existe y a la plataforma en el punto exacto.
Node, npm, Angular CLI, estructura del proyecto y standalone.
Selector, template, estado, Input, Output y eventos.
Condicionales, listas, clases dinamicas, pipes y trackBy.
Router, routerLink, parametros, wildcard y navegacion SPA.
Servicios, inyeccion, HttpClient, Observables, cache y errores.
Reactive Forms, FormGroup, validaciones y envio controlado.
BehaviorSubject, estado compartido, async pipe y patrones reactivos.
TestBed, componentes standalone, fixture, detectChanges y expectativas.
ng build, base href, dist, publicacion estatica y checklist final.
Recuerda la ultima unidad y permite marcar bloques completados.
Carga las guias reales del curso sin duplicar contenido.
Muestra los ejemplos originales y permite copiarlos.
Practica Angular real en navegador sin subir node_modules.
Entradas rapidas por unidad
Cada acceso abre la plataforma Angular justo en el bloque elegido.
Node, CLI, estructura del proyecto y por que Angular necesita compilar.
Practicar UT0Selector, template, estado, Input, Output y eventos.
Practicar UT1Condicionales, listas, clases dinamicas y transformaciones.
Practicar UT2Rutas, enlaces, parametros, router-outlet y ruta comodin.
Practicar UT3DI, HttpClient, Observables, cache y errores.
Practicar UT4La parte aplicada del curso hasta build y publicacion.
Continuar rutaVue.js · Frontend moderno Framework progresivo SPA
¿Qué aprenderás?
Domina Vue 3 desde cero hasta despliegue real. El hilo conductor es una SPA educativa que crece unidad a unidad: reactividad → componentes → rutas y estado global → buenas prácticas y producción.
Entorno necesario
- Node.js 18+
nodejs.org — recomendado LTS - VS Code + extensión Vue — Official
Antes llamada Volar - Vite (incluido al crear proyecto)
npm create vite@latest
.vue y .md.
README
Comprender qué es Vue.js y construir tu primera app reactiva desde cero.
- ¿Qué es un framework SPA progresivo? Vue en el ecosistema frontend
- Crear la instancia con
createAppy montar en el DOM - Reactividad:
data(),ref(),reactive() - Interpolación
{{ }}, directivasv-bind,v-on,v-if,v-for - Single File Component (SFC):
<template>,<script>,<style scoped> - CDN vs proyecto Vite: cuándo usar cada uno
Construir apps modulares con comunicación correcta entre componentes padre e hijo.
- Arquitectura de componentes y flujo unidireccional de datos
- Props:
defineProps()con tipado, valores por defecto yrequired - Eventos personalizados:
defineEmits()yemit() - Slots básicos para contenido flexible e inyectable
- Patrón completo:
TarjetaRecurso(hijo) ↔AppUt2(padre) script setupvs Options API: ventajas de cada enfoque
Crear SPAs con navegación real entre vistas y estado global centralizado.
- Vue Router:
createRouter,createWebHistory, rutas anidadas <RouterView />y<RouterLink>: navegación sin recarga de página- Rutas dinámicas con parámetros:
/perfil/:id - Pinia:
defineStore,state,actions,getters - Comparativa Pinia vs Vuex: por qué Pinia es el estándar en Vue 3
- Persistencia del store con
localStorage
Escribir código Vue de calidad profesional y desplegar la SPA a producción.
- Arquitectura:
components/,views/,composables/,stores/ - Patrón contenedor/presentacional: separar lógica de renderizado
- Testing con Vitest + Testing Library:
render,fireEvent,emitted() - Accesibilidad:
aria-live, labels asociados,v-bind:keyen listas - Build con Vite:
npm run buildgenera carpetadistoptimizada - Despliegue en Netlify / Vercel: drag & drop o CI desde repositorio
El laboratorio es un proyecto Vite real con las cuatro unidades integradas: Router configurado, store Pinia, componentes reutilizables y vistas por ruta. Descarga la carpeta, instala dependencias y arranca el servidor de desarrollo para verlo en el navegador.
cursos/Curso Vue/curso-vue-lab/Arranque:
cd curso-vue-lab && npm install && npm run devAccede a http://localhost:5173 para ver la SPA en vivo con todas las UTs navegables.
Estructura del laboratorio
src/views/UT1/— Introducción y reactividadsrc/views/UT2/— Componentes y propssrc/views/UT3/— Router + Piniasrc/views/UT4/— Buenas prácticassrc/router/index.ts— Rutas de la SPAvite.config.ts— Configuración del build
Documentación del lab
Curso Java: guía y descargas
Herramientas necesarias para el curso
Java es un lenguaje muy usado en DAW/DAM y en empresas. En este curso vas a aprender desde lo básico (variables, condicionales, bucles) hasta POO y proyecto final.
Paso 1 · Instalar Java (JDK)
Instala JDK 17 o superior. Recomendado: Temurin (Adoptium), que se instala con asistente (siguiente, siguiente...).
Descargar Temurin JDKPaso 2 · Editor recomendado
Usa Visual Studio Code para abrir los archivos del curso y trabajar cómodo.
Descargar VS CodeExtensiones recomendadas (VS Code)
- Java Extension Pack: compilar, ejecutar y depurar Java.
- Better Comments: mejora la lectura de comentarios.
.java son el código fuente. Las guías .md explican teoría y tareas.
Puedes abrir ambos en VS Code sin problemas.
En esta primera unidad verás los fundamentos de Java para empezar con buen pie: cómo declarar variables, cuáles son los tipos de datos más usados y cómo operar con ellos mediante operadores aritméticos, de comparación y lógicos. Todo con ejemplos sencillos y buenas prácticas para evitar errores típicos.
-
📌 Tipos primitivos y para qué se usan:
int(enteros),double(decimales),boolean(verdadero/falso) ychar(carácter). -
🧮 Operadores aritméticos:
+-*/%. Comparación:==!=<<=>>=. Lógicos:&&(y),||(o),!(no). -
📝 Buenas prácticas:
nombres en camelCase (
precioTotal), evita abreviaturas confusas, inicializa variables, usafinalpara constantes y comenta lo imprescindible. - ✅ Objetivo: al terminar, podrás declarar variables, combinarlas en expresiones y decidir el tipo correcto para cada dato.
En esta unidad aprenderás a tomar decisiones en tus programas controlando el flujo de ejecución.
Verás cómo usar if, else y switch para actuar en función
de ciertas condiciones, y cómo combinar varias usando operadores lógicos como
&& y ||.
-
🔀 Condiciones simples y múltiples con
if,if/elseyelse ifpara controlar casos diferentes. -
📋 Decisiones por casos usando
switchycasepara elegir entre múltiples opciones. -
🧠 Operadores lógicos:
&&(y),||(o),!(no) para combinar o invertir condiciones. -
💡 Buenas prácticas: evita anidar demasiados
if, usa sangrías claras y consideraswitchpara casos múltiples. - ✅ Objetivo: al final podrás crear programas que respondan de forma diferente según la información o las acciones del usuario.
En esta unidad aprenderás a repetir instrucciones de forma automática usando bucles. Veremos
cómo aplicar
for, while y do while en diferentes situaciones reales,
con ejercicios prácticos
como contadores, validaciones y menús.
- 🔁 Bucle
for: ideal para repeticiones controladas - 🔄 Bucle
while: se ejecuta mientras se cumple una condición - 🔂 Bucle
do while: siempre se ejecuta al menos una vez - ✅ Ejercicios con bucles anidados y control de flujo
En esta unidad aprenderás a reutilizar código mediante funciones. Verás cómo declarar métodos, pasarles parámetros y devolver resultados. También aprenderás a modularizar programas y mejorar su mantenimiento.
- 🔧 Declaración de funciones con parámetros
- ↩️ Métodos que devuelven valores
- 🧩 Modularización y reutilización del código
- 💡 Ejemplos con funciones prácticas y organizadas
Esta unidad abarca todos los pilares de la programación orientada a objetos en Java. Aprenderás a construir clases con sus atributos y métodos, crear objetos a partir de ellas, y reutilizar código mediante herencia. También explorarás cómo sobrescribir métodos y usar interfaces para diseñar estructuras flexibles y escalables.
- 🏗️ Definición de clases, atributos y métodos
- 🔁 Instanciación de objetos con
newy acceso a métodos - 🧬 Herencia con
extendsy uso desuper - 🧠 Polimorfismo y sobreescritura de métodos (
@Override) - 🔌 Uso de interfaces para definir comportamientos comunes
- 📘 Guía disponible: solo para Clases y Objetos
En esta unidad aprenderás a detectar, controlar y gestionar errores en tiempo de ejecución.
Usarás bloques
try, catch, finally y también podrás lanzar tus propias
excepciones con throw.
- ⚠️ Gestión de errores con
try/catch/finally - 🎯 Excepciones predefinidas y personalizadas
- 🚫 Uso de
throwythrows - 📘 Guía explicativa con teoría y ejercicios
En esta unidad aprenderás a trabajar con textos en Java: cómo manipular cadenas, extraer
información, reemplazar partes
de un texto y aplicar métodos útiles de la clase String como length,
substring, split, etc.
- ✂️ Cortar y unir textos (
substring,concat) - 🔎 Búsquedas con
contains,indexOfyreplace - 🔠 Conversión entre mayúsculas y minúsculas
- 📘 Guía práctica con teoría y ejercicios resueltos
En esta unidad trabajarás con estructuras de datos básicas como arrays unidimensionales y
bidimensionales, y aprenderás a manipular texto con cadenas.
Es ideal para afianzar el uso de bucles con estructuras de datos y operaciones comunes sobre
arrays y String.
- 📌 Declaración e inicialización de arrays
- 🔁 Recorrido con bucles
foryforeach - 🧩 Operaciones básicas con strings: cortar, unir, buscar
- 📘 Incluye ejercicios combinando arrays y cadenas de texto
En esta unidad aprenderás a utilizar herramientas potentes de análisis y transformación de
texto. Dominarás funciones avanzadas de String
y comenzarás a trabajar con expresiones regulares (regex) para búsquedas,
validaciones y reemplazos complejos.
- 🧠 Métodos avanzados de
String:matches,split,replaceAll - 🧪 Introducción a expresiones regulares
- ✅ Ejemplos de validación de correos, DNI, contraseñas
- 📘 Guía con teoría, patrones y ejercicios prácticos
Esta unidad combina operaciones matemáticas útiles y el tratamiento de fechas y horas en Java.
Aprenderás a utilizar Math para cálculos y LocalDate /
LocalTime para gestionar el tiempo.
- 🧮 Métodos comunes de
Math:sqrt,pow,random,abs... - 📆 Gestión de fechas con
LocalDate - ⏰ Trabajo con
LocalTimeyDuration - 📘 Guía con ejercicios prácticos y ejemplos explicados
Esta unidad profundiza en el uso de expresiones regulares para validar y analizar textos de forma eficiente. Aprenderás a crear patrones para detectar formatos como correos, DNI, contraseñas, fechas y más.
- 🔤 Sintaxis básica de regex:
[a-z],\\d,+,*,{n}... - ✅ Validaciones reales (correo, DNI, nombre, fecha...)
- 🔎 Métodos clave:
matches,replaceAll,split - 📘 Guía con ejemplos resueltos y ejercicios paso a paso
En esta unidad aprenderás a trabajar con archivos en Java, tanto para leer información como para
escribirla.
Utilizarás clases como File, FileReader, BufferedReader,
PrintWriter, etc.
- 📂 Lectura de archivos línea a línea
- 📝 Escritura y creación de archivos de texto
- 🚫 Manejo de excepciones en operaciones con ficheros
- 📘 Incluye guía con ejemplos prácticos y tareas
Esta unidad profundiza en el uso de las colecciones de Java como List,
Set y Map.
Aprenderás a utilizar implementaciones como ArrayList, HashSet y
HashMap para almacenar y manipular datos dinámicos.
- 📋 Listas dinámicas con
ArrayList - 📦 Conjuntos sin duplicados con
HashSet - 🔑 Asociación clave-valor con
HashMap - 📘 Ejercicios prácticos para organizar datos y acceder eficientemente a ellos
En esta unidad aprenderás a declarar constantes de forma segura y estructurada con
enum, así como a definir
constantes simbólicas mediante static final. Estos conceptos son fundamentales para
evitar errores y mejorar la legibilidad del código.
- 🔢 Declaración y uso de enumeraciones con
enum - 🔒 Creación de constantes con
static final - 📚 Casos de uso reales: días de la semana, estados, menús
- 📘 Guía clara con teoría, ejemplos y ejercicios prácticos
En esta unidad aprenderás a dividir tus proyectos Java en archivos organizados y reutilizables mediante el uso de paquetes. También verás cómo importar clases desde otros archivos y trabajar con estructuras modulares en aplicaciones grandes.
- 📦 Creación de paquetes personalizados (
package) - 🔁 Importación de clases con
import - 🧩 Organización lógica del código para proyectos medianos y grandes
- 📘 Guía completa con teoría, buenas prácticas y ejercicios
En esta última unidad aplicarás todos los conocimientos adquiridos a lo largo del curso desarrollando un proyecto completo en Java: un gestor de alumnos con menús, almacenamiento de datos, estructuras condicionales, bucles, colecciones y manejo de errores.
- 🎯 Menú principal con opciones para insertar, mostrar y eliminar datos
- 🧩 Uso de clases, listas, estructuras condicionales y bucles
- 💾 Simulación de persistencia y control de errores
- 📘 Guía detallada con los pasos del proyecto y sugerencias de mejora
Plataforma Java Interactiva
Acceso directo al recorrido completo de Java, organizado por bloques y listo para practicar.Todo el curso de Java, ordenado para estudiar y practicar mejor
Desde esta entrada accedes al entorno donde el alumno puede seguir el temario, revisar el código real, consultar la guía y moverse por bloques con una navegación mucho más cómoda.
Cada unidad enlaza con el material real del curso para trabajar con ejemplos, clases y guías tal como están preparadas.
La teoría acompaña al código para estudiar cada tema con contexto y moverte por el temario sin perder el hilo.
La práctica se hace en la plataforma dedicada, con más comodidad y sin incrustar otro compilador dentro de esta página.
Entradas rápidas por bloque
Cada acceso te lleva al punto de la plataforma donde arranca ese bloque del curso.
Introducción, variables, control de flujo, bucles, funciones y primeras clases para construir una base sólida.
Ir a fundamentosClases, objetos, encapsulación y transición hacia una forma de programar más estructurada.
Ir a POO y objetosExcepciones, validación y tratamiento de errores para que el código no falle de forma caótica.
Ir a excepciones y depuraciónTrabajo con texto, arrays, regex, colecciones y estructuras frecuentes en ejercicios reales.
Ir a estructuras y textoLectura y escritura de ficheros, enums, modularidad y paquetes para estructurar proyectos más serios.
Ir a ficheros y paquetesHerencia, polimorfismo, prácticas avanzadas, JUnit y evolución natural hacia diseño más profesional.
Ir a avanzado y testingConsumo de APIs REST, arquitectura por capas y entrada al backend moderno con Spring Boot.
Ir a APIs y backendProyecto final de consola, JDBC con SQLite y bloques de arquitectura para cerrar el recorrido completo.
Ir a proyecto y arquitectura4 niveles progresivos que entrenan el patrón que se repite en casi todos los exámenes de 1º DAM. El contexto cambia (alumnos, libros, productos…) pero la estructura es siempre la misma.
Una clase · constructor · getters · métodos simples. Para alumnos que todavía afinan la base de clases y objetos.
Producto Básico
nombre, precio y stock. Comprobación de estado y cambios sencillos sobre el objeto.
Alumno Básico
nombre, edad y nota media. Métodos estaAprobado() y modificación de nota. Mismo patrón, distinto contexto.
Libro Básico
título, páginas y estado de préstamo. Métodos prestar() y devolver() sin parámetros.
Clase + array de objetos + contar · buscar · calcular. El salto que más cuesta en 1º DAM.
Alumno con Array
Array de alumnos: mostrar todos, contar aprobados, calcular media, encontrar el mejor.
Libro con Array
Array de libros: listar, buscar por título, contar disponibles, calcular páginas totales.
Producto con Array
Array de productos: listar stock, buscar por nombre, producto más caro, calcular valor total.
Como nivel 2 + modificación de estado sobre objetos encontrados. El patrón exacto del examen real.
Libro Biblioteca
Buscar libro y prestarlo o devolverlo. Distinguir consulta vs modificación de estado.
Producto Tienda
Buscar producto y vender unidades. Control de stock, boolean de éxito y actualización de estado.
Varias clases · HashSet · HashMap · clase gestora · operaciones encadenadas. Preparación de examen largo.
Red Social
HashMap<Usuario, List<Foto>> y HashSet. Etiquetado, likes y eliminación por condición.
Ordenadores
HashSet de periféricos y clase gestora. Agregación, evitar duplicados y actualización de estado.
Reservas Hotel
HashSet y HashMap<Cliente, Reservas>. Cancelación, liberación de estado e ingresos totales.
Curso Java Swing: interfaz, eventos y proyecto final
Este bloque recoge el curso completo de Java Swing para 2º DAM: desde ventanas, layouts y componentes basicos hasta concurrencia, internacionalizacion, persistencia y una aplicacion final conectada a MySQL.
La estructura sigue la misma idea que PHP: guia general, temario por UT, descargas directas, visor de codigo, resumen de guia y una zona practica pensada para estudiar, copiar, adaptar y ejecutar en tu IDE.
Ruta formativa del curso
Anexo MySQL + JDBC + NetBeans
Material complementario para llevar Swing a un CRUD real con base de datos.
Como practicar este curso
Swing necesita IDE local para ver la ventana real. La zona practica te sirve para leer, copiar y preparar el codigo.
- Usa el visor para revisar la UT y abrir la guia completa.
- Copia el codigo al laboratorio externo o llevalo directamente a tu IDE local.
- Ejecuta la version completa en VS Code o NetBeans cuando la UT dependa de GUI real.
Cada unidad resume el objetivo, el foco tecnico y el archivo que debes abrir. Desde aqui puedes descargar, abrir y saltar directamente al laboratorio de estudio de cada UT.
Interfaz, eventos y proyecto final en un entorno más claro
Desde aquí entras a la plataforma donde el alumno sigue el temario de Swing por unidades, revisa el código real, consulta la guía y se mueve por bloques con una estructura mucho más cómoda.
Ventanas, paneles y layouts bien organizados.
Listeners y respuesta real de la GUI.
Tablas, listas, árboles y MVC para apps serias.
Agenda completa con persistencia y despliegue.
Cada UT abre la explicación y el material real del curso para estudiar Swing con contexto técnico y didáctico.
El alumno trabaja con los `.java` y `.md` reales del curso, preparados para abrirlos después en su IDE.
Swing se entiende mejor ejecutando la interfaz en VS Code o NetBeans, y la plataforma te deja todo listo para eso.
Entradas rápidas por bloque
Cada acceso abre la plataforma Swing en el bloque adecuado.
Repaso inicial, primeros JFrame, paneles, componentes y layouts para empezar con buena base.
Ir a repaso y baseEventos del usuario, menús, toolbars y validación para que la interfaz responda bien.
Ir a eventos y estadoListas, tablas, árboles y organización MVC para pasar de ejemplos a aplicaciones mantenibles.
Ir a datos y MVCGraphics2D, pintura personalizada, Look & Feel e internacionalización para una UI más avanzada.
Ir a personalizaciónSwingWorker, persistencia ligera, empaquetado y preparación final de la aplicación.
Ir a concurrencia y entregaAgenda inteligente con persistencia, organización por capas y cierre completo del curso Swing.
Ir al proyecto finalAndroid PMDM · 2º DAM Programación Multimedia y Dispositivos Móviles
Abrir plataforma del curso¿Qué aprenderás?
Desarrollo de apps Android nativas con el stack que usan las empresas hoy: Kotlin, Jetpack Compose, MVVM, Room, Retrofit y más.
Entorno necesario
- Android Studio — versión estable
SDK 34 + emulador Pixel 7 - VS Code + extensión Kotlin
Para las 2 primeras lecciones - JDK 17+ + Git
Configurar el entorno completo y entender la estructura de un proyecto Android.
- Instalar Android Studio, SDK 34 y crear el primer emulador
- Entender la estructura de carpetas:
manifest,res/,build.gradle.kts - Gestionar dependencias con el Version Catalog (
libs.versions.toml) - Ejecutar comandos Gradle:
assembleDebug,test,lint - Variables, tipos, control de flujo y funciones en Kotlin desde VS Code
Dominar el Kotlin necesario para Android: null safety, colecciones y patrones funcionales.
- Null safety:
?.,?:,let— nunca más NPE - Data classes con
copy()y destructuring - Colecciones:
filter,map,groupBy,sortedBy - Scope functions:
apply,let,also,run,with - Sealed classes para modelar estados (Loading, Success, Error)
- Extension functions y lambdas
Crear interfaces modernas con el paradigma declarativo de Jetpack Compose.
- Declarativo vs imperativo — por qué Compose reemplaza al XML
@Composable, recomposición y jerarquía de UI- Modifier: padding, fillMaxSize, clickable, clip... (el orden importa)
- Layouts: Column, Row, Box y sus Arrangements
- Material 3: Card, Button, TextField, Scaffold, TopAppBar
- Estado local con
remember+mutableStateOf @Previewpara ver la UI sin emulador
Implementar la arquitectura MVVM correctamente para separar UI de lógica de negocio.
- ViewModel: sobrevive a rotaciones, gestiona el estado
MutableStateFlow/StateFlow+collectAsState()- UiState sealed class: Loading, Success, Error, Empty — sin estados inválidos
- UiState data class: múltiples campos con propiedades derivadas
- Eventos one-shot con
SharedFlow(navegación, Snackbar) viewModelScope.launch { }yupdate { }
Navegar entre pantallas de forma segura y gestionar el back stack correctamente.
NavController+NavHost— el grafo de navegación- Rutas con sealed class para evitar errores de tipeo
- Pasar argumentos entre pantallas (Int, String, opcionales)
popBackStack(),launchSingleTop, limpiar el stack- Bottom Navigation Bar con estado restaurado entre pestañas
Implementar listas eficientes que nunca se congelen, con todos sus estados.
LazyColumnvsColumn— por qué el parámetrokeyes crítico- Estados de lista: Loading / Success / Error / Empty
- Sticky headers con
stickyHeader - Optimización con
derivedStateOfyremember(input) LazyRowpara listas horizontales
Conectar la app a APIs REST manejando todos los tipos de error posibles.
- Setup Retrofit + OkHttp +
kotlinx.serialization - Interface de API con
@GET,@POST,@Path,@Query,@Body safeApiCall— wrapper que captura Success, Error HTTP y Exception de red- Interceptor de logging para depuración
- API de práctica:
jsonplaceholder.typicode.com
Programar de forma asíncrona sin bloquear el hilo principal ni crashear la app.
suspend fun— se pausa sin bloquear el hiloDispatchers.IOpara red y BD ·Mainpara UIlaunchvsasync/await— paralelismo realFlow— streams de datos reactivos (emite múltiples valores)- Operadores:
map,filter,debounce,collectLatest StateFlowpara estado UI ·SharedFlowpara eventos
Persistir datos localmente con SQLite a través de Room de forma reactiva.
@Entity— la tabla ·@Dao— las operaciones ·@Database— la BD- CRUD:
@Upsert,@Delete,@Query Flow<List<T>>en el DAO — la UI se actualiza sola al cambiar datos- Migraciones para actualizar el esquema sin perder datos del usuario
- Integración con ViewModel usando
stateIn
Crear apps que funcionen sin conexión mostrando siempre datos locales.
- Room como Single Source of Truth — la UI nunca lee de la API directamente
- Patrón Repository — abstrae si los datos vienen de red o de la BD
- Mappers entre capas: modelo API → Entity → Dominio
- Estrategias: cache-first y network-first
- Detectar conectividad con
callbackFlow+ConnectivityManager
Escribir tests unitarios de ViewModel que realmente protejan el código.
- JUnit 4 —
@Test,@Before,@After· Patrón AAA - Fakes — implementaciones de repositorio controladas para tests
runTest+UnconfinedTestDispatcherpara coroutines- Turbine para testear secuencias de estados en StateFlow
- Tests obligatorios: estado inicial, validación, toggle, error, eliminar
Generar y firmar un APK de release listo para distribuir.
- debug vs release — diferencias de firma, ProGuard y rendimiento
- Keystore — clave privada de firma (nunca la pierdas)
- ProGuard/R8 — ofuscación, shrinking y eliminación de logs
- APK para distribución directa · AAB obligatorio en Play Store
- GitHub Actions CI/CD — tests + lint + build automático en cada PR
- Checklist de entrega completo
Gestionar el ciclo completo de permisos peligrosos sin frustrar al usuario.
- Permisos normales vs peligrosos — qué requiere solicitud en runtime
ActivityResultContracts.RequestPermission()— el launcher moderno- Flujo completo: pedir → concedido / denegado / denegado permanente
shouldShowRequestPermissionRationale— cuándo explicar antes de pedir- Abrir Ajustes del sistema si deniega permanentemente
- Permisos granulares en Android 13+:
READ_MEDIA_IMAGES
Acceder a cámara, galería y audio — los recursos multimedia clave del BOE.
- CameraX — captura de fotos con gestión de ciclo de vida
- Photo Picker (
PickVisualMedia) — galería moderna sin permisos en API 33+ - Coil (
AsyncImage) — carga de imágenes eficiente con caché - MediaPlayer — reproducción de audio con controles completos
- MediaRecorder — grabación de audio con permiso RECORD_AUDIO
- FileProvider para compartir ficheros de forma segura
Un único ZIP con todas las lecciones del curso: teoría completa renderizable en VS Code, ejercicios con soluciones y código de referencia Kotlin para cada tema. Perfecto para estudiar offline o tener el material siempre a mano.
PSP · 2º DAM Programación de Servicios y Procesos
Abrir plataforma del curso¿Qué aprenderás?
Desde procesos del SO hasta seguridad criptográfica. El hilo conductor es un chat evolutivo que crece fase a fase hasta convertirse en una app Spring Boot con WebSockets real.
Entorno necesario
- JDK 17+
Adoptium Temurin recomendado - VS Code + Java Extension Pack
- Maven
Para el proyecto Spring Boot final
Gestionar procesos del sistema operativo desde Java.
- Lanzar y controlar procesos con
ProcessBuilderyRuntime.exec() - Leer stdout/stderr y escribir en stdin del proceso hijo
- Obtener PID, estado y código de retorno
- Redirección de E/S y procesos en background
Usar el framework de concurrencia de Java para gestionar pools de hilos.
ExecutorServiceyExecutors: pools fijos, cached y scheduledCallableyFuture: tareas con retornoCompletableFuturepara encadenar operaciones asíncronasBlockingQueuepara comunicación entre hilos- Monitoreo y depuración con VisualVM / jstack
Aplicar criptografía y comunicaciones seguras en Java.
- Hashing con SHA-256 y bcrypt
- Cifrado simétrico AES (CBC, GCM)
- Cifrado asimétrico RSA: par de claves, firma digital
- Comunicaciones SSL/TLS con
SSLSocket - Certificados y KeyStore
El proyecto integrador une todas las fases en un chat funcional. Hay dos versiones: consola pura (Java estándar, todo en un fichero) y Spring Boot con WebSockets, Spring Security, JPA y salas de chat.
Versión consola
Versión Spring Boot
Crea hilos que cuenten de forma concurrente. Practica el ciclo de vida y la coordinación básica.
Servidor que repite lo que recibe. Añade soporte multihilo para varios clientes simultáneos.
API REST completa con GET/POST/DELETE y persistencia del catálogo en fichero NDJSON entre reinicios.
Cubre procesos del SO, programación multihilo con sincronización y comunicación TCP/UDP. Incluye parte teórica y práctica de codificación.
API REST con HttpServer, persistencia en fichero, ExecutorService, Callable/Future y CompletableFuture. Incluye parte teórica y práctica.
Examen de evaluación final del módulo. Integra todos los resultados de aprendizaje: procesos, hilos, sockets, REST, persistencia y seguridad.
Acceso a Datos · 2º DAM DAO · JDBC · JPA · Spring Data
Guía completa .md¿Qué aprenderás?
Serialización y XML, diseño de la capa DAO, acceso a BD con JDBC, mapeo objeto-relacional con JPA/Hibernate y persistencia automática con Spring Boot + Spring Data JPA.
Entorno necesario
- JDK 17+
Adoptium Temurin recomendado - VS Code + Java Extension Pack + Spring Boot Extension Pack
- Maven para gestionar dependencias JDBC / JPA
Persistir datos con ficheros de texto, serialización binaria y XML antes de llegar a bases de datos.
- Lectura/escritura con
BufferedReader,FileWriter,Files.readString() - Serialización binaria con
ObjectOutputStream/ObjectInputStream - Parseo y generación XML con DOM (
DocumentBuilder,Transformer) - Casos de uso: guardar configuración, historial, exportar datos
Diseñar la capa de acceso a datos con interfaces e independencia de la implementación.
- Patrón DAO: separar lógica de negocio de la persistencia
- Definir interfaces genéricas:
MensajeDAO,UsuarioDAO - Principio de inversión de dependencias (DIP)
- Entidades como POJOs / Records
Persistir datos entre ejecuciones usando NDJSON sin cambiar la interfaz DAO.
- Implementar
FileMensajeDAOcon fichero NDJSON - Leer todos los registros al iniciar y escribir al persistir
- Misma interfaz, distinta implementación (polimorfismo)
- Comparar comportamiento MemoryDAO vs FileDAO
Desacoplar lógica de negocio e implementación usando inyección de dependencias.
- Clase
ChatServiceque recibe unMensajeDAOen el constructor - Intercambiar implementaciones sin modificar el servicio
- Principio abierto/cerrado (OCP) · preparación para Spring IoC
Ejecutar consultas SQL desde Java con la API JDBC estándar.
DriverManager,Connection,Statement,ResultSetPreparedStatementpara consultas parametrizadas y evitar SQL Injection- Transacciones:
setAutoCommit(false),commit(),rollback() - Implementar un
JdbcMensajeDAOsobre H2/MySQL
Mapear entidades Java a tablas de BD con JPA/Hibernate y definir relaciones.
- Anotaciones:
@Entity,@Id,@Column,@Table - Relaciones:
@OneToMany,@ManyToOne,@ManyToMany - JPQL · Lazy vs Eager · Cascade y orphanRemoval
- EntityManager y ciclo de vida de las entidades
Primera aplicación Spring Boot completa: vistas Thymeleaf, REST controller y servicio de datos.
- Auto-configuración Spring Boot ·
@Controllerpara vistas HTML - Thymeleaf: plantillas HTML con
th:each,th:text,th:action @RestControllerpara endpoints JSON- Arquitectura modelo → controller sin BD (datos en memoria)
Aplicación Spring Boot completa con CRUD persistente sobre H2 y doble capa REST + Thymeleaf.
JpaRepository: métodos derivados y consultas personalizadas- Arquitectura 3 capas: Controller → Service → Repository
- API REST con
@RestControllery vistas con@Controller - H2 en memoria con consola web · manejo global de excepciones
Proyecto DAO (Java puro)
CRUD completo con patrón DAO: Memory + File + JDBC. Sin frameworks.
CRUD de alumnos sobre SQLite con JDBC puro. Practica el ciclo conectar-consultar-cerrar.
Sistema bancario con cuentas y transferencias. Practica transacciones y rollback ante errores.
Biblioteca con Libros, Autores y Categorías. Relaciones JPA y consultas con Spring Data Repository.
K Kotlin · 1º DAM Programación moderna · JVM
Abrir plataforma del curso¿Qué aprenderás?
Aprende Kotlin desde variables hasta un proyecto de consola completo con POO, tests JUnit, persistencia JSON y arquitectura por capas. La base perfecta para dar el salto a Android.
Entorno necesario
- JDK 17+ — Adoptium Temurin recomendado
Mismo que el curso de Java - VS Code + Kotlin Language + Live Server
Abrir la plataforma con Live Server - Gradle (descarga automática en primer uso)
Necesario para proyectos base y final
Preparar el entorno de desarrollo y ejecutar el primer programa Kotlin.
- Instalar JDK 17+, VS Code y extensiones necesarias
- Configurar Live Server para la plataforma
- Primer programa:
fun main()yprintln() - Ejecutar snippets en el playground online (OneCompiler)
Variables, tipos, funciones y strings en Kotlin.
val(inmutable) vsvar(mutable): tipado explícito e inferido- Tipos básicos:
Int,Double,Boolean,String - Funciones:
fun nombre(param: Tipo): Tipo, valores por defecto - String templates:
"Hola $nombre, tienes ${edad + 1} años"
Eliminar NullPointerException con el sistema de tipos nullable y dominar colecciones.
- Tipos nullable:
String?vsString - Operadores:
?.(safe call),?:(Elvis),!!(not-null assert) - Listas:
listOf(),mutableListOf(),filter,map,find - Sets y Mapas:
mapOf(),mutableMapOf()
Dominar lambdas y operaciones funcionales sobre colecciones.
- Funciones de orden superior: pasar funciones como parámetros
- Lambdas:
{ x -> x * 2 }y sintaxisit - Operaciones funcionales:
filter,map,reduce,groupBy,sortedBy - Encadenamiento fluido y legibilidad
Clases, data classes, enums y principios de POO en Kotlin.
- Clases: constructor primario, propiedades con
val/var data class:equals,hashCode,copy,toStringautomáticosenum classcon propiedades y métodos- Herencia con
openyoverride, clases selladas (sealed) - Interfaces y
companion object
Escribir y ejecutar tests automáticos con JUnit 5 en proyectos Gradle.
- Estructura de proyecto Gradle con
src/test/kotlin - Anotaciones JUnit 5:
@Test,@BeforeEach,@AfterEach - Assertions:
assertEquals,assertNotNull,assertThrows - Ejecutar con
.\test.baty ver informe de resultados
Puente entre Kotlin de consola y el desarrollo Android nativo.
- Diferencias entre Kotlin JVM y Kotlin Android
- Concepto de
Activity,ViewModely ciclo de vida - Primer vistazo a Jetpack Compose vs XML layouts
- Lo que ya sabes de Kotlin que aplica directamente en Android
Aplicación de consola completa para gestionar tareas. Integra todo el curso: POO, colecciones, lambdas, tests JUnit y persistencia JSON. Estructura en capas reales: model/, repository/, service/, ui/.
cursos/Curso Kotlin 1DAM/proyecto-final-kotlin/Arranque:
cd proyecto-final-kotlin && .\run.bat · Tests: .\test.bat
Curso PHP: guia y descargas
PHP te permite crear aplicaciones web dinamicas con backend real: formularios, sesiones, base de datos, autenticacion y APIs. En este curso sigues un camino progresivo desde fundamentos hasta proyecto final.
Cada UT incluye una explicacion breve, codigo .php, guia .md y acceso directo a practica para
estudiar, reutilizar ejemplos y probar cambios sin salir de la plataforma.
Que te llevas en esta ruta
Mismo formato del curso Java: despliegas la UT, lees una explicacion corta y tienes todos los botones listos para abrir codigo, guia y practica sin perder el hilo del curso.
Tu espacio de estudio y práctica PHP en un solo entorno
Desde esta entrada accedes a la plataforma donde el alumno puede seguir el temario por unidades, revisar el código real, leer la guía asociada y practicar con una navegación más cómoda.
Variables, flujo, funciones y arrays.
Formularios, superglobales y sesiones.
PDO, CRUD y endpoints REST.
Seguridad, testing y proyecto final.
Cada unidad abre el código y la explicación real del curso para estudiar el backend con contexto.
El alumno trabaja sobre los archivos `.php` y `.md` del curso tal como están preparados en el repositorio.
La práctica se hace desde la plataforma PHP completa, con más continuidad y mejor navegación por bloques.
Entradas rápidas por bloque
Cada acceso abre la plataforma PHP en el punto adecuado del temario.
Hola mundo, sintaxis, variables, control de flujo, bucles y funciones.
Ir a fundamentosEstructuras de datos, cadenas, formularios y superglobales para empezar a construir backend real.
Ir a formularios y datosPersistencia en archivos, orientación a objetos y código mejor estructurado.
Ir a ficheros y POONamespaces, Composer y MVC sencillo para avanzar hacia una organización más profesional.
Ir a arquitecturaSeguridad básica, PHPUnit y cierre del curso con proyecto final completo.
Ir a calidad y proyectoCurso completo de Python · Aprende desde cero
¿Por qué aprender Python?
Python es un lenguaje moderno y muy demandado, perfecto para empezar por su sintaxis clara. Se usa en IA, web, automatización y datos.
Herramientas necesarias
-
Python 3.10 o superiorDescargar desde la web oficial
-
Visual Studio Code (recomendado)Descargar VS Code
-
Extensiones recomendadasPython, Better Comments
- Comprender qué es una variable y nombrarla con claridad para que el código sea legible.
- Elegir el tipo adecuado (números, texto, verdadero/falso) y convertir entre tipos sin errores.
- Recoger datos sencillos del usuario y mostrar resultados claros y bien formateados.
- Construir expresiones y pequeñas decisiones para resolver problemas cotidianos.
- Organizar datos básicos con colecciones simples cuando sea conveniente.
- Variables y nombres: qué son,
snake_case, reasignación y buenas prácticas. - Tipos básicos:
int,float,str,booly conversiones (int(),float(),str(),bool()). - Entrada y salida:
input(), errores de conversión y f-strings (f"{total:.2f}"). - Operadores: aritméticos (+ − * / // % **), comparación (== != < > ≤ ≥), lógicos (
and,or,not) y asignación compuesta (+=,-=...). - Colecciones mínimas: listas (crear, indexar, añadir) y diccionarios (claves/valores, actualizar).
- Inspección/depuración:
type(),len()y cómo evitar ValueError/NameError.
- Traducir preguntas del mundo real en condiciones lógicas (sí/no).
- Diseñar ramificaciones simples y legibles, evitando anidaciones innecesarias.
- Validar entradas y contemplar casos límite (vacíos, fuera de rango).
- Escribir decisiones expresivas que muestren la intención del código.
- Planificar el flujo: qué hacer cuando se cumple y qué si no.
- Estructura condicional:
if,elif,else, bloques e indentación correcta. - Comparaciones:
==,!=,<,>y comparación encadenada (0 <= x < 10). - Lógica booleana:
and,or,not, precedencia y if anidados. - Truthy / Falsy: valores falsy (
0,"",[],None) ybool(). - Ternario: decisiones compactas en una línea (
"OK" if cond else "NO"). - match / case (3.10+): múltiples ramas legibles con comodín
case _.
- Elegir el bucle adecuado (for para recorrer, while para condición).
- Diseñar bucles seguros con salida bien definida evitando infinitos.
- Aplicar patrones: contador, acumulador, búsqueda y filtrado.
- Transformar datos en resúmenes o informes legibles.
- Usar cortes o saltos cuando simplifiquen la lógica.
- For básico: recorrer listas/strings y construir resultados paso a paso.
- range(inicio, fin, paso): generar secuencias y hacer sumatorios/contadores.
- enumerate(): obtener índice + valor con numeración limpia.
- while controlado: condición clara, contador/bandera y evitar bucles infinitos.
- Control del flujo:
break,continuey else en bucles. - Bucles anidados: tablas de multiplicar y cuadrículas simples.
- Comprensiones de listas: generar listas en una línea con filtro.
- Detectar tareas repetidas y convertirlas en funciones con nombres significativos.
- Pensar en entradas → proceso → salida (diseño de la firma).
- Dividir problemas grandes en pasos pequeños y comprobables.
- Reutilizar código y reducir errores al cambiar en un solo lugar.
- Funciones sin parámetros: bloque que ejecuta una tarea concreta y se reutiliza.
- Parámetros posicionales: pasar datos a la función y usarlos dentro.
- return: devolver resultados para guardarlos y reutilizarlos.
- Valores por defecto y keyword args: llamadas claras con
nombre=valor. - Scope básico: variables locales vs. externas; evitar
global. - Buenas prácticas: funciones "puras", nombres con verbos y una sola responsabilidad.
- Elegir la estructura adecuada según el problema (lista vs. diccionario).
- Pensar en "datos → recorrido → resultado" para informes claros.
- Planificar bucles anidados con cortes y validaciones.
- Aplicar ordenaciones y transformaciones para conclusiones útiles.
- Listas básicas: crear, acceder, slicing y métodos útiles.
- Diccionarios:
get(),keys(),values(),items(). - Recorrer diccionarios: iterar claves/valores para salidas legibles.
- Estructuras anidadas: lista de dicts, dict de listas y bucles combinados.
- Ordenación:
sorted(key=...),min,max,sum. - Comprensiones: crear listas o dicts en una línea con filtros.
- Integración: mini "dashboard" con totales y resumen.
- Pensar en estado + comportamiento: qué datos guarda y qué sabe hacer.
- Definir interfaces sencillas y ocultar detalles con encapsulación.
- Modelar relaciones: composición y herencia cuando aporte claridad.
- Representar objetos de forma útil para personas y depuración.
- Clases y objetos: atributos, métodos y uso de
self. - Inicialización: constructor
__init__para crear estado válido. - Atributos de clase vs instancia:
@classmethod/@staticmethod. - Dunder methods:
__str__,__repr__,__eq__,__len__. - @property: getters/setters con validación para mantener invariantes.
- Herencia y super(): reutilizar y especializar comportamiento.
- Composición: objetos que contienen otros objetos (tiene-un).
Resumen de la unidad
Construir programas robustos que no se caigan ante errores, muestren mensajes claros y cierren recursos de forma segura.
try/exceptbásico: capturar y tratar errores esperados- Múltiples
excepty jerarquía de excepciones elseyfinally: flujos de éxito y limpiezaraisey validación con mensajes descriptivos- Excepciones personalizadas para tu dominio
- Reintento seguro con intentos limitados
Resumen de la unidad
Aprender a organizar y reutilizar código mediante módulos propios y librerías externas de Python.
importyfrom ... import- Crear módulos propios y paquetes
- Módulos estándar:
os,sys,math,random - Instalar librerías con
pip - Gestionar dependencias con
requirements.txt
Resumen de la unidad
Dominar la lectura y escritura de archivos en Python: texto, CSV, JSON y binarios.
open(),read(),write()- Context manager
withpara archivos - Modos de apertura:
r,w,a,b - Trabajar con CSV y JSON
- Manejo de rutas con
os.pathypathlib
Resumen de la unidad
Crear scripts de automatización para tareas del sistema operativo y administración.
- Módulo
osyshutilpara ficheros - Ejecutar comandos con
subprocess - Variables de entorno y argumentos CLI
- Programación de tareas y scripts batch
- Monitorización de procesos del sistema
Resumen de la unidad
Conectar Python con bases de datos SQLite para almacenar y consultar información persistente.
- Módulo
sqlite3de Python - Crear tablas y ejecutar queries SQL
- CRUD: Create, Read, Update, Delete
- Parámetros seguros (evitar SQL Injection)
- Transacciones y manejo de errores
Resumen de la unidad
Escribir tests automáticos y depurar código de forma eficiente para garantizar calidad.
- Módulo
unittestypytest - Escribir tests unitarios y de integración
- Debugger
pdby breakpoints - Logging y trazas de errores
- TDD: Test Driven Development básico
Resumen de la unidad
Dominar Flask, el microframework web más popular de Python. Desde lo básico hasta proyectos completos con estructura profesional.
- Rutas, métodos HTTP y request/response
- Templates con Jinja2 y herencia
- Formularios, validación y CSRF
- Sesiones, cookies y autenticación
- APIs REST con JSON
- Estructura de proyecto profesional (Blueprints)
Material Teórico
Tutorial completo con explicaciones paso a paso y ejemplos de código comentado.
Proyectos Prácticos Completos
Proyecto Básico
Aplicación Flask sencilla con toda la lógica en un solo archivo. Ideal para empezar.
app.py- Código completotemplates/- 4 plantillas HTMLREADME.md- Documentación
Proyecto Avanzado
Estructura profesional con Blueprints, MVC y configuración separada.
app.py- Punto de entradaconfig.py- Configuraciónmodels.py- Modelos de datosroutes/- Blueprintstemplates/- Vistas
Resumen de la unidad
Dominar Django, el framework web "batteries included" de Python. Aprenderás desde la configuración inicial hasta desplegar un proyecto completo.
- Arquitectura MTV (Model-Template-View)
- ORM de Django y migraciones
- Panel de administración automático
- Sistema de usuarios y permisos
- URLs, vistas basadas en clases y templates
- Middleware y configuración avanzada
Material Teórico
Tutorial completo de Django con explicaciones detalladas y ejemplos prácticos.
Proyecto Django Completo
django_pf - Proyecto Funcional
Proyecto Django completo con estructura profesional, listo para ejecutar y modificar.
manage.py- Script gestióndjpf/- Configuraciónsettings.pyurls.py
core/- App principalviews.pytemplates/middleware.py
Documentación Extra
Guías complementarias para profundizar en Django.
Bloques reales presentes en la carpeta del curso
Estos materiales existen en el temario actual y quedan accesibles desde aquí para no perder partes del recorrido que sí están disponibles en la carpeta y en la plataforma completa.
Setup y buenas prácticas
Entorno, instalación y hábitos base para arrancar bien el curso.
Cadenas y operadores
Trabajo específico con texto, concatenación, formateo y operadores básicos.
Programación funcional
Funciones puras, orden superior, `lambda`, `map`, `filter` y composición de lógica.
BBDD con SQLAlchemy
Modelo ORM y acceso a datos con un enfoque más alto que SQLite puro.
Flask parte 2
Sesiones, seguridad y pasos intermedios para pasar del microproyecto a algo más serio.
Consumo de APIs HTTP
Peticiones HTTP, respuestas JSON y trabajo con servicios externos.
Gradle desde cero
Bloque opcional que sirve como ampliación y puente con automatización y herramientas.
Práctica integradora
Aplicar Flask, consumo HTTP y validación de peticiones en una mini API realista con mentalidad cliente-servidor.
- Definir endpoints y devolver JSON coherente
- Validar payloads antes de modificar estado
- Usar códigos HTTP como 200, 201, 400, 401, 404 y 409
- Distinguir lógica de servidor y consumo desde cliente
- Preparar la transición a proyectos Flask más completos
Todo el recorrido de Python en una experiencia más clara
Esta entrada te lleva al entorno donde se unen teoría, ejemplos reales, navegación por bloques y práctica guiada para avanzar con más continuidad.
Cada módulo enseña el archivo Python real del curso para estudiar exactamente el material que forma parte del temario.
La explicación y las notas van al lado del código para estudiar con contexto, no como materiales sueltos.
La práctica se hace en una pestaña aparte para trabajar con más comodidad y sin meter otro editor dentro de esta página.
Entradas rápidas por bloque
Cada acceso te lleva al punto del curso donde empieza ese bloque.
Variables, operadores, condicionales, bucles, funciones y colecciones para construir una base sólida.
Ir a fundamentosClases, objetos, excepciones, módulos y ficheros para empezar a escribir Python más organizado.
Ir a POO y estructuraAutomatización, bases de datos y flujo de trabajo con datos para pasar del script simple a tareas útiles.
Ir a automatización y datosBuenas prácticas, pruebas y revisión de calidad para que el código no solo funcione, sino que sea mantenible.
Ir a testing y calidadFlask y Django como entrada al desarrollo web con rutas, vistas, plantillas y estructura de proyecto.
Ir a web con PythonLlamadas HTTP, consumo de APIs y cierre del recorrido práctico con integración de servicios externos.
Ir a APIsCurso Git & GitHub
Abrir dossier interactivo¿Qué aprenderás?
Git es la herramienta de control de versiones más usada en el mundo. Aprenderás a gestionar tu código, trabajar con ramas, colaborar en equipo con GitHub y resolver conflictos como un profesional.
Entorno necesario
-
Git — git-scm.com
Windows, macOS y Linux -
VS Code — integración Git nativa
Editor recomendado para el curso -
Cuenta GitHub — gratuita
Para repositorios remotos y trabajo en equipo
¿Qué es Git?
Git es un programa que sirve para guardar la historia de tu proyecto. Piensa en él como una “máquina del tiempo del código”: cada vez que avanzas, puedes sacar una foto de tu trabajo (commit) y volver atrás si algo sale mal.
Carpeta de tu proyecto + una subcarpeta oculta
.git con el historial.
Una foto de tus cambios con un mensaje que los describe.
Una línea de trabajo paralela donde pruebas cosas sin romper la principal (
main).
¿Para qué sirve?
- Seguridad: puedes volver a versiones anteriores cuando algo falla.
- Orden: trabajas en diferentes ramas sin mezclar cambios.
- Trabajo en equipo: varias personas pueden colaborar sin pisarse el código.
- Historial: sabes quién hizo qué y cuándo.
¿Dónde descargarlo?
Descarga oficial en: git-scm.com/downloads
Tras instalarlo, tendrás disponible el comando git en tu terminal
(PowerShell en Windows, Terminal en macOS/Linux).
📁 Working Directory
Tus archivos “sin guardar en Git”.
- Estado: untracked / modified
- Avanza con: git add
- Revisa: git status
🧺 Staging Area
“Cesta” de cambios listos para confirmar.
- Confirma: git commit -m "mensaje"
- Quita del staging: git restore --staged …
📚 Repository (local)
Historial de commits en tu PC.
- Ver: git log --oneline --graph
- Subir: git push
- Recuperar: git reflog
☁️ Remote (GitHub/GitLab)
Copia compartida en la nube.
- Bajar: git pull --ff-only
- Traer refs: git fetch
- Enlazar: git push -u origin main
- add: Working → Staging (git add .)
- commit: Staging → Repo local (git commit -m)
- push: Local → Remote (git push)
- pull: Remote → Local (git pull --ff-only)
- fetch: Remote → refs (git fetch)
- Branch: línea de trabajo (
main,feature/x) - HEAD: tu “puntero” actual
- Upstream: la rama remota asociada (git push -u)
- Entiendo las 4 cajas: Working, Staging, Local, Remote.
- Sé los pasos básicos: add → commit → push / pull.
- Trabajaré en
mainy usaré ramas para features.
Idea: tras instalar Git, define tu identidad y un editor para los mensajes de commit/merge.
# Ver versión instalada git --version # Configurar identidad global git config --global user.name "Tu Nombre" git config --global user.email "tucorreo@ejemplo.com" # Editor recomendado (VS Code) git config --global core.editor "code --wait" # Rama principal por defecto git config --global init.defaultBranch main
git config --global --list.
Idea: git init crea un repo vacío; git clone copia uno
existente.
# 1) Crear repo nuevo en una carpeta mkdir git-ejercicio && cd git-ejercicio git init echo "Hola Git" > README.md git add README.md git commit -m "feat: primer commit" # 2) Clonar un repo existente (ejemplo) cd .. git clone https://github.com/usuario/proyecto.git cd proyecto
git-ejercicio con tu
primer
commit y (si clonas) otra carpeta con el repo remoto.
Idea: Working Directory → Staging Area → Repository (commit).
# Ver estado actual git status # Añadir un archivo concreto git add archivo.txt # Añadir todo lo modificado git add . # Crear un commit git commit -m "feat: mensaje descriptivo y corto" # Ver historial (formato útil) git log --oneline --graph --decorate --all
README.md, confirma un par de commits y visualiza
el árbol
con git log --oneline --graph.
Idea: desarrolla una feature en su propia rama y luego intégrala en
main.
# Listar ramas git branch # Crear y cambiar a una rama (comando moderno) git switch -c feature/nueva-funcionalidad # ...haz commits aquí... # Volver a main git switch main # Fusionar la rama en main git merge feature/nueva-funcionalidad # Eliminar la rama ya fusionada git branch -d feature/nueva-funcionalidad
feature/saludo, edita README.md,
confirma,
vuelve a main y haz merge.
Idea: vincula un remoto (origin), sube tus commits y trae cambios
con seguridad.
# Enlazar remoto llamado "origin" (ejemplo SSH recomendado) git remote add origin git@github.com:usuario/proyecto.git # Subir commits a main y establecer upstream (solo la 1ª vez) git push -u origin main # Actualizar tu main desde el remoto sin crear merges accidentales git pull --ff-only # Descargar referencias sin fusionar (útil antes de rebase) git fetch
git push -u origin main, ya puedes usar simplemente
git push/git pull.
Idea: descarta cambios, revierte commits y usa el “salvavidas”
reflog.
# Descartar cambios en un archivo (working directory) git restore ruta/archivo # Quitar del área de preparado (staging) git restore --staged ruta/archivo # Volver todo al último commit (⚠️ pierdes cambios sin confirmar) git reset --hard HEAD # Crear un commit que "deshace" otro ya publicado git revert <hash-commit> # Recuperación total si te equivocas (historial de movimientos) git reflog # ...elige un hash anterior y vuelve allí: git reset --hard <hash-bueno>
reset --hard borra cambios no confirmados. Usa antes
git reflog si dudas.
Idea: inspecciona qué cambió, cuándo y por quién; compara commits.
# Diferencias en tu working directory git diff # Registro compacto y gráfico de todas las ramas git log --oneline --graph --decorate --all # Ver diferencias entre dos commits git diff <commit1> <commit2> # Alias útil (opcional) para ver historia bonita git config --global alias.lg "log --oneline --graph --decorate --all" # Luego usa: git lg
git diff <hash1> <hash2> para ver qué cambió entre ellos.
Práctica interactiva
Documento completo con mapa mental, flujo visual, comandos con filtro interactivo, simulador de escenarios paso a paso, laboratorio de terminal con misiones, errores frecuentes y test autocorregible de 12 preguntas. Ábrelo a pantalla completa para estudiar con comodidad.
Haz clic en cada paso para ver el comando. Sigue el orden de arriba a abajo en tu terminal.
git remote set-url origin https://github.com/TUUSUARIO/tu-repo.git
git clone https://github.com/TUUSUARIO/Hello-World.git cd Hello-World git remote -v
git switch -c feature/mi-cambio git branch --show-current
echo "Mi cambio" >> notas.txt git add notas.txt git commit -m "feat: agrego notas" git log --oneline -n 3
git switch main git merge feature/mi-cambio git branch -d feature/mi-cambio
<<<<<<<, y luego git add . && git commitgit push -u origin main
# Crea .gitignore en la raíz del proyecto y pega: node_modules/ dist/ *.log .vscode/ .idea/
Escribe comandos Git como si fuera una terminal real. Pulsa Enter o usa las sugerencias rápidas.
Todos los archivos Markdown del curso, listos para descargar o previsualizar en el navegador.
Practica Git de forma visual (sin instalar nada)
Abre un simulador interactivo en español para entender y practicar ramas, commits y merges. Verás el grafo de commits en tiempo real y resolverás retos cortos.
Bases de Datos · Cursos y plataformas
Aquí no vas a encontrarte un bloque suelto de teoría sin contexto, sino una ruta clara de cursos de bases de datos. Cada acordeón resume qué enseña, para quién encaja y te lleva directamente a la plataforma interactiva o a la guía del curso correspondiente.
La idea es sencilla: eliges el curso que mejor encaja con el nivel del alumno, lees un resumen claro y entras a su plataforma específica sin duplicar contenido ni perder tiempo buscando materiales.
Ruta recomendada
Cada curso vive como una pieza independiente: explicación buena, acceso directo y sin mezclar materiales de niveles distintos.
El objetivo aquí no es repetir toda la teoría dentro de la zona privada, sino lanzar bien cada plataforma interactiva con contexto útil.
Puedes enseñar desde cero, reforzar modelado o pasar a JDBC sin rehacer la navegación ni obligar al alumno a buscar qué viene después.
Este es el mejor punto de entrada para alumnos que todavía no entienden bien qué es una tabla, cómo se lee un resultado o por qué una consulta devuelve unas filas y no otras. Está pensado para empezar de verdad desde cero, con una base pequeña, ejercicios muy guiados y un laboratorio que no abruma.
El curso usa SQLite para eliminar instalaciones complicadas y centra al alumno en lo importante:
SELECT, WHERE, ORDER BY, JOIN y primeros resúmenes con GROUP BY.
- Quita el miedo inicial a SQL.
- Trabaja con consultas pequeñas y muy controladas.
- Da una entrada perfecta para alumnos que se bloquean con demasiada teoría.
Este curso ya no es solo una introducción mínima: es una ruta completa para aprender SQL con más recorrido, usando una base de datos de tienda de videojuegos retro mucho más atractiva visualmente y con ejercicios mejor conectados entre sí.
Aquí el alumno trabaja consultas, DML, DDL, joins, agrupaciones y un proyecto final, todo dentro de una plataforma que además incluye un examen interactivo. Es una opción muy buena cuando quieres un curso más redondo pero sin salir del ecosistema SQLite.
- Después de un primer contacto con SQL.
- Cuando quieres un curso más narrativo y visual.
- Si buscas una plataforma más potente sin complicar el entorno.
Este curso cubre una parte que suele faltar mucho: por qué una base de datos se diseña así. En vez de lanzarte directamente a escribir consultas, enseña entidades, atributos, claves, cardinalidad y normalización para que el alumno entienda de dónde salen las tablas y relaciones.
Es un bloque muy útil para 1 DAM y 1 DAW, especialmente cuando el alumno sabe hacer alguna consulta pero todavía no sabe justificar un diseño relacional ni detectar por qué un modelo está mal planteado.
- Da contexto técnico a SQL.
- Refuerza la parte de diseño y normalización.
- Encaja muy bien antes o en paralelo al curso troncal de SQL.
Este es el curso que mejor funciona como eje principal de SQL si quieres una estructura más académica y completa. Está organizado por unidades, cubre desde entorno y consultas básicas hasta joins, subconsultas, DDL, esquema, permisos y proyecto final.
A diferencia de los cursos más ligeros, aquí la ruta es más formal y está pensada para trabajo serio de aula en DAM/DAW, manteniendo todavía una plataforma propia que ordena teoría, ejercicios y apoyo.
- Orden didáctico muy claro por unidades.
- Más serio para seguimiento de curso completo.
- Muy útil como base principal del bloque SQL.
Este curso no es “otro SQL más”: es el paso donde el alumno deja de usar la base de datos solo desde el editor
y empieza a conectarla desde Java con JDBC, usando CRUD real, PreparedStatement, ResultSet, relaciones, transacciones y arquitectura DAO.
Es el puente perfecto entre lo aprendido en programación y lo aprendido en bases de datos. Si el alumno ya sabe algo de Java y SQL por separado, aquí entiende por fin cómo se unen en un proyecto real.
- Cuando el alumno ya domina lo básico de Java y SQL.
- Para Acceso a Datos o refuerzo de DAM.
- Cuando quieres enseñar una integración profesional, no solo consultas sueltas.
El siguiente nivel de SQL va más allá del SELECT. Aquí aprendes a programar dentro de la base de datos: procedimientos almacenados, cursores, triggers y PL/SQL. Con MySQL 8 vía Docker para las partes que lo requieren.
docker-compose up -d en la raíz de la carpeta).
Bloques PL/SQL, manejo de excepciones y lógica avanzada dentro del motor de base de datos.
Ejercicio de examen completo sobre un escenario médico. Incluye enunciado y solución comentada.
¿Qué aprenderás aquí?
- Crear tablas con restricciones FK complejas
- Insertar datos masivos y gestionar transacciones
- Consultas avanzadas con CASE, EXISTS y subconsultas
- Procedimientos almacenados con IN/OUT
- Cursores para procesar filas individualmente
- Triggers automáticos BEFORE/AFTER
- PL/SQL en Oracle y MySQL
Descargar reset DB
UML · Diagramas de Software
UML (Unified Modeling Language) es el lenguaje estándar para diseñar y documentar software antes de programarlo. En 1º DAM lo vas a necesitar sí o sí: diagrama de clases para diseñar tus objetos Java, casos de uso para analizar requisitos y diagramas de secuencia para entender cómo se comunican los objetos.
Aquí tienes los cuatro tipos de diagrama que más se piden en clase y en examen, con teoría clara, ejemplos y acceso directo a draw.io para practicar online sin instalar nada.
¿Por qué aprender UML?
El más importante. Representa tus clases Java, sus atributos, métodos y relaciones (herencia, composición).
Muestra qué puede hacer cada tipo de usuario en el sistema. Ideal para la fase de análisis de requisitos.
Muestra el orden de los mensajes entre objetos a lo largo del tiempo. Muy útil para depurar la lógica.
Como un flujograma mejorado. Perfecto para representar algoritmos, procesos y flujos de decisión.
Gratis, online, sin cuenta, guarda en Google Drive o en local. Es la herramienta que usan equipos profesionales para hacer UML.
El diagrama de clases describe la estructura estática del sistema: qué clases existen, qué atributos y métodos tienen, y cómo se relacionan entre sí. Es el puente directo entre tu diseño y tu código Java.
Elementos clave
- Clase: rectángulo con 3 bloques — nombre, atributos y métodos.
- Visibilidad:
+público,-privado,#protegido. - Herencia: flecha con punta triangular vacía (→ extends en Java).
- Implementación: flecha discontinua con punta triangular (→ implements en Java).
- Asociación / Composición / Agregación: rombos y líneas simples para relaciones entre objetos.
- Multiplicidad:
1,0..*,1..*para indicar cuántos objetos se relacionan.
Ejemplo: Sistema de biblioteca
┌──────────────────┐ ┌──────────────────┐
│ Biblioteca │ 1 0..* │ Libro │
│──────────────────│──────────│──────────────────│
│ - nombre: String │ │ - isbn: String │
│ - ciudad: String │ │ - titulo: String │
│──────────────────│ │ - autor: String │
│ + buscarLibro() │ │──────────────────│
│ + prestar() │ │ + getInfo(): String│
└──────────────────┘ └──────────────────┘
△
│ extends
┌──────────────────┐
│ LibroDigital │
│──────────────────│
│ - formato: String │
│ - tamanoMB: int │
└──────────────────┘
Practicar en draw.io
Describe qué puede hacer cada tipo de usuario (actor) con el sistema. No entra en cómo se hace, solo en qué se puede hacer. Es el primer diagrama que se hace en la fase de análisis.
Elementos clave
- Actor: figura de palo o rectángulo con el rol del usuario (Cliente, Admin, Sistema externo...).
- Caso de uso: óvalo con el nombre de la acción ("Iniciar sesión", "Realizar pedido").
- Asociación: línea simple entre actor y caso de uso.
- «include»: un caso de uso siempre incluye otro (obligatorio).
- «extend»: un caso de uso puede extender otro (opcional, condicional).
- Sistema: rectángulo que enmarca todos los casos de uso del sistema.
Ejemplo: Tienda online
- Actor Cliente → Buscar producto, Añadir al carrito, Realizar pedido, Ver historial.
- Actor Administrador → Gestionar productos, Ver estadísticas, Gestionar usuarios.
- "Realizar pedido" «include» "Iniciar sesión".
- "Realizar pedido" «extend» "Aplicar cupón descuento".
Muestra la interacción entre objetos a lo largo del tiempo, en orden cronológico de arriba a abajo. Cada objeto tiene una "línea de vida" vertical y los mensajes son flechas horizontales entre ellas.
Elementos clave
- Participante / Objeto: rectángulo en la parte superior con su nombre.
- Línea de vida: línea discontinua vertical que baja desde cada objeto.
- Mensaje síncrono: flecha sólida con punta rellena → espera respuesta.
- Mensaje asíncrono: flecha sólida con punta abierta → no espera.
- Mensaje de retorno: flecha discontinua de vuelta al llamador.
- Activación: rectángulo estrecho en la línea de vida = objeto activo.
Ejemplo: Login de usuario
Usuario → Vista → Controlador → ServicioAuth → BBDD
| | | | |
|──login()──→| | | |
| |──validar()───→| | |
| | |──autenticar()─→| |
| | | |──buscarUser()→|
| | | |←──usuario─────|
| | |←──token────────| |
| |←──redirigir()─| | |
|←──panel───→| | | |
Practicar en draw.io
Es el flujograma de UML. Representa el flujo de control de un proceso o algoritmo, incluyendo decisiones, bucles y acciones paralelas. Muy útil para documentar la lógica de un método complejo antes de codificarlo.
Elementos clave
- Inicio: círculo negro relleno.
- Fin: círculo negro relleno con borde (círculo doble).
- Actividad: rectángulo redondeado con el nombre de la acción.
- Decisión: rombo con condición — una flecha por cada rama (sí/no).
- Fork / Join: barra horizontal gruesa — divide o une flujos paralelos.
- Swimlanes: carriles verticales para asignar actividades a distintos actores/componentes.
Ejemplo: Proceso de compra
- Inicio → Seleccionar producto → ¿Hay stock?
- Sí → Añadir al carrito → ¿Usuario logueado? → Sí → Pagar → Fin.
- No (stock) → Mostrar aviso → Fin.
- No (logueado) → Redirigir a login → vuelve a Pagar.
C# Programación en C# · 1º DAM .NET 8 · Consola · Visual Studio
Abrir plataforma del curso¿Qué aprenderás?
C# es el lenguaje principal del ecosistema .NET y uno de los más exigidos en 1º DAM. Aprenderás desde variables y bucles hasta POO completa, colecciones, ficheros CSV y un proyecto final de consola.
Entorno necesario
-
Visual Studio 2022 Community
Workload: .NET desktop development -
Solución del curso
CSharp_1DAM/code/CSharp1DAM.sln -
Ctrl+F5 — ejecutar sin depuración (recomendado)
Mismo formato que Java y PHP: cada UT tiene su guía .md y su código .cs. Descarga el archivo, ábrelo en Visual Studio y sigue la práctica guiada del mini-menú.
Tu espacio de estudio C# en un solo entorno
La plataforma muestra el temario completo con teoría comentada y ejemplos de código con syntax highlighting. Úsala para estudiar en casa y repasar antes de los exámenes. El código lo ejecutas en Visual Studio.
Variables, operadores, bucles y métodos.
Clases, herencia y polimorfismo.
List<T>, Dictionary y CSV.
App consola tipo examen 1º DAM.
Modo Examen
Pon a prueba lo que sabes de verdad. Estos exámenes recrean las condiciones reales de una evaluación: enunciado cerrado, temporizador activo, criterios por puntos y versión mínima para aprobar. El código que entregues tiene que compilar — si no lo hace, es un cero.
Disponible para Java, Python, SQL, Spring Boot, PHP, Node.js y PSP. Cada examen incluye pistas (para cuando llevas 20 minutos bloqueado) y una lista de errores frecuentes para evitar fallos absurdos.
¿Cómo usar el Modo Examen?
Sistema de Parking
Gestiona un parking de 20 plazas desde consola. El alumno debe registrar entradas con matrícula y hora, calcular el importe al salir (tarifa 0,05€/min, primeros 15 min gratis) y mostrar estadísticas de recaudación del día.
Biblioteca de Libros
CRUD completo de libros persistido en JSON. El alumno añade, elimina y busca libros por título, autor o género, y guarda los cambios en disco para que no se pierdan al cerrar el programa.
Gestión de Empleados SQL
Diseño e implementación de un esquema de RRHH desde cero: DDL completo (tablas, claves, restricciones) y después consultas complejas con JOINs, GROUP BY, subconsultas y vistas.
Parámetros del Reto
Esperando configuración
Describe tu ejercicio arriba y generaremos un enunciado detallado listo para programar.
Plataformas & Editores Online
Abre cualquier herramienta directamente en el navegador — sin instalar nada.
Metodología IA para Programación
Aprende a usar Claude Code, GitHub Copilot y Codex sin perder el aprendizaje real.
La IA hace el trabajo que ya sabes hacer más rápido.
Nunca el que todavía tienes que aprender.
18 protocolos pedagógicos, mapa de ruta de N1 a N4, los 6 errores fatales y prompts listos para copiar. Todo lo que necesitas para integrar la IA en el aprendizaje sin destruirlo.
Asistente de terminal. Explica, investiga y ejecuta bajo demanda. El alumno controla cuándo pedir ayuda.
Asistente inline en el editor. Sugiere código mientras escribes. Requiere la disciplina de la pausa de 3 segundos.
IA de OpenAI vía API o chat. Ideal para generar scaffolding, explorar alternativas y practicar prompts avanzados.