BSTE: Cross-platform Mobile Development with Flutter
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...")
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
Section | Topics within the section |
---|---|
Basics of Dart/Flutter development |
|
Advanced development |
|
Extra topics |
|
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
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. What is an abstract class in Dart?
- 2. What is a mixin in Dart, how can we use it?
- 3. What is a RenderObject? What responsibilities does it have?
- 4. What is the difference between Stateless- and StatefulWidgets in Flutter?
- 5. What is a BuildContext in Flutter?
Section 2
- 1. What is app state and ephemeral state?
- 2. What different approaches for persistence in Flutter do you know?
- 3. What is Riverpod and how is it different from Provider?
- 4. What is an EventLoop in Dart? How does it work with sync/async tasks?
- 5. What is a microtask in Dart? What is Isolate?
Section 3
- 1. What are core requirements for using Firebase?
- 2. What types of objects are allowed to be passed through MessageChannel?
- 3. What is BinaryMessenger?
- 4. How to handle path navigation in Flutter Web?
The retake exam
Section 1
Section 2
Section 3