Mis estadísticas
Cargando página...
Panel inicial

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.

Temarios ordenados Vista previa de archivos Descargas directas Ayuda con IA
Si eres nuevo: abre un curso en el menú izquierdo, empieza por la primera unidad y usa el Mentor IA cuando necesites una explicación, una pista o una práctica.
Material incluido Temarios Guías Ejercicios Código README / Markdown Editores online Mentor IA
Estudiar por temarios La plataforma reúne cursos de programación organizados por bloques y unidades. En cada sección puedes leer teoría, ver ejemplos, seguir explicaciones paso a paso y avanzar sin perderte entre archivos sueltos.
Ver archivos y descargar Muchos materiales se pueden abrir directamente desde la página: guías, README, prácticas, apuntes y código. También puedes descargarlos para guardarlos, abrirlos en VS Code o trabajarlos en tu ordenador.
Practicar online No es solo teoría: hay ejercicios guiados, plataformas interactivas, editores online, botones para copiar código y retos para practicar Java, Web, Python, SQL, Git y otros contenidos.
Preguntar al Mentor IA El Mentor IA acompaña el estudio: resume secciones, explica conceptos difíciles, genera mini prácticas, da pistas, ayuda con errores y puede trabajar con el texto que selecciones en la página.

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 etiquetas
CSS
Estilos y diseño
JavaScript
Interactividad
Bootstrap
Componentes
UT1 HTML UT2 CSS UT3 Bootstrap UT4 JS UT5 IA UT6 Netlify

Objetivo: preparar tu ordenador para crear páginas web. Solo necesitas VS Code (editor gratuito) y Live Server (extensión para ver tu web).
1
Instala VS Code

Descarga e instala Visual Studio Code desde su web oficial.

Descargar VS Code
2
Instala Live Server

Abre VS Code → Extensiones (Ctrl+Shift+X) → Busca "Live Server" → Instalar.

Extensión gratuita
3
Abre tu archivo .html

Descarga un .html del curso → Abre con VS Code → Clic derecho → Open with Live Server.

Se abre en el navegador
Cómo usar los materiales del curso
  1. Descarga el archivo .html de la unidad que quieras practicar.
  2. Abre VS Code y arrastra el archivo o usa Archivo → Abrir.
  3. Clic derecho en el código → Open with Live Server.
  4. Edita el código y guarda (Ctrl+S). La página se actualiza sola.
  5. 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!
Descargar guía (.md)

Objetivo: comprender la estructura base de un documento HTML5 y usar etiquetas semánticas para construir páginas claras, accesibles y fáciles de mantener.

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 atributo alt).
  • 🔗 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 luego h2/h3 en orden), poner texto alternativo a las imágenes y usar atributos como aria-label o aria-labelledby cuando sea necesario para que todos los usuarios puedan navegar sin problemas.
UT1_Clase_HTML_Completa.html
⏳ Cargando código...
Descargar Clase (.html) Descargar Plantilla (.html) Guía teórica (.md)

Objetivo: entender cómo estilizar tu HTML con CSS, empezando por estilos globales, colores, tipografía y modelo de caja; aplicarlo a un portfolio simple y dejarlo listo para maquetaciones posteriores.

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 color y background-color decides 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 como px o rem para 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) y box-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.
UT2_Clase_CSS_Completa.html
⏳ Cargando código...
Descargar Clase (.html) Descargar Plantilla (.html) Guía teórica (.md)

Objetivo: maquetar y estilizar rápido tu portfolio con Bootstrap 5 usando container, grid, utilidades y componentes esenciales (navbar, botones, formularios, tablas, alertas, carrusel, cards).

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.
UT3_Clase_BOOSTRAP_Completa.html
⏳ Cargando código...
Descargar Clase (.html) Descargar Plantilla (.html) Guía teórica (.md)

Objetivo: dar vida a tu página con JavaScript: escuchar acciones del usuario, manipular el DOM y mostrar mensajes dinámicos sin recargar.

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 .js enlazado. 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.querySelector seleccionas un elemento y con textContent, classList o setAttribute lo 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.
UT4_Clase_JAVASCRIPT_Completa.html
⏳ Cargando código...
Descargar Clase (.html) Descargar Plantilla (.html) Guía teórica (.md)

Objetivo: cerrar el curso con un portfolio completo combinando UT1–UT4 (HTML, CSS, Bootstrap, JS) y usar IA para mejorar textos, accesibilidad y microdetalles antes de publicar.

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-theme en <body>. La preferencia del usuario se guarda en localStorage para 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 alt y aria-*, contrastes y CTA. Además, detectar mejoras rápidas de UX, SEO y rendimiento.
UT5_Clase_Final_IA.html
⏳ Cargando código...
Descargar Clase (.html) Descargar Plantilla (.html) Guía teórica (.md) Guía de plantilla (.md)

Objetivo: publicar tu primera página web y obtener un enlace para compartir (portfolio, trabajo de clase o proyecto final).
✅ Pasos (modo rápido)
  1. Crea una carpeta en tu PC (por ejemplo mi-web).
  2. Dentro debe existir un archivo llamado index.html (es el “inicio” de tu web).
  3. Prueba en local: abre index.html o usa Live Server en VS Code.
  4. Entra en Netlify Drop y arrastra la carpeta (o el index.html).
  5. Netlify te da una URL: abre el enlace, revisa y compártelo.
Errores típicos: el archivo no se llama 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.

Descargar guía (.md) Descargar plantilla (.html)
Entrega recomendada: sube tu web, copia la URL, y envíala junto con 3 capturas (móvil, tablet y escritorio).

Opcional pero recomendado: aprende a depurar con DevTools (F12) y a versionar tu código con Git.
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.
Pro tip: con Git + GitHub, Netlify actualizará tu web automáticamente con cada git push.
Web · recorrido completo

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.

Abrir plataforma completa: retoma el último bloque guardado y sigues donde lo dejaste.
Empezar ruta base: arranca desde UT0 para recorrer el curso desde cero.
HTML

Estructura, etiquetas y primeras páginas.

CSS

Diseño visual, layout y estilos modernos.

Bootstrap

Componentes listos y maquetación rápida.

JavaScript

Interactividad, DOM y comportamiento real.

Teoría guiada

Cada bloque muestra el contenido teórico junto al ejercicio real para que el alumno aprenda con contexto.

Editor real

El editor forma parte de la experiencia web completa, pensado para practicar con comodidad y continuidad.

Vista previa responsive

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.

Inicio y HTML

Configuración del entorno y primeras páginas con estructura semántica y etiquetas base.

Ir a inicio y HTML
CSS y diseño visual

Selectores, colores, tipografía, cajas y primeras decisiones de maquetación visual.

Ir a CSS
Bootstrap y componentes

Sistema de rejilla, componentes reutilizables y aceleración del trabajo responsive.

Ir a Bootstrap
JavaScript e interactividad

Eventos, DOM y comportamiento dinámico para que la web deje de ser estática.

Ir a JavaScript
Proyecto final e IA

Integración final del portfolio y uso práctico de IA para acelerar iteraciones con criterio.

Ir al proyecto final
DevTools y publicación

Herramientas del navegador, Git y despliegue para subir tu web y trabajar como en un flujo real.

Ir a publicar y depurar
Lenguajes de Marcas · LMSGI XML · DTD · XSD · XPath 1º DAM

XML · 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

Sesión 1. XML bien formado — estructura, atributos, entidades, CDATA.
Sesión 2. DTD — validación con DTD interno, externo, ID/IDREF.
Sesión 3. XPath — consultas con filtros, funciones y laboratorio HTML.
Sesión 4. XSD — tipos, restricciones, key/keyref + examen tipo.
XML bien formado

Estructura base: etiquetas, anidamiento, atributos, entidades y CDATA. La diferencia entre bien formado y válido.

DTD · Validación clásica

