[major=SE | course_id=PRM393 | syllabus_id=13822 | semester=8 | combo=core | title=Mobile Programming]
Course ID: PRM393
Title EN: Mobile Programming
Title VI: Lập trình di động
Credits: 3.0
Prerequisites: PRO192
Description: 1. Understand the fundamental concepts of mobile programming with Flutter and Dart.
2. Experience using popular widgets and plugins to build cross-platform user interfaces.
3. Knowledge of state management, form handling, and navigation between screens in mobile applications.
4. Learn and apply asynchronous programming techniques with Future and async/await.
5. Ability to integrate RESTful APIs to exchange data between mobile applications and servers, as well as store data locally using SharedPreferences and SQLite.
6. Proficient in using Dart libraries and command-line tools to optimize the application development process.
7. Knowledge of implementing mobile notification systems, including local and push notifications.
Student tasks: - Students must attend more than 80% of contact sessions in order to be accepted to the final examination.
- Student is responsible to do all assigned exercises given by instructor in class or at home and submit on time
- Use laptop in class only for learning purpose
- Promptly access to the FU LMS at http://lms.fpt.edu.vn for up-to-date course information
Tools: - Android Studio + Flutter SDK + Dart SDK (Latest Version)
- Virtual device attached android studio (or other virtual device), android mobile (only for learning, not for exam - optional)
- Laptop: 16GB RAM, 25GB free space before installing studio
Note:
- Install all neccessary tools before the first slot of the course
Course type: coursera_hybrid
Decision: 1402/QĐ-ĐHFPT dated 12/12/2025
Approved date: 2025-12-12
CLO1: Understand the fundamental concepts of mobile programming with Flutter and Dart.
[1] category=Practical Exam; type=on-going; weight=25.0; duration=90'/each; question_type=All CLOs; grading_guide=studied chapters knowledge and skills; completion_criteria=; clos=4
[2] category=Progress Test; type=on-going; weight=15.0; duration=Option 1: 30'; Option 2 (For Constructivism Approach only): Follow lecturer's proposal; question_type=PT1: CLO1, CLO2, CLO3;
PT2: CLO3, CLO4, CLO5;
PT3: CLO5 CLO6,CLO7; grading_guide=studied chapters knowledge and skills; completion_criteria=; clos=>0
[3] category=Project; type=on-going; weight=30.0; duration=Option 1: At home; Option 2 (For Constructivism Approach only): Follow lecturer's proposal; question_type=All CLOs; grading_guide=All chapters; knowledge and skills of mobile programming; completion_criteria=; clos=>0
[4] category=Final exam; type=Final exam; weight=30.0; duration=60'; question_type=All CLOs; grading_guide=All chapters; knowledge and skills of mobile programming; completion_criteria=; clos=4
[1] desc=Mastering Flutter: Learn to Develop Flutter Apps for iOS, Android, Desktop and Web; author=Kevin Moore; publisher=BPB Publications; edition=1st; isbn=9789365899177; main=True; online=; note=
[2] desc=Beginning App Development with Flutter: Create Cross-Platform Mobile Apps; author=Rap Payne; publisher=Apress; edition=1st; isbn=9781484251805; main=; online=True; note=
[3] desc=Developing Mobile Apps with Flutter Specialization; author=IBM Skills Network Team; publisher=Coursera; edition=; isbn=; main=; online=True; note=https://www.coursera.org/specializations/developing-mobile-apps-with-flutter
[4] desc=E-learning Platforms; author=; publisher=; edition=; isbn=; main=; online=True; note=https://flutter.dev https://docs.flutter.dev https://dart.dev/guides/language/language-tour https://github.com/flutter/samples
Session 1: Flutter Overview & Environment Setup
Topic: Offline; Teaching type: CLO1; LO: ITU
ITU: M1 – Introduction to Flutter. Reference: Ch.1 Getting Started, tooling, project structure.
Materials: PRM393
Download: https://flm.fpt.edu.vn/gui/role/student/Verify setups; troubleshoot common install issues; walk-through run configurations.

Session 2: Project Structure & Tooling
Topic: Offline; Teaching type: CLO1, CLO6; LO: TU
ITU: M1 – Introduction to Flutter. Reference: Ch.1 Getting Started, tooling, project structure
Download: https://flm.fpt.edu.vn/gui/role/student/Explain folder structure; demonstrate build flavors; answer Q&A.

