Swift Programming Introduction (3 days – £1,785, plus VAT)

This course is designed for beginners and covers: getting started; variables and constants; characters and strings; collections and tuples; operators; control flow; functions; classes, structures, and enumerations; protocols; subclassing and extending; generics; and Access control.

Getting Started

The Swift Revolution, Installing Xcode, Creating A Playground, Adding Pages To A Playground, Working With The Results Sidebar, Logging In To The Console, Adding Comments, Running A Repl, Using Dot Notation

Variables And Constants

Understanding Value And Reference Types, Understanding Mutability, Defining Strings, Defining Characters, Defining Integers, Defining Floating Points, Defining Booleans, Defining Numeric Literals, Defining Type Aliases, Deferring Value Assignment And Handling Nil

Characters And Strings

Understanding Unicode, Working With Strings

Collections And Tuples

Defining Arrays, Inspecting And Accessing Arrays, Modifying Arrays, Nesting Arrays, Defining Dictionaries, Inspecting And Accessing Dictionaries, Modifying Dictionaries, Nesting Dictionaries, Defining Sets, Inspecting And Comparing Sets, Performing Set Operations, Modifying Sets, Nesting Sets, Defining Tuples, Accessing Decomposing And Nesting Tuples, Modifying Tuples


Using Arithmetic Operators, Combining Strings And Arrays, Using Comparison And Logical Operators, Using Ternary Conditional And Nil Coalescing Operators, Using Range Operators, Using Type Checking And Casting Operators, Understanding Binary Notation, Using Bitwise Operators, Understanding Operator Precedence And Associativity

Control Flow

Using For And For In, Using While And Repeat While, Using If And If Else, Optional Binding, Using Guard, Using Switch, Using Labels, A Quick Note On Enums, Using If Case And For Case, Deferring Code Execution, Optional Chaining


Defining And Calling Functions, Variable Input And Output Parameters, Reference Type Parameters, Returning Functions, Returning Tuples, Currying, Handling Errors, Overloading Functions, Creating Custom Operators, Working With Closures, Using Closures To Calculate Values, Using Advanced Functions

Classes, Structures, And Enumerations

Comparing Classes And Structures, Working With Classes, Class Instance Properties, Class Instance Methods, Deinitializing A Class Before Cleanup, Avoiding Strong Reference Cycles, Working With Singletons, Working With Structures, Creating Mutating Structures, Creating Error Type Structures, Working With Basic Enumerations, Associating Values In Enumerations, Working With Recursive Enumerations, Subscripting


Defining And Adopting Protocols, Working With Protocols That Have Optional Properties, Using Protocols In The Swift Standard Library, Working With Protocol Types, Implementing Delegation, Working With Option Set Types

Subclassing And Extending

, Initializing From Subclasses, Overriding Initializers, Preventing Subclasses From Overriding Properties Or Methods, Extending Concrete Types, Adding Initializers And Protocol Adoption Via Extensions, Extending Protocols, Overriding Default Implementations


Understanding Generics, Working With Generics, Constraining Generic Types, Protocol Associated Types

Access Control

Understanding Access Control, Setting Up Access Control