- 1001_Optionals
- 1002_Optional Chainings
- 1003_Guard and Defer Statement
- 1004_Intro to Error Handling
- 1005_Type Casting
- 1006_Intro to Generics
- 1007_Subscripts
- 1008_Class vs Struct
- 1009_Set and Tuple
- 1010_Extension
- 1011_Intro to Operators
- 1012_Typealias
- 2001_Convenience Init
- 2002_Computed Property
- 2003_Property Observers
- 2004_Failable Init
- 2005_Override Everything
- 2006_Two Phase Init
- 2007_Type Property and Method
- 2008_Singleton Pattern
- 3001_Intro to Closures Part 1
- 3002_Intro to Closures Part 2
- 3003_Lazy Init with Closures
- 3004_Capture Lists
- 3005_Trailing Closures
- 3006_Completion Handlers
- 4001_Intro to Swift Protocol
- 4002_Protocol Extension
- 4003_Protocol as Type
- 4004_Delegate
- 4005_Data Source
- 5001_Automatic Reference Count
- 5002_Delegate Retain Cycle
- 5003_Closure Retain Cycle
- 5004_Escaping and Autoclosures
- 6001_Intro to Functional Paradigm
- 6002_Filter
- 6003_Map
- 6004_Reduce
- 7001_Intro Protocol Associated Type
- 7002_Type Constraints
- 7003_Override Associated Type
- 7004_Protocol Pitfalls
- 7005_Type Eraser
- 8001_The Enum Basics
- 8002_Static Mutating Self
- 8003_Nested Enums
- 8004_Protocol Oriented Enum
- 8005_Recursive Enum
- 8006_Generic Enum
- 8007_Result Type
- 9001_Access Control
- 9002_Key Path
- 9003_Generic Subscripts
- 9004_JSON Serialization with Codable
- 9005_Advanced Swift Dictionary
- 9006_Extra in Swift 4
- 10001_Nested Generics with Recursive Enum
- 10002_Advanced Operators
- 10003_Advanced Error Handling
- 10004_Equatable and Comparable
- 10005_Sequence and IteratorProtocol
- 10006_Associated Type Constraints
- 10007_Intro to Test Driven Development