Session 3: Hot Reload/Restart & Widget Tree
Topic: Offline; Teaching type: CLO1, CLO6; LO: TU
ITU: M1 – Introduction to Flutter. Reference: Ch.1 Getting Started, tooling, project structure.
Download: https://flm.fpt.edu.vn/gui/role/student/Demo hot reload/hot restart; show DevTools widget inspector.

Session 4: Basic UI Composition with Scaffold
Topic: Offline; Teaching type: CLO1, CLO6; LO: TU
ITU: M1 – Introduction to Flutter. Reference: Ch.1 Getting Started, tooling, project structure.
Download: https://flm.fpt.edu.vn/gui/role/student/Live-code scaffold customization; review students’ changes.
CLO2: Experience using popular widgets and plugins to build cross-platform user interfaces.
Session 1: Summary & Setup Issues
Topic: Offline; Teaching type: CLO1, CLO6; LO: TU
ITU: M1 – Introduction to Flutter. Reference: Ch.1 Getting Started, tooling, project structure.
Download: https://flm.fpt.edu.vn/gui/role/student/Summarize pitfalls; collect environment reports; set expectations.

Session 2: Dart Types & Variables
Topic: Offline; Teaching type: CLO1, CLO4; LO: TU
ITU: M2 – Dart Essentials. Reference: Ch.2–3 Dart syntax, types, functions, classes.
Download: https://flm.fpt.edu.vn/gui/role/student/Review type system & null safety; address common errors.

Session 3: Functions & Functional Patterns
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M2 – Dart Essentials. Reference: Ch.2–3 Dart syntax, types, functions, classes.
Download: https://flm.fpt.edu.vn/gui/role/student/Demonstrate function patterns; code review live.

Session 4: Classes & Constructors
Topic: Offline; Teaching type: CLO1, CLO2; LO: TU
ITU: M2 – Dart Essentials. Reference: Ch.2–3 Dart syntax, types, functions, classes.
Download: https://flm.fpt.edu.vn/gui/role/student/Explain class design; refactor student solutions.
CLO3: Knowledge of state management, form handling, and navigation between screens in mobile applications.
Session 1: Collections & Operations
Topic: Offline; Teaching type: CLO1, CLO2; LO: TU
ITU: M2 – Dart Essentials. Reference: Ch.2–3 Dart syntax, types, functions, classes.
Download: https://flm.fpt.edu.vn/gui/role/student/Show idiomatic collection usage; performance tips.

Session 2: Intro to Futures & Async
Topic: Offline; Teaching type: CLO2, CLO3; LO: TU
ITU: M2 – Dart Essentials. Reference: Ch.2–3 Dart syntax, types, functions, classes.
Download: https://flm.fpt.edu.vn/gui/role/student/Introduce async model; clarify event loop concepts.

Session 3: Future-based Async Programming
Topic: Offline; Teaching type: CLO1, CLO3; LO: TU
ITU: M3 – OOP & Asynchronous. Reference: Ch.3–4 OOP patterns, Futures, Streams, async/await.
Download: https://flm.fpt.edu.vn/gui/role/student/Explain Future scheduling; demonstrate error propagation.

Session 4: Streams & StreamController
Topic: Offline; Teaching type: CLO1, CLO3; LO: TU
ITU: M3 – OOP & Asynchronous. Reference: Ch.3–4 OOP patterns, Futures, Streams, async/await.
Download: https://flm.fpt.edu.vn/gui/role/student/Show StreamController patterns; memory-safety notes.
CLO4: Learn and apply asynchronous programming techniques with Future and async/await.
Session 1: StreamBuilder in Flutter
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M3 – OOP & Asynchronous. Reference: Ch.3–4 OOP patterns, Futures, Streams, async/await.
Download: https://flm.fpt.edu.vn/gui/role/student/Live-code StreamBuilder; discuss rebuild behavior.

Session 2: Repository Pattern
Topic: Offline; Teaching type: CLO1, CLO2; LO: TU
ITU: M3 – OOP & Asynchronous. Reference: Ch.3–4 OOP patterns, Futures, Streams, async/await.
Download: https://flm.fpt.edu.vn/gui/role/student/Present repository abstraction; layering guidance.

Session 3: Reactive Patterns (Concept)
Topic: Offline; Teaching type: CLO1, CLO2; LO: TU
ITU: M3 – OOP & Asynchronous. Reference: Ch.3–4 OOP patterns, Futures, Streams, async/await.
Download: https://flm.fpt.edu.vn/gui/role/student/Discuss reactive patterns; pitfalls and best practices.

