Courses Syllabus

 

Please note that topics and order may vary.

 

A Swift Kickstart

Introducing the Swift 4.0 Programming Language

Language Fundamentals

Functions

  • Explore a playground in Xcode 8
  • Create and call functions
  • Function overloading in Swift
  • Default values for parameters
  • Local and external parameter names
  • Tuples and variadic parameters

Variables and Constants

  • Strong type inference in Swift
  • Let vs. Var
  • No promotion of numeric types
  • Where spaces matter
  • Functions as objects
  • Optionals and Nil

Collections

  • Create and modify arrays
  • Collections are homogeneous
  • Iterating an array
  • Value and Reference Types
  • Create and modify dictionaries
  • A Quick look at Sets
 

Types and Instances

Classes

  • Base classes
  • Subclasses
  • Stored and Computed Properties
  • By-reference semantics
  • The init method
  • Convenience methods
  • More optionals
  • Overriding methods

Enumerations

  • Case
  • Switch
  • Raw values and more optionals
  • Methods
  • Computed properties
  • As property types
  • Value Types
  • Associated values

Structs

  • Properties
  • By-value semantics
  • Default init
  • Getters and setters
  • Did set and will set
  • Mutating methods

Protocols

  • Collecting commonality
  • Conforming
  • Polymorphism
  • Self
  • Generics
  • Protocol extensions
  • Extension points

Intermediate Swift
Day 1

Patterns in Using Swift

Basic Types

  •     Type alias benefits and limitations
  •     Clarifying with structs
  •     Compile time safety
  •     Additions for Value types
  •     Anonymous Function Calls
  •     Convenience Initializers

Polymorphism

  •     Inheritance of interface
  •     Protocols
  •     Static members
  •     Simple use of Generics

Enumerations

  •     Phantom Types
  •     Type alias for good
  •     Implied Generics

Building a DSL

  •     Nested Types
  •     Adding behavior
  •     Enforcing types
  •     More (and less) convenience Initializers
  •     Mixing generic types
  •     Custom Operators
 

Swift based MVC

  •     Basic MVC
  •     Views in a Playground
  •     Protocols to separate the view

MVVM

  •     Adding a View Model
  •     Distancing the Model with a Delegate
  •     Make the Model Immutable
  •     Replacing Delegates with Closures
  •     A touch of reactive

Swifty Table Views

  •     Table View Data Source as View Model
  •     Deleting Elements
  •     Moving Elements
  •     Inserting Elements
  •     Modifying the Model

Intermediate Swift
Day 2

Map, Filter, Reduce, and FlatMap

Functional Programming Basics

  •     Immutables
  •     Value Types
  •     Partial Application
  •     Higher-Order Functions
  •     Custom Operators

Mapping Collections

  •     Mapping Arrays
  •     Mapping Dictionaries
  •     Mapping Model

Other Higher-Order Functions

  •     Sorting
  •     Filter
  •     Reduce
  •     Chaining Combinations
 

Understanding Map

  •     Mapping Optionals
  •     Our own map
  •     Result type
  •     Non-Container Map

Understanding FlatMap

  •     FlatMapping Arrays
  •     FlatMapping Optionals
  •     “FlatMapping” Sequences of Optionals
  •     Our own FlatMap
  •     Unit/Pure

Immutable State (optional topic)

  •     Repeatable Random Number Generator
  •     A State Struct
  •     Mapping State
  •     FlatMapping State