iOS Разработчик

Вся сила и мощь Swift 5
Подойдет ли мне этот курс?

Длительность

5 месяцев

Начало

28 мая

Занятия

Чт 20:00, Вт 20:00

Общая стоимость

50 000 ₽

В месяц

12 500 ₽

В кредит:

12500 ₽ в месяц

Хочу дешевле
Общая стоимость
50 000 ₽
В месяц: 12 500 ₽
В кредит: 50000 ₽
в месяц
Продолжительность
5 месяцев, 4 часа в неделю
Чт 20:00, Вт 20:00
Начало занятий
28 мая
Что даст вам этот курс

Этот курс подойдет для разработчиков, которые:

– имеют опыт программирования на другой платформе и желают полноценно освоить iOS;
– уже являются iOS-разработчиками и хотят подтянуть свой технический скилл, получить грамотное и целостное понимание iOS-платформы и языка Swift, стать «пуленепробиваемыми» на технических собеседованиях;
– желают научиться решать сложные и хардкорные задачи с уровнем качества топовых приложений.

Особенности курса

Всё обучение построено исключительно на задачах из практики разработки приложений в production.

Вы создадите сложный UI, используя знания, которые не найти в статьях в интернете. Изучите вопрос смешения декларативной и императивной парадигм и того, что может дать карринг. Выстроите архитектуру под конкретное приложение: MVVM, MVCS или SOA.

- Улучшите навыки использования GCD и научитесь решать проблемы многозадачности
- Приручите SequenceTypе и научитесь быстро решать задачи с помощью структур данных и Generic Type
- Освоите Associated Types и техники Type Erasure
- Научитесь различным способам хранения данных: Core Data, Realm, Keychain, Cache.
- Сможете применять Dependency injection (DI) и модуляризации приложений для более комфортной командной разработки и покрытия тестами


Научитесь писать выразительный код, который в несколько строчек делает то, на что раньше уходил целый экран

Освоите ключевые особенности Swift 5

Сможете определять целесообразность применения тех или иных архитектурных паттернов

Погрузитесь в нюансы использования Rx: когда он необходим и дает окупаемую выгоду



По окончании курса вы будете:

– уметь проектировать сложные UI-компоненты и оптимизировать их производительность;
– делать эффективную многозадачность в iOS-приложении;
– понимать, как не раздувать проект лишними библиотеками и максимально «выжимать» iOS SDK;
– уметь проектировать клиент-серверное приложение и оффлайн-режим работы;
– проектировать тестируемый unit-тестами код и, конечно, успевать писать тесты;
– на практике прочувствует плюсы и минусы известных методологий, подходов и парадигм, таких как Protocol Oriented Programming (POP), ООП, Reactive Programming (Rx).
Практическое применение Swift 5.0 и 5.1, 15 мая в 20:00
Узнаем как использовать всю мощь Swift 5.x. В ходе вебинара разберемся как на iOS (и не только) применять новые конструкции на практике.
Ведет
Ексей
Пантелеев
Предыдущий открытый вебинар
Всё о курсе «Middle iOS Developer», 21 мая в 20:00
День Открытых Дверей — отличная возможность узнать подробнее о программе курса, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут выпускников после обучения. Также преподаватель расскажет о своём профессиональном опыте и ответит на вопросы участников. Поэтому если есть вопрос, запишитесь на онлайн-трансляцию и задайте его в прямом эфире!
Ведет
Ексей
Пантелеев
Предыдущий день открытых дверей
Swift is new C
Ексей Пантелеев
Преподаватель курса
Swift is new C
Ексей Пантелеев
Преподаватель курса
Преподаватели
Ексей Пантелеев
Евгений Елчев
Lead IOS developer в redmadrobot
Авакян Гор
Head of Mobile (Masmy)
Работает программистом с 2002 года, суммарный опыт программирования — 17 лет. Имеет большой опыт разработки на С/С++, C#, Java, JS, Swift.

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

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

Свободное время посвящает geek-арт-фотографии и майнингу криптовалют.
Опыт коммерческой разработки более 9 лет.

Начиная с 2015 года - Senior IOS-разработчик, а затем руководитель отдела мобильной разработки.

Ранее в течении 6 лет проработал программистом в информационно-вычислительном центре РЖД. Занимался разработкой корпоративных систем.

Образование: Иркутский университет путей сообщения.

Также Евгений обладает богатым преподавательским опытом.
В мобильной разработке с 2010 года. Прошел все этапы развития iOS. На сегодняшний день — Head of Mobile в Mamsy.

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

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

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

