
1. Programming paradigms
1.1. Object Oriented Programming ( OOP )
1.2. Protocol Oriented Programming ( POP )
1.3. Functional programming
1.3.1. Фреймворки для функционального реактивного программирования
1.3.1.1. RxSwift
1.3.1.2. RxCocoa
1.3.1.3. RxDataSources
1.3.1.4. RxOptional
1.3.1.5. React Native
2. Testing
2.1. Unit testing
2.2. UI testing
2.3. Snapshot tests
2.4. Functional tests
2.5. TDD
2.6. BDD
3. Perform optimization
3.1. Increasing FPS
3.2. Decreasing of memory hunger
4. Tools
4.1. IDE
4.1.1. Xcode
4.1.1.1. Interface Builder
4.1.1.2. Debugger
4.1.1.3. Instruments
4.1.2. AppCode
4.2. Fastlane
4.3. Swiftlint
4.4. Sourcery
5. Continuous Integration
5.1. JenkinS
5.2. Xcode Cloud
5.3. Github Actions
5.4. Circle CI
6. Basic Computer Science
6.1. Algorithms
6.1.1. Big-O notation
6.1.2. Recursion
6.1.3. Bit manipulation
6.1.4. Dynamic Programming
6.1.5. Sorting
6.1.6. Graph theory
6.1.6.1. Trees
6.1.7. Game theory
6.2. Data Structures
6.2.1. List
6.2.1.1. Doubly linked list
6.2.1.2. Linked list
6.2.2. Queues
6.2.2.1. Double ended queue
6.2.2.2. Cicrular queue
6.2.2.3. Queue
6.2.3. Graphs
6.2.4. Множества (Set)
6.2.5. Multiset
6.2.6. Map
6.2.7. Array
6.2.8. Stack
7. Languages
7.1. Swift
7.1.1. Data types ( Int, String, Double, Bool, Float )
7.1.2. Functions
7.1.3. Closures
7.1.4. Classes and Structures
7.1.5. Init and Deinit
7.1.6. Protocols and Extensions
7.1.7. Error handling
7.1.8. Enum
7.1.9. Generics
7.2. Objective-C
7.2.1. Blocks
7.2.1.1. Memory handling
7.2.2. Key-Value coding (KVC)
7.2.3. Key-Value Observing (KVO)
7.2.4. Runtime
7.2.4.1. Method Messaging
7.2.4.2. NSZombies
7.2.4.3. Swizzling
8. Beginning
8.1. Pick the project you have always wanted to build!
9. IOS SDK
9.1. CocoaTouch
9.1.1. User Interface
9.1.1.1. Principles of making user interfaces
9.1.1.1.1. Human Interface Guidlines
9.1.1.2. Lists
9.1.1.2.1. UITableViewController
9.1.1.2.2. UICollectionView
9.1.1.2.3. ScrollView & StackView
9.1.1.3. UI elements
9.1.1.3.1. UIView
9.1.1.3.2. UILabel
9.1.1.3.3. UIButton
9.1.1.3.4. UIViewController
9.1.1.4. Layout
9.1.1.4.1. Autolayout
9.1.1.4.2. StackView
9.1.1.4.3. Interface Builder
9.1.1.4.4. Storyboards
9.1.1.5. Animation
9.1.1.5.1. Core Animation
9.1.1.5.2. UIView.animate
9.1.1.5.3. Transitions
9.1.1.6. Layers
9.1.1.6.1. CornerRadius
9.1.1.6.2. Shadow
9.1.1.7. Navigation
9.1.1.7.1. UINavigationController
9.1.1.7.2. UITabBarController
9.1.1.7.3. Router
9.1.1.7.4. Coordinator
9.1.1.8. UIApplication
9.1.1.8.1. Lifecycle
9.1.1.8.2. AppDelegate
9.1.2. Foundation
9.1.2.1. Collections
9.1.2.2. Networking
9.1.2.2.1. Codable
9.1.2.2.2. JSON
9.1.2.2.3. XML
9.1.2.2.4. Protobuf
9.1.3. Notification
9.1.4. Core Location
9.2. Multithreading and queues
9.2.1. GCD
9.2.2. Operations
9.2.3. RunLoop
9.2.4. POSIX, NSThread
9.2.5. Synchronization
9.2.6. Troubles
9.2.6.1. Race Conditions
9.2.6.2. Deadlock
9.2.6.3. Problem of reading and writing
9.3. Industrial development
9.3.1. Layout
9.3.1.1. SnapKit
9.3.1.2. Then
9.3.2. Package managers
9.3.2.1. CocoaPods
9.3.2.2. Carthage
9.3.2.3. SPM (Swift Package Manager)
9.3.3. Project structure
9.3.4. Memory
9.3.4.1. Stack and heap
9.3.4.2. Value vs Reference type
9.3.4.3. ARC
9.3.4.3.1. Weak reference
9.3.4.3.2. Strong
9.3.4.3.3. Unowned
9.3.4.4. MRC
9.3.4.5. Retain Cycles
9.3.4.6. Garbage collections
9.3.4.7. Memory leaks
9.3.4.8. Shallow and deep copying
9.3.4.9. Autorelease pool
10. Debugging
10.1. Instruments
10.2. Best practices
10.2.1. Checklist
11. UX
11.1. Human Interface Guidlines
11.2. User Experience
12. Version Control
12.1. Git
12.1.1. Comit & Branching
12.1.2. Merge & Rebase
12.2. Git Flow
13. Storing and using data
13.1. CoreData
13.2. Realm
14. Architecture knowledge
14.1. Design patterns
14.1.1. Architecture patterns
14.1.1.1. MVC
14.1.1.2. MVP
14.1.1.3. MVVM
14.1.1.4. Clean architecture
14.1.1.4.1. VIPER
14.1.1.4.2. RIBs
14.1.1.5. Coordinators
14.1.2. Creational patterns
14.1.2.1. Abstract fabric
14.1.2.1.1. Class cluster
14.1.2.2. Fabric
14.1.2.3. Builder
14.1.2.4. Prototype
14.1.2.5. Singelton
14.1.3. Structural patterns
14.1.3.1. Adapter
14.1.3.2. Bridge
14.1.3.3. Composite
14.1.3.4. Decorator
14.1.3.4.1. Delegation
14.1.3.4.2. Categories
14.1.3.5. Facade
14.1.3.6. Flyweight
14.1.3.7. Proxy
14.2. Principles
14.2.1. Behavioral patterns
14.2.1.1. Responsobility chain
14.2.1.2. Command
14.2.1.3. Iterator
14.2.1.4. Mediator
14.2.1.5. Memento
14.2.1.6. Observer
14.2.1.7. State
14.2.1.8. Strategy
14.2.1.9. Template method
14.2.1.10. Visitor
14.2.2. Anti patterns
14.2.3. SOLID
14.2.4. Dependency Injection