21 мая в 20:00

День открытых дверей
Всё о курсе «Middle iOS Developer»

День открытых дверей онлайн

День Открытых Дверей — отличная возможность узнать подробнее о программе курса, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут выпускников после обучения. Также преподаватель расскажет о своём профессиональном опыте и ответит на вопросы участников. Поэтому если есть вопрос, запишитесь на онлайн-трансляцию и задайте его в прямом эфире!
Преподаватель
Ексей Пантелеев
Напомнить о мероприятии в календаре

О курсе

Middle iOS Developer
50 000 ₽
5 месяцев
Начало 28 мая
Этот курс подойдет для разработчиков, которые: – имеют опыт программирования на другой платформе и желают полноценно освоить iOS; – уже являются iOS-разработчиками и хотят подтянуть свой технический скилл, получить грамотное и целостное понимание iOS-платформы и языка Swift, стать «пуленепробиваемыми» на технических собеседованиях; – желают научиться решать сложные и хардкорные задачи с уровнем качества топовых приложений. Особенности курса Всё обучение построено ...
Программа курса
Модуль 1
Эффективный UIKit и CoreGraphics
Модуль 2
Foundation без сторонних фреймвоков и Swift 5 Standard Library
Модуль 3
Современная архитектура мобильных приложений
Модуль 4
Многозадачность
Модуль 5
Networking и хранение данных
Модуль 6
Целесообразный Rx
Модуль 7
Организация разработки
Модуль 8
Проектная работа
Эффективный UIKit и CoreGraphics
В этом модуле мы изучим внутренности UIKit, его архитектурные плюсы и недочеты. Научимся отображать комплексные данные. Оптимизировать рендеринг UI компонентов. Попрактикуемся в сборке интерфейсов корректно работающих на всех вариациях SizeClasses и анимации.
Проектируем UI без кода и зачем это нужно, storyboard, xib
– Решение организационных вопросов.
– Настройка environment: Xcode, git, scripts
– Возможности UIKit в создании интерфейсов без кода и зачем это нужно
28 мая, 20:00 — 21:30
Лектор: Ексей Пантелеев
Внутренности UIKit, Preservation и Restoration техники
— Структура классов UIKit
— Life cycle приложения
— UIResponder и UIViewController Life cycles
— ViewControllerLifecycleBehaviour
– Preservation и Restoration состояния
4 июня, 20:00 — 21:30
Лектор: Алексей Соболевский
Домашние задания: 1
ДЗ
Реализация каркаса/прототипа приложения с помощью Storyboard с поддержкой Restoration.
Изучаем внутренности и хитрости UIScrollView, продвинутое использование компонента
– Взаимосвязь между contentSize, contentOffset, contentInset
– Реализация бесконечного скроллинга
– Использование Stationary views
– Кастомная обработка тачей
– zoomScale и redraw
– UIScrollView и Autolayout
6 июня, 20:00 — 21:30
Лектор: Ексей Пантелеев
Отоборажение структурированных данных UIColleсtionView, UITableView, UIStackView
– Использование Flow Layout
– Комбинирование UIColleсtionView с PageControl
– UITableView Sections
– Оптимизация рендеринга таблицы
– UIStackView и Autolayout
– Решение проблем использования UIStackView, Compression Resistance и Hugging
11 июня, 20:00 — 21:30
Лектор: Авакян Гор
Домашние задания: 1
ДЗ
Реализация меню на UICollectionView и UIPageControl.
SizeClasses, Anchors и анимирование Auto Layout
– SizeClasses, использование UITraitCollection
– Продвинутая адаптивность на iOS без костылей
– Safe Area
– Layout Anchors
– Анимирование Constraints
13 июня, 20:00 — 21:30
Лектор: Алексей Соболевский
Создание сверхсложных интерфейсов с помощью CoreGraphis и CoreAnimation
– Работа с CALayer, различия с UIKit
– CGContext
– Программное рисование с помощью UIBezierPath
– CAAnimation и CAAnimationGroup
18 июня, 20:00 — 21:30
Лектор: Ексей Пантелеев
Домашние задания: 1
ДЗ
Создание анимированный диаграммы на CoreGraphics.
Foundation без сторонних фреймвоков и Swift 5 Standard Library
Загрузим в мозг стройную модель Statements, Expressions и Declaration языка Swift, и попрактикуемся в их использовании. Научимся использовать все возможности String. Научимся управлять "сахарностью" Swift и поймем, что многие библиотеки в проекте вам просто не нужны.
Необычная система типов Swift, структуры данных, Generics
— Теория типов и Compound и Named типы
— Метатип и вложенные типы
— Protocol Composition
— Generics
— Создание кастомных структур данных
20 июня, 20:00 — 21:30
Лектор: Авакян Гор
Sequences и коллекции, асимптотический анализ: O(1), O(N), O(N*log(N)), O(n^2)
— Sequence и IteratorProtocol
— Type-erased типы: AnySequence, AnyIterator, AnyCollection
— Lazy Wrappers
— Wrappers for Algorithms
— Асимпотический анализ встроенных и кастомных структур данных
25 июня, 20:00 — 21:30
Домашние задания: 1
ДЗ
Реализация механизма тестирования алгоритмов на производительность и отображения результатов.
Использование всей мощи String, Literals vs. UnicodeScalar, UTF-16
— Сравнение суффиксов и префиксов и другие способы сравнения строк
— Работа с utf8 и utf16 представлениями
— Ипользование подстрок и Ranges, StringProtocol
— Regex
27 июня, 20:00 — 21:30
Региональные форматы и локализация iOS приложения
— Парсинг и представление телефонных номеров
— Форматирование дат согласно региону и локали, POSIX спецификация
— Работа с единицами измерения и валютами
— Корректная локализация приложения на несколько языков и регионов
2 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создание ячейки с поддержкой региональной локализации.
Ассоциативные типы, Type Erasure, «сахарные» типы данных, диспетчеризация вызовов в Swift 5
— 3 типа диспатчеризации в Swift: direct, dynamic, message
— Associated Types
— PATs и динамическая диспатчеризация
— Другие способы реализации паттерна Type Erasure
— Как работают типы в SIL (Swift Intermediate Language)
4 июля, 20:00 — 21:30
Компилятор LLVM, AST, создание собственных операторов
— Как работает LLVM: SIL, IR
— Как некоторые типы представлены в SIL и для чего это нужно знать
— Особенности и хитрости компиляции
— Перезагрузка и создание операторов
9 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Проектирование и реализация своей собственной структуры данных и оценка ее эффективности.
Современная архитектура мобильных приложений
MVC, MVP, MVI, MVVM, VIPER, RIBs, MOVVER, YARCH и что дальше? Архитектуры множатся, проблемы остаются те же. Научимся целевому выбору архитектурных паттернов и попрактикуемся в проектировании.
Современные паттерны проектирования, принцип SOLID и его целесообразное применение
— SOLID и как получить от него пользу
— Другие принципы: KISS, DRY/DIE, YAGNI, BDUF, SOC
— Необходимые паттерны для сегодняшней мобильной разработки: Adapter, Memento, Observer, Strategy, Factory, Command, Composite, Iterator, Mediator, Proxy, Template Method, Singleton и где они приненимы на iOS
11 июля, 20:00 — 21:30
MVP, MVCS, MVVM, архитектурные паттерны, модуляризация, Clean Architecture
— MV(X) архитектурные паттерны
— Модуляризация приложения, способы: Frameworks, Cocoapods, JSCore, SPM
— Clean Architecture
16 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создания каркаса для модуляризированного приложения.
Protocol Oriented Programming (POP)
— Про Наследовании и ООП
— Миксины/трейты: Protocol Extensions
— Type Constraints
— Плюсы и минусы подхода
18 июля, 20:00 — 21:30
Dependency Injection, SOA, слоистая архитектура
— Inversion of Control паттерн
— ServiceLocator и инжектинг
— Разделение архитектуры на слои и что это дает
23 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Реализация Service Locator и Dependency Injection и изолированности слоев в приложении.
Связывание разных частей приложения Observing, Signals, Callbacks
— Observing и broadcasting, нужен ли нам KVO
— Плюсы и минусы Delegation, виды делегатов
— Callbacks
— Signals ans Slots и причем здесь Rx
25 июля, 20:00 — 21:30
Многозадачность
Попрактикуемся в использовании последовательных (serial) и параллельных (concurrent) очередей, в создании управлении DispatchGroup. Использовании мьютексов и семафоров и других Locks. Будем знать как решать проблемы параллельной многозадачности типа Priority inversion и другие.
Проблемы многозадачности и способы их решения, GCD
— Антипаттерны и проблемы: Priority Inversion, Race condition, Deadlock, Resource contention, Starvation, Non-deterministic and Fairness
— Использование GCD: QoS, Queues, Main Queue и Main Thread
6 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Реализация асинхронного выполнения задач и оценка эффективности подхода.
Внутренности GCD(libdispatch), OperationQueue
— Плюсы и минусы OperationQueue
— Внутренности libdispatch: пул тредов, continuation, QoS и как зная это лучше использовать очереди
8 августа, 20:00 — 21:30
RunLoop & POSIX Threads, Инструменты синхронизации, Lock, Mutex
— RunLoop и чем сегодня он может нам быть полезен
— pthreads
— Виды локов: NSLock, NSRecursiveLock, Spinlock, Mutex, Semaphore
— Dispatch Barriers
— Trampoline техника
13 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Реализация общей конкурентной очереди на приложение, создание внутренней системы тасков.
Networking и хранение данных
Познакомимся со свежим фреймвоком Network для iOS. Будем использовать Codable для легкой серилизации и десириализации данных. Изучим подходы к хранению данных в приложении. Потренируемся использовать Core Data и Realm, и будем понимать когда какое хранилище использовать.
Новый Network-фреймвок, URLSession, Codable
— Network феймвок, HTTP, REST, Sockets, GraphQL
— URLSession
— Сериализация и десериализация c помощью Codable
15 августа, 20:00 — 21:30
Когда использовать Files, чистый SQLite, способы кеширования
— Виды кеширования
— SQLite и другие DB* альтернативы
— NoSQL
— Files и File System
20 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Имплементация сериализации и сохранения данных на backend .
CoreData — основные стратегии использования
— NSManagedObject, NSPersistentStoreCoordinator, NSManagedObjectContext
— NSPersistentContainer
— Модель данных
— CRUD на Core Data
22 августа, 20:00 — 21:30
Realm
— Плюсы и минусы Realm
— Модель данных на Realm
— Realm Browser
— CRUD на Realm
27 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Реализация поддержки оффлайн режима в приложении.
Целесообразный Rx
Узнаем где нужно, а где не нужно использовать реактивный подход. Научимся программировать на нем, и поймем почему c Rx можно разрабатывать в разы быстрее.
Отличие императивного и реактивного подхода, концепция Observable
— Чем реактивный подход может быть лучше
— Observable Sequences
— RxSwift 4.x
— Marble Diagrams
29 августа, 20:00 — 21:30
Promises, Signals и как это в Rx. Функциональное программирование
— Rx подход без RxSwift: PromiseKit, Signals
— Идея распространение изменений
— RxSwift Transformations: Map, FlatMap, Scan, Buffer
10 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Реализация каркаса приложения используя декларативный подход и Rx.
Основные паттерны: Composition, Aggregation, Cancellatiion
— Rx паттерны
— Фильтрация: Filter, DistinctUntilChanged
— Комбинирование: StartWith, Merge, Zip
12 сентября, 20:00 — 21:30
UI Patterns: Driver & Action, быстрое создание полноценного UI на Rx
— MVVM и RxSwift
— RxCocoa
— Создание UI на Rx
17 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создание UI слоя приложения на Rx.
Организация разработки
Немного познакомимся с теорией тестирования, напишем XCTest и UITest, узнаем как правильно проектировать тестируемый код. Изучим как настраивать Continuous Integration (CI) и причем здесь git и git-flow. Также научимся писать работающие резюме и то, что не говорят на собеседованиях, но используют.
Тестирование кода XCTest, UITest, fastlane и CI
— Test-Driven Development (TDD)
— Теория тестирования
— Использование XCTest
— Зачем нужен UITest
— Сборка CI (Continuous Integration) на fastlane
19 сентября, 20:00 — 21:30
Git-flow, автоматизизация workflow
— Продвинутое использование git
— Фича, хотфикс, релизный цикл, master ветка
— Использование комманд git-flow
24 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Покрытие приложения юнит-тестами.
Как правильно написать резюме и развивать hard-skills
— Почему важно корректно писать резюме
— Как выбирать работодателя чтобы развивать свой hard-skills
— Какие бывают работодатели
— Какие скрытые критерии отбора используются
26 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Написание работающего резюме.
Проектная работа
На основе умений и знаний полученных в курсе студент выбирает какой проект будет реализовывать. С нашей стороны будет помощь и наставничество в реализации проекта. Также нами будет предложен экспертный список «Чего не хватает в AppStore» из небольших и средних программ, где вы бы могли себя проявить.

