IU:TestPage

From IU
Revision as of 00:17, 9 September 2022 by R.sirgalina (talk | contribs)
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?

Flutter is a powerful multi-platform framework that allows one to create complex

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 ...

  • 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 ...

  • 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 ...

  • 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 What language construction allows us to write interfaces in Dart? 1
Question What does const keyword mean in Dart? 1
Question How many threads does Dart application have by default? 1
Question How do we write asynchronous code in Dart? What are 2 ways of writing it? 1
Question In what way Flutter supports Composition over Inheritance? 1
Question What are the generators in Dart? What do yield, sync*, async* keywords mean? 0
Question What is a Stream in Dart? How many subscribers can it have? Which two main 0
Question types of streams do we have? 0
Question What should we use if we want to make two operations in parallel? Do Futures 0
Question allow us to do so? 0
Question What is the difference between LocalKeys and GlobalKeys? 0
Question 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 What is the difference between var, final and const variables in Dart? 0
Question What is a Future? How can we work with the result value, encapsulated in it? 0
Question What is a Sliver? Why may one need to use it? 0
Question What is an InheritedWidget in Flutter? 0
Question Why and how do we use Keys in Flutter applications? 0

Section 2

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

Section 3

Activity Type Content Is Graded?
Question What is a deeplink? 1
Question How does Flutter communicate with native platforms? 1
Question Can you insert native view inside Flutter widgets? 1
Question What is MethodChannel and EventChannel? 1
Question In what thread messages between native side and Flutter are received? 1
Question What features for mobile applications from Firebase do you know? 0
Question What is the difference between Firebase Cloud Storage and Firebase Realtime 0
Question Database? 0
Question What is Crashlytics? 0
Question What are the three main steps of each test? 0
Question 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 What command is used for building a Flutter application? 0
Question What types of builds do you know? What is the difference? 0
Question Why is hot reload possible? 0
Question What are golden tests? 0
Question 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