Professional Swift

Move beyond merely writing Objective-C code in Swift to use the full power of Swift 4

This course is curated from a live training session conducted for 16 hours across four days and it is accompanied with Student guide and a completion certificate.


Swift is a multi-paradigm language. It has expressive features familiar to those used to working with modern functional languages, while also keeping the object-oriented features of Objective-C. Swift vastly streamlines the developer experience. To give you a couple of examples: things that took a block of code in Objective-C are reduced to one or two lines in Swift. Apple’s XCode Playground allows developers to view the results of changes they make to their Swift code in real time (instead of having to compile and run the application to check every change).  

The goal of this training course is to cover everything you need to know to move from a Swift beginner to a professional Swift programmer.

This course takes you reasonably deep into the Swift language. It covers the full depth of Swift features at the right level necessary for you to handle most serious development tasks. You will deal with Swift development in Xcode. Next, you will get introduced to writing in Swift for iOS. We will also share some important tricks from the standard library along with exploring how to write "stylish" Swift. You will then move on to gain more information about the differences when using Swift for Apple's Objective-C platforms. Finally, you will be dealing more with Apple's development tools.

By the end of this course, you will be ready to build your own Swift applications with ease like a pro!


What is this training about, and why is it important?

Coming to a new language like Swift, programmers often continue to employ the techniques they are used to from other languages. Swift is a versatile language and allows several ways of doing things, but it is also an opinionated language and there are some ways that are preferable. This course seeks not only to teach these ways, but also show why they are better. It takes you on a journey starting from learning advance Swift to other libraries and frameworks in Swift.

What you’ll learn—and how you can apply it

  • Explore why Swift prefers value types over reference types (structs over classes)
  • Load content from web APIs into structs and how to store structs to files
  • Explore protocols and protocol-oriented programming in depth
  • Develop skills to create high quality, reusable code
  • Dive in deep into Apple's MVC pattern and explore other MVC alternatives
  • Discover different ways to structure a complete iOS app from scratch

This Online Training is for you because…

This training course will help you develop practical-grade apps using the full power of Swift 4. It is aimed at beginner Swift developers looking to move into the professional app development world.


You must be well-versed with the following concepts in Swift:

  • Basic syntax
  • Optionals
  • Functions and closures
  • Classes

You should also be familiar with Xcode. Any additional iOS application development experience, either using Swift or Objective-C, will be beneficial.

Materials, downloads, or Supplemental Content needed in advance

Minimum Hardware Requirements

 For successful completion of this training, you will require the following:

  • A Mac computer capable of running macOS Sierra 10.12.6+
  • A minimum 5 mbps Internet connection

Recommended Hardware Requirements

For an optimal experience with hands-on labs and other practical activities, we recommend the following configuration:

  • A Mac computer capable of running macOS Sierra 10.12.6+
  • A 10 mbps Internet connection

Software Requirements 

  • Operating system: macOS Sierra 10.12.6+
  • Xcode 9.1
  • Safari browser

Code Files


The timeframes are only estimates and may vary according to how the class is progressing


Lesson 1: Value Types (2 hours)

  • Topic A: Reference vs. Value Types (15 mins)
    • Activity A: Exploring Value Types
  • Topic B: Structs (1 hour 15 mins)
    • Activity B: Creating a Swift Struct
  • Topic C: Enums (30 mins)
    • Activity C: Adding Enums to Structs
      • Summary
      • Practice Questions


Lesson 2: Encoding and Decoding (2 hours)

  • Topic A: Decoding (1 hour)
    • Activity A: Instantiate Structs and Enum from JSON
  • Topic B: Encoding (1 hour)
    • Activity B: Adding Encoding Capabilities to the Framework
      • Summary
      • Practice Questions


Lesson 3: Frameworks (2 hours)

  • Topic A: Create Framework (40 mins)
    • Activity A-1: Creating your Own Framework
    • Activity A-2: Adding Access Level Modifiers to a Framework
  • Topic B: CocoaPods (40 mins)
    • Activity B-1: Importing Other Frameworks into your Framework Using CocoaPods
    • Activity B-2: Importing your Framework into a Premade App Using CocoaPods
  • Topic C: Carthage (40 mins)
    • Activity C-1: Importing Other Frameworks into your Framework using Carthage
    • Activity C-2: Importing your Framework into a Premade App Using Carthage
      • Summary
      • Practice Questions


Lesson 4: Swift Protocols (2 hours)

  • Topic A: Protocol Syntax Basics (1 hour)
    • Activity A-1: Photo Picker Starter Application
    • Activity A-2: Adopting a Cocoa Touch Protocol
    • Activity A-3: Implementing a Custom Protocol
  • Topic B: Using Protocols as Types (30 mins)
  • Topic C: Mutating Method Requirements (30 mins)
    • Summary
    • Practice Questions


Lesson 5: Protocol-Oriented Programming (2 hours)

  • Topic A: Transitioning from Object-Oriented to Protocol-Oriented Programming (30 mins)
  • Topic B: Implementing Employee as a Simple Swift Struct (30 mins)
  • Topic C: Refactoring Employee with an Object-Oriented Approach (30 mins)
  • Topic D: Refactoring Employee with a Protocol-Oriented Approach (30 mins)
    • Summary
    • Practice Questions
  • Break (15 mins)

Lesson 6: Swift Generics (2 hours)

  • Topic A: Basics of Generics (30 mins)
    • Activity A: Implement a Type Constraint
  • Topic B: Creating Generic Types (30 mins)
    • Activity B: Refactoring the Queue to Handle any Data Type
  • Topic C: Generic Extensions (30 mins)
  • Topic D: Associated Types (30 mins)
    • Summary
    • Practice Questions



Lesson 7: Software Design (1 hour)

  • Topic A: The Need for Architectural Pattern (15 mins)
  • Topic B: The Original MVC Report (30 mins)
  • Topic C: Apple's MVC (15 mins)
    • Summary
    • Practice Questions

Lesson 8: MVC Alternatives (2 hours)

  • Topic A: Apple's MVC in Practice (30 mins)
  • Topic B: MVVM (Model-View-ViewModel) (45 mins)

Break (15 mins)

  • Topic C: VIPER (45 mins)
    • Summary
    • Practice Questions

Lesson 9: Unidirectional Data Flow (1 hour)

  • Topic A: Identifying Side Effects of Functions (15 mins)
  • Topic B: Unidirectional Data Flow (15 mins)
  • Topic C: Redux in iOS (30 mins)
    • Summary
    • Practice Questions

What's included?

4 Videos
1 Text
Jonathan Crooke
Jonathan Crooke
iOS Developer

About the instructor

Jonathan has been a professional developer for Apple platforms since 2010, and has shipped successful apps with user-bases in the millions, working for companies such as SoundCloud, Zalando, Memrise, and EyeEm. He has worked on the iPhone, iPad, Apple Watch and MacOS, and has a number of popular libraries available on GitHub. With a previous career in teaching, Jonathan has considerable experience putting himself in the shoes of the learner, and communicates clearly without excessive use of jargon.

You may also be interested in...