Проект может помочь в трудоустройстве.

— Выбор темы для приложения
— Как генерировать идеи для простых приложений на основе известных «­болей» пользователй
— Как использовать iOS платформу для генерации идей для приложений
— Подбор инструментов, помощь с стартом написания приложения
Домашние задания: 1
ДЗ
Написание приложения с нуля.

Преподаватель

Ексей Пантелеев
Работает программистом с 2002 года, суммарный опыт программирования — 17 лет. Имеет большой опыт разработки на С/С++, C#, Java, JS, Swift.

Принял участие более чем в десяти крупных и сложных проектах в ведущих IT-компаниях страны (игры, мессенджеры, финтех и офисные приложения), таких как "Тинькофф Банк", Мail.ru, "Новые Облачные Технологии".

Преподает iOS/Swift 4 года. Выступает на iOS-митапах. Знает, что программирование развивает мозг, поэтому планирует заниматься разработкой всю жизнь.

Свободное время посвящает geek-арт-фотографии и майнингу криптовалют.
Преподаватель курсов:
Middle iOS Developer

F.A.Q.: Наиболее часто задаваемые вопросы:

Нужно ли оплачивать обучение до Дня открытых дверей, если я хочу гарантированно попасть в группу?
Да, мы рекомендуем заранее оплатить обучение, чтобы гарантированно попасть в группу. В период проведения Дня открытых дверей резко возрастает количество желающих обучаться, поэтому может случиться так, что к окончанию Дня открытых дверей мест в группе не останется
Кто будет проводить День открытых дверей?
Проводить День открытых дверей будет преподаватель курса.
Как принять участие в Дне открытых дверей?
Для того, чтобы принять участие в Дне открытых дверей, оставьте свой e-mail в поле регистрации на мероприятие. Перед началом Дня открытых дверей мы пришлем вам ссылку, пройдя по которой, вы сможете присоединиться к вебинару.
Какие вопросы будем обсуждать на Дне открытых дверей?
На дне открытых дверей мы поговорим о проекте OTUS (о программе курса, почему мы не принимаем в группы новичков, почему учиться у нас интересно, но сложно), карьерных перспективах выпускников (почему вероятность карьерного роста у лучших студентов стремится к 100%), учебном процессе (оплатах, оценке знаний, сертификатах и прочих аспектах). Также ведущий мероприятия с радостью ответит на все ваши вопросы.