Define qué elementos y atributos son válidos. DTD interno, externo, tipos ID e IDREF para referencias entre elementos.

XPath · Consultas

Selecciona nodos de un XML: rutas absolutas y relativas, predicados, funciones count(), sum(), contains(). Laboratorio interactivo en navegador.

XSD · Validación moderna

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: &amp; &lt; &gt; &quot;.
  • 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 .dtd separado referenciado con SYSTEM.
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.
  • ID e IDREF — 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.
Laboratorio interactivo: escribe expresiones XPath y ve el resultado al instante en el navegador. Usa el dataset biblioteca.xml con libros, socios y préstamos.
Abrir laboratorio XPath

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 con minInclusive/maxInclusive.
  • Referencias con xs:key y xs:keyref — equivalente a clave primaria/foránea.
  • Cardinalidad con minOccurs y maxOccurs (incluyendo unbounded).
Ejercicio clave: abre 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.
Examen tipo 1º DAM

Angular moderno Standalone · Router · Forms · RxJS

Abrir plataforma Angular

Curso Angular con plataforma propia

UT0 a UT8 con teoria, codigo, demos internas y laboratorio StackBlitz.

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.

Angular 17 Standalone Components HttpClient Reactive Forms RxJS

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.

UT0 · Instalacion y entorno

Node, npm, Angular CLI, estructura del proyecto y standalone.

Base
Practicar
UT1 · Componentes basicos

Selector, template, estado, Input, Output y eventos.

Practica
Practicar
UT2 · Directivas y pipes

Condicionales, listas, clases dinamicas, pipes y trackBy.

Practica
Practicar
UT3 · Ruteo

Router, routerLink, parametros, wildcard y navegacion SPA.

Aplicacion
Practicar
UT4 · Servicios, DI y HttpClient

Servicios, inyeccion, HttpClient, Observables, cache y errores.

Proyecto
Practicar
UT5 · Formularios

Reactive Forms, FormGroup, validaciones y envio controlado.

Practica
Practicar
UT6 · Estado y RxJS

BehaviorSubject, estado compartido, async pipe y patrones reactivos.

Proyecto
Practicar
UT7 · Testing

TestBed, componentes standalone, fixture, detectChanges y expectativas.

Calidad
Practicar
UT8 · Build y deploy

ng build, base href, dist, publicacion estatica y checklist final.

Publicacion

Indice con progreso

Recuerda la ultima unidad y permite marcar bloques completados.

Teoria Markdown

Carga las guias reales del curso sin duplicar contenido.

Codigo TypeScript

Muestra los ejemplos originales y permite copiarlos.

Lab StackBlitz

Practica Angular real en navegador sin subir node_modules.

Entradas rapidas por unidad

Cada acceso abre la plataforma Angular justo en el bloque elegido.

Abrir indice completo
UT0 · Entorno

Node, CLI, estructura del proyecto y por que Angular necesita compilar.

Practicar UT0
UT1 · Componentes

Selector, template, estado, Input, Output y eventos.

Practicar UT1
UT2 · Directivas y pipes

Condicionales, listas, clases dinamicas y transformaciones.

Practicar UT2
UT3 · Ruteo

Rutas, enlaces, parametros, router-outlet y ruta comodin.

Practicar UT3
UT4 · Servicios y HTTP

DI, HttpClient, Observables, cache y errores.

Practicar UT4
UT5-UT8 · Forms, RxJS, Testing y Deploy

La parte aplicada del curso hasta build y publicacion.

Continuar ruta

Vue.js · Frontend moderno Framework progresivo SPA

¿Qué aprenderás?

Framework progresivo · Componentes · Router · Pinia · 4 UTs

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.

Composition API Options API Vue Router Pinia Vite TypeScript

Entorno necesario

Node.js 18+ · VS Code · Vite
  • 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
Consulta la guía completa del curso para ver la ruta de aprendizaje, convenciones Better Comments y cómo usar los archivos .vue y .md. README

Objetivo

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 createApp y montar en el DOM
  • Reactividad: data(), ref(), reactive()
  • Interpolación {{ }}, directivas v-bind, v-on, v-if, v-for
  • Single File Component (SFC): <template>, <script>, <style scoped>
  • CDN vs proyecto Vite: cuándo usar cada uno
createApp ref / reactive Directivas SFC .vue
↓ .md ↓ .vue

Objetivo

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 y required
  • Eventos personalizados: defineEmits() y emit()
  • Slots básicos para contenido flexible e inyectable
  • Patrón completo: TarjetaRecurso (hijo) ↔ AppUt2 (padre)
  • script setup vs Options API: ventajas de cada enfoque
defineProps defineEmits Slots script setup
↓ .md ↓ .vue

Objetivo

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
Vue Router Pinia defineStore RouterLink
↓ .md ↓ .vue

Objetivo

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:key en listas
  • Build con Vite: npm run build genera carpeta dist optimizada
  • Despliegue en Netlify / Vercel: drag & drop o CI desde repositorio
Vitest Testing Library Vite build Netlify / Vercel
↓ .md ↓ .vue

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.

Proyecto ubicado en cursos/Curso Vue/curso-vue-lab/
Arranque: cd curso-vue-lab && npm install && npm run dev
Accede a http://localhost:5173 para ver la SPA en vivo con todas las UTs navegables.
Estructura del laboratorio
  • src/views/UT1/ — Introducción y reactividad
  • src/views/UT2/ — Componentes y props
  • src/views/UT3/ — Router + Pinia
  • src/views/UT4/ — Buenas prácticas
  • src/router/index.ts — Rutas de la SPA
  • vite.config.ts — Configuración del build
Documentación del lab
↓ Guía del curso

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.

Objetivo: dejar listo el entorno en 10 minutos para poder compilar y ejecutar sin líos.
Paso 1 · Instalar Java (JDK)

Instala JDK 17 o superior. Recomendado: Temurin (Adoptium), que se instala con asistente (siguiente, siguiente...).

Descargar Temurin JDK
Elige: Windowsx64JDK 17.msi.
Paso 2 · Editor recomendado

Usa Visual Studio Code para abrir los archivos del curso y trabajar cómodo.

Descargar VS Code
Consejo: abre una carpeta del proyecto (no archivos sueltos).
Extensiones recomendadas (VS Code)
  • Java Extension Pack: compilar, ejecutar y depurar Java.
  • Better Comments: mejora la lectura de comentarios.
Los archivos .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) y char (carácter).
  • 🧮 Operadores aritméticos: + - * / %. Comparación: == != < <= > >=. Lógicos: && (y), || (o), ! (no).
  • 📝 Buenas prácticas: nombres en camelCase (precioTotal), evita abreviaturas confusas, inicializa variables, usa final para constantes y comenta lo imprescindible.
  • Objetivo: al terminar, podrás declarar variables, combinarlas en expresiones y decidir el tipo correcto para cada dato.
Descargar código .java Descargar guía .md

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/else y else if para controlar casos diferentes.
  • 📋 Decisiones por casos usando switch y case para 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 considera switch para 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.
Descargar código .java Descargar guía .md

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
Descargar código .java Descargar guía .md

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
Descargar código .java Descargar guía .md

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 new y acceso a métodos
  • 🧬 Herencia con extends y uso de super
  • 🧠 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 throw y throws
  • 📘 Guía explicativa con teoría y ejercicios
Descargar código .java Descargar guía .md

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, indexOf y replace
  • 🔠 Conversión entre mayúsculas y minúsculas
  • 📘 Guía práctica con teoría y ejercicios resueltos
Descargar código .java Descargar guía .md

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 for y foreach
  • 🧩 Operaciones básicas con strings: cortar, unir, buscar
  • 📘 Incluye ejercicios combinando arrays y cadenas de texto
Descargar código .java Descargar guía .md

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
Descargar código .java Descargar guía .md

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 LocalTime y Duration
  • 📘 Guía con ejercicios prácticos y ejemplos explicados
