Skip to content

Summer elective "Flutter: Creating Cross-Platform Applications" 2024, Innopolis University

Notifications You must be signed in to change notification settings

timur-harin/Sum24FlutterCourse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sum24FlutterCourse

Course Overview

This course is part of the Flutter elective summer program at Innopolis University, running from 4 June to 4 July. It is designed to introduce students to Flutter and Dart, covering everything from basic UI elements to advanced design and deployment techniques.

Results

Team projects of students

  1. Arm fighter - app for arm fighting training and competitions
  2. Mood Tracker - application that helps users to record and monitor their moods daily
  3. Flanner - fitness app designed to help you seamlessly track and improve your physical health
  4. Allergy - app to scan barcodes on food items and see if they contains certain allergen
  5. Killer - app for playing a killer game
  6. DishDash - app to suggest random ideas for what to eat and drink
  7. FitTrack - app to help users create, edit, and track their workouts
  8. BreathApp - app to help users practice breathing exercises
  9. Kiwi - app to track calories from user parameters
  10. Shleappy - sleep-tracking app
  11. Flutter shoes shop - full-fledged mobile application for an online sneaker store
  12. MeditationApp - app for meditation practices
  13. InnoRun - app to communicate runners to join running together
  14. Sleep tracker - sleep-tracking app
  15. Karma - app to balancing the positive and negative aspects of your life
  16. NabitHelper - app to track habits
  17. FoodTracker - app for calculating calories based on a photograph of food
  18. PlantNanny - app to track habits

Bonus Assignment partial completion

Document scanning package

Recording of some projects presentation

Video to YouTube

YouTube playlist of lectures recording

Link to playlist

Course Outline

Section Section Title
1. Overview of Flutter, Dart, and project setup
2. Widgets, layouts, and UI patterns
3. State Management
4. Navigation and Routing
5. Networking and Data Management
6. Advanced UI Design
7. Testing and Debugging
8. Deploying and CI/CD

Course Evaluation

Type Points
Attendance 15
Labs/seminar classes 35
Midterm individual project 20
Final team project 30

Grade distribution

Grade distribution

Lab Tasks and Assignments

Throughout the course, students completed various lab tasks and assignments aimed at reinforcing the concepts taught in the lectures. Each lab focuses on specific aspects of Flutter development, as detailed below:

Labs

  • Lab 1: Implement basic Flutter widgets and their properties to create a simple UI.
    • Text widget customization
    • Icon widget usage
    • Image display from network
    • Button creation and functionality
    • Layout with Columns and Containers
  • Lab 2: Dive into Dart programming concepts including classes, inheritance, mixins, functions, and null-safety through hands-on tasks.
    • Creating and using Dart classes
    • Inheritance in Dart
    • Using mixins for JSON serialization
    • Function writing and usage
    • Implementing null-safety features
  • Lab 3: Build a stateful Flutter application focusing on hydration tracking with advanced state management and custom UI painting.
    • State management with StatefulWidget
    • State management using Riverpod
    • Custom UI painting for water intake visualization
    • Data persistence with SharedPreferences
  • Lab 4: Explore asynchronous programming, state management solutions, and making HTTP requests in Flutter.
    • Async/await for asynchronous operations
    • Using Provider and Riverpod for state management
    • Making HTTP requests with the HTTP package and Dio
  • Lab 5: Learn about JSON parsing, route navigation, and using the freezed package in Flutter.
    • JSON parsing and data fetching
    • Route navigation with arguments
    • Using freezed for immutable data models
  • Lab 6: Focus on testing and widget implementation, including unit, widget, and golden tests, along with localization and theming.
    • Implementing various types of tests
    • Adding localization support
    • Theme switching functionality
  • Lab 7: Advanced topics including setting up analyzer rules, CI/CD with GitHub Actions, Docker integration, and building for different platforms.
    • Analyzer setup and code quality
    • CI/CD pipeline configuration
    • Dockerization of a Flutter web app
    • Building and deploying for multiple platforms

Assignments

Students are tasked with creating an app to guide users through contrast shower sessions, with functionality to save it in local-storage and navigate between pages

Students will work in teams to develop a Cross-Platform Flutter Healthy App, incorporating various features and best practices covered throughout the course

Bonus assignment

For those who seek to get an A grade on the course without participating in other activities, it is enough to complete the Bonus Assignment. It includes the development of a cross-platform Flutter package for document scanning, taking into account requirements such as camera integration, touch control, border recognition and image processing.

Course Workflow

This course adopts a practical, hands-on approach to learning, emphasizing collaboration and version control as key aspects of modern software development. Assignments and lab exercises are structured to reinforce these concepts through a pull request-based workflow.

Forking and Cloning Repositories

At the beginning of the course, students are required to fork the main repository containing the templates for labs and assignments. This process introduces students to the concept of "forking" in GitHub, creating a personal copy of the repository on their own GitHub account which they can modify independently.

