Grado en International Computer Engineering La Salle Campus Barcelona

Grado en International Computer Engineering

El Grado en Ingeniería Informática de La Salle es el único programa de grado en Barcelona que te proporcionará las habilidades y el conocimiento para dar respuesta a las necesidades internacionales del sector de la informática y de los negocios.

Programación de dispositivos móviles

Descripción: 

Programación de Dispositivos Móviles introduce el desarrollo de aplicaciones nativas para iOS con Swift, Xcode y UIKit. La asignatura acompaña al estudiante desde la creación del primer proyecto y la construcción de interfaces adaptables hasta la integración de datos, servicios de red y funcionalidades propias del dispositivo.

El recorrido es eminentemente práctico: cada bloque se concreta en un ejercicio que amplía una aplicación de referencia y prepara el proyecto final. Se trabajan la arquitectura y el ciclo de vida, la navegación, las listas y colecciones, los permisos, la geolocalización y los mapas, la concurrencia, la persistencia y la seguridad, la cámara y los sensores, la localización, las notificaciones, las Live Activities y HealthKit. El curso se cierra con una primera aproximación a SwiftUI y a la convivencia entre tecnologías.

El objetivo es que el estudiante comprenda el proceso completo de construcción de una app iOS robusta, usable y mantenible, y que pueda tomar decisiones técnicas justificadas en un contexto profesional.

Tipo asignatura
Obligatoria no de Primer
Semestre
Primero
Curso
4
Créditos
4.00

Profesores Titulares

Conocimientos previos: 

Para seguir la asignatura con aprovechamiento se recomienda que el estudiante tenga:

• Conocimientos básicos de programación orientada a objetos.

• Familiaridad con estructuras de datos, algoritmos y gestión de errores.

• Nociones de arquitectura cliente-servidor, servicios web y acceso a datos.

• Conocimientos generales de diseño de interfaces, usabilidad y experiencia de usuario.

No es necesaria experiencia previa con Swift, Xcode ni desarrollo para iOS.

Objetivos: 

Los objetivos de la asignatura son:

• Dominar los fundamentos de Swift y utilizar Xcode con solvencia para crear, depurar y probar aplicaciones iOS.

• Diseñar interfaces adaptables y accesibles con UIKit, Storyboards, Auto Layout, UITableView y UICollectionView.

• Estructurar una aplicación mediante responsabilidades claras, patrones de diseño y mecanismos de navegación adecuados.

• Consumir servicios remotos, decodificar datos y gestionar operaciones asíncronas y dependencias de terceros.

• Persistir datos y tratar información sensible con los mecanismos adecuados, incluidos Core Data y Keychain.

• Integrar permisos y capacidades del sistema de forma responsable: ubicación, mapas, cámara, sensores, notificaciones, actividad en segundo plano y datos de salud.

• Aplicar criterios de UI/UX, localización, eficiencia, privacidad y calidad de código durante todo el desarrollo.

• Planificar, documentar, presentar y defender en equipo una aplicación iOS completa.

Contenidos: 

Los contenidos se organizan en una secuencia progresiva:

• Fundamentos de iOS y entorno de trabajo. Ecosistema Apple, iOS y UIKit; Xcode, proyectos, targets, schemes, simulador y dispositivo físico; Storyboards, conexiones, Auto Layout, safe areas, stack views y adaptabilidad.

• Swift aplicado a UIKit. Tipos, opcionales, colecciones, control de flujo, funciones, closures, structs, clases, enums, protocolos, extensiones, errores, ARC e introducción a async/await.

• Arquitectura, ciclo de vida y navegación. Responsabilidades de vistas y controladores, MVC y colaboradores, ciclo de vida de la app y de las escenas, navegación con tabs, stacks, segues y presentaciones modales, paso de datos y comunicación entre componentes.

• Interfaces basadas en datos. UITableView y UICollectionView, celdas reutilizables, XIBs, self-sizing, data sources clásicos y diffable, snapshots, flow layout y compositional layout.

• Privacidad, ubicación y mapas. Permisos y purpose strings, Core Location, calidad de los datos de posición, consumo responsable de batería, MapKit, anotaciones y pruebas en simulador y dispositivo.

• Red y dependencias. Swift Package Manager, resolución de versiones, Alamofire, Codable, concurrencia, gestión de errores, modelos de transporte y de dominio, carga y caché de imágenes.

• Persistencia y seguridad. UserDefaults, archivos y Codable, Core Data, consultas, migraciones, repositorios y Keychain.

• Capacidades del dispositivo e internacionalización. Fotos, cámara, sensores, gestión de recursos, catálogos de strings, formatos locales, Dynamic Type y diseño adaptable a distintos idiomas.

• Notificaciones y ejecución en segundo plano. Notificaciones locales y remotas, permisos, categorías y acciones, BackgroundTasks y Live Activities.

• Datos de salud. HealthKit, disponibilidad, autorización, tipos, unidades, consultas, estadísticas y estados sin datos.

• Introducción a SwiftUI. Programación declarativa, composición de vistas, estado, bindings, listas e interoperabilidad con UIKit.

