Full Stack iOS Development

Duration: 6 months;
What you’ll learn:
● Be able to build any app you want
● Start your own app-based business
● Create a portfolio of apps to apply for junior developer jobs at a technology company
● Become a digital nomad by working as a freelance iOS developer
● Learn to work with Apple’s latest UI Framework – SwiftUI
● Master creating Augmented Reality apps using Apple’s new ARKit
● Create apps that use Machine Learning using Apple’s new CoreML
● Master app design so you’ll know how to wireframe, mockup and prototype your app idea
● Master app marketing so you can publish your apps and generate downloads
Technologies: Swift, XCode, iOS, Core Data, iOS Sockets and Objective-C Flutter, React Native, Xamarin
Course Outline for Full Stack iOS Development

IOS/XCODE INTERFACE BUILDER
1. How to set up a new Xcode project.
2. How to use the Interface Builder to design and create the appearance of your app.
3. How to find your way around Xcode.
4. How to size and arrange various UI elements.
5. How to add custom image assets to Xcode projects.
6. How to create app icons and size them for all resolutions. How to run apps on the iOS Simulator as well as sideload to a physical device.

INTRODUCTION TO iOS DEVELOPMENT
1. Learn to clone projects from GitHub.
2. Link design with code via IBActions and IBOutlets. Learn to detect user interaction through UIButtons. Understand and use Swift variables, constants, and collection types.
3. Learn about printing and commenting in Swift.
4. Learn about randomization in swift and range operators.
5. Learn to use Image Literals in code.
6. Learn to use Swift Playgrounds.
7. Understand the data type system and the primitive data types such as Strings, Ints, and Doubles.

iOS AUTO LAYOUT AND SETTING CONSTRAINTS
1. How to add constraints and understand how the auto layout works.
2. How to Pin and Align UI elements.
3. How to create containers to configure advanced layouts.
4. How to debug auto layout errors.
5. Understand the pre-requisites to automatic layout.
6. How to use stack views to easily layout your UI.

READING AND USING APPLE DOCUMENTATION
1. Figure out how to play sound using AVFoundation and AVAudioPlayer through understanding Apple
2. documentation. How to use Swift functions and understand input parameters and return types.
3. Error handling using try and catch.
4. Code refactoring.
5. Basic debugging for code errors.

CONTROL FLOW AND OPTIONALS
1. Understand the need and use cases of Swift Optionals.
2. How to use IF-ELSE and Switch statements to control the flow of code execution.
3. Learn about Swift Dictionaries.
4. Learn to use the UIProgressView to create an animated progress bar.
5. Figure out how to use the Timer object in Swift using documentation.

iOS DESIGN PATTERNS AND THE MODEL-VIEW-CONTROLLER (MVC)
1. What is a design pattern and how is it used in programming.
2. How to use the Model-View-Controller or MVC pattern for app development.
3. Learn about 2D arrays.
4. Learn about Swift Structures and creating custom types.
5. Learn about struct initialization.
6. Learn about properties and methods and the difference between functions and methods.
7. Learn about immutability and the mutating keyword.

MULTI-SCREEN APPLICATIONS
1. Learn about Swift classes.
2. Learn about Object-Oriented Programming and inheritance. Learn the difference between Structures and Classes and when to use each.
3. Learn to use the UISlider.
4. Creating a custom UIViewController class.
5. Creating UI completely programmatically without Interface Builder.
6. How to build a multi-screen app using segues.
7. Advanced methods of handling Swift Optionals, including Optional Binding, Optional Chaining, and the Nil
8. Coalescing Operator.
9. Learn about Color Literals.

NETWORKING, APIS AND JSON PARSING
1. How to use public APIs to get live data from the internet. Learn about Networking and use the native URLSession object to make HTTP requests to a server.
2. Learn about the Decodable Protocol and how to parse JSON formatted data using the native JSONDecoder.
3. Learn to create Dark Mode differentiated assets and use vector assets.
4. Learn to use the UITextField to get keyboard inputs.
5. Learn about Swift Protocols
6. Learn about the Delegation design pattern using Protocols.
7. Learn about Swift Extensions.
8. Learn to to use Swift computed properties.
9. Understand the completion handler and the Swift Closure.
10. Learn about Core Location to tap into the device’s GPS data.

SWIFTUI, COMBINE & CATALYST
1. Understand what is SwiftUI and how it’s different from UIKit. Learn to write declarative SwiftUI code to create user interfaces programmatically.
2. Learn to build user interfaces using SwiftUI Text, Button, Image, HStack, VStack, ZStack, List, Color and
3. NavigationView components.
4. Learn to use the Preview pane and live Preview.
5. Use the Object Library to turn UI elements into code. Understand and use SwiftUI modifiers to chain modification
6. methods to SwiftUI components.
7. Understand the SwiftUI Closure syntax to add custom functionality to SwiftUI components.
8. See the difference between Imperative and Declarative code.
9. Manage state using the @State property modifier. Learn about the @Published property modifier from the Combine a framework that allows for more complex state management.
10. Manage complex app states using the ObservableObject protocol.
11. Learn to incorporate UIKit components in a SwiftUI app using the UIViewRepresentable protocol.
12. See your iOS apps turn into a Mac apps by leveraging project Catalyst.

THE COMMAND LINE AND TERMINAL
1. How to use basic bash commands in the Unix Terminal. How to manipulate files and folders without needing a graphical user interface.
2. How to download and install to your computer using the command line.

GIT GITHUB AND VERSION CONTROL
1. Using git for version control and collaboration Git forking, branching and cloning
2. Using GitHub as a remote repository Checkout and rolling back changes with git
3. Using git and GitHub with Xcode

CLOUD-BASED BACKEND ( FIREBASE), USER AUTHENTICATION AND TABLEVIEWS
1. How to integrate third-party libraries in your app.
2. How to store data in the cloud using Firebase.
3. How to query the Firebase database.
4. How to use Firebase for user authentication.
5. How to work with a UITableView.
6. How to use custom cells in a Table View.
7. How to embed View Controllers in a Navigation Controller and understanding the navigation stack. How to create Segues for navigation.
8. How to make custom .xib files to modify native design components.
9. Using Grand Central Dispatch to queue asynchronous tasks.

PERSISTENT STORAGE SOLUTIONS
1. How to use UserDefaults and plists
2. How to use the Codable Protocol to save to file
3. How to use Core Data for relational data management How to use Realm as a modern database solution
IN-APP PURCHASES AND APPLE STOREKIT API
1. How to integrate the Apple StoreKit API into your app How to charge once only and subscription payments for apps
2. How to test using Sandbox accounts

MACHINE LEARNING ON IOS, COREML AND CREATEML
1. Introduction to machine learning CoreML – Using pre-trained machine learning models for image recognition
2. Using IBM Watson Bluemix and Carthage for intelligent iOS apps
3. Advanced CoreML – Converting a model from Caffe to MLModel
4. CreateML – Creating your own image recognition model Advanced CreateML
5. Create a Twitter sentiment analysis machine learning model using natural language processing (NLP) tools from CreateML.

AUGMENTED REALITY ON IOS AND ARKIT
1. Introduction to augmented reality, ARKit, and SceneKit Creating 3D objects and text in AR Animations in AR Plane detection
2. Measuring real-world distances in AR Image recognition and tracking in AR
3. Rendering 3D models on tracked images
4. Playing videos in real-world tracked images
PUBLISHING TO THE APP STORE
1. Familiarising with App Store Connect
2. How to write the app listing
3. Apple TestFlight
4. Submitting your app for review