Descargar código .java Descargar guía .md

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
Descargar código .java Descargar guía .md

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
Descargar código .java Descargar guía .md

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
Descargar código .java Descargar guía .md

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
Descargar código .java Descargar guía .md

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
Descargar código .java Descargar guía .md

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
Descargar código .java Descargar guía .md
Java · recorrido completo

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.

Abrir plataforma completa: retoma el punto donde te quedaste dentro de la plataforma Java.
Empezar ruta base: arranca desde introducción para seguir el recorrido recomendado paso a paso.
Código real

Cada unidad enlaza con el material real del curso para trabajar con ejemplos, clases y guías tal como están preparadas.

Guía integrada

La teoría acompaña al código para estudiar cada tema con contexto y moverte por el temario sin perder el hilo.

Laboratorio con espacio

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.

Fundamentos

Introducción, variables, control de flujo, bucles, funciones y primeras clases para construir una base sólida.

Ir a fundamentos
POO y objetos

Clases, objetos, encapsulación y transición hacia una forma de programar más estructurada.

Ir a POO y objetos
Excepciones y depuración

Excepciones, validación y tratamiento de errores para que el código no falle de forma caótica.

Ir a excepciones y depuración
Texto, arrays y colecciones

Trabajo con texto, arrays, regex, colecciones y estructuras frecuentes en ejercicios reales.

Ir a estructuras y texto
Ficheros y paquetes

Lectura y escritura de ficheros, enums, modularidad y paquetes para estructurar proyectos más serios.

Ir a ficheros y paquetes
POO avanzada y testing

Herencia, polimorfismo, prácticas avanzadas, JUnit y evolución natural hacia diseño más profesional.

Ir a avanzado y testing
APIs y backend

Consumo de APIs REST, arquitectura por capas y entrada al backend moderno con Spring Boot.

Ir a APIs y backend
Proyecto, SQL y arquitectura

Proyecto final de consola, JDBC con SQLite y bloques de arquitectura para cerrar el recorrido completo.

Ir a proyecto y arquitectura

4 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.

Descargar enunciado Descargar guía Descargar plantilla Descargar solución

Alumno Básico

nombre, edad y nota media. Métodos estaAprobado() y modificación de nota. Mismo patrón, distinto contexto.

Descargar enunciado Descargar guía Descargar plantilla Descargar solución

Libro Básico

título, páginas y estado de préstamo. Métodos prestar() y devolver() sin parámetros.

Descargar enunciado Descargar guía Descargar plantilla Descargar solución

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.

Descargar enunciado Descargar guía Descargar plantilla Descargar solución

Libro con Array

Array de libros: listar, buscar por título, contar disponibles, calcular páginas totales.

Descargar enunciado Descargar guía Descargar plantilla Descargar solución

Producto con Array

Array de productos: listar stock, buscar por nombre, producto más caro, calcular valor total.

Descargar enunciado Descargar guía Descargar plantilla Descargar solución

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.

Descargar enunciado Descargar guía Descargar plantilla Descargar solución

Producto Tienda

Buscar producto y vender unidades. Control de stock, boolean de éxito y actualización de estado.

Descargar enunciado Descargar guía Descargar plantilla Descargar solución

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.

Descargar enunciado Descargar guía Descargar plantilla Descargar solución

Ordenadores

HashSet de periféricos y clase gestora. Agregación, evitar duplicados y actualización de estado.

Descargar enunciado Descargar guía Descargar plantilla Descargar solución

Reservas Hotel

HashSet y HashMap<Cliente, Reservas>. Cancelación, liberación de estado e ingresos totales.

Descargar enunciado Descargar guía Descargar plantilla Descargar solución

Curso Java Swing: interfaz, eventos y proyecto final

GUI de escritorio Eventos y EDT MVC 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
UT0 de repaso y UT1-UT13 con progresion real de aula.
Archivos `.java` y `.md` enlazados para cada unidad.
Anexo JDBC + MySQL + NetBeans para cerrar el proyecto final.
Descargar guia general
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.

Cargando temario de Java Swing...

Swing · recorrido completo

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.

Abrir plataforma completa: retoma la última UT que dejaste abierta.
Empezar ruta base: arranca desde el repaso inicial y sigue el recorrido completo.
Interfaz

Ventanas, paneles y layouts bien organizados.

Eventos

Listeners y respuesta real de la GUI.

Modelos

Tablas, listas, árboles y MVC para apps serias.

Proyecto final

Agenda completa con persistencia y despliegue.

Guía conectada

Cada UT abre la explicación y el material real del curso para estudiar Swing con contexto técnico y didáctico.

Código real

El alumno trabaja con los `.java` y `.md` reales del curso, preparados para abrirlos después en su IDE.

IDE local recomendado

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 y base visual

Repaso inicial, primeros JFrame, paneles, componentes y layouts para empezar con buena base.

Ir a repaso y base
Eventos y estado

Eventos del usuario, menús, toolbars y validación para que la interfaz responda bien.

Ir a eventos y estado
Datos y MVC

Listas, tablas, árboles y organización MVC para pasar de ejemplos a aplicaciones mantenibles.

Ir a datos y MVC
Dibujo y personalización

Graphics2D, pintura personalizada, Look & Feel e internacionalización para una UI más avanzada.

Ir a personalización
Concurrencia y entrega

SwingWorker, persistencia ligera, empaquetado y preparación final de la aplicación.

Ir a concurrencia y entrega
Proyecto final

Agenda inteligente con persistencia, organización por capas y cierre completo del curso Swing.

Ir al proyecto final

Android PMDM · 2º DAM Programación Multimedia y Dispositivos Móviles

Abrir plataforma del curso

¿Qué aprenderás?

Stack profesional de Android nativo en 14 lecciones.

Desarrollo de apps Android nativas con el stack que usan las empresas hoy: Kotlin, Jetpack Compose, MVVM, Room, Retrofit y más.

Kotlin Jetpack Compose MVVM Room Retrofit Coroutines Material 3 CameraX

Entorno necesario

L01-L02 en VS Code · L03-L14 en Android Studio
  • Android Studio — versión estable
    SDK 34 + emulador Pixel 7
  • VS Code + extensión Kotlin
    Para las 2 primeras lecciones
  • JDK 17+ + Git

Objetivo

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
Android Studio Gradle Kotlin básico VS Code ✓
Descargar guía (.md)

Objetivo

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
Kotlin VS Code ✓
Descargar guía (.md)

Objetivo

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
  • @Preview para ver la UI sin emulador
Compose Material 3 Android Studio
Descargar guía (.md)

Objetivo

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 { } y update { }
MVVM StateFlow ViewModel
Descargar guía (.md)

Objetivo

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
Navigation NavHost
Descargar guía (.md)

Objetivo

Implementar listas eficientes que nunca se congelen, con todos sus estados.

  • LazyColumn vs Column — por qué el parámetro key es crítico
  • Estados de lista: Loading / Success / Error / Empty
  • Sticky headers con stickyHeader
  • Optimización con derivedStateOf y remember(input)
  • LazyRow para listas horizontales
LazyColumn Rendimiento
Descargar guía (.md)

Objetivo

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
Retrofit OkHttp REST
Descargar guía (.md)

Objetivo

Programar de forma asíncrona sin bloquear el hilo principal ni crashear la app.

  • suspend fun — se pausa sin bloquear el hilo
  • Dispatchers.IO para red y BD · Main para UI
  • launch vs async/await — paralelismo real
  • Flow — streams de datos reactivos (emite múltiples valores)
  • Operadores: map, filter, debounce, collectLatest
  • StateFlow para estado UI · SharedFlow para eventos
Coroutines Flow StateFlow
Descargar guía (.md)

Objetivo

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
Room SQLite KSP
Descargar guía (.md)

Objetivo

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
Offline First Repository Cache
Descargar guía (.md)

