marinehero / Awesome-Swift-Education

All the resources for Learning About Swift

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Swift Logo

Awesome-Swift-Education Awesome

A curated list of resources for learning about the Swift Language.


  • πŸ“ = Gist
  • ✏️ = Repository
  • πŸ““ = Blog
  • πŸ“„ = Blog Post
  • πŸ“œ = Quick Reference
  • πŸ“š = Book
  • πŸ“– = Guide Book
  • πŸ“° = Newsletter
  • πŸ’Ύ = Slides
  • 🎀 = Video Presentation
  • πŸ“Ή = Video
  • πŸ”— = Link
  • πŸ”₯ = Awesome List
  • πŸŽ“ = Learning Resource
  • πŸ“‹ = Interview Questions
  • πŸ”Œ = Networking Related Post
  • πŸ“Š = Algorithm Related Post


Open Source Swift

Swift Style

In-Browser Swift Editors

Quick References



Great Learning Resources




Animations and Front End Stuff

  • Mixing SpriteKit with UIKit in iOS 9 πŸ“„

Application Structure / Architecture

  • Demystifying iOS Architecture Patterns πŸ“„
  • Mutating Funcs in Swift Structs πŸ“„

Associated Types and Objects

  • Protocols with Associated Types and how they got that way πŸ’Ύ
  • Associated Types in Swift Explained πŸ“„
  • Illuminating Forum Post πŸ“„
  • How to make Generic Protocols in Swift πŸ“„
  • Associated Enum Data As Types πŸ“„
  • Typesafe Associated Objects ✏️


  • Swift Function Currying πŸ“„
  • Closures and Capturing Values in Swift πŸ“„
  • Instance methods are Curried Functions in Swift πŸ“„
  • Using Local Closures with Swift πŸ“„
  • Delaying Code Execution through Closures πŸ“„
  • Can we please make a standard style for closures? πŸ“„
  • @autoclosure, @inline, @noescape, and @noreturn Keywords πŸ“„
  • How to use @noescape πŸ“„
  • How to use @autoclosure πŸ“„
  • Closures in API Design 🎀
  • weak vs unowned πŸ“„
  • Swift weak references πŸ“„
  • Difference between weak self vs weak self() πŸ“„

Collections / Sequences / Generators

Command Line and Swift Scripting


Core Data

  • A Swift Into To Core Data πŸ”Œ
  • Moving from ObjC to Swift with Core Data πŸ”Œ
  • What, if any, ACID gurantees does Core Data Make? πŸ”Œ
  • Core Data Libraries and NSKeyedArchiver πŸ”Œ

Data Structures and Algorithms

Design Patterns


Enums and Pattern Matching

  • Enums
  • Pattern Matching
    • Official Docs πŸ“
    • Swift's pattern-matching switch statement πŸ“„
    • Custom pattern matching in Swift πŸ“„
    • Advanced Swift Pattern Matching in Detail πŸ“„
    • Control Flow & Pattern Matching πŸ“„
    • Ranges and Intervals in Swift πŸ“„
    • More Pattern Matching Examples πŸ“„
    • What is a variadic parameter? πŸ“„
    • Pattern Matching in Swift πŸ“„
    • Swift Pattern Matching in Detail πŸ“„
    • Pattern Matching with an if case πŸ“„
    • Pattern Matching with Recursive Values in Swift πŸ“„

Error Handling


Functional Programming and Category Theory in Swift

Functional Reactive Programming in Swift



Interpolability with C and Objective-C

Language Comparisons

  • Comparing Swift and Javascript πŸ“„
  • C++ Advice to Swift Devs πŸ“„
  • Swift Protocols vs Java 8 Interfaces πŸ“„
  • What do Haskell developers think of Swift? πŸ”—

LLVM Compiler

Objective C Transitioning to Swift

Open Source Swift

Operator Overloading

  • Operator Overloading and JSON Parsing in Swift πŸ“„

Opinions about Swift

Optionals and Types

Problem Solving

  • Creating and Building a DSL in Swift πŸ’Ύ
  • πŸ™Œ FizzBuzz on steroids with Swift πŸ’Ύ
  • Learning Swift the Euler Way 🎀