Свободное время посвящает geek-арт-фотографии и майнингу криптовалют.
Евгений Елчев
Lead IOS developer в redmadrobot
Опыт коммерческой разработки более 9 лет.

Начиная с 2015 года - Senior IOS-разработчик, а затем руководитель отдела мобильной разработки.

Ранее в течении 6 лет проработал программистом в информационно-вычислительном центре РЖД. Занимался разработкой корпоративных систем.

Образование: Иркутский университет путей сообщения.

Также Евгений обладает богатым преподавательским опытом.
Авакян Гор
Head of Mobile (Masmy)
В мобильной разработке с 2010 года. Прошел все этапы развития iOS. На сегодняшний день — Head of Mobile в Mamsy.

Работает со Swift со дня его выхода. Является большим поклонником Rx. Сторонник чистой архитектуры. Предпочитает Rebase flow
Занимается дизайн системами и интеграцией их в разработке.
Минимальные знания

– основы ООП;
– основы языка Swift (базовые типы, циклы, ветвление);
– общее представление о Foundation (или Glibc);
– базовый опыт работы в Xсode;
– базовые навыки работы с Git.
Процесс обучения
Всё обучение проходит онлайн: вебинары, общение с преподавателями и вашей группой в слаке курса, сдача домашних работ и получение обратной связи от преподавателя.

Вебинары идут дважды в неделю по 1,5 часа. Все вебинары сохраняются и в записи в вашем личном кабинете.

Домашнее задание выдается в среднем одно в неделю, а его выполнение занимает 3-5 часов. Мы горячо призываем заниматься такой самостоятельной работой, так как это поможет вам качественно освоить все изучаемые технологии на практике с поддержкой и обратной связью наших преподавателей.

Возникающие вопросы по материалам лекций, домашним заданиям и по выпускному проекту вы сможете задавать преподавателю в слаке или во время вебинаров.

Курс длится 5 месяцев, финальный месяц отводится для выполнения проектной работы до сдачи домашних заданий и вопросов преподавателям.

