5.14. CS2B1. Desarrollo Basado en Plataformas (Obligatorio)
- Semestre: 3er Sem. Créditos: 3
- Horas del curso: Teoría: 1 horas; Práctica: 2 horas; Laboratorio: 2 horas;
-
Prerrequisitos:
- CS112. Programación Orientada a Objetos I (2do Sem)
5.14.1. Justificación
El desarrollo basado en plataformas se enfoca en el diseño y la implementación de aplicaciones dentro de entornos informáticos específicos. Este curso utiliza el marco de Proceso y Diseño de Software (SPD) para explorar las restricciones y capacidades únicas de las plataformas Web, Móviles e Interactivas. Los estudiantes aprenderán a aplicar preocupaciones arquitectónicas compartidas y APIs específicas de plataforma para construir soluciones de software robustas, escalables y centradas en el usuario.
5.14.2. Objetivos Generales
- 1.
- Comprender los aspectos compartidos y las restricciones únicas de las plataformas modernas.
- 2.
- Desarrollar aplicaciones profesionales para entornos Web y Móviles.
- 3.
- Aplicar principios de computación interactiva para mejorar la experiencia del usuario.
- 4.
- Diseñar arquitecturas de software que aprovechen los servicios específicos de la plataforma.
5.14.3. Contribución a los resultados (Outcomes)
-
AG-C09) Diseño y Desarrollo de Soluciones: Diseña, implementa y evalúa soluciones para problemas complejos de computación. (Usage)
-
AG-C04) Comunicación: Se comunica de forma efectiva en actividades complejas de computación. (Usage)
5.14.4. Contenido
5.14.4.1. Aspectos Comunes I: Plataformas, APIs y Restricciones (5 horas) [Habilidades AG-C04,AG-C09]
Referencias Bibliográficas: [Fielding, 2000, Gasca, 2021]
Temas
- 1.
- Visión general de las plataformas de desarrollo (es decir, web, móvil, juegos, robótica, embebida e
interactiva).
- a)
- Entrada/sensores/dispositivos de control/dispositivos hápticos
- b)
- Limitaciones de recursos
- 1)
- Computacional
- 2)
- Almacenamiento de datos
- 3)
- Memoria
- 4)
- Comunicación
- c)
- Requisitos - seguridad, disponibilidad de tiempo de actividad, tolerancia a fallos Ingeniería de Software (SE) -Reliability,SEC-Engineering
- d)
- Salida/actuadores/dispositivos hápticos
- 2.
- Programación mediante Interfaces de Programación de Aplicaciones (API) específicas de la plataforma vs construcción de aplicaciones tradicional
- 3.
- Programación bajo restricciones y requisitos de la plataforma (por ejemplo, herramientas de desarrollo disponibles, desarrollo, consideraciones de seguridad) Seguridad (SEC) -Foundations
Aprendizaje esperado (Learning Outcomes)
- 1.
- Enumerar las restricciones de la programación móvil [Listar/Enumerar]
5.14.4.2. Aspectos Comunes II: Lenguajes de Plataforma y Patrones Web (3 horas) [Habilidades AG-C04,AG-C09]
Referencias Bibliográficas: [Fielding, 2000, Gasca, 2021]
Temas
- 1.
- Visión general de los Lenguajes de plataforma (por ejemplo, Python, Swift, Lua, Kotlin)
- 2.
- Técnicas para aprender y dominar un lenguaje de programación específico de la plataforma
Aprendizaje esperado (Learning Outcomes)
- 1.
- Enumerar las características de los lenguajes de scripting [Listar/Enumerar]
- 2.
- Describir el modelo de tres capas (three-tier) de la programación web [Describir]
- 3.
- Describir cómo se mantiene el estado en la programación web [Describir]
5.14.4.3. Frontend, Frameworks y Estándares Web (12 horas) [Habilidades AG-C04,AG-C09]
Referencias Bibliográficas: [Flanagan, 2020, Duckett, 2014, Fielding, 2000]
Temas
- 1.
- Lenguajes de programación web (por ejemplo, HTML5, JavaScript, Typescript, CSS)
- 2.
- Plataformas, frameworks o meta-frameworks web
- a)
- Servicios en la nube
- b)
- API, Componentes Web (Web Components)
- 3.
- Software como Servicio (SaaS)
- 4.
- Estándares web como el modelo de objetos del documento (DOM), accesibilidad Interacción Humano-Computadora (HCI) -AccessibilityInclusiveDesign
- 5.
- Consideraciones de Seguridad y Privacidad Sociedad, ética y la Profesión (SEP) -Security
Aprendizaje esperado (Learning Outcomes)
- 1.
- Comparar y contrastar la programación web con la programación de propósito general [Comparar]
- 2.
- Describir las diferencias entre Software-como-Servicio (SaaS) y productos de software tradicionales [Describir]
- 3.
- Discutir cómo los estándares web impactan el desarrollo de software [Debatir]
- 4.
- Evaluar una aplicación web existente contra los estándares web actuales [Evaluar]
5.14.4.4. Plataformas Móviles I: Fundamentos del Desarrollo (6 horas) [Habilidades AG-C04,AG-C09]
Referencias Bibliográficas: [Deitel and Deitel, 2017, Hellman, 2013]
Temas
- 1.
- Desarrollo con
- a)
- Lenguajes de programación móvil
- b)
- Entornos de programación móvil
- 2.
- Restricciones de la plataforma móvil
- a)
- Diseño de interfaz de usuario Interacción Humano-Computadora (HCI) -UnderstandingUser
- b)
- Seguridad
- 3.
- Acceso
- a)
- Acceso a datos a través de APIs Gestión de Datos (DM) -QueryConstruction
- b)
- Diseño de puntos finales de API (endpoints) para aplicaciones móviles: trampas y consideraciones de diseño
- c)
- Interfaces de red y web Redes y Comunicaciones (NC) -Fundamentals,DM-DataModeling
Aprendizaje esperado (Learning Outcomes)
- 1.
- Comparar la programación móvil con la programación de propósito general [Comparar]
- 2.
- Evaluar los pros y los contras del desarrollo de aplicaciones móviles nativas y multiplataforma [Evaluar]
5.14.4.5. Plataformas Móviles: Arquitectura y Restricciones (3 horas) [Habilidades AG-C04,AG-C09]
Referencias Bibliográficas: [Deitel and Deitel, 2017, Hellman, 2013]
Temas
- 1.
- Desarrollo
- a)
- Desarrollo nativo (native) versus multiplataforma (cross-platform)
- b)
- Patrones de diseño/arquitectura de software para aplicaciones móviles Ingeniería de Software (SE) -Design
- 2.
- Restricciones de la plataforma móvil
- a)
- Diseño de interfaz de usuario responsivo (responsive) Interacción Humano-Computadora (HCI) -AccessibilityInclusiveDesign
- b)
- Heterogeneidad y movilidad de los dispositivos
- c)
- Diferencias en las experiencias de usuario (por ejemplo, entre aplicaciones móviles y basadas en web)
- d)
- Compensación (tradeoff) entre energía y rendimiento
- 3.
- Especificación y pruebas Fundamentos de Desarrollo de Software (SDF) -Practices,SE-Validation
Aprendizaje esperado (Learning Outcomes)
- 1.
- Desarrollar una aplicación móvil consciente de la ubicación con integración de API de datos [Crear]
- 2.
- Construir una aplicación móvil impulsada por sensores capaz de registrar datos en un servidor remoto [Crear]
- 3.
- Crear una aplicación de comunicación que incorpore telefonía y mensajería instantánea [Crear]
5.14.4.6. Plataformas Móviles: Capacidades y Computación Asíncrona (3 horas) [Habilidades AG-C04,AG-C09]
Referencias Bibliográficas: [Deitel and Deitel, 2017, Hellman, 2013]
Temas
- 1.
- Capacidades (affordances) de la computación móvil
- a)
- Aplicaciones conscientes de la ubicación (location-aware)
- b)
- Computación impulsada por sensores (por ejemplo, giroscopio, acelerómetro, datos de salud
de un reloj)
- c)
- Telefonía y mensajería instantánea
- d)
- Realidad aumentada Gráficos y Técnicas Interactivas (GIT) -Immersion
- 2.
- Computación asíncrona Computación Paralela y Distribuida (PDC) -Algorithms
- a)
- Diferencia con la programación síncrona tradicional
- b)
- Manejo del éxito mediante devoluciones de llamada (callbacks)
- c)
- Manejo de errores de forma asíncrona
- d)
- Pruebas de código asíncrono y problemas típicos en las pruebas
Aprendizaje esperado (Learning Outcomes)
- 1.
- Desarrollar una aplicación móvil consciente de la ubicación con integración de API de datos [Crear]
- 2.
- Construir una aplicación móvil impulsada por sensores capaz de registrar datos en un servidor remoto [Crear]
- 3.
- Crear una aplicación de comunicación que incorpore telefonía y mensajería instantánea [Crear]
5.14.4.7. SPD-SEP/Interactiva (10 horas) [Habilidades AG-C04,AG-C09]
Referencias Bibliográficas: [Duckett, 2014, Deitel and Deitel, 2017]
Temas
- 1.
- Pautas éticas al usar modelos de IA para ayudar en el periodismo y la creación de contenido
- 2.
- Rendición de cuentas (accountability) por las salidas generadas por IA
- 3.
- Comportamiento entre programadores de prompts (prompt programmers) y desarrolladores de IA
- 4.
- Confianza con el público al usar modelos de IA
Aprendizaje esperado (Learning Outcomes)
- 1.
- Indicar un marco para la rendición de cuentas (accountability) en el despliegue de modelos de IA, incluyendo documentación clara y atribución [Evaluar]
- 2.
- Discutir códigos de conducta éticos y estándares profesionales relevantes para la programación de prompts (prompt programming) y el desarrollo de IA [Debatir]
- 3.
- Crear planes y materiales de comunicación para educar al público sobre las capacidades, limitaciones y salvaguardas éticas de la IA [Crear]
5.14.4.8. Plataformas Interactivas de Datos y Análisis (6 horas) [Habilidades AG-C04,AG-C09]
Referencias Bibliográficas: [Flanagan, 2020]
Temas
- 1.
- Plataformas de Cuadernos Computacionales (por ejemplo, Cuadernos Jupyter; Google Colab; R; SPSS; Observable)
- 2.
- Plataformas de Análisis de Datos y SQL en la Nube (por ejemplo, BigQuery) Gestión de Datos (DM)
-QueryConstruction
- a)
- Apache Spark
- b)
- Visualizaciones de Datos Gráficos y Técnicas Interactivas (GIT) -Visualization
- 3.
- Presentaciones Interactivas Respaldadas por Datos
- 4.
- Herramientas de Diseño con Bucles de Retroalimentación de Baja Latencia (Low-Latency Feedback
Loops)
- a)
- Herramientas de renderizado
- b)
- Herramientas de diseño gráfico
Aprendizaje esperado (Learning Outcomes)
- 1.
- Analizar grandes conjuntos de datos de forma interactiva [Analizar]
- 2.
- Crear una pista de acompañamiento para una interpretación musical, como la codificación en vivo (live coding) [Crear]
- 3.
- Crear cuadernos computacionales convincentes que construyan una narrativa para un objetivo/historia periodística dada [Crear]
- 4.
- Implementar código interactivo que use un conjunto de datos y genere gráficos exploratorios [Implementar]
- 5.
- Contextualizar los atributos de diferentes estilos de análisis de datos, como interactivo versus tubería (pipeline) de ingeniería [Contextualizar]
- 6.
- Escribir un programa usando una plataforma de computación de cuadernos (por ejemplo, búsqueda, ordenación o manipulación de grafos) [Escribir]