Course - Mobile Programming - PROG2007
Mobile Programming
About
About the course
Course content
Do you want to design and build apps people actually use? In this course you will design for small screens, hook into sensors, handle flaky networks, and make interfaces that feel instant. You will learn how to keep data safe, respectful, and offline-ready, how to test what matters, and how to ship updates without breaking users. Expect hands-on labs, quick feedback cycles, and a portfolio-ready app that proves you can turn ideas into reliable, battery-friendly mobile software. We will treat AI and code generation as power tools: you will learn to spec precisely, verify outputs with tests and profiling, and use the AI tools to reach more ambitious features, without sacrificing privacy, security, or your own understanding.
Mobile Programming course develops practical competence in native mobile application development across various platforms. Students learn to design accessible interfaces for varied form factors; model state and navigation; and implement robust data flows that operate both online and offline. Core topics include interaction design for touch and motion, sensor integration, energy-aware performance, privacy-preserving data handling, and secure permission practices. The course emphasizes reliability through unit, UI, and property-based testing; observability and profiling for responsiveness and battery impact; and continuous delivery practices for safe releases. Ethical considerations, including user consent, accessibility, and responsible analytics, are integrated throughout. By the end, students can justify architectural decisions, measure and improve user-perceived performance, and deliver maintainable mobile software under real-world constraints. The course integrates AI-assisted development and code generation in a verification-first workflow. Students learn to formulate precise specifications, constrain tools, and audit outputs using tests, static analysis, and profiling. Emphasis is placed on privacy, security, licensing/provenance, and reproducibility (prompts as artifacts, deterministic builds, CI). Used well, these tools enable more ambitious scope while preserving accountability and engineering rigor.
Learning outcome
Note: R Remember, U Understand, A Apply, An Analyze, E Evaluate, C Create.
Knowledge
- Explain the architectural layers of mobile apps and describe core components and their responsibilities. (U)
- Characterize platform and device constraints (performance, energy, storage, permissions) and analyze their impact on design choices. (U,An)
- Explain networking models for mobile (online, offline-first, sync/conflict patterns) and data-handling implications. (U)
- Describe sensor capabilities and limitations, and explain security/privacy models for access and data use. (U)
- Summarize accessibility requirements and inclusive design principles for small-screen interactions. (U)
- Discuss ethical and societal impacts of mobile software (consent, tracking, dark patterns, persuasive design). (U,E)
Skills
- Design adaptive, accessible interfaces for varied form factors and interaction modes (touch, motion, voice) and justify key decisions. (A,E)
- Model and implement state, navigation, and robust data flows that operate both online and offline, including analyzing sync and conflict trade-offs. (A,An)
- Integrate sensors and background tasks safely; enforce secure permission practices and data minimization. (A,E)
- Measure and optimize responsiveness, startup time, memory, network use, and battery impact using profiling/telemetry; prioritize fixes based on evidence. (An,E)
- Implement unit, UI, and property-based tests; set up CI/CD and execute staged releases with rollback criteria. (A,An)
- Diagnose production issues via logs/metrics/crash reports and formulate corrective changes. (An,E)
- Employ AI/code generation in a verification-first workflow: specify requirements precisely, audit outputs with tests/static analysis/profiling, and document provenance and limits. (A,E)
- Communicate through code reviews and technical notes, providing and incorporating actionable feedback. (A,E)
General competence
- Evaluate architectural alternatives under real-world constraints (latency, privacy, energy, usability) and defend the chosen approach with evidence. (An,E)
- Collaborate effectively in a mobile dev team: plan iterations, manage backlog/versions, and facilitate peer review. (A,E)
- Assess privacy, security, accessibility, and sustainability implications of design and analytics choices; formulatemitigation strategies. (E)
- Create a maintainable, portfolio-ready mobile application and reflect on lessons learned. (C,E)
Learning methods and activities
We use a blended learning approach in which we mix conventional lectures, as well as tutorials and lab exercises and group work with online lectures and learning materials.
Additional course information:
- Online resources and MOOC/Flipped classroom supported learning are used in this course.
- Project work: student will receive an overview of the mobile development process on a range of devices, but will select Android for in depth study. It would be beneficial for the student to have access to a personal Android mobile device, for on-device testing.
Compulsory assignments
- Compulsory assignments
Further on evaluation
Final exam (on-campus, 3 hours, 100%)
- Format: Written, electronic, on campus.
- Permitted aids: None.
- Grading: Letter grade A-F.
- Resit: August resit.
Mandatory coursework (must be approved for exam admission)
- Scope: One compulsory assignment.
- Validity: Valid for 2 years from approval.
- Resit: No resit for the coursework.
Specific conditions
Admission to a programme of study is required:
Computer Science - Engineering (BIDATA) - some programmes
Digital Infrastructure and Cyber Security (BDIGSEC)
Programming (BPROG)
Recommended previous knowledge
- IPROG1003 Object Oriented Programming or equivalent
- IDATG2102 Algorithmic methods
Required previous knowledge
- PROG1001 Fundamental Programming or equivalent
- Java programming
Course materials
Web resources, tutorials, and guides documents for iOS and Android.
Subject areas
- Computer Science