Выполнение проектной работы помогает усвоению практических навыков, а тема проекта отдельно выносится в сертификат. Во время работы над проектом студенты получают консультации и обратную связь от преподавателей в слаке группы и на проектных занятиях.
Программа обучения
Модуль 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 состояния
30 мая, 20:00 — 21:30
Лектор: Евгений Елчев
Домашние задания: 1
1 Реализация каркаса/прототипа приложения с помощью Storyboard с поддержкой Restoration
Изучаем внутренности и хитрости UIScrollView, продвинутое использование компонента
– Взаимосвязь между contentSize, contentOffset, contentInset
– Реализация бесконечного скроллинга
– Использование Stationary views
– Кастомная обработка тачей
– zoomScale и redraw
– UIScrollView и Autolayout
4 июня, 20:00 — 21:30
Лектор: Ексей Пантелеев
Отоборажение структурированных данных UIColleсtionView, UITableView, UIStackView
– Использование Flow Layout
– Комбинирование UIColleсtionView с PageControl
– UITableView Sections
– Оптимизация рендеринга таблицы
– UIStackView и Autolayout
– Решение проблем использования UIStackView, Compression Resistance и Hugging
6 июня, 20:00 — 21:30
Лектор: Авакян Гор
Домашние задания: 1
1 Реализация меню на UICollectionView и UIPageControl
SizeClasses, Anchors и анимирование Auto Layout
– SizeClasses, использование UITraitCollection
– Продвинутая адаптивность на iOS без костылей
– Safe Area
– Layout Anchors
– Анимирование Constraints
11 июня, 20:00 — 21:30
Лектор: Евгений Елчев
Создание сверхсложных интерфейсов с помощью CoreGraphis и CoreAnimation
– Работа с CALayer, различия с UIKit
– CGContext
– Программное рисование с помощью UIBezierPath
– CAAnimation и CAAnimationGroup
13 июня, 20:00 — 21:30
Лектор: Ексей Пантелеев
Домашние задания: 1
1 Создание анимированный диаграммы на CoreGraphics
Foundation без сторонних фреймвоков и Swift 5 Standard Library
Загрузим в мозг стройную модель Statements, Expressions и Declaration языка Swift, и попрактикуемся в их использовании. Научимся использовать все возможности String. Научимся управлять "сахарностью" Swift и поймем, что многие библиотеки в проекте вам просто не нужны.
Необычная система типов Swift, структуры данных, Generics
— Теория типов и Compound и Named типы
— Метатип и вложенные типы
— Protocol Composition
— Generics
— Создание кастомных структур данных
18 июня, 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
— Асимпотический анализ встроенных и кастомных структур данных
20 июня, 20:00 — 21:30
Домашние задания: 1
1 Реализация механизма тестирования алгоритмов на производительность и отображения результатов
Использование всей мощи String, Literals vs. UnicodeScalar, UTF-16
— Сравнение суффиксов и префиксов и другие способы сравнения строк
— Работа с utf8 и utf16 представлениями
— Ипользование подстрок и Ranges, StringProtocol
— Regex
25 июня, 20:00 — 21:30
Региональные форматы и локализация iOS приложения
— Парсинг и представление телефонных номеров
— Форматирование дат согласно региону и локали, POSIX спецификация
— Работа с единицами измерения и валютами
— Корректная локализация приложения на несколько языков и регионов
27 июня, 20:00 — 21:30
Домашние задания: 1
1 Создание ячейки с поддержкой региональной локализации
Ассоциативные типы, Type Erasure, «сахарные» типы данных, диспетчеризация вызовов в Swift 5
— 3 типа диспатчеризации в Swift: direct, dynamic, message
— Associated Types
— PATs и динамическая диспатчеризация
— Другие способы реализации паттерна Type Erasure
— Как работают типы в SIL (Swift Intermediate Language)
2 июля, 20:00 — 21:30
Компилятор LLVM, AST, создание собственных операторов
— Как работает LLVM: SIL, IR
— Как некоторые типы представлены в SIL и для чего это нужно знать
— Особенности и хитрости компиляции
— Перезагрузка и создание операторов
4 июля, 20:00 — 21:30
Домашние задания: 1
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
9 июля, 20:00 — 21:30
MVP, MVCS, MVVM, архитектурные паттерны, модуляризация, Clean Architecture
— MV(X) архитектурные паттерны
— Модуляризация приложения, способы: Frameworks, Cocoapods, JSCore, SPM
— Clean Architecture
11 июля, 20:00 — 21:30
Домашние задания: 1
1 Создания каркаса для модуляризированного приложения
Protocol Oriented Programming (POP)
— Про Наследовании и ООП
— Миксины/трейты: Protocol Extensions
— Type Constraints
— Плюсы и минусы подхода
16 июля, 20:00 — 21:30
Dependency Injection, SOA, слоистая архитектура
— Inversion of Control паттерн
— ServiceLocator и инжектинг
— Разделение архитектуры на слои и что это дает
18 июля, 20:00 — 21:30
Домашние задания: 1
1 Реализация Service Locator и Dependency Injection и изолированности слоев в приложении
Связывание разных частей приложения Observing, Signals, Callbacks
— Observing и broadcasting, нужен ли нам KVO
— Плюсы и минусы Delegation, виды делегатов
— Callbacks
— Signals ans Slots и причем здесь Rx
23 июля, 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
25 июля, 20:00 — 21:30
Домашние задания: 1
1 Реализация асинхронного выполнения задач и оценка эффективности подхода
Внутренности GCD(libdispatch), OperationQueue
— Плюсы и минусы OperationQueue
— Внутренности libdispatch: пул тредов, continuation, QoS и как зная это лучше использовать очереди
30 июля, 20:00 — 21:30
RunLoop & POSIX Threads, Инструменты синхронизации, Lock, Mutex
— RunLoop и чем сегодня он может нам быть полезен
— pthreads
— Виды локов: NSLock, NSRecursiveLock, Spinlock, Mutex, Semaphore
— Dispatch Barriers
— Trampoline техника
1 августа, 20:00 — 21:30
Домашние задания: 1
1 Реализация общей конкурентной очереди на приложение, создание внутренней системы тасков
Networking и хранение данных
Познакомимся со свежим фреймвоком Network для iOS. Будем использовать Codable для легкой серилизации и десириализации данных. Изучим подходы к хранению данных в приложении. Потренируемся использовать Core Data и Realm, и будем понимать когда какое хранилище использовать.
Новый Network-фреймвок, URLSession, Codable
— Network феймвок, HTTP, REST, Sockets, GraphQL
— URLSession
— Сериализация и десериализация c помощью Codable
6 августа, 20:00 — 21:30
Когда использовать Files, чистый SQLite, способы кеширования
— Виды кеширования
— SQLite и другие DB* альтернативы
— NoSQL
— Files и File System
8 августа, 20:00 — 21:30
Домашние задания: 1
1 Имплементация сериализации и сохранения данных на backend
CoreData — основные стратегии использования
— NSManagedObject, NSPersistentStoreCoordinator, NSManagedObjectContext
— NSPersistentContainer
— Модель данных
— CRUD на Core Data
13 августа, 20:00 — 21:30
Realm
— Плюсы и минусы Realm
— Модель данных на Realm
— Realm Browser
— CRUD на Realm
15 августа, 20:00 — 21:30
Домашние задания: 1
1 Реализация поддержки оффлайн режима в приложении
Целесообразный Rx
Узнаем где нужно, а где не нужно использовать реактивный подход. Научимся программировать на нем, и поймем почему c Rx можно разрабатывать в разы быстрее.
Отличие императивного и реактивного подхода, концепция Observable
— Чем реактивный подход может быть лучше
— Observable Sequences
— RxSwift 4.x
— Marble Diagrams
20 августа, 20:00 — 21:30
Promises, Signals и как это в Rx. Функциональное программирование
— Rx подход без RxSwift: PromiseKit, Signals
— Идея распространение изменений
— RxSwift Transformations: Map, FlatMap, Scan, Buffer
22 августа, 20:00 — 21:30
Домашние задания: 1
1 Реализация каркаса приложения используя декларативный подход и Rx
Основные паттерны: Composition, Aggregation, Cancellatiion
— Rx паттерны
— Фильтрация: Filter, DistinctUntilChanged
— Комбинирование: StartWith, Merge, Zip
27 августа, 20:00 — 21:30
UI Patterns: Driver & Action, быстрое создание полноценного UI на Rx
— MVVM и RxSwift
— RxCocoa
— Создание UI на Rx
29 августа, 20:00 — 21:30
Домашние задания: 1
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
3 сентября, 20:00 — 21:30
Git-flow, автоматизизация workflow
— Продвинутое использование git
— Фича, хотфикс, релизный цикл, master ветка
— Использование комманд git-flow
5 сентября, 20:00 — 21:30
Домашние задания: 1
1 Покрытие приложения юнит-тестами
Как правильно написать резюме и развивать hard-skills
— Почему важно корректно писать резюме
— Как выбирать работодателя чтобы развивать свой hard-skills
— Какие бывают работодатели
— Какие скрытые критерии отбора используются
10 сентября, 20:00 — 21:30
Домашние задания: 1
1 Написание работающего резюме
Проектная работа
На основе умений и знаний полученных в курсе студент выбирает какой проект будет реализовывать. С нашей стороны будет помощь и наставничество в реализации проекта. Также нами будет предложен экспертный список «Чего не хватает в AppStore» из небольших и средних программ, где вы бы могли себя проявить.

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