Session 4: Progress Test 1
Topic: Offline; Teaching type: CLO1, CLO2, CLO3; LO: U
ITU: Progress Test 1
Download: Progress Test 1
CLO5: Ability to integrate RESTful APIs to exchange data between mobile applications and servers, as well as store data locally using SharedPreferences and SQLite.
Session 1: UI Basics – Scaffold Layout
ListView & Card/ListTile
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M4 – UI Fundamentals. Reference: Ch.4 Widgets, Layouts, MaterialApp, lists & pickers.
Download: https://flm.fpt.edu.vn/gui/role/student/Demonstrate composition; spacing best practices.Code-along list patterns; performance considerations.

Session 2: Interactive Widgets
Topic: Offline; Teaching type: CLO1, CLO3; LO: TU
ITU: M4 – UI Fundamentals. Reference: Ch.4 Widgets, Layouts, MaterialApp, lists & pickers.
Download: https://flm.fpt.edu.vn/gui/role/student/Handle onChanged; explain ephemeral vs app state.

Session 3: Pickers – Date/Time
Topic: Offline; Teaching type: CLO3; LO: TU
ITU: M4 – UI Fundamentals. Reference: Ch.4 Widgets, Layouts, MaterialApp, lists & pickers.
Download: https://flm.fpt.edu.vn/gui/role/student/Show pickers & result handling; UX guidance.

Session 4: Theming & UI Polishing
Topic: Offline; Teaching type: CLO3; LO: TU
ITU: M4 – UI Fundamentals. Reference: Ch.4 Widgets, Layouts, MaterialApp, lists & pickers.
Download: https://flm.fpt.edu.vn/gui/role/student/Review theming knobs; show common polish tips.
CLO6: Proficient in using Dart libraries and command-line tools to optimize the application development process.
Session 1: Navigator 1.0 – Push/Pop
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M5 – Navigation & State Management. Reference: Ch.8 Navigator 1.0/2.0, named routes, deep links, basic state. Session focus: Part 1.
Download: https://flm.fpt.edu.vn/gui/role/student/Explain Navigator stack; demo simple flow.

Session 2: Named Routes & Arguments
Topic: Offline; Teaching type: CLO1, CLO6; LO: TU
ITU: M5 – Navigation & State Management. Reference: Ch.8 Navigator 1.0/2.0, named routes, deep links, basic state.
Download: https://flm.fpt.edu.vn/gui/role/student/Show RouteSettings & argument handling patterns.

Session 3: Navigator 2.0 Concepts
Topic: Offline; Teaching type: CLO1, CLO7; LO: TU
ITU: M5 – Navigation & State Management. Reference: Ch.8 Navigator 1.0/2.0, named routes, deep links, basic state.
Download: https://flm.fpt.edu.vn/gui/role/student/Present RouterDelegate/RouteInformationParser overview.

Session 4: Android Deep Linking
Topic: Offline; Teaching type: CLO1, CLO5; LO: TU
ITU: M5 – Navigation & State Management. Reference: Ch.8 Navigator 1.0/2.0, named routes, deep links, basic state.
Download: https://flm.fpt.edu.vn/gui/role/student/Walk-through manifest intent-filters; test live.
CLO7: Knowledge of implementing mobile notification systems, including local and push notifications.
Session 1: iOS URL Scheme Navigation
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M5 – Navigation & State Management. Reference: Ch.8 Navigator 1.0/2.0, named routes, deep links, basic state.
Download: https://flm.fpt.edu.vn/gui/role/student/Guide Info.plist & associated domains; QA routing.Assign and confirm project topics

Session 2: Flex Layout (Row/Column)
Topic: Offline; Teaching type: CLO1, CLO3; LO: TU
ITU: M6 – Layout & Responsive Design. Reference: Ch.5–6 Advanced layouts (Grid/Stack/Flex), responsive patterns.
Download: https://flm.fpt.edu.vn/gui/role/student/Explain constraints; demonstrate Flex factors.

Session 3: GridView & Stack
Topic: Offline; Teaching type: CLO1, CLO3; LO: TU
ITU: M6 – Layout & Responsive Design. Reference: Ch.5–6 Advanced layouts (Grid/Stack/Flex), responsive patterns.
Download: https://flm.fpt.edu.vn/gui/role/student/Show grid/stack patterns; layering tips.