Production Swift

Protocol Oriented Programming in Swift 2

  • πŸ™Œ Protocol-Oriented Programming in Swift 🎀 πŸ’Ύ
  • Protocols in Swift πŸ“„
  • POP is OOP Thesis πŸ“„
  • Standard Template Protocols ✏️
  • Protocol Oriented MVVM πŸ“„, πŸ’Ύ
  • Functional thinking via Protocol Extensions πŸ“„
  • Protocol Extensions vs Type Extensions πŸ“„
  • Swift Diagrams Playground for P.O.P. πŸ“„
  • Gist covers whatever went on in the official presentation πŸ“„
  • What are the advantages? πŸ“„
  • Another look into the concept of P.O.P. πŸ“„
  • If you're subclassing, you're doing it wrong. POP and VOP explained πŸ“„
  • Every Swift Value Type Should be Equatable πŸ“„
  • Protocol Oriented Programming through UIKit πŸ“„
  • Protocols in Swift πŸ“„
  • Ray Wenderlich intro to P.O.P. πŸ“„
  • Protocol Extensions and the death of the Pipe forward operator πŸ“„
  • How Protocol Oriented Programming could still improve πŸ“„
  • THe Swift Protocol Proposal πŸ“„
  • Swift Default Protocol Implementations πŸ“„
  • πŸ™Œ Mixins and Traits in Swift 2.0 πŸ“„
  • Minimal Swift 2.1 Protocol Coformance πŸ“„
  • Favor Mixins over inheritance πŸ“„
  • Use Protocol Composition πŸ“„
  • Can Swift have Dependent Types? πŸ“„
  • More Misunderstanding of Dependent Types πŸ“„



String Manipulation and RegEx

Swift Language

  • Function Params are Tuples in Swift πŸ“„
  • Improving your Existing Apps with Swift πŸ’Ύ


Type Reflection and Casting

  • Simple Reflection in Swift πŸ“„
  • Understanding Reflection in Swift and how to use it πŸ“„
  • Typecasting and the Swift Runtime πŸ“„

Web Services and Networking

  • SwiftHTTPStatusCodes πŸ“
  • Calling APIs and Parsing JSON with Swift πŸ“„
  • Parsing Embedded JSON and Arrays in Swift πŸ“„
  • Real World JSON Parsing πŸ“„
  • Efficient JSON Parsing with Functional Concepts πŸ“„
  • Swift and JSON: Are we doing it right? 🎀
  • Calling a REST Api in Swift πŸ“„
  • How to Make REST API Calls and Parse JSON with Swift πŸ“„
  • HTTP in Swift πŸ“„
  • Reachability Library πŸ“„

Web Services - Other

  • CloudKit Introduction πŸ”Œ
  • Create a Data Access Layer with SQLite.swift and Swift 2 πŸ”Œ
  • Using YapDatabase πŸ”Œ

Interview Situations

Contributing Guidelines

Let this list serve as a huge thank you to the incredible Swift Community. It would not exist if the people behind Swift were not so incredibly innovative, intellectual, and enthusiastic about the language and about open source. I created this list because I believe that the Swift community can be just as smart as the Haskell Community if guided properly. If you would like to make the Swift community smarter and contribute to this list, make sure to check out the emoji key and please open up a pull request or send a tweet of the content to @FeelFunnyFlow. I realize that this list is by no means perfect, so if you have an idea as to how I can change it, please let me know!


Shoutout to @clattner_llvm, the OG Swift Developer. Shoutout to @chriseidhof for encouraging me to promote this idea and for being a huge baller. Shoutout to @ashfurrow and @bennRodri for being so incredibly helpful. Shoutout to @CodaFi_, the TypeLift, and the Antitypical teams for promoting FP. Shoutout to the trillmoji project. Shoutout to Haskell Devs and Category Theory legends. And finally, Shoutout to all the Swift Programmers out there, this project is by you and for you!


All the resources for Learning About Swift

License:MIT License


Language:Swift 100.0%