Objetivo

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 + UnconfinedTestDispatcher para coroutines
  • Turbine para testear secuencias de estados en StateFlow
  • Tests obligatorios: estado inicial, validación, toggle, error, eliminar
JUnit Turbine Fakes
Descargar guía (.md)

Objetivo

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
APK ProGuard CI/CD
Descargar guía (.md)

Objetivo

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
Permisos Android 13+
Descargar guía (.md)

Objetivo

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
CameraX Coil MediaPlayer
Descargar guía (.md)

Pack completo — 14 lecciones
14 README.md + 14 archivos .kt con teoría, ejercicios y soluciones

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?

Concurrencia, redes y seguridad en Java · 5 RA · 10 bloques

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.

Hilos & Sync Sockets TCP/UDP API REST Persistencia JSON AES / RSA / SSL Spring Boot WS

Entorno necesario

JDK 17+ · VS Code · Maven
  • JDK 17+
    Adoptium Temurin recomendado
  • VS Code + Java Extension Pack
  • Maven
    Para el proyecto Spring Boot final
Plataforma interactiva PSP
Teoría con código resaltado, ejemplos ejecutables y navegación por fases — todo en el navegador.
Abrir
Consulta el mapa visual del curso para ver la relación entre fases, RAs y el proyecto evolutivo de un vistazo. README

Objetivo

Gestionar procesos del sistema operativo desde Java.

  • Lanzar y controlar procesos con ProcessBuilder y Runtime.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
ProcessBuilder Runtime
↓ .md ↓ .java

Objetivo

Crear y gestionar hilos con Thread y Runnable.

  • Ciclo de vida: NEW, RUNNABLE, BLOCKED, TERMINATED
  • Thread, Runnable y lambdas
  • sleep(), join(), interrupt()
  • Daemon threads y prioridades
Thread Runnable
↓ .md ↓ .java

Objetivo

Evitar condiciones de carrera y coordinar hilos de forma segura.

  • synchronized, monitores y sección crítica
  • wait() / notify() / notifyAll()
  • Semáforos con Semaphore
  • Variables atómicas: AtomicInteger, AtomicBoolean
  • Problema productor-consumidor
synchronized Semaphore Atomic
↓ .md ↓ .java

Objetivo

Programar cliente-servidor con comunicación TCP fiable.

  • ServerSocket + Socket: ciclo aceptar-leer-escribir
  • Servidor multihilo: un hilo por cliente
  • Serialización con ObjectInputStream / ObjectOutputStream
  • Chat cliente-servidor completo
ServerSocket Socket TCP
↓ .md ↓ .java

Objetivo

Comunicación sin conexión y comparar TCP vs UDP.

  • DatagramSocket y DatagramPacket
  • Envío y recepción de datagramas
  • Diferencias TCP (fiable, conexión) vs UDP (rápido, sin garantías)
  • Casos de uso: streaming, juegos, DNS
DatagramSocket UDP
↓ .md ↓ .java

Objetivo

Crear un servidor HTTP/REST con Java estándar (sin frameworks).

  • HttpServer de com.sun.net.httpserver
  • Endpoints GET / POST / DELETE con rutas
  • Serialización/deserialización JSON manual
  • Códigos de estado HTTP y cabeceras CORS
HttpServer REST JSON
↓ .md ↓ .java

Objetivo

Consumir APIs REST desde Java con HttpClient.

  • HttpClient, HttpRequest, HttpResponse (Java 11+)
  • Peticiones GET / POST con cuerpo JSON
  • Autenticación con cabeceras (Bearer token)
  • Consumir APIs públicas externas
HttpClient Java 11+
↓ .md ↓ .java

Objetivo

Guardar y recuperar datos entre ejecuciones usando ficheros JSON.

  • Guardar historial de mensajes en fichero NDJSON
  • Lectura y escritura con BufferedReader / FileWriter
  • Parseo JSON manual y con Gson
  • Sincronización del acceso concurrente al fichero
NDJSON FileWriter Gson
↓ .md ↓ .java

Objetivo

Usar el framework de concurrencia de Java para gestionar pools de hilos.

  • ExecutorService y Executors: pools fijos, cached y scheduled
  • Callable y Future: tareas con retorno
  • CompletableFuture para encadenar operaciones asíncronas
  • BlockingQueue para comunicación entre hilos
  • Monitoreo y depuración con VisualVM / jstack
ExecutorService Future CompletableFuture
↓ .md ↓ .java

Objetivo

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
AES RSA SSL/TLS SHA-256
↓ .md ↓ SeguridadDemo.java ↓ ChatSeguro.java

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.

Chat consola Spring Boot WebSockets STOMP Spring Security JPA + H2
Versión consola
↓ ChatCompleto.java
Versión Spring Boot
Proyecto Maven/Spring Boot completo. Para trabajar con él descarga el repositorio completo y ábrelo en VS Code o IntelliJ. Aquí puedes consultar el README con instrucciones de arranque.

Recursos por ejercicio Enunciado Skeleton — rellena tú Solución del profesor Guía de estrategia de examen
Nivel 1 Hilos básicos · Hilo Contador Thread · Runnable · sleep/join/interrupt

Crea hilos que cuenten de forma concurrente. Practica el ciclo de vida y la coordinación básica.

Enunciado N1_Hilo_Contador_Enunciado.md
Skeleton .java N1_Hilo_Contador.java
Solución N1_Hilo_Contador_Solucion.java
Nivel 2 Sockets TCP · Servidor Echo ServerSocket · Socket · multihilo

Servidor que repite lo que recibe. Añade soporte multihilo para varios clientes simultáneos.

Enunciado N2_ServidorEcho_Enunciado.md
Skeleton .java N2_ServidorEcho.java
Solución N2_ServidorEcho_Solucion.java
Nivel 3 REST + Persistencia · API Productos HttpServer · endpoints REST · fichero JSON

API REST completa con GET/POST/DELETE y persistencia del catálogo en fichero NDJSON entre reinicios.

Enunciado N3_ApiProductos_Enunciado.md
Skeleton .java N3_ApiProductos.java
Solución N3_ApiProductos_Solucion.java
Nivel 4 · Examen Sistema de Monitoreo Integra RA1–RA4 completos

Sistema que lanza procesos, los monitoriza con hilos, expone un endpoint REST y persiste los logs. Formato real de examen final.

Enunciado N4_SistemaMonitoreo_Enunciado.md
Skeleton .java N4_SistemaMonitoreo.java
Solución N4_SistemaMonitoreo_Solucion.java

Exámenes PSP Enunciado Skeleton Solución del profesor
Parcial 1 Hilos & Sockets RA1 · RA2 · RA3 · 2 h · 10 pts

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.

Enunciado Examen_Parcial1_Hilos_Sockets.md
Solución del profesor Examen_Parcial1_SOLUCION.md
Parcial 2 REST & Concurrencia avanzada RA4 · RA2 avanzado · 2 h · 10 pts

API REST con HttpServer, persistencia en fichero, ExecutorService, Callable/Future y CompletableFuture. Incluye parte teórica y práctica.

Enunciado Examen_Parcial2_REST_Concurrencia.md
Solución del profesor Examen_Parcial2_SOLUCION.md
Examen Final Todos los RA integrados RA1–RA5 · 3 h · 10 pts

Examen de evaluación final del módulo. Integra todos los resultados de aprendizaje: procesos, hilos, sockets, REST, persistencia y seguridad.

Enunciado Examen_Final_PSP.md
Solución del profesor Examen_Final_PSP_SOLUCION.md
Nuevos Temas Examen avanzado con skeleton .java Skeleton + solución completa

Formato actualizado: enunciado en .md, skeleton Java con los métodos a implementar ya declarados, y solución completa del profesor.

Enunciado Examen_NuevosTemas.md
Skeleton .java ExamenSkeleton_NuevosTemas.java
Solución Solucion_NuevosTemas.java

