Tiempo total previsto de aprendizaje: 150 horas (90 horas de estudio y 60 horas de prácticas y trabajo en el proyecto).
PRERREQUISITOS Y CONOCIMIENTOS PREVIOS RECOMENDADOS
Se recomienda que los estudiantes posean:
- Conocimientos sólidos de programación, preferentemente en lenguaje Python.
- Conocimientos básicos de bases de datos relacionales y de SQL.
- Conocimientos básicos de redes de ordenadores, en especial de los protocolos de nivel de transporte (TCP, UDP) y red (IP), así como del servicio de DNS.
- Conocimientos básicos de criptografía.
DESCRIPCIÓN GENERAL DEL CURSO
El objetivo de este curso es aprender a desarrollar aplicaciones Web. Para ello, se trabajará en los siguientes aspectos:
- Los protocolos HTTP y HTTPS, mediante los cuales los clientes y servidores Web se comunican.
- Los lenguajes HTML y CSS, mediante los cuales se construyen las páginas Web.
- El lenguaje JavaScript, mediante el cual se puede dotar de un comportamiento dinámico a las páginas Web.
- La programación de la lógica de la aplicación en el lado del servidor mediante el patrón modelo-vista-controlador. En concreto, se empleará el framework Flask en lenguaje Python.
- El almacenamiento y acceso a los datos de la aplicación mediante un sistema de mapeo objeto-relacional. En concreto, se empleará SQLAlchemy.
- El desarrollo de aplicaciones Web seguras, conociendo las principales vulnerabilidades que pueden afectar a las aplicaciones Web y cómo proteger las aplicaciones frente a ellas.
- Otros aspectos, a un nivel introductorio: desarrollo de aplicaciones Web escalables y comunicación entre código JavaScript y el servidor Web mediante XMLHttpRequest.
OBJETIVOS: CONOCIMIENTOS Y CAPACIDADES
El principal objetivo del curso es aprender a desarrollar aplicaciones Web conformes al patrón modelo-vista-controlador con almacenamiento de datos en bases de datos relaciones.
Tras finalizar con éxito el curso el estudiante debe ser capaz de:
- Crear páginas Web con el lenguaje HTML y dotarlas de apariencia visual mediante CSS.
- Programar pequeños fragmentos de código JavaScript para añadir interactividad o dinamismo a estas páginas Web.
- Programar la lógica del servidor de una aplicación Web compleja mediante el patrón modelo-vista-controlador.
- Acceder a una base de datos relacional mediante un sistema de mapeo objeto-relacional.
- Entender los problemas de seguridad que pueden afectar a una aplicación Web y prevenirlos.
MATERIAL DOCENTE
El material docente teórico se compone conjuntos de transparencias acerca de los siguientes aspectos:
- Introducción a la Web.
- El protocolo HTTP.
- El protocolo TLS.
- Introducción a HTML.
- Introducción a CSS.
- Introducción a JavaScript.
- Desarrollo de aplicaciones Web con Flask.
- Seguridad en Aplicaciones Web.
- AJAX y Escalabilidad.
ACTIVIDADES DE EVALUACIÓN O TAREAS PRÁCTICAS
Se espera que los estudiantes, con el objetivo de llevar a la práctica y afianzar los contenidos teóricos enumerados en el apartado anterior, trabajen en 7 prácticas:
- Práctica 1: HTTP y TLS.
- Práctica 2: HTML y CSS.
- Práctica 3: Desarrollo de una aplicación Web con Flask (I)
- Práctica 4: Desarrollo de una aplicación Web con Flask (II)
- Práctica 5: Desarrollo de una aplicación Web con Flask (III)
- Práctica 6: Desarrollo de una aplicación Web con Flask (IV)
- Práctica 7: JavaScript
Las prácticas 2 a 6 están encadenadas, de tal forma que los estudiantes irán construyendo, poco a poco y de forma guiada, una aplicación Web completa de una red social de microblogging tipo Twitter.
Por otra parte, una vez terminadas estas prácticas, los estudiantes deben desarrollar, como proyecto global del curso, la aplicación Web de un parque zoológico. En ella, los usuarios podrán navegar las fichas de los distintos animales del parque, obtener información acerca de las actividades que este organiza e inscribirse en dichas actividades.
La evaluación se completa con dos pequeños exámenes parciales y un examen final.