BSTE: Cross-platform Mobile Development with Flutter

From IU
Revision as of 15:51, 8 February 2023 by R.sirgalina (talk | contribs) (Created page with " = Mobile Cross-Platform Flutter Developer = * '''Course name''': Mobile Cross-Platform Flutter Developer * '''Code discipline''': R-01 * '''Subject area''': == Short Descri...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Mobile Cross-Platform Flutter Developer

  • Course name: Mobile Cross-Platform Flutter Developer
  • Code discipline: R-01
  • Subject area:

Short Description

This course covers the following concepts: • Basics of mobile development; • Fundamentals of Dart programming language; • Fundamentals of mobile development with Flutter; • Advanced cross-platform development topics.

Prerequisites

Prerequisite subjects

Prerequisite topics

Course Topics

Course Sections and Topics
Section Topics within the section
Basics of Dart/Flutter development
  1. • Key concepts and syntax of Dart programming language
  2. • Working with REST API in a Dart/Flutter app
  3. • Deep dive into rendering in Flutter (Widgets, Elements, RenderObjects)
  4. • Scrollable lists and grids in Flutter
Advanced development
  1. • Usage of Dart/Flutter packages and plugins.
  2. • Popular packages and plugins from pub.dev that makes development simpler.
  3. • Understanding of packages/plugins development and publication
  4. • Persistence in Flutter, different approaches and libraries
  5. • Dart asynchronous programming
  6. • Flutter app architectures and state management approaches
  7. • Complex animations
Extra topics
  1. • Working with deep links & web URLs
  2. • Different approaches for native platform interoperability
  3. • Usage of Firebase tools and services
  4. • Types of testing and how to provide high quality for an application
  5. • Build artifacts for different platforms and deploy them

Intended Learning Outcomes (ILOs)

What is the main purpose of this course?

ILOs defined at three levels

Level 1: What concepts should a student know/remember/explain?

By the end of the course, the students should be able to ...

  • • Understand core concepts of Dart programming language
  • • Understand asynchronous programming with Dart language
  • • Understand core concepts of how Flutter framework works with UI
  • • Understand core concepts of how Flutter applications communicate with hosting platforms, such as iOS, Android, web, desktop
  • • Apply different architecture patterns in Flutter app development
  • • Know how to create production-ready applications using Flutter framework and provide a great user experience with it
  • • Learn a broad and robust understanding of mobile app development including some basics of Android and iOS specifics
  • • Create a portfolio-ready project which uses some advanced mobile app development techniques such as client-server communications, complex animations, unit- and UI-testing and so on

Level 2: What basic practical skills should a student be able to perform?

By the end of the course, the students should be able to ...

  • • Write code using Dart programming language
  • • Build business-logic with Dart programming language
  • • Build applications’ UI with Flutter framework
  • • Create complex animations using Flutter framework
  • • Test applications with unit, widget and integration tests

Level 3: What complex comprehensive skills should a student be able to apply in real-life scenarios?

By the end of the course, the students should be able to ...

  • • Combine asynchronous programming with multithreading using Dart programming language
  • • Work with platform channels and transmit data between native platform and Flutter application
  • • Build modular Flutter dependencies: packages and plugins
  • • Work with Firebase toolchain: Authorization, Storage, Crashlytics etc
  • • Build Flutter applications for different platforms and deploy them via CI/CD tools

Grading

Course grading range

Grade Range Description of performance
A. Excellent 85-100 -
B. Good 70-84 -
C. Satisfactory 55-69 -
D. Poor 0-54 -

Course activities and grading breakdown

Activity Type Percentage of the overall course grade
Labs/seminar classes 30
Interim performance assessment 40
Exams 30

Recommendations for students on how to succeed in the course

Resources, literature and reference materials

Open access resources

Closed access resources

Software and tools used within the course

Teaching Methodology: Methods, techniques, & activities

Activities and Teaching Methods

Activities within each section
Learning Activities Section 1 Section 2 Section 3
Development of individual parts of software product code 1 1 1
Homework and group projects 1 1 1
Testing (written or computer based) 1 1 1

Formative Assessment and Course Activities

Ongoing performance assessment

Section 1

Activity Type Content Is Graded?
Question 1. What language construction allows us to write interfaces in Dart? 1
Question 2. What does const keyword mean in Dart? 1
Question 3. How many threads does Dart application have by default? 1
Question 4. How do we write asynchronous code in Dart? What are 2 ways of writing it? 1
Question 5. In what way Flutter supports Composition over Inheritance? 1
Question 1. What are the generators in Dart? What do yield, sync*, async* keywords mean? 0
Question 2. What is a Stream in Dart? How many subscribers can it have? Which two main types of streams do we have? 0
Question 3. What should we use if we want to make two operations in parallel? Do Futures allow us to do so? 0
Question 4. What is the difference between LocalKeys and GlobalKeys? 0
Question 5. What is a Widget in Flutter? What are the main types of it we have? 0
Question Questions for exam preparation within this section 0
Question 1. What is the difference between var, final and const variables in Dart? 0
Question 2. What is a Future? How can we work with the result value, encapsulated in it? 0
Question 3. What is a Sliver? Why may one need to use it? 0
Question 4. What is an InheritedWidget in Flutter? 0
Question 5. Why and how do we use Keys in Flutter applications? 0

Section 2

Activity Type Content Is Graded?
Question 1. What are the ways of implementing routing in Flutter application? 1
Question 2. What is the difference between package and plugin? 1
Question 3. How Dart resolves project dependencies? 1
Question 4. What are the requirements for package publishing? 1
Question 5. What is SingleTickerProviderStateMixin? 1
Question 1. What are the types of animations in Flutter? 0
Question 2. What is an AnimationController? 0
Question 3. What is Tween? 0
Question 4. What are key concepts of BLoC architecture? 0
Question 5. What are key concepts of Redux architecture? 0
Question Test questions for exam preparation within this section 0
Question 1. What is the difference between DI and ServiceLocator? 0
Question 2. What is the Provider library? 0
Question 3. What is GetIt and Injectable? How are they related? 0
Question 4. How dart dependencies can be provided? 0
Question 5. What state management approaches do you know? 0

Section 3

Activity Type Content Is Graded?
Question 1. What is a deeplink? 1
Question 2. How does Flutter communicate with native platforms? 1
Question 3. Can you insert native view inside Flutter widgets? 1
Question 4. What is MethodChannel and EventChannel? 1
Question 5. In what thread messages between native side and Flutter are received? 1
Question 1. What features for mobile applications from Firebase do you know? 0
Question 2. What is the difference between Firebase Cloud Storage and Firebase Realtime Database? 0
Question 3. What is Crashlytics? 0
Question 4. What are the three main steps of each test? 0
Question 5. What are the types of tests in Flutter? How are they different from each other? 0
Question Test questions for exam preparation within this section 0
Question 1. What command is used for building a Flutter application? 0
Question 2. What types of builds do you know? What is the difference? 0
Question 3. Why is hot reload possible? 0
Question 4. What are golden tests? 0
Question 5.What are the approaches for mocking functionality in Flutter? 0

Final assessment

Section 1

  1. 1. What is an abstract class in Dart?
  2. 2. What is a mixin in Dart, how can we use it?
  3. 3. What is a RenderObject? What responsibilities does it have?
  4. 4. What is the difference between Stateless- and StatefulWidgets in Flutter?
  5. 5. What is a BuildContext in Flutter?

Section 2

  1. 1. What is app state and ephemeral state?
  2. 2. What different approaches for persistence in Flutter do you know?
  3. 3. What is Riverpod and how is it different from Provider?
  4. 4. What is an EventLoop in Dart? How does it work with sync/async tasks?
  5. 5. What is a microtask in Dart? What is Isolate?

Section 3

  1. 1. What are core requirements for using Firebase?
  2. 2. What types of objects are allowed to be passed through MessageChannel?
  3. 3. What is BinaryMessenger?
  4. 4. How to handle path navigation in Flutter Web?

The retake exam

Section 1

Section 2

Section 3