Acceso a Datos · 2º DAM DAO · JDBC · JPA · Spring Data

Guía completa .md
Recorrido del módulo — Ficheros → DAO → JDBC → JPA → Spring Data JPA
Del patrón DAO manual hasta Spring Boot + JPA + H2: cada paso refuerza el anterior. Al final tienes una aplicación web con CRUD completo y persistencia real.

¿Qué aprenderás?

E/S de ficheros → patrón DAO → JDBC → JPA/Hibernate → Spring Data JPA.

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.

Ficheros / XML Patrón DAO JDBC JPA / Hibernate Spring Data JPA H2 / MySQL

Entorno necesario

JDK 17+ · VS Code · Maven
  • JDK 17+
    Adoptium Temurin recomendado
  • VS Code + Java Extension Pack + Spring Boot Extension Pack
  • Maven para gestionar dependencias JDBC / JPA

Objetivo

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
Serialización XML DOM BufferedReader
↓ .md ↓ SerializaciónDemo.java ↓ XMLDOMDemo.java

Objetivo

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
Interface DAO Pattern DIP
↓ .md ↓ .java

Objetivo

Primera implementación del DAO usando una colección en memoria.

  • Implementar MemoryMensajeDAO con ArrayList
  • CRUD completo: create, read, update, delete
  • Tests unitarios sobre MemoryDAO (sin BD, sin fichero)
  • Validar el contrato de la interfaz
ArrayList CRUD Test unitario
↓ .md ↓ .java

Objetivo

Persistir datos entre ejecuciones usando NDJSON sin cambiar la interfaz DAO.

  • Implementar FileMensajeDAO con fichero NDJSON
  • Leer todos los registros al iniciar y escribir al persistir
  • Misma interfaz, distinta implementación (polimorfismo)
  • Comparar comportamiento MemoryDAO vs FileDAO
NDJSON FileDAO Polimorfismo
↓ .md ↓ .java

Objetivo

Desacoplar lógica de negocio e implementación usando inyección de dependencias.

  • Clase ChatService que recibe un MensajeDAO en el constructor
  • Intercambiar implementaciones sin modificar el servicio
  • Principio abierto/cerrado (OCP) · preparación para Spring IoC
DI manual Service layer OCP
↓ .md ↓ .java

Objetivo

Ejecutar consultas SQL desde Java con la API JDBC estándar.

  • DriverManager, Connection, Statement, ResultSet
  • PreparedStatement para consultas parametrizadas y evitar SQL Injection
  • Transacciones: setAutoCommit(false), commit(), rollback()
  • Implementar un JdbcMensajeDAO sobre H2/MySQL
JDBC PreparedStatement Transacciones
↓ .md ↓ JDBCDemo.java

Objetivo

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
JPA Hibernate @Entity JPQL
↓ .md ↓ Libro.java

Objetivo

Primera aplicación Spring Boot completa: vistas Thymeleaf, REST controller y servicio de datos.

  • Auto-configuración Spring Boot · @Controller para vistas HTML
  • Thymeleaf: plantillas HTML con th:each, th:text, th:action
  • @RestController para endpoints JSON
  • Arquitectura modelo → controller sin BD (datos en memoria)
Spring Boot Thymeleaf @Controller @RestController
↓ .md ↓ Controller.java

Objetivo

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 @RestController y vistas con @Controller
  • H2 en memoria con consola web · manejo global de excepciones
Spring Data JPA H2 JpaRepository REST + Thymeleaf
↓ .md ↓ Controller.java

Los proyectos finales son proyectos Maven/Spring Boot completos. Para trabajar con ellos descarga el repositorio completo y ábrelos en VS Code o IntelliJ. Aquí puedes leer los README e instrucciones.
Proyecto DAO (Java puro)

CRUD completo con patrón DAO: Memory + File + JDBC. Sin frameworks.

↓ Guía DAO
Academia Spring Boot

Aplicación completa con JPA, relaciones, REST API y Thymeleaf.

↓ README

Recursos por ejercicio Enunciado Skeleton — rellena tú Solución del profesor Guía general de niveles
Nivel 1 JDBC básico · Alumno JDBC Connection · Statement · ResultSet · PreparedStatement

CRUD de alumnos sobre SQLite con JDBC puro. Practica el ciclo conectar-consultar-cerrar.

Enunciado N1_Alumno_JDBC_Enunciado.md
Skeleton .java N1_Alumno_JDBC.java
Solución N1_Alumno_JDBC_Solucion.java
Nivel 2 JDBC completo · Banco Transacciones Transacciones · DAO JDBC · múltiples entidades

Sistema bancario con cuentas y transferencias. Practica transacciones y rollback ante errores.

Enunciado N2_Banco_Transacciones_Enunciado.md
Skeleton .java N2_Banco_Transacciones.java
Solución N2_Banco_Transacciones_Solucion.java
Nivel 3 JPA + Spring · Biblioteca JPA @Entity · @OneToMany · Spring Data JPA · JPQL

Biblioteca con Libros, Autores y Categorías. Relaciones JPA y consultas con Spring Data Repository.

Enunciado N3_Biblioteca_JPA_Enunciado.md
Plantilla .md N3_Biblioteca_JPA.md
Solución N3_Biblioteca_JPA_Solucion.md
Nivel 4 · Examen Academia con relaciones Integra DAO + JDBC + JPA completos

Sistema de una academia: Alumnos, Cursos, Profesores y Matrículas. Formato real de examen final.

Enunciado N4_Academia_Enunciado.md
Guía de diseño N4_Academia.md

K Kotlin · 1º DAM Programación moderna · JVM

Abrir plataforma del curso

¿Qué aprenderás?

Kotlin desde cero hasta proyecto final con arquitectura por capas · 9 UTs

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.

Null-Safety Data Classes Lambdas JUnit Testing JSON Android intro

Entorno necesario

JDK 17+ · VS Code · Live Server · Gradle
  • 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
Plataforma interactiva Kotlin
Teoría Markdown, código Kotlin, lab online OneCompiler, modos Todo/Estudio/Práctica/Solo-lab y seguimiento de progreso local.
Abrir
Consulta la guía completa del curso para entender la estructura, los modos de la plataforma, el flujo recomendado y los proyectos Gradle. README

Objetivo

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() y println()
  • Ejecutar snippets en el playground online (OneCompiler)
JDK 17+ Live Server
↓ .md

Objetivo