Session 4: LayoutBuilder & MediaQuery
Topic: Offline; Teaching type: CLO5; LO: TU
ITU: M6 – Layout & Responsive Design. Reference: Ch.5–6 Advanced layouts (Grid/Stack/Flex), responsive patterns.
Download: https://flm.fpt.edu.vn/gui/role/student/Introduce breakpoints; compute layout decisions.
Session 1: Responsive UI Design
Topic: Offline; Teaching type: CLO7, CLO2; LO: TU
ITU: M6 – Layout & Responsive Design. Reference: Ch.5–6 Advanced layouts (Grid/Stack/Flex), responsive patterns.
Download: https://flm.fpt.edu.vn/gui/role/student/Critique responsive solutions; UX considerations.

Session 2: Responsive Refactor
Topic: Offline; Teaching type: CLO1, CLO5; LO: TU
ITU: M6 – Layout & Responsive Design. Reference: Ch.5–6 Advanced layouts (Grid/Stack/Flex), responsive patterns.
Download: https://flm.fpt.edu.vn/gui/role/student/Refactor example; code review and feedback.

Session 3: Progress Test 2
Topic: Offline; Teaching type: CLO3, CLO4, CLO5; LO: U
ITU: Progress Test 2
Download: Progress Test 2

Session 4: Forms & Controllers
Validation & Errors
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M7 – Forms & Validation. Reference: Chapter 4 (Basic Widgets) & Chapter 14 (User Input)
Chapter 4 (Form Widgets) & Chapter 14 (Validation UX)
Download: https://flm.fpt.edu.vn/gui/role/student/Explain controllers lifecycle; disposal rules.Demonstrate validation patterns; UX for errors.
Session 1: Submit Flow & Data
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M7 – Forms & Validation. Reference: Chapter 14 (Input Flow), Chapter 6 (State Concepts)
Download: https://flm.fpt.edu.vn/gui/role/student/Show submit flow; data handling & confirmation.

Session 2: Form Draft Save
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M7 – Forms & Validation. Reference: Chapter 6 (State Basics) & Chapter 14 (Input Events)
Download: https://flm.fpt.edu.vn/gui/role/student/Discuss draft-saving approaches; data model notes.

Session 3: Focus & Keyboard Actions
Topic: Offline; Teaching type: CLO1, CLO7; LO: TU
ITU: M7 – Forms & Validation. Reference: Chapter 14 (Focus, Keyboard Actions)
Download: https://flm.fpt.edu.vn/gui/role/student/Show focus traversal; accessibility considerations.

Session 4: HTTP Request & JSON Parsing
Topic: Offline; Teaching type: CLO2, CLO7; LO: TU
ITU: M8 – Networking & JSON API. Reference: Ch.9 HTTP/REST, JSON parsing, FutureBuilder.
Download: https://flm.fpt.edu.vn/gui/role/student/Explain HTTP basics; JSON to model mapping.
Session 1: FutureBuilder & List Rendering
Topic: Offline; Teaching type: CLO1, CLO2; LO: TU
ITU: M8 – Networking & JSON API. Reference: Ch.9 HTTP/REST, JSON parsing, FutureBuilder.
Download: https://flm.fpt.edu.vn/gui/role/student/Live-code FutureBuilder; list rendering tips.

Session 2: Error/Loading UI
Topic: Offline; Teaching type: CLO1, CLO2; LO: TU
ITU: M8 – Networking & JSON API. Reference: Ch.9 HTTP/REST, JSON parsing, FutureBuilder.
Download: https://flm.fpt.edu.vn/gui/role/student/Error/empty/loading design; UX standards.

Session 3: Detail Screen via API ID
Topic: Offline; Teaching type: CLO1, CLO6; LO: TU
ITU: M8 – Networking & JSON API. Reference: Ch.9 HTTP/REST, JSON parsing, FutureBuilder.
Download: https://flm.fpt.edu.vn/gui/role/student/Route to detail by ID; data flow sanity checks.

Session 4: Retry & Caching
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M8 – Networking & JSON API. Reference: Ch.9 HTTP/REST, JSON parsing, FutureBuilde
Download: https://flm.fpt.edu.vn/gui/role/student/Discuss caching layers; avoiding redundant calls.
Session 1: SharedPreferences Basics
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M9 – Local Storage & Persistence. Reference: Ch.10 SharedPreferences, SQLite/Hive, caching..
Download: https://flm.fpt.edu.vn/gui/role/student/Contrast prefs vs database; data lifecycle.

Session 2: Local DB (SQLite/Hive)
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M9 – Local Storage & Persistence. Reference: Ch.10 SharedPreferences, SQLite/Hive, caching.
Download: https://flm.fpt.edu.vn/gui/role/student/Schema modeling; CRUD operations overview.

