Skip to content

Latest commit

 

History

History
17999 lines (17999 loc) · 339 KB

Awesome-Swift-Education.md

File metadata and controls

17999 lines (17999 loc) · 339 KB

Awesome-Swift-Education Awesome Build Status

There is no royal road to Swift. —Euclid

Index

Open Source Swift

  • Apple Master Github Repository 👑
  • Swift Master Repository ✏️ ★ 29811, pushed 126 days ago
  • Download Swift 🔗
  • Core Libs Unimplemented Parts ✏️
  • Swift Core Libs Foundation Repository ✏️ ★ 1824, pushed 129 days ago
  • Swift Core Libs Dispatch Repository ✏️ ★ 674, pushed 133 days ago
  • Swift Clang Repository ✏️ ★ 370, pushed 125 days ago
  • Swift LLDB Repository ✏️ ★ 319, pushed 126 days ago
  • Swift Packages ✏️ ★ 86, pushed 243 days ago
  • Swift Compiler Crashes ✏️ ★ 771, pushed 127 days ago
  • Latest Code changes in Swift 🔗
  • Diving into the Swift Ecosystem 🎤

⬆️

Swift Style

  • No Single Swift Style :page facing up:
  • Functional Swift Style Guide 📖 ★ 36, pushed 662 days ago
  • The Official Swift Language Docs 📖
  • Swift Language Evolution 📖 📖 ★ 3723, pushed 125 days ago
  • Swift Style Rules 📖
  • SwiftLint 📖 ★ 3811, pushed 129 days ago
  • Swift Don'ts 📖
  • Swift Style 📖 ★ 16, pushed 223 days ago
  • Prolific Style Guide 📖 ★ 108, pushed 139 days ago

⬆️

In-Browser Swift Editors

⬆️

References

  • Awesome Lists
    • 🔥 Awesome Swift Playgrounds 📜
    • 🔥 Awesome iOS 📜 ★ 11176, pushed 128 days ago
    • 🔥 Awesome Swift 📜 ★ 7959, pushed 128 days ago
    • 🔥 Another Awesome Swift 📜 ★ 2644, pushed 132 days ago
    • 🔥 Awesome Functional Programming 📜 ★ 422, pushed 128 days ago
    • 🔥 Awesome iOS Security 🔗 ★ 68, pushed 316 days ago
    • 🔥 Awesome FRP Swift ✏️ ★ 43, pushed 183 days ago
    ★ 406, pushed 135 days ago
  • Other

⬆️

Great Learning Resources

  • Official Swift Documentation 📝
  • Swift Education Community Repository ✏️
  • iOS Swift Reference ✏️ ★ 45, pushed 313 days ago
  • Hacking With Swift 🎓
  • A Better way to learn Swift 🎓
  • Ray Wenderlich Tutorial Pages 🎓
  • Swift Education 🎓
  • Play with Swift 🎓
  • CS193P: Developing iOS 9 Apps with Swift 🎓
  • Realm Roundup: 25 Realm Resources and Tutorials 🎓
  • Functional Reactive Programming iOS Learning Resources 🎓
  • Learn Core Data 🎓
  • Udacity Swift Syntax Course 🎓
  • Open Source iOS Apps ✏️ ★ 5505, pushed 127 days ago
  • A summary of swift in playgrounds ✏️ ★ 1278, pushed 131 days ago
  • New stuff from WWDC 2016 ✏️
  • WWDC16 Video Transcripts 🔗
  • WWDC 2016 Viewing Guide :page facing up:

⬆️

Books

  • Free
  • Paid
    • Objc.io Book Series 📚
    • Ray Wenderlich Book Series 📚
    • Packt Publishing Book Series 📚
    • Apress Book Series 📚
    • Oreilly Book Series 📚
    • Your First Swift App 📚
    • Teach Yourself Swift in 24 Hours, 2nd Ed 📚
  • Open Source