Variables, tipos, funciones y strings en Kotlin.

  • val (inmutable) vs var (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"
val / var fun String templates
↓ .md ↓ .kt

Objetivo

Condicionales, bucles y rangos en Kotlin.

  • if como expresión: val max = if (a > b) a else b
  • when: el switch de Kotlin, potente y expresivo
  • Bucles: for (i in 1..10), while, do-while
  • Rangos con step: 1..100 step 5, downTo
when for..in Rangos
↓ .md ↓ .kt

Objetivo

Eliminar NullPointerException con el sistema de tipos nullable y dominar colecciones.

  • Tipos nullable: String? vs String
  • Operadores: ?. (safe call), ?: (Elvis), !! (not-null assert)
  • Listas: listOf(), mutableListOf(), filter, map, find
  • Sets y Mapas: mapOf(), mutableMapOf()
Null-Safety Elvis ?: listOf / mapOf
↓ .md ↓ .kt

Objetivo

Dominar lambdas y operaciones funcionales sobre colecciones.

  • Funciones de orden superior: pasar funciones como parámetros
  • Lambdas: { x -> x * 2 } y sintaxis it
  • Operaciones funcionales: filter, map, reduce, groupBy, sortedBy
  • Encadenamiento fluido y legibilidad
Lambdas filter / map Funcional
↓ .md ↓ .kt

Objetivo

Clases, data classes, enums y principios de POO en Kotlin.

  • Clases: constructor primario, propiedades con val/var
  • data class: equals, hashCode, copy, toString automáticos
  • enum class con propiedades y métodos
  • Herencia con open y override, clases selladas (sealed)
  • Interfaces y companion object
data class sealed companion
↓ .md ↓ .kt

Objetivo

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.bat y ver informe de resultados
JUnit 5 Gradle @Test
↓ .md ↓ .kt

Objetivo

Guardar y recuperar datos entre ejecuciones con ficheros y JSON.

  • Leer y escribir ficheros con File.readText() / File.writeText()
  • Parseo CSV manual
  • Serialización JSON con Gson: toJson() / fromJson()
  • Gestión de errores al acceder a ficheros
File I/O JSON Gson
↓ .md ↓ .kt

Objetivo

Puente entre Kotlin de consola y el desarrollo Android nativo.

  • Diferencias entre Kotlin JVM y Kotlin Android
  • Concepto de Activity, ViewModel y ciclo de vida
  • Primer vistazo a Jetpack Compose vs XML layouts
  • Lo que ya sabes de Kotlin que aplica directamente en Android
Activity Compose intro Android Studio
↓ .md

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/.

Arquitectura por capas POO completa Tests JUnit JSON persistente Gradle
Proyecto completo en cursos/Curso Kotlin 1DAM/proyecto-final-kotlin/
Arranque: cd proyecto-final-kotlin && .\run.bat  ·  Tests: .\test.bat
↓ Guía completa

Curso PHP: guia y descargas

Backend real MySQL y APIs Flujo profesional

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
Temario por UT con la misma estructura clara del curso Java.
Guias y codigo conectados para estudiar cada paso con contexto.
Laboratorio integrado para leer, copiar, editar y probar.

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.

Cargando temario de PHP...

PHP · recorrido completo

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.

Abrir plataforma completa: retoma la última lección que dejaste abierta.
Empezar ruta base: comienza desde UT0 para recorrer todo PHP desde cero.
Sintaxis PHP

Variables, flujo, funciones y arrays.

Backend Web

Formularios, superglobales y sesiones.

MySQL y APIs

PDO, CRUD y endpoints REST.

Calidad

Seguridad, testing y proyecto final.

Guía conectada

Cada unidad abre el código y la explicación real del curso para estudiar el backend con contexto.

Código real

El alumno trabaja sobre los archivos `.php` y `.md` del curso tal como están preparados en el repositorio.

Laboratorio completo

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.

Fundamentos PHP

Hola mundo, sintaxis, variables, control de flujo, bucles y funciones.

Ir a fundamentos
Arrays y formularios

Estructuras de datos, cadenas, formularios y superglobales para empezar a construir backend real.

Ir a formularios y datos
Ficheros y POO

Persistencia en archivos, orientación a objetos y código mejor estructurado.

Ir a ficheros y POO
Arquitectura y MVC

Namespaces, Composer y MVC sencillo para avanzar hacia una organización más profesional.

Ir a arquitectura
MySQL y APIs

PDO, base de datos, consultas seguras y creación de APIs REST.

Ir a MySQL y APIs
Seguridad y proyecto final

Seguridad básica, PHPUnit y cierre del curso con proyecto final completo.

Ir a calidad y proyecto

Curso completo de Python · Aprende desde cero

¿Por qué aprender Python?

Rápido de aprender, útil de por vida.

Python es un lenguaje moderno y muy demandado, perfecto para empezar por su sintaxis clara. Se usa en IA, web, automatización y datos.

Aprendes rápido: menos “ruido” y más práctica desde el primer día.
Muy buscado: útil para proyectos reales y salidas laborales.
Productividad: automatiza tareas y crea herramientas propias en poco tiempo.
IA Automatización Desarrollo web Análisis de datos Scripts

Es un lenguaje interpretado: ves resultados rápido y puedes iterar sin fricción.

Herramientas necesarias

Instala esto y empieza hoy mismo.
Con esto podrás ejecutar, depurar y mejorar tu código con una experiencia profesional.

Resumen de la unidad
Objetivo + contenidos clave, en un vistazo.
Objetivo
🎯 Objetivo: entender cómo representar información en un programa y manipularla con seguridad usando variables y tipos de datos.
  • 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.
Al terminar, podrás crear scripts cortos que reciben datos, los transforman con seguridad y muestran resultados de forma clara.
Qué aprenderás en esta unidad
  • Variables y nombres: qué son, snake_case, reasignación y buenas prácticas.
  • Tipos básicos: int, float, str, bool y 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.

Resumen de la unidad
Objetivo + contenidos clave, en un vistazo.
Objetivo
🎯 Objetivo: comprender la toma de decisiones en un programa para responder a distintas situaciones de forma clara y mantenible.
  • 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.
Al terminar, podrás guiar el flujo de tu programa según los datos y las reglas del problema con decisiones limpias.
Qué aprenderás en esta unidad
  • 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) y bool().
  • Ternario: decisiones compactas en una línea ("OK" if cond else "NO").
  • match / case (3.10+): múltiples ramas legibles con comodín case _.

Resumen de la unidad
Objetivo + contenidos clave, en un vistazo.
Objetivo
🎯 Objetivo: comprender la iteración como herramienta para automatizar tareas repetitivas y procesar colecciones de datos.
  • 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.
Al terminar, podrás convertir conjuntos de datos en resultados útiles sin repetir código.
Qué aprenderás en esta unidad
  • 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, continue y else en bucles.
  • Bucles anidados: tablas de multiplicar y cuadrículas simples.
  • Comprensiones de listas: generar listas en una línea con filtro.

Resumen de la unidad
Objetivo + contenidos clave, en un vistazo.
Objetivo
🎯 Objetivo: comprender las funciones como piezas reutilizables que encapsulan una tarea para escribir programas más claros.
  • 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.
Al terminar, podrás transformar scripts lineales en programas modulares y fáciles de probar.
Qué aprenderás en esta unidad
  • 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.

Resumen de la unidad
Objetivo + contenidos clave, en un vistazo.
Objetivo
🎯 Objetivo: modelar datos reales con colecciones (listas y diccionarios) y recorrerlos para transformar, ordenar y resumir información.
  • 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.
Al terminar, convertirás colecciones en resúmenes comprensibles (inventarios, rankings).
Qué aprenderás en esta unidad
  • 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.

Resumen de la unidad
Objetivo + contenidos clave, en un vistazo.
Objetivo
🎯 Objetivo: entender la POO como forma de modelar el mundo con clases y objetos, separando responsabilidades.
  • 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.
Al terminar, convertirás requisitos en clases colaborando entre sí, listas para crecer.
Qué aprenderás en esta unidad
  • 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
Objetivo

Construir programas robustos que no se caigan ante errores, muestren mensajes claros y cierren recursos de forma segura.

Al terminar podrás convertir scripts frágiles en programas predecibles y fáciles de mantener.
Qué aprenderás
  • try/except básico: capturar y tratar errores esperados
  • Múltiples except y jerarquía de excepciones
  • else y finally: flujos de éxito y limpieza
  • raise y validación con mensajes descriptivos
  • Excepciones personalizadas para tu dominio
  • Reintento seguro con intentos limitados

Resumen de la unidad
Objetivo

Aprender a organizar y reutilizar código mediante módulos propios y librerías externas de Python.

Al terminar sabrás importar, crear y gestionar módulos como un profesional.
Qué aprenderás
  • import y from ... 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
Objetivo

Dominar la lectura y escritura de archivos en Python: texto, CSV, JSON y binarios.

Serás capaz de persistir datos y procesar archivos de cualquier formato.
Qué aprenderás
  • open(), read(), write()
  • Context manager with para archivos
  • Modos de apertura: r, w, a, b
  • Trabajar con CSV y JSON
  • Manejo de rutas con os.path y pathlib

Resumen de la unidad
Objetivo

Crear scripts de automatización para tareas del sistema operativo y administración.

Automatizarás tareas repetitivas como un DevOps profesional.
Qué aprenderás
  • Módulo os y shutil para 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
