RIT School of Interactive Games and Media
Fall 2025 | Instructor: John-Paul Takats
Welcome to IGME-340! This course explores cross-platform mobile application development using Flutter and Dart. You'll learn to design, prototype, and develop media-rich interactive experiences that deploy to multiple platforms from a single codebase.
This repository contains all course materials organized by type and purpose:
Detailed notes from each class session organized chronologically. Start here to follow along with what we covered in class.
Structure: Week [#][A/B] format (e.g., 1A.md, 1B.md)
- A sessions: Tuesdays (often introduce new concepts)
- B sessions: Thursdays (often dive deeper or apply concepts)
What's Inside:
- Demonstrations and walkthroughs from class
- Code examples we wrote together
- Key concepts and terminology
- Common issues and solutions
- Homework assignments and due dates
- Links to relevant reference materials
Usage Tip: Weekly notes show the teaching progression - they're your record of "what happened in class."
Quick-reference documentation for Flutter widgets, concepts, and patterns. Use this when coding to quickly look up syntax and common use cases.
Categories:
- Styling & Theming - BoxDecoration, Themes, Colors, Fonts
- Core Widgets - Container, Row, Column, Stack, Images
- Buttons & Interaction - Button types, GestureDetector, InkWell
- Input & Forms - TextField, DropdownButton, Form validation
- Lists & Scrolling - ListView, GridView, ScrollView
- Navigation - Routing, Dialogs, SnackBars
- State Management - setState, Provider, ChangeNotifier
- APIs & Data - HTTP requests, JSON parsing, async/await
- Common Patterns - Code organization, DRY principles
What's Inside:
- Quick copy-paste examples
- Properties reference tables
- Common patterns (without homework solutions)
- Troubleshooting tips
- Links to official documentation
Usage Tip: Reference pages are concise lookups - use them when you know what you're looking for and need quick syntax.
Relationship to Weekly Notes:
Reference pages link back to weekly notes for context, and weekly notes link to reference for quick lookups. They complement each other!
🔬 Labs
Hands-on assignments that build foundational Flutter and Dart skills.
Current Labs:
- Lab 01 - Lab 01: TextFields & DropdownButtons
- Lab 02 - Lab 02: GIF Finder (HTTP requests, GridView, API integration)
- (More labs added throughout semester)
What to Expect:
- 1-2 hour time commitment per lab
- Focus on practical Flutter skills
- Builds toward project competency
- Due before next class session (check MyCourses for exact dates)
🎯 Projects
Three major course projects where you'll apply everything you've learned to create complete applications.
Project Breakdown:
- Project 1 (15%) - Design to Spec
- Project 2 (25%) - Web Service Application
- Project 3 (30%) - Roll Your Own
What's Inside:
- Project specifications and requirements
- Rubrics and grading criteria
- Example proposals and documentation
- Submission guidelines
Project Philosophy:
Projects emphasize architecture decisions, client communication, and solution assessment - skills that are harder to outsource to AI.
🏋️ Exercises
Similar to the Labs. Probably should just be renamed next semester to either call these Labs or Exercises! The idea these were meant to perhaps be early general activities that were a little smaller then the labs.
Content:
- Dart language exercises
- Quick Flutter widget practice
- Warm-up activities
Course policies, guidelines, and supplementary materials that don't fit in the reference documentation. Since I have the syllabus on mycourses. The syllabus probabably should have gone here, but instead its linked to from mycourses (see Syllabus folder in content for that in mycourses)
📅 Schedule
Complete week-by-week course schedule showing topics, due dates, and major milestones.
Use this to:
- See what's coming up
- Plan your workload
- Check assignment due dates
- Understand topic progression
How to properly submit your work for this course.
Covers:
- Naming conventions
- File organization
- Required components
flutter cleanrequirements- Submission checklist
- Read the Syllabus in mycourses to understand course structure
- Check the schedule to see what's coming up
- Follow Week 1A notes to set up your development environment
- Bookmark the reference guide for quick lookups while coding
- Setting up Flutter? → Week 1A Notes
- How do I use [widget]? → Reference Guide
- What's due this week? → Schedule for a general idea; but use MyCourses Assignment page for the source of truth!
- Lab instructions? → Labs folder
- What did we do in class? → Weekly Notes
- Check the weekly notes for what we covered in class
- Review the reference guide for syntax and patterns
- Test early and often!
- Don't forget
flutter cleanbefore submission!
Real-World Readiness
By the end of this course, you'll be able to:
- Build production-ready Flutter applications
- Choose appropriate technologies for project requirements
- Debug effectively and read error messages
- Present and justify technical decisions
- Deploy apps to Android (and understand iOS differences)
Primary Framework: Flutter 3.x
Language: Dart
Target Platform: Android (with iOS knowledge)
Development: Works on both Mac and Windows
Why Flutter?
- Single codebase for multiple platforms
- Hot reload for rapid iteration
- Rich widget library
- Strong industry adoption
- Excellent documentation
- Ask questions immediately - chances are others have the same question
- Participate in in-class activities and discussions
- Work through exercises with classmates
-
Check the documentation:
- Weekly notes for what we covered
- Reference guide for quick syntax
- Flutter docs
-
Use Slack:
- Post questions in appropriate channels
- Share helpful resources with classmates
- Collaborate (within academic integrity guidelines)
-
Office Hours:
- Check instructor website for current hours
- Book virtual appointments when needed
- Come prepared with specific questions
-
Email:
- Use for administrative or personal issues
- Include "IGME-340" in subject line
- Allow 24-48 hours for response
By completing this course, you will be able to:
- Design and develop cross-platform mobile applications using Flutter and Dart
- Evaluate and select appropriate frameworks and tools for specific project requirements
- Implement responsive layouts that adapt to different screen sizes and platforms
- Integrate external APIs and manage asynchronous data operations
- Apply state management patterns to build interactive applications
- Debug applications using Flutter DevTools and best practices
- Communicate technical decisions and architecture choices effectively
- Deploy applications to target platforms following best practices
Note: See syllabus for complete grading policies, late work, and academic integrity guidelines.
- MyCourses: mycourses.rit.edu - Official grades and announcements
- Slack Workspace: (Link provided in class) - Student collaboration and questions
- Flutter Documentation: docs.flutter.dev
- Dart Language Tour: dart.dev/guides/language/language-tour
- Instructor Website: jptweb.com
- Office Hours: people.rit.edu/~jxtadm
Before Each Class:
- Review the schedule to see what's coming up
- Complete any assigned pre-class materials
- Have your development environment ready
During Class:
- Have the days Notes open (from this repo, linked to from mycourses as well)
- Try code examples yourself as we go
- Ask questions when concepts are unclear (i'll try and stop to help thats fine; if you fall to far behind don't fret as the weekly content has the examples; and I can help you later).
After Class:
- Review the weekly notes within 24 hours; and submit the newly added Participation Metric in github classroom.
- Complete homework assignments early (don't wait until due date)
- Practice concepts on your own projects
- Use the reference guide when coding
Found an error or have a suggestion? Let me know!
- Typos/errors: Mention in class or send me an email
- Unclear explanations: Ask questions in class or on Slack
- Missing examples: Request them and I'll add them
- Helpful resources: Share them and they might get added!
This repository grows based on your needs and feedback throughout the semester.
Course materials © 2025 John-Paul Takats, RIT School of Interactive Games and Media
For RIT IGME-340 Students:
- Use freely for coursework and personal learning
- Retain materials for future reference
- Share knowledge with future students
Attribution: Some materials adapted from previous IGME-340 instructors. Special shout out to Dower Chin! Credit given where applicable.
Questions? Contact jxtadm@rit.edu
Welcome to Flutter development! Let's build something amazing together. 🚀