The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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 |
- • Key concepts and syntax of Dart programming language
- • Working with REST API in a Dart/Flutter app
- • Deep dive into rendering in Flutter (Widgets, Elements, RenderObjects)
- • Scrollable lists and grids in Flutter
|
Advanced development |
- • Usage of Dart/Flutter packages and plugins.
- • Popular packages and plugins from pub.dev that makes development simpler.
- • Understanding of packages/plugins development and publication
- • Persistence in Flutter, different approaches and libraries
- • Dart asynchronous programming
- • Flutter app architectures and state management approaches
- • Complex animations
|
Extra topics |
- • Working with deep links & web URLs
- • Different approaches for native platform interoperability
- • Usage of Firebase tools and services
- • Types of testing and how to provide high quality for an application
- • 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. 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