Objetivo

Conectar Python con bases de datos SQLite para almacenar y consultar información persistente.

Dominarás CRUD completo y consultas SQL desde Python.
Qué aprenderás
  • Módulo sqlite3 de 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
Objetivo

Escribir tests automáticos y depurar código de forma eficiente para garantizar calidad.

Desarrollarás código más robusto con técnicas profesionales de QA.
Qué aprenderás
  • Módulo unittest y pytest
  • Escribir tests unitarios y de integración
  • Debugger pdb y breakpoints
  • Logging y trazas de errores
  • TDD: Test Driven Development básico

Resumen de la unidad
Objetivo

Dominar Flask, el microframework web más popular de Python. Desde lo básico hasta proyectos completos con estructura profesional.

Construirás aplicaciones web reales, APIs REST y aprenderás arquitectura de proyectos.
Qué aprenderás
  • 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 completo
  • templates/ - 4 plantillas HTML
  • README.md - Documentación
Descargar .zip
Proyecto Avanzado

Estructura profesional con Blueprints, MVC y configuración separada.

  • app.py - Punto de entrada
  • config.py - Configuración
  • models.py - Modelos de datos
  • routes/ - Blueprints
  • templates/ - Vistas
Descargar .zip

Resumen de la unidad
Objetivo

Dominar Django, el framework web "batteries included" de Python. Aprenderás desde la configuración inicial hasta desplegar un proyecto completo.

Crearás aplicaciones web profesionales con ORM, admin, autenticación y middleware.
Qué aprenderás
  • 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ón
  • djpf/ - Configuración
  • settings.py
  • urls.py
  • core/ - App principal
  • views.py
  • templates/
  • middleware.py
Descargar .rar
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
Objetivo

Aplicar Flask, consumo HTTP y validación de peticiones en una mini API realista con mentalidad cliente-servidor.

Conecta rutas web, JSON, códigos HTTP y consumo de API en un ejercicio final de bloque.
Qué practicarás
  • 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

Python · recorrido completo

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.

Abrir plataforma completa: retoma la última lección que dejaste abierta.
Empezar ruta base: abre el curso desde el principio para seguir el recorrido recomendado.
Código real

Cada módulo enseña el archivo Python real del curso para estudiar exactamente el material que forma parte del temario.

Guía integrada

La explicación y las notas van al lado del código para estudiar con contexto, no como materiales sueltos.

Laboratorio con espacio

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.

Fundamentos

Variables, operadores, condicionales, bucles, funciones y colecciones para construir una base sólida.

Ir a fundamentos
POO y estructura

Clases, objetos, excepciones, módulos y ficheros para empezar a escribir Python más organizado.

Ir a POO y estructura
Automatización y datos

Automatización, bases de datos y flujo de trabajo con datos para pasar del script simple a tareas útiles.

Ir a automatización y datos
Testing y calidad

Buenas prácticas, pruebas y revisión de calidad para que el código no solo funcione, sino que sea mantenible.

Ir a testing y calidad
Web con Python

Flask y Django como entrada al desarrollo web con rutas, vistas, plantillas y estructura de proyecto.

Ir a web con Python
APIs y consumo HTTP

Llamadas HTTP, consumo de APIs y cierre del recorrido práctico con integración de servicios externos.

Ir a APIs

Curso Git & GitHub

Abrir dossier interactivo

¿Qué aprenderás?

Control de versiones profesional desde cero.

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.

Commits & ramas GitHub remoto Merge & conflictos Deshacer cambios Flujo profesional

Entorno necesario

Gratuito, disponible en todos los sistemas
  • 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
Guía examen Instalación rápida Git & GitHub · Control de versiones

¿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.

📦 Repositorio
Carpeta de tu proyecto + una subcarpeta oculta .git con el historial.
📸 Commit
Una foto de tus cambios con un mensaje que los describe.
🌿 Rama
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.
👉 Git ≠ GitHub: Git es la herramienta que corre en tu ordenador. GitHub (o GitLab / Bitbucket) son páginas donde guardas tu proyecto en la nube para compartirlo y colaborar con otros.
¿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).

Movimientos clave
  • 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)
Conceptos clave
  • Branch: línea de trabajo (main, feature/x)
  • HEAD: tu “puntero” actual
  • Upstream: la rama remota asociada (git push -u)
Checklist · ¿Listo para instalar?
  1. Entiendo las 4 cajas: Working, Staging, Local, Remote.
  2. Sé los pasos básicos: add → commit → push / pull.
  3. Trabajaré en main y 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
Mini-lab: abre una terminal y pega todo el bloque anterior. Comprueba con 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
Mini-lab: ejecuta el bloque. Verás una carpeta 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
Mini-lab: modifica 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
Mini-lab: crea la rama 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
¿Qué es upstream? Es la rama remota a la que tu rama local “apunta” por defecto. Tras 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>
⚠️ Cuidado: 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
Mini-lab: crea dos commits y usa 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.

Mapa mental
Flujo visual
Comandos filtrados
Decisiones
Simulaciones
Lab terminal
Errores típicos
Test final
Nueva pestaña Descargar

Haz clic en cada paso para ver el comando. Sigue el orden de arriba a abajo en tu terminal.

1
Clonar el repositorio
Trae el proyecto a tu equipo
Fork primero si quieres hacer push: ve a github.com/octocat/Hello-World → Fork → copia tu URL. Si no tienes permisos usa: 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
2
Crear una rama nueva
Nunca trabajes directo en main
git switch -c feature/mi-cambio
git branch --show-current
3
Hacer un commit
add → commit → ver historial
echo "Mi cambio" >> notas.txt
git add notas.txt
git commit -m "feat: agrego notas"
git log --oneline -n 3
4
Fusionar en main (merge)
Integra tu trabajo a la rama principal
git switch main
git merge feature/mi-cambio
git branch -d feature/mi-cambio
⚠️ Si hay conflicto: edita el archivo, elimina los marcadores <<<<<<<, y luego git add . && git commit
5
Subir a GitHub (push)
Sincroniza tu trabajo en la nube
git push -u origin main
6
Añadir .gitignore
Excluye archivos que no deben subirse
# 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.

bash — git-practica
user@git-practica:~$
git status git init git add . git commit git log git branch git switch -c git switch main git merge git push git pull git diff git restore git stash git reflog ↺ Reiniciar
Estado visual del repositorio Se actualiza con cada comando

Elige un modo arriba para comenzar el examen

Todos los archivos Markdown del curso, listos para descargar o previsualizar en el navegador.

Guía Práctica Examen
45–90 min · Nivel medio
Práctica Completa 45 min
45 min · Nivel medio-alto
Práctica Rápida 30 min
30 min · Nivel básico-medio
Práctica Rápida 20 min
20 min · Nivel básico
Práctica Rápida 10 min
10 min · Solo básico
Instalación Rápida Git
Guía de configuración inicial

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.

Nivel: inicio–medio 10–20 min por reto Español
Abrir en nueva pestaña
Si tu navegador bloquea contenido embebido, usa “Abrir en nueva pestaña”.
Ruta de Bases de Datos SQL · Modelado · JDBC Catálogo de cursos

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

1. SQL Nivel 0 para perder el miedo y empezar a consultar.
2. SQL Desde Cero SQLite para consolidar consultas y manipulación.
3. Modelado BBDD para entender por qué las tablas se diseñan así.
4. SQL Fundamentos como curso troncal más completo.
5. Java JDBC y Bases de Datos para aplicar SQL desde código real.
Catálogo más claro

Cada curso vive como una pieza independiente: explicación buena, acceso directo y sin mezclar materiales de niveles distintos.

Plataforma primero

El objetivo aquí no es repetir toda la teoría dentro de la zona privada, sino lanzar bien cada plataforma interactiva con contexto útil.

Ruta pedagógica

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.

