Course Outline
Introduction
Week 1: Overview of Mobile Development
- Mobile Ecosystem and Platforms
- Survey of mobile operating systems (iOS and Android)
- Distinctions among iOS, Android, and cross-platform architectures
- Major distribution channels (Apple App Store, Google Play Store)
- Foundations of native, hybrid, and cross-platform development methodologies
- Native vs Hybrid vs Cross-Platform
- Benefits and complexities associated with each development approach
- Overview of Swift (iOS), Kotlin (Android), and React Native (cross-platform) frameworks
- Process for transpiling code to mobile platforms (e.g., JavaScript to native code in React Native)
- Programming Fundamentals
- Core programming concepts (variables, data types, functions, control structures)
- Syntax comparison across Swift, Kotlin, and JavaScript
- Composition of basic applications using Swift, Kotlin, and JavaScript
- Setting up Development Environments
- Installation and configuration of Xcode and Android Studio
- Setup of React Native CLI and Expo environments
- Execution of basic "Hello World" applications on simulators and emulators
Week 2: Introduction to Swift, Kotlin, and JavaScript
- Swift Programming for iOS
- Variables, constants, and data types in the Swift language
- Control flow statements (
if,switch, loops) - Function definitions and parameter handling in Swift
- Orientation to Xcode interfaces and Swift Playgrounds
- Kotlin Programming for Android
- Variables, data types, and function structures in Kotlin
- Comprehending Kotlin’s null safety mechanisms
- Control flow and loop structures
- Orientation to Android Studio interfaces and Kotlin Playground
- JavaScript for React Native
- Variables, constants, and control flow in JavaScript
- ES6 features: arrow functions, template literals, and destructuring assignments
- Development and execution of basic JavaScript programs in React Native via Expo
Week 3: iOS User Interface Design
- UI Elements in iOS
- Introduction to UIKit and SwiftUI frameworks
- Integration and customization of UI elements such as buttons, labels, and text inputs
- Utilization of Interface Builder for UI design
- Management of Storyboards and creation of multi-screen interfaces
- Auto Layout and Constraints
- Analysis of the Auto Layout system
- Application of constraints for responsive layouts across varying screen dimensions
- Construction of stack views and dynamic adjustment of UI elements
- SwiftUI Basics
- Introduction to declarative UI design in SwiftUI
- Construction of simple UI components using SwiftUI
Week 4: Android User Interface Design
- XML Layouts in Android
- Introduction to XML-based layout design methodologies
- Implementation of common layouts: LinearLayout, RelativeLayout, ConstraintLayout
- Integration and customization of UI elements: buttons, text views, image views
- Application of ConstraintLayout for responsive and dynamic layouts
- Material Design
- Integration of Material Design principles (color palettes, iconography, typography)
- Utilization of Material Components (buttons, floating action buttons, cards)
- Implementation of themes and styling for Android applications
Week 5: React Native User Interface Design
- React Native Flexbox Layout
- Comprehension of Flexbox for responsive layout design
- Creation of column and row-based layouts
- Styling of UI components with Flexbox properties (justifyContent, alignItems, etc.)
- React Native Components
- Implementation of core components like
Text,View,TextInput, andButton - Construction of interactive UI elements such as forms and buttons
- Utilization of the
ScrollViewcomponent for dynamic content display
- Implementation of core components like
Week 6: Data Handling in iOS and Android
- iOS Data Handling
- Utilization of UserDefaults for simple data persistence
- Introduction to Core Data for local storage of complex data structures
- Retrieval of data from APIs using URLSession
- Parsing of JSON data and rendering in the user interface
- Android Data Handling
- Utilization of SharedPreferences for storing small datasets
- Introduction to SQLite and Room Persistence Library for database management
- Retrieval of data from APIs using Retrofit
- Parsing of JSON and handling API responses
Week 7: React Native State Management and APIs
- State and Props in React Native
- Management of data flow within React Native components
- Utilization of
useStatehook for managing local component state - Transmission of data between parent and child components via props
- Fetching Data in React Native
- Utilization of the Fetch API and Axios for HTTP requests
- Display of retrieved data in lists (using
FlatList,SectionList) - Persistence of data locally using AsyncStorage in React Native
Week 8: Navigation in iOS and Android
- iOS Navigation
- Introduction to navigation controllers and management of multiple screens
- Utilization of segues for transitions between view controllers
- Transmission of data between view controllers
- Implementation of TabBar and NavigationBar for structured navigation
- Android Navigation
- Implementation of Activities and Intents for multi-screen applications
- Transmission of data between Activities using Bundles
- Creation of a Navigation Drawer and BottomNavigationView
- Implementation of fragments for flexible UI navigation
Week 9: Navigation in React Native
- React Navigation Basics
- Installation and configuration of React Navigation
- Utilization of Stack Navigator for screen transitions
- Implementation of Tab Navigator and Drawer Navigator for complex navigation structures
- Transmission of parameters between screens and management of navigation state
Week 10: Advanced Features
- iOS Advanced Features:
- Core location and maps
- Access to device location via Core Location
- Display of maps using MapKit
- Handling of geolocation and user location tracking
- Camera and media
- Access to device camera and photo library
- Capture and display of images with UIImagePickerController
- Storage and retrieval of media files
- Core location and maps
- Android Advanced Features
- Location and maps
- Utilization of the Google Maps API to display maps and user location
- Access to GPS data and handling of geolocation
- Camera and media
- Utilization of CameraX to capture photos and handle camera permissions
- Display of images and handling of media storage
- Location and maps
- React Native Advanced Features
- React Native maps
- Integration of maps using
react-native-maps - Handling of location-based services (geolocation, route mapping)
- Integration of maps using
- Camera and media access
- Utilization of the React Native Camera library for capturing photos
- Access to device media storage and handling of files
- React Native maps
Week 11: Debugging and Testing
- iOS Debugging and Testing
- Utilization of Xcode debugger
- Establishment of breakpoints and inspection of variables in Xcode
- Utilization of the console for real-time debugging
- Resolution of common debugging issues
- Unit testing in iOS
- Composition and execution of unit tests using the XCTest framework
- Mocking of objects and testing of UI components
- Utilization of Xcode debugger
- Android Debugging and Testing
- Utilization of Logcat in Android Studio
- Logging and analysis of errors using Logcat
- Debugging of Android apps with breakpoints
- Unit testing in Android
- Composition of unit tests using JUnit
- Testing of Android UI components with Espresso
- Utilization of Logcat in Android Studio
- React Native Debugging and Testing
- React Native debugging tools
- Utilization of Chrome DevTools and React Native Debugger for real-time debugging
- Console logs and inspection of network requests
- Unit testing in React Native
- Composition of unit tests using Jest and Enzyme
- Testing of React Native components and management of test cases
- React Native debugging tools
Week 12: App Deployment and Capstone Project
- Deployment and Distribution
- iOS App Store submission
- Preparation of the application for distribution (icons, certificates, provisioning profiles)
- Utilization of App Store Connect to submit the application for review
- Utilization of TestFlight for beta testing
- Android Play Store submission
- Preparation of APK and signing of the application for distribution
- Utilization of Google Play Console for application submission and tracking
- Comprehension of Play Store policies and guidelines
- iOS App Store submission
- Capstone Project Development
- Final project development
- Construction of a fully functional application of the participant’s choice
- Incorporation of advanced features including API calls, navigation, media, and location services
- Presentation and demonstration of the final application to peers and instructors
- Final project development
Summary and Next Steps
Requirements
- Basic understanding of programming concepts for government software development
- Basic knowledge of JavaScript for cross-platform applications
Audience
- Mobile developers supporting public sector initiatives
- Programmers in government IT departments
Testimonials (3)
Everything is ok.
Adrian Rybka - SEOyon
Course - Flutter Development Bootcamp with Dart
Very usefull additional informations
Grzegorz - Comp S.A.
Course - BLoC Pattern
Developing the User Auth App and the kahoot activity (made myself sure that i'm absorbing the training lectures :) and its fun!)