Completing Assignments and Labs

For each assignment or lab:

  1. Students work within their forked repository, making changes or completing tasks as specified in the lab or assignment instructions.
  2. Create new branch for each new activity
  3. Upon completion, students push their changes to their forked repository on GitHub.

Creating Pull Requests

After pushing changes to GitHub, students create a Pull Request (PR) from their repository to the original repository from which they forked. This PR should include all changes made during the lab or assignment.

  1. Navigate to the original repository on GitHub.
  2. Click on the 'Pull Requests' tab and then the 'New Pull Request' button.
  3. Select your repository and branch with the changes as the source, and the original repository's corresponding branch as the destination.
  4. Review the changes, ensuring they are complete and correct as per the assignment requirements.
  5. Create the Pull Request, providing any necessary descriptions or comments for the instructors or TAs to review.

Review and Feedback

Instructor review the Pull Requests, providing feedback directly within the GitHub interface. This feedback may include suggestions for improvement, questions about the implementation, or confirmation of successful completion(optional).

Merging Pull Requests

Once the assignment or lab is successfully completed and reviewed, the Pull Request may be closed. In this course, the primary goal of the PR is for submission and feedback rather than merging into the main repository. This approach allows instructors to easily track submissions and provide structured feedback, while students gain experience with a key aspect of collaborative software development.

This pull request-based workflow not only reinforces the technical skills involved in using git and GitHub but also simulates a collaborative development environment, preparing students for future software projects in both academic and professional settings.

Final Feedback Overview

The course feedback is visualized in the following graphs, representing students' responses collected after the course completion. These graphs provide insights into various aspects of the course, including overall impressions, application of learned skills, interactions with classmates from other electives, course comparison with other courses, reflections on prior knowledge, and feelings at the course's end.

Overall Impressions After the Course

Overall Impressions After the Course

This graph displays the general sentiment of students towards the course upon completion, capturing their overall impressions.

Now I...

Now I...

Responses to "Now I..." reflect on the new skills or knowledge students feel they have gained from the course.

How do you feel after talking with classmates from other electives?

Feedback After Interactions

This chart illustrates students' feelings after interacting with peers from different electives, highlighting the value of cross-disciplinary communication.

This elective compared to other courses...

Elective Comparison

Student responses comparing this elective to other courses they have taken, providing context on its relative difficulty, engagement, and value.

If I had known in advance how this elective would go, then I would...

In Hindsight

Insights into whether students' expectations were met, exceeded, or not achieved, based on their prior expectations of the elective.

At the end of the course, I...

Course Conclusion

Reflections on students' feelings and takeaways at the course's conclusion, summarizing their end-of-course perspective.

I haven't seen this in other courses, but I liked it in this one

Liked Features Not Seen Elsewhere

This visualization captures unique elements of the course that were particularly appreciated by students, highlighting innovative aspects that set it apart from other courses.

I haven't seen this in other courses, and it's good that it wasn't here either

Appreciated Omissions

This chart illustrates course elements that, while absent, were noted by students as positive omissions, suggesting a thoughtful curriculum design that aligns with student expectations.

I've seen it in other courses, and I've missed it in this one

Missed Features

This visualization reflects on aspects that students have encountered in other courses but were missing here, indicating areas for potential inclusion to enhance the learning experience.

I've seen it in other courses, and it's a good thing it wasn't here

Excluded and Appreciated

This figure shows the course components that are commonly found in other courses but were deliberately excluded here, to the appreciation of students, underscoring the importance of curricular uniqueness.

I've learned...

Learning Outcomes

This plot presents what students have learned, encapsulating the course's impact on their knowledge and skills in a visually engaging manner.

It seemed useless to me...

Perceived Uselessness

This visualization highlights the elements of the course that were perceived as unnecessary or less valuable by students, offering insights into areas for potential refinement.

This course can be improved by...

Suggestions for Improvement

This chart captures constructive feedback from students on how the course could be improved, providing valuable directions for future enhancements.

Timur's English level

Timur's English Level

Feedback on Timur's proficiency in English, highlighting how it impacts the learning experience.

Timur's approach compared to other courses...

Timur's Approach

Students' comparison of Timur's teaching methodology with that of other instructors, focusing on effectiveness and engagement.

I want to do it after this course...

Post-Course Ambitions

Capturing the aspirations and plans students have developed as a result of their learnings from the course.

I promise based on the results of this course over the summer, not necessarily about studying

Summer Promises

A collection of students' commitments, inspired by their course achievements, extending beyond academic pursuits.

I wish + to whom I wish it

Wishes and Recipients

Expressions of hope and goodwill, directed towards peers, instructors, or the broader community, as inspired by the course's spirit.

If you want to see the full feedback, including answers to open questions

View JSON Results from Yandex.Form

Group Photo

Group Photo

About

Summer elective "Flutter: Creating Cross-Platform Applications" 2024, Innopolis University

Resources

Stars

Watchers

Forks