Ideal para principiantes SQLite Biblioteca de práctica Laboratorio listo
Qué aporta este curso
  • 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.

Nivel inicial-intermedio Caso real de tienda Proyecto final Examen interactivo
Cuándo usarlo
  • 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.
Abrir plataforma interactiva

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.

Conceptual Entidades y relaciones 1FN, 2FN y 3FN Puente hacia SQL
Por qué merece entrar
  • 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.
Abrir plataforma interactiva

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.

Curso troncal UT0 a UT7 Teoría + ejercicios + apoyo Enfoque DAM/DAW
Qué lo hace fuerte
  • Orden didáctico muy claro por unidades.
  • Más serio para seguimiento de curso completo.
  • Muy útil como base principal del bloque SQL.
Abrir plataforma interactiva

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.

Java + SQLite JDBC real DAO y transacciones Aplicación de terminal
Cuándo tiene sentido
  • 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.
Abrir plataforma interactiva

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.

Bloques 01–03 funcionan con SQLite o MySQL. Bloques 04–99 requieren MySQL 8 vía Docker (docker-compose up -d en la raíz de la carpeta).

Diseño y creación de tablas con restricciones de integridad referencial.

.sql .md

Inserciones masivas, transacciones y rollback.

.sql .md

Consultas avanzadas: expresiones condicionales, joins complejos, agrupaciones y subconsultas.

.sql .md

Procedimientos almacenados, parámetros IN/OUT y lógica de negocio en la BD.

.sql .md

Recorrer filas de resultados con cursores y procesar fila a fila con lógica condicional.

.sql .md

Automatización de acciones en la BD al insertar, actualizar o eliminar registros.

.sql .md

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.

.sql

¿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

MySQL 8 Docker PL/SQL Triggers Cursores

Descargar reset DB
Ruta de Diseño de Software UML · Diagramas · Modelado 1º DAM

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?

1. Diseñas antes de codificar — menos errores de estructura.
2. El diagrama de clases = esquema de tu código Java.
3. Lo piden en exámenes oficiales de DAM.
4. Cualquier equipo de empresa lo usa para documentar.
5. Con draw.io practicas gratis, online, sin instalar nada.
Diagrama de Clases

El más importante. Representa tus clases Java, sus atributos, métodos y relaciones (herencia, composición).

Casos de Uso

Muestra qué puede hacer cada tipo de usuario en el sistema. Ideal para la fase de análisis de requisitos.

Diagrama de Secuencia

Muestra el orden de los mensajes entre objetos a lo largo del tiempo. Muy útil para depurar la lógica.

Diagrama de Actividad

Como un flujograma mejorado. Perfecto para representar algoritmos, procesos y flujos de decisión.

Herramienta recomendada: draw.io (diagrams.net)
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".
Practicar en draw.io

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.
Practicar en draw.io

C# Programación en C# · 1º DAM .NET 8 · Consola · Visual Studio

Abrir plataforma del curso

¿Qué aprenderás?

13 unidades desde cero hasta proyecto final tipo examen.

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.

.NET 8 POO completa Colecciones Ficheros CSV Excepciones Herencia Tipo examen

Entorno necesario

Todo se compila y ejecuta en Visual Studio
  • Visual Studio 2022 Community
    Workload: .NET desktop development
  • Solución del curso
    CSharp_1DAM/code/CSharp1DAM.sln
  • Ctrl+F5 — ejecutar sin depuración (recomendado)
README.md setup.md C# · 13 UTs · .NET 8

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ú.

Cargando temario de C#…

C# · Recorrido completo UT0–UT12

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.

Abrir plataforma completa: accede a la teoría con navegación por UTs.
Empezar desde UT0: recorre el curso desde el principio.
Tipos & Control

Variables, operadores, bucles y métodos.

POO Completa

Clases, herencia y polimorfismo.

Colecciones

List<T>, Dictionary y CSV.

Proyecto Final

App consola tipo examen 1º DAM.

Simulación real de examen 2 – 3 horas · sin internet 10 puntos

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?

1 Pon el temporizador y no mires las pistas durante la primera hora.
2 Si llevas más de 20 min bloqueado, consulta las pistas del enunciado.
3 Al terminar, puntúate tú mismo con la tabla de criterios.
4 Objetivo mínimo: 5 puntos sobre 10 (ver sección "versión mínima").

1º DAM

Java · Consola

Sistema de Parking

⏱ 2h

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.

Conceptos evaluados
Clase Vehiculo ArrayList LocalTime Duration Scanner
Versión mínima (5 pts): Clase Vehiculo correcta + entrada + salida con importe + listado.
Python · Consola

Biblioteca de Libros

⏱ 2h

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.

Conceptos evaluados
Diccionarios JSON Ficheros Búsqueda Menú
Versión mínima (5 pts): Añadir, listar y guardar en JSON.
SQL · Puro

Gestión de Empleados SQL

⏱ 2h

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.

Conceptos evaluados
DDL/DML JOINs GROUP BY Subconsultas Vistas
Versión mínima (5 pts): Tablas creadas correctamente + 3 consultas SELECT con JOIN.
2º DAM

Spring Boot

API REST Empleados

⏱ 3h

API REST con Spring Boot 3, JPA y H2. Entidades Departamento/Empleado (ManyToOne), CRUD completo, filtrado por departamento, validaciones y respuestas 404/400.

JPA H2 REST Capas
PHP + MySQL

Tienda Online

⏱ 2,5h

Tienda con catálogo de productos, carrito de sesión y panel de administración. Conexión a MySQL con PDO, CRUD de productos y control de sesiones.

PDO Sesiones CRUD MySQL
Node.js + Express

Gestión de Turnos

⏱ 2,5h

REST API con Express para un sistema de citas médicas: asignación automática, cancelación, listado por médico y estadísticas de ocupación.

Express REST Lógica Node
Java PSP

Servidor de Turnos (Hilos)

⏱ 3h

Servidor TCP multihilo con cola de espera compartida: múltiples clientes conectados simultáneamente, sincronización entre hilos y protocolo de comunicación socket.

Threads Sockets Sync TCP

🤖 Entrenamiento Libre con IA

Elige un lenguaje, un nivel y el ejercicio. Visualiza el reto y practícalo en el editor.

Parámetros del Reto
Esperando configuración

Describe tu ejercicio arriba y generaremos un enunciado detallado listo para programar.

Área de Ejecución Powered by Programiz
Compilador en Espera

Inicia el motor para probar tu solución

Plataformas & Editores Online

Abre cualquier herramienta directamente en el navegador — sin instalar nada.

11 herramientas Todas gratuitas

Metodología IA para Programación

Aprende a usar Claude Code, GitHub Copilot y Codex sin perder el aprendizaje real.

18 protocolos 3 herramientas 4 niveles N1→N4 6 documentos
🤖 Claude Code 🛸 GitHub Copilot ⚡ Codex / ChatGPT

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.

Abrir guía interactiva
Claude Code

Asistente de terminal. Explica, investiga y ejecuta bajo demanda. El alumno controla cuándo pedir ayuda.

6 protocolos pedagógicos
Pair programming asimétrico
Socrático inverso · Rompe mi código
GitHub Copilot

Asistente inline en el editor. Sugiere código mientras escribes. Requiere la disciplina de la pausa de 3 segundos.

6 protocolos pedagógicos
Configuración por nivel N1→N4
Completado consciente · /tests · /fix
Codex / ChatGPT

IA de OpenAI vía API o chat. Ideal para generar scaffolding, explorar alternativas y practicar prompts avanzados.

6 protocolos pedagógicos
Scaffolding controlado · Test-Driven
Reverse Engineering · Comparación
Mapa N1→N4
N1 · Iniciación — Solo Claude · Sin Copilot N2 · Intermedio — Copilot bajo demanda N3 · Avanzado — Las 3 herramientas N4 · Profesional — Sin restricciones
Mentor IA Te ayuda mientras estudias