Session 3: Persistent List Rendering
Topic: Offline; Teaching type: CLO3, CLO5; LO: TU
ITU: M9 – Local Storage & Persistence. Reference: Ch.10 SharedPreferences, SQLite/Hive, caching.
Download: https://flm.fpt.edu.vn/gui/role/student/Render persisted data; integrity checks.

Session 4: Sync-Up Concept
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M9 – Local Storage & Persistence. Reference: Ch.10 SharedPreferences, SQLite/Hive, caching.
Download: https://flm.fpt.edu.vn/gui/role/student/Discuss sync patterns; conflict resolution basics.
Session 1: Export/Backup JSON
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M9 – Local Storage & Persistence. Reference: Ch.10 SharedPreferences, SQLite/Hive, caching.
Download: https://flm.fpt.edu.vn/gui/role/student/Show export concept; data portability discussion.

Session 2: Login Form & Mock Auth
Topic: Offline; Teaching type: LO1, CLO2; LO: TU
ITU: M10 – Authentication & User Management. Reference: Ch.11 Auth basics, session, guarded routes.
Download: https://flm.fpt.edu.vn/gui/role/student/Explain auth concepts; security caveats.

Session 3: Session State Management
Topic: Offline; Teaching type: CLO3; LO: TU
ITU: M10 – Authentication & User Management. Reference: Ch.11 Auth basics, session, guarded routes.
Download: https://flm.fpt.edu.vn/gui/role/student/Session/state handling; update UI accordingly.

Session 4: Guarded Routes
Topic: Offline; Teaching type: CLO2; LO: TU
ITU: M10 – Authentication & User Management. Reference: Ch.11 Auth basics, session, guarded routes.
Download: https://flm.fpt.edu.vn/gui/role/student/Route guarding patterns; navigation decisions.
Session 1: Token Persistence (Mock)
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M10 – Authentication & User Management. Reference: Ch.11 Auth basics, session, guarded routes.
Download: https://flm.fpt.edu.vn/gui/role/student/Persist token mock; discuss security limits.

Session 2: Integrated Auth Flow
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M10 – Authentication & User Management. Reference: Ch.11 Auth basics, session, guarded routes. Session focus: Part 5.
Download: https://flm.fpt.edu.vn/gui/role/student/End-to-end demo; troubleshooting common issues.

Session 3: Unit Tests for Project Features
Topic: Offline; Teaching type: LO1, CLO2; LO: TU
ITU: M11 – Testing & Debugging. Core concepts from Ch.12.
Download: https://flm.fpt.edu.vn/gui/role/student/Explain testing setup in project context; assist integration.

Session 4: Widget Tests & Debugging
Topic: Offline; Teaching type: CLO7; LO: TU
ITU: M11 – Testing & Debugging. Core debugging tools.
Download: https://flm.fpt.edu.vn/gui/role/student/Review test coverage; show debugging techniques.
Session 1: Progress Test 3
Topic: Offline; Teaching type: CLO5, CLO6, CLO7; LO: U
ITU: Progress Test 3
Download: Progress Test 3

Session 2: Sprint 3 Review
Refactoring & Polishing
Topic: Offline; Teaching type: CLO1, CLO6; LO: TU
ITU: Project Work – Sprint 3 Review.
Project Work – Polishing & Refactoring.
Download: https://flm.fpt.edu.vn/gui/role/student/Conduct sprint review; give improvement feedback.Provide code review session; guide refactoring priorities.

Session 3: User Testing & Report
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: Project Work – User Testing.
Download: https://flm.fpt.edu.vn/gui/role/student/Supervise test execution; monitor report documentation.

Session 4: Build & Release Config
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: M12 – Build & Release. Ch.13 (condensed).
Download: https://flm.fpt.edu.vn/gui/role/student/Demonstrate build process (debug/release).
Session 1: Packaging & Release Build
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: Project Work – Packaging.
Download: https://flm.fpt.edu.vn/gui/role/student/Guide deployment process; validate final artifacts.

Session 2: Presentation Rehearsal
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: Project Work – Presentation Rehearsal.
Download: https://flm.fpt.edu.vn/gui/role/student/Mentor on presentation skills; storytelling & flow.

Session 3: Mock Defense
Topic: Offline; Teaching type: CLO1; LO: TU
ITU: Final Evaluation – Mock Defense.
Download: https://flm.fpt.edu.vn/gui/role/student/Act as evaluator; simulate defense Q&A.

Session 4: Final Project Submission
Topic: Offline; Teaching type: CLO1; LO: U
ITU: Final Project Presentation
Download: https://flm.fpt.edu.vn/gui/role/student/Grade presentation; summarize learning outcomes.