Написание приложения с нуля
— Выбор темы для приложения
— Как генерировать идеи для простых приложений на основе известных «­болей» пользователй
— Как использовать iOS платформу для генерации идей для приложений
— Подбор инструментов, помощь с стартом написания приложения
Домашние задания: 1
1 Написание приложения с нуля
Выпускной проект
На основе умений и знаний полученных в курсе студент выбирает какой проект будет реализовывать. С нашей стороны будет помощь и наставничество в реализации проекта. Также нами будет предложен экспертный список «Чего не хватает в AppStore» из небольших и средних программ, где вы бы могли себя проявить.
Подглядеть
iOS разработчик
Евгений Камышанов, руководитель ios-подразделения
iOS разработчик
Алексей Кудрявцев, ios разработчик
iOS разработчик
Дмитрий Арбузов, тимлид команды ios
Создание собственного экрана загрузки (splash screen)
Геннадий Евстратов
Больше материалов
Видеоматериалы по теме
День открытых дверей
1 июня 2018 года в 20:00
После обучения вы

  • заберете с собой полный комплект обучающих материалов: видеозаписи всех вебинаров и презентации к занятиям;

  • сохраните пример разработанного приложения;

  • получите сертификат о прохождении курса;

  • получите приглашение пройти собеседование в компаниях-партнерах (эту возможность получают самые успешные студенты).

Дата выдачи сертификата: 2 декабря 2019 года
Ваш сертификат
otus.ru
Константин Константинопольский
успешно закончил курс
«iOS Разработчик»
Успешных заданий:
16 из 16
Проектная работа:
Распределённая система сетевого мониторинга
Виталий Чибриков
Генеральный директор
№ 0001
otus.ru
Константин Константинопольский
успешно закончил курс
«iOS Разработчик»
Успешных заданий:
16 из 16
Проектная работа:
Распределённая система сетевого мониторинга
Виталий Чибриков
Генеральный директор
№ 0001
Общая стоимость
50 000 ₽
В месяц: 12 500 ₽
В кредит: ₽ в месяц
Продолжительность
5 месяцев
Начало занятий
28 мая