Metodología: 

La asignatura combina explicación conceptual, demostraciones, práctica guiada y trabajo autónomo dentro de un enfoque de aprendizaje basado en proyectos.

• Sesiones presenciales: 14 sesiones de 3 horas. Cada sesión introduce los conceptos esenciales y dedica la mayor parte del tiempo a aplicarlos con Xcode.

• Ejercicios progresivos: los hands-on labs semanales amplían una aplicación de referencia y exigen probar los casos normales, los errores, los permisos denegados, los estados vacíos y distintas configuraciones de dispositivo.

• Aprendizaje autónomo: el estudiante consulta documentación, contrasta alternativas y resuelve problemas con la orientación del profesorado.

• Proyecto final por parejas: se desarrolla una app iOS completa. Antes de programarla, el equipo valida el concepto, las API y SDK necesarios y un diseño integral de las pantallas. El seguimiento se realiza mediante puntos de control y entrevistas breves.

La metodología pone el acento en la práctica deliberada, la justificación de las decisiones y la capacidad de transformar requisitos en un producto funcional.

Evaluación: 

La evaluación es continua y combina la adquisición de conocimientos con su aplicación en un proyecto completo.

Nota final = 30 % conocimientos y ejercicios semanales + 70 % trabajo práctico y proyecto final.

• Conocimientos y ejercicios semanales (30 %): actividades individuales vinculadas a los bloques del temario. Se valoran la corrección funcional, la comprensión, la calidad del código, la capacidad de diagnóstico y la entrega en el plazo y formato establecidos.

• Trabajo práctico y proyecto final (70 %): desarrollo por parejas de una app iOS funcional que integre, como mínimo, una API accesible por HTTP, autenticación de usuarios, un SDK o capacidad del dispositivo y una interfaz completa preparada para un uso real. Incluye diseño previo, memoria, entrega del código y defensa del trabajo.

Es necesario entregar todas las actividades obligatorias y el proyecto final para superar la asignatura. Los trabajos deben presentarse a través de eStudy, siguiendo la nomenclatura y las normas de originalidad indicadas.

Uso de inteligencia artificial (escala AIAS)

  • Ejercicios prácticos semanales (hands-on) realizados y evaluados íntegramente en el aula o laboratorio (40%): Nivel 1 (sin IA). Deberán completarse sin ayuda de herramientas de inteligencia artificial generativa.
  • Proyecto final de desarrollo de una aplicación y proyecto de recuperación (60%): Nivel 2 (planificación con IA). La IA solo podrá utilizarse durante la ideación, exploración inicial, organización y planificación del trabajo. No podrá utilizarse para generar, completar, corregir o reescribir el código, la documentación ni ninguna otra parte del producto entregado.
  • Demostración, presentación y defensa individual del proyecto: Nivel 1 (sin IA).

Todo uso permitido de IA deberá declararse en la entrega, indicando la herramienta utilizada, su finalidad y los prompts o instrucciones introducidos. El uso de IA que exceda el nivel indicado, o su utilización sin declararla, se considerará un incumplimiento de las normas de honestidad académica. El alumnado será responsable de la autoría, exactitud y funcionamiento de todo el material entregado.

Criterios evaluación: 

Las evidencias de evaluación se valoran según los siguientes criterios:

• Funcionamiento y robustez: la aplicación cumple los requisitos, gestiona errores y estados alternativos y puede ejecutarse en el dispositivo objetivo.

• Swift y calidad del código: uso correcto de tipos, opcionales, colecciones, concurrencia, gestión de errores y memoria; código legible y coherente.

• Arquitectura: responsabilidades bien separadas, navegación comprensible, modelos adecuados y dependencias encapsuladas.

• Datos y servicios: integración correcta de la API, decodificación, persistencia y protección de la información sensible.

• Integración con iOS: permisos contextuales, uso justificado de frameworks y capacidades, y comportamiento correcto ante cambios de disponibilidad o autorización.

• UI/UX: interfaz completa, adaptable, localizable, accesible y coherente con las convenciones de la plataforma.

• Proceso y comunicación: cumplimiento de los puntos de control, pruebas, documentación, presentación, capacidad para justificar las decisiones y contribución equilibrada del equipo.

Bibliografía básica: 

• Apple. Xcode Documentation. https://developer.apple.com/documentation/xcode

• Apple. UIKit Documentation. https://developer.apple.com/documentation/uikit

• Apple. Human Interface Guidelines. https://developer.apple.com/design/human-interface-guidelines/

• The Swift Project. The Swift Programming Language. https://docs.swift.org/swift-book/documentation/the-swift-programming-language/

Material complementario: 

• Apple. SwiftUI Documentation. https://developer.apple.com/documentation/swiftui

• Apple. URL Loading System. https://developer.apple.com/documentation/foundation/url-loading-system

• Apple. Core Data. https://developer.apple.com/documentation/coredata

• Apple. MapKit. https://developer.apple.com/documentation/mapkit

• Apple. UserNotifications. https://developer.apple.com/documentation/usernotifications

• Apple. HealthKit. https://developer.apple.com/documentation/healthkit