⬆️

Video

camera:
  • MobileKonf 2015 :video camera:
  • Functional Swift Conf 2014 :video
  • camera:
  • Functional Swift Conf 2015 :video camera:
  • CocoaConf Videos :video
  • camera:
  • All Presentations from 360iDev 2015 :video camera:
  • NSSpain 2015 interviews :video
  • camera:
  • Other Video
  • camera:
  • Swift Language Youtube Channel :video camera:
  • Free Swift Lang Course :video
  • camera:
  • Swift tutorial Video Series 📹
  • ⬆️

    Swift Community

    ⬆️

    Programming with Swift

    Audio

    ⬆️

    Closures and Functions

    ⬆️

    Collections

    ⬆️

    Command Line and Scripting

    ⬆️

    Concurrency

    up:
  • GCD and Parallel Collections in Swift :page facing up:
  • GCD convenience functions :page facing up:
  • dispatch after 🔗
  • Does Swift have constructs for parallel programming through Grand Central Dispatch's dispatch
  • async? 🔗
  • GCD in Linux and OSX ✏️
  • GCD DSL ✏️
  • GCD's Main Queue vs. Main Thread :page facing up:
  • Use of the terms “queues”, “multicore”, and “threads” in Grand Central Dispatch 🔗
  • Grand Central Dispatch vs. NSThread 🔗
  • GCD in Swift 3 :page facing up:
  • NSOperation
  • Async
  • Actor Model
    • Actor Model Concurrency in Swift ✏️
    • Swift Actors 📝 ★ 31, pushed 742 days ago
    ★ 31, pushed 742 days ago
  • Coroutines
    • Coroutines in Swift 📝
    • CSP (Coroutines, Channels, Select) for Swift ✏️
    • True coroutines for Swift ✏️ ★ 154, pushed 429 days ago
  • Locking and Threading ★ 47, pushed 251 days ago
  • ⬆️

    Control Structures

    ⬆️

    Data Structures and Algorithms

    ⬆️

    Dates

    ⬆️

    Debugging

    ⬆️

    Design Patterns and AntiPatterns

    facing up:
  • Design Patterns Library in Swift :page facing up: ★ 5777, pushed 132 days ago
  • SOLID Design in Swift ✏️ ★ 53, pushed 493 days ago
  • Allergies and Dependency Inversion :page facing up:
  • Swift Design Patterns Story 🔗
  • Functional Design Patterns 🔗
  • SOLID Design on Android S O L I D
  • Discovering Native Swift Patterns 🎤
  • Native Swift Patterns :page facing up:
  • Swifty? :floppy
  • disk:
  • Swift emerging patterns and idioms :page facing up:
  • Template Method
  • Strategy
  • Command
  • Adapter
  • Builder
  • Observer
  • Null Object
  • Factory
    • Functions as Factories :page facing up:
    • Calling a Swift class factory method with leading dot notation? 🔗
    • Factory method with Leading Dot Notation 🔗
  • Facade
  • Singleton
    • Swift Singleton ✏️
    • Using a dispatch
    ★ 1009, pushed 284 days ago
  • once singleton model 🔗
  • Decorator
  • Target Action
  • Class Cluster
  • Responder Chain
  • ⬆️

    Development Paradigms

    ⬆️

    Enums and Pattern Matching

    ⬆️

    Error Handling

    disk:
  • Errors: unexpected, composite, non-pure, external :page facing up:
  • Swift 2 Error Handling vs Result 💾
  • Three Stories of Error Handling in Swift 🎤
  • ⬆️

    Extensions

    ⬆️

    FAQs

    disk:
  • Swiftly Methods :page facing up:
  • Improving your Existing Apps with Swift 💾
  • How Swift makes clean code :page facing up:
  • % of top 100 apps using Swift :page facing up:
  • 10 Swift One Liners To Impress Your Friends :page facing up:
  • Interfaces vs Inheritance :page facing up:
  • Why is there no base class in Swift 🔗
  • Thinking in Swift :page facing up:
  • Open Source Swift
  • Opinions about Swift
  • Swift Versions
  • ⬆️

    Foundation

    ⬆️

    Functional Programming

    facing up: :page facing up: :floppy disk: 🎤
  • Functional Programming By Example 📝
  • Make Swift More Functional :floppy disk:
  • Introduction to Functional Programming in Swift :page facing up: :floppy
  • disk:
  • Functional Programming in Swift Talks 🎤 🎤 :floppy disk: 🎤 🎤
  • Proof in Functions :page facing up: :page facing up: :page facing up:
  • Functional Thinking :floppy
  • disk:
  • 6 Killer Functional Swift Features :page facing up:
  • Functional Programming in the Swift Language :page facing up:
  • Writing Compelling Functional Code with BananaKit 🎤
  • Practical Declarative :floppy disk: and Functional :floppy
  • disk: Swift
  • 7 Habits for more functional Swift 💾 📝
  • Writing Pipe operators in Swift :page facing up:
  • Reccomended Functional Operators in Swift 📝 :page facing up: 📝 ★ 24, pushed 197 days ago
  • Point-Free Style Swift :page facing up:
  • Immutable State
  • Map / Filter / Reduce
  • Recursion and Infinite Streams
  • Memoizations
  • Lambda Calculus
  • Functors and Applicatives
  • Arrows
  • Monads
  • facing up:
  • Swift Adventures in Monad Land ✏️ ★ 136, pushed 253 days ago
  • Paragons Of Perfunctory Programs :page facing up:
  • Networking with Monads and into to Transformers 🎤
  • "var" is the State monad :page facing up:
  • Reader
  • Writer
  • State
  • Continuation
  • Monoids
  • Folds and Lazy Lists
  • Zipper
  • Promises / Futures ★ 410, pushed 129 days ago
  • disk:
  • Binds and Promises with Forbind :page facing up: ✏️
  • Futures and monads 🔗
  • Promise + progress + pause + cancel + retry ✏️ ★ 1403, pushed 167 days ago
  • Composability with Swift 💾
  • Combinators
  • Lenses, Transducers, Reducers
  • Categories ★ 1, pushed 721 days ago
  • Functional Frameworks
    • Swiftz Functional Programming Library ✏️
    • Second Bridge Swift Functional Framework ✏️ ★ 65, pushed 156 days ago
    • Swiftx Functional Data Types ✏️ ★ 136, pushed 163 days ago
    • Basis Pure Declarative Programming in Swift ✏️ ★ 276, pushed 166 days ago
    • Functional Concurrency Primitives ✏️ ★ 100, pushed 193 days ago
    • Prelude Library :page facing up: ★ 222, pushed 213 days ago
    • Funky Functional Programming Tools and Experiements ✏️ ★ 9, pushed 233 days ago
    • Dollar.Swift Functional Toolkit like Lodash and Underscore ✏️
    • SwiftLand MicroFramework ✏️ ★ 2, pushed 149 days ago
  • ⬆️

    Functional Reactive Programming

    disk:
  • FRP with RAC in Swift 💾
  • MVVM + Rac 4 ✏️ ★ 116, pushed 126 days ago
  • RAC Schedulers :page facing up:
  • RACNest: RAC + MVVM Examples ✏️ ★ 55, pushed 131 days ago
  • Reactive Command Pattern ✏️ ★ 17, pushed 234 days ago
  • Simple Asynchronous Swift code with ReactiveCocoa 4 🎤
  • RxSwift
  • ⬆️

    Generics

    ⬆️

    Initialization, Properties, and Dependency Injection

    ⬆️

    Interpolability

    up:

    ⬆️

    Internals

    disk:
  • Using the LLVM API With Swift :page facing up:
  • LLVM and Swift 🎤
  • LLVM in Swift: Setup :page facing up:
  • Kaleidoscope: Implementing a Parser and AST in LLVM :page facing up: ✏️
  • Swift Object Name De-mangling :page facing up:
  • Hopper Swift Demangler 📝
  • How to use LLVM API with Swift :page facing up: :page facing up:
  • Swift Compiler :page facing up:
  • Parsing Mach-O files :page facing up:
  • How to use LLVM C API with Swift :page facing up: :page facing up:
  • Creating a Virtual Machine/Register VM :page facing up:
  • What is LLVM and how does it differ from GCC? :page facing up:
  • Swift wrapper around LLVM ✏️ ★ 29, pushed 291 days ago
  • Simple programming language written in Swift and compiled with LLVM ✏️ ★ 15, pushed 278 days ago
  • Swift wrapper around LLVM-C 📝 ★ 29, pushed 291 days ago
  • Memory
  • Optimizations
  • Performance
  • facing up: 📝
  • Swift 2 Under the Hood :floppy
  • disk:
  • Swift Compiler Diagnostics :page facing up:
  • Swift: Performance of Inline Code versus Instance Methods versus Class Methods :page facing up:
  • Simple Swift.String Performance Test ✏️ ★ 0, pushed 572 days ago
  • Secret of Swift Performance :page facing up: :page facing up:
  • Writing High Performance Swift Code 🔗
  • Swift Single Soutce 📝
  • 10 thousand times faster Swift :page facing up:
  • Why Swift is swift 🎤
  • Preprocessing
  • SIL and swiftc
  • disk:
  • Unsafe Swift 💾
  • Type Introspection and demangling :page facing up:
  • The mysterious builtin module :page facing up:
  • SIL Optimizations 📝
  • ⬆️

    IO

    ⬆️

    Language Comparisons

    disk: 🎤
  • What do Haskell developers think of Swift? 🔗
  • A Swift introduction to Haskell :floppy disk:
  • Hindley-Milner languages 🔗
  • Quicksort in Swift with Haskell style 🔗
  • Lesson In Swift Through Haskell :floppy
  • disk:
  • Javascript
  • C
  • C++
  • C#
  • Java
  • Kotlin
  • Android
  • Rust
  • Ruby
  • Scala
  • facing up:
  • Swift is a lot like Scala 🔗
  • OCaml ★ 211, pushed 129 days ago
  • Python ★ 487, pushed 168 days ago
  • Elixir
  • Groovy
  • React Native
  • ObjC
  • ⬆️

    Linux

    ⬆️

    Optionals

    ⬆️

    Problem Solving

    disk: 🎤
  • Implementing goto in Swift :page facing up:
  • Functional ASCII Art :page facing up: ★ 125, pushed 294 days ago
  • Writing 2048 in Swift :page facing up:
  • FlappySwift ✏️ ★ 7723, pushed 251 days ago
  • Parallel Mandelbrot Set in Swift :page facing up:
  • Game of Life in Swift :page facing up:
  • Random number generators in Swift :page facing up: 📝
  • Interview Questions
  • ⬆️

    Production

    disk:
  • Cocoapods
  • SPM
  • Modules and frameworks
  • Docker
    • Deploy and run Swift Kitura Applications with Docker :page facing up:
    • Docker image that contains all dependencies for building and running the Kitura sample application ✏️ ★ 3, pushed 129 days ago
    • Docker for iOS Development ✏️ ★ 112, pushed 442 days ago
    • How I'm dockerizing Swift web apps :page facing up:
    • Docker containers used for spinning up different Swift web frameworks :page facing up: ★ 9, pushed 218 days ago
    • Easy Server Side Swift with Docker :page facing up:
    • Swift example to run on Kubernetes ✏️ ★ 0, pushed 207 days ago
    • Run Linux Swift on your Mac or PC with Docker :page facing up:
  • Other ★ 397, pushed 140 days ago
  • ⬆️

    Protocols

    facing_up: 🎤
  • Protocols in Swift :page facing up:
  • The Genius of Protocols :page facing up:
  • Swift Comparison Protocols :page facing up:
  • Protocols in Swift :page facing up:
  • Raw​Option​Set​Type :page facing up:
  • Standard Template Protocols ✏️ ★ 325, pushed 160 days ago
  • Properties of Types Conforming to Protocols :page facing up:
  • Swift Default Protocol Implementations :page facing up:
  • Optional Protocol Methods :page facing up:
  • Using the Hashable Protocol :page facing up: :page facing up:
  • Swift Protocol Naming Conventions :page facing up:
  • A default CustomStringConvertible implementation for Swift types :page facing up:
  • A protocol that allows any class to be printed as if it were a struct :page facing up: ★ 23, pushed 132 days ago
  • Implementing Equatable for Protocols in Swift :page facing up:
  • ⬆️

    Protocol Oriented Programming

    📝 :page facing up:
  • Beyond Crusty 🎤 📝
  • POP is OOP Thesis :page facing up:
  • Protocol Extensions: A History 🎤
  • Protocol Oriented MVVM :page facing up: , 💾 🎤
  • Functional thinking via Protocol Extensions :page facing up:
  • Practical Protocol-Oriented-Programming 🎤
  • Protocol Extensions vs Type Extensions :page facing up:
  • What are the advantages? :page facing up:
  • Another look into the concept of P.O.P. :page facing up:
  • If you're subclassing, you're doing it wrong. POP and VOP explained :page facing up:
  • Protocol Oriented Programming through UIKit :page facing up:
  • Protocols in Swift :page facing up:
  • Ray Wenderlich intro to POP :page facing up:
  • Protocol Extensions and the death of the Pipe forward operator :page facing up:
  • How Protocol Oriented Programming could still improve :page facing up:
  • The Swift Protocol Proposal :page facing up:
  • :raised hands: Mixins and Traits in Swift 2.0 :page facing_up:
  • Minimal Swift 2.1 Protocol Coformance :page facing up:
  • Favor Mixins over inheritance :page facing up:
  • Stateful mixins in Swift :page facing up:
  • Use Protocol Composition :page facing up:
  • Current Recommended Protocol Usage :page facing up:
  • POP in Swift vs ObjC and C++ :page facing up:
  • POP Utility Belt ✏️ ★ 3, pushed 364 days ago
  • Typesafe and Composable Data Sources in Swift :page facing up:
  • Protocol Extension Method Dispatch :page facing up:
  • Weird things you can do with protocol extension :page facing up: :page facing up:
  • Improved Protocol-Oriented Programming with Untyped Type Aliases :page facing up: :page facing up:
  • Protocol-Oriented Problems and the Immutable 'self' Error :page facing up:
  • Multiple Inheritance vs. Traits or Protocol Extensions :page facing up:
  • Protocol Oriented Networking :page facing up: :page facing up: 💾
  • Protocol-Oriented Views in Swift :page facing up:
  • Protocol oriented loading of resources from a network service in Swift :page facing up:
  • ⬆️

    REPL

    ⬆️

    Security

    ⬆️

    Server Side Swift

    ⬆️

    Strings and Regular Expressions

    ⬆️

    Testing

    disk:
  • Finding memory leaks with instruments :page facing up:
  • Automatic memory leak detection on iOS :page facing up:
  • What every iOS Developer should be doing with Instruments :page facing up:
  • Xcode Instruments Documentation 🔗
  • Instruments Tutorial :page facing up:
  • Functional Testing ★ 360, pushed 127 days ago
  • iOS Testing
  • Code Coverage
  • Code Injection
  • ⬆️

    Tools

    ⬆️

    Types

    disk:
  • Category Theory and Programming 🎤
  • Awesome Math/Category Theory 📝
  • Category Theory in Haskell :page facing up:
  • The Category Design Pattern :page facing up:
  • Type Theory vs Category Theory :page facing up: :page facing up:
  • MIT Category Theory Class 🔗
  • Functional Programming, Abstraction, and Naming Things :page facing up:
  • Monads defined 🔗
  • Fantasy Land Specification ✏️ ★ 1574, pushed 141 days ago
  • List of Functional Programming Topics 🔗
  • Using types to keep yourself honest :page facing up:
  • Reference Types (Classes)
  • Value Types (Structs)
  • disk:
  • Algebraic Types
  • Compose Types
  • Abstract Types
  • Wrapper Types
  • Phantom Types
  • Dependent Types
  • Dynamic Types
  • Nested Types
  • Type Reflection and Casting
  • Associated Types
  • Type Aliases
  • Metatypes
  • MirrorTypes
    • Using a Mirror Struct to get an object's type 🔗
  • Typeclasses
  • Type Inference
  • Type Variance
  • Type Erasures
  • Type Checking
  • Other
  • ⬆️

    Weird Swift

    ⬆️

    iOS Programming with Swift

    Application Structure / Architecture

    ⬆️

    Core Data and Realm

    facing up:
  • A look into Realm's Core DB Engine 🎤
  • Designing a Database: Realm Threading Deep Dive :page facing up:
  • Why Realm over Core Data? :page facing up: :floppy disk: :page
  • facing up: :page facing up:
  • Official Realm Introduction :page facing up:
  • Realm Tutorial :page facing up:
  • Realm Best Practices :page facing up:
  • Realm Repo :page facing up: ★ 7132, pushed 127 days ago
  • Reddit Thread :page facing up:
  • Working with Realm :page facing up:
  • Testing Realm Apps :page facing up:
  • Looking at Realm's Core DB Engine 💾
  • Realm Incremental Store ✏️ ★ 198, pushed 189 days ago
  • Migrations in Realm :page facing up:
  • Migrating an app from Core Data to Realm :page facing up:
  • Realm + Alamofire + VIPER :page facing up:
  • How Realm kills C++ STL Binary Search :page facing up:
  • App state with Realm and RxSwift :page facing up:
  • Migrating to Realm on iOS 🎤
  • RxRealm 🎤
  • ⬆️

    Core Image

    ⬆️

    iOS

    • All of the Apple Device Frameworks 🔗
    • Apple Example Code 🔗
    • iOS 9 Programming Fundamentals with Swift 🔗
    • Top SDKs used by App Store Top 200 Free Apps 🔗
    • Introduction to SiriKit 🔗

    ⬆️

    JSON

    ⬆️

    Persistence

    ⬆️

    UI

    ⬆️

    Web Services, Routing, and Networking

    ⬆️

    Mac Programming with Swift

    WatchOS Programming with Swift

    tvOS Programming With Swift

    ⬆️

    Xcode

    ⬆️

    Emoji Key

    • 📝 = Gist
    • ✏️ = Repository
    • 📓 = Blog
    • :page facing up: = Blog Post
    • 📜 = Quick Reference
    • 📚 = Book
    • 📖 = Guide Book
    • 📰 = Newsletter
    • 💾 = Slides
    • 🎤 = Video Presentation
    • 📹 = Video
    • 🔗 = Link
    • 🔥 = Awesome List
    • 🎓 = Learning Resource
    • 📋 = Interview Questions

    ⬆️

    Shoutouts

    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 @Ben-Evolently for being so incredibly helpful. Shoutout to @CodaFi

    , the TypeLift , and the AntiTypical teams for promoting FP. Shoutout to Elm Trailblazers . Shoutout to Haskell Devs and Category Theory legends . Shoutout to FutureKit , made by my former coworker @michaelgray . And finally, Shoutout to all the Swift Programmers out there, this project is by you and for you!

    ⬆️