13 апреля в 08:17

Стэнфордские курсы CS193P Зима 2017: Разработка iOS 10 приложений с помощью Swift



Стэнфордский университет, США — один из лучших в мире в области информатики (Computer Science). Он щедро делится своими курсами, и одним из самых популярных и успешных курсов является курс CS193P по разработке приложений на iOS, который читает профессор Пол Хэгерти. Это курс читается ежегодно, начиная с 2010 года. На данный момент актуальным является курс CS193P «Developing iOS 10 Apps with Swift», Зима 2017 года — «Разработка iOS 10 приложений с использованием Swift», и уже выложены все 17 Лекций и 5 Заданий на iTunes U (но можно смотреть и на Youtube).
В новом курсе отчетливо видно, что профессор сделал небольшой разворот всего курса от ОБЪЕКТНО-ОРИЕНТИРОВАННОГО программирования, к ФУНКЦИОНАЛЬНОМУ программированию с множеством неизменяемых объектов с APIs похожими на математические функции.
Конечно, iOS вовсе не была сконструирована на основе идеи функционального программирования. Но люди, которые изобретали Swift, держали “в голове” идею о функциональном программировании. Так что при разработке вашего iOS приложения (по крайней мере в части Модели) вы можете использовать множество элементов функционального программирования.

Это новый рубеж в iOS программировании, потому что в течение 10 лет люди, в основном, использовали в iOS программировании только reference type объекты, имея в виду концепцию объектно-ориентированного программирования. Но когда вы программируете на Swift с помощью структур structs и перечислений enums, и особенно если вы подключаете механизмы протоколов protocols и Generics, то вы можете реально сделать прекрасную работу, имеющую дело с реальным функциональным программированием.

И начиная прямо с Лекции 1 и Задания 2 нового курса акценты расставлены совсем по-другому. Теперь на первом месте value types, а о reference types — лишь мимоходом, подробно о структурах structs и перечислениях enums, а о классах classes — лишь мимолетом. Очень подробно о диапазонах Range<T> и о том, при каких условиях Range<T> становится последовательностью Sequence и позволяет применять к себе синтаксическую конструкцию for in.

Начинает профессор с очень подробного рассказа о синтаксисе Swift 3 и о возможностях Xcode 8. Буквально объясняет каждый символ. Далее он показывает как проектировать Модель с использованием структуры struct, отталкиваясь от public API Модели, как добиться расширяемой функциональности в структурах struct, ведь мы не можем использовать создание subclass, как в классе class. Показано создание вложенных структур struct и перечислений enum. На очень коротких фрагментах кода объясняется, когда стоит применять Optional, а когда — нет, исходя из семантического содержания Optional. Большое внимание уделено перечислениям enum, имеющим ассоциированные значения любого типа, в том числе и замыкания (closure). Рассматриваются такие возможности свойств как наблюдатели willSet{} и didSet {} и отложенная инициализация lazy. Поэтому чрезвычайно полезен для начинающих разработку iOS приложений на Swift, но не для начинающих изучать программирование как таковое.

Особый прорыв в изучении программирования на Swift в операционной системе iOS удается достичь при выполнении Заданий, которые предлагаются на этом курсе. Они, как правило, очень интересные, и вы, несомненно, получите удовольствие от их выполнения. Но они также потребуют от вас знание всего спектра приемов работы в Swift со структурами struct, перечислениями enum, семантическое понимание Optional, использование замыканий, кортежей и т.д, а также утонченное знание iOS 10: «жизненный цикл» View Controller , многопоточность, Scroll View , Table View , Collection View , Core Data , Dynamic Animation и т.д.

Уже 3 года существует сайт, который помогает вам пройти этот замечательный курс до конца и выполнить все Задания этого курса. Задача данного проекта в том, чтобы вывести вас, как разработчика, на достаточно высокий уровень iOS программирования, когда вы свободно сможете общаться с экспертами и понимать все, что говорится на WWDC, а также следить за созданием Swift 4 на сайте Swift.org, а не “болтаться” вечно в обучающих материалах. После качественного самостоятельного программирования Заданий курса CS193P никакие обучающие курсы уже будут не нужны.

На этом сайте выложены все необходимые материалы для изучения стэнфордских курсов: неавторизованные русскоязычные конспекты лекций, демонстрационные примеры, Задания на русском языке и варианты решений Заданий для iOS 10 и Swift 3.
Процесс выполнения заданий на Mac в Xcode 8 — очень увлекательный: хорошая информационная поддержка, результат отображается на симуляторах iPhone и iPad или на реальных устройствах, визуализация процесса отладки.

Самое интересное заключается в том, что из Xcode 8 вы можете запустить демонстрационные примеры и выполненные вами Задания на своем устройстве (или поделится с друзьями) совершенно бесплатно — для этого не нужно иметь сертификат разработчика Developer Account, стоимостью 99 $/год. Начиная с Xcode 7 политика Apple по отношению к разработчикам изменилась: они стараются привлечь к разработке приложений более молодых программистов.

Если вы являетесь опытным программистом на каком-то другом языке (Java, Python, C++), то, как показывает опыт, вам достаточно 2-3 недель, чтобы разобраться с синтаксическими конструкциями Swift ( у него очень короткий период вхождения). А потом — добро пожаловать на стэнфордский курс «Developing iOS 10 Apps with Swift», чтобы попробовать свои силы на выполнении Заданий, текст которых представлен на русском и английском языках здесь. Первые три Задания не связаны ни с многопоточностью, ни с таблицами Table View, ни с базами данных Core Data, ни с анимацией. Это чистая практика на знание Swift и MVC. Здесь вам придется управлять хранением данных в UserDefaults с помощью вычисляемых переменных с кодом в пару строк, понять, что захватывают замыкания (closure), и как «разорвать» циклическую ссылку памяти с помощью weak и unowned в списке «захвата», что такое @escaping функции, как работать с кортежами и т.д. На Github есть примеры решения Заданий. Так что стоит попробовать и использовать все свои навыки в программировании на Swift. Кроме того, можно сравнить свое решение с уже имеющимся.
Имеются решения Заданий:
Задание 1 cs193p Winter 2017 Калькулятор.Решение. Обязательные и дополнительные пункты.Находится на Github.

Задание 2 cs193p Winter 2017 «Умный» Калькулятор. Решение. Обязательные и дополнительные пункты. Находится на Github.

Задание 3 cs193p Winter 2017 «Графический» Калькулятор. Решение. Обязательные пункты. Находится на Github.

Задание 3 cs193p Winter 2017 «Графический» Калькулятор. Решение. Дополнительные пункты. Находится на Github.

Задание 4. CS193P Winter 2017. Smashtag Mentions (клиент Twitter). Решение — обязательные пункты 1- 7. Находится на Github.

Задание 4. CS193P Winter 2017. Smashtag Mentions (клиент Twitter). Решение — обязательные пункты 8 — 10. Находится на Github.

Задание 4. CS193P Winter 2017. Smashtag Mentions (клиент Twitter). Решение — дополнительные пункты 1-5. Находится на Github.

Задание 4. CS193P Winter 2017. Smashtag Mentions (клиент Twitter). Решение — дополнительный пункт 6. UICollectionView и перемещение ячеек. Находится на Github.

Задание 4. CS193P Winter 2017. Smashtag Mentions (клиент Twitter). Решение — дополнительный пункт 6. UICollectionView с расположением ячеек типа WaterFall и переключение между Layouts. Код находится на Github.

P.S.ОБСУЖДЕНИЕ МАТЕРИАЛОВ курса «Разработка iOS приложений с Swift» проводится на private форуме на Piazza. Вопросы можно задавать там.
Для регистрации вам необходимо пройти по ссылке:
piazza.com/moscow_physical_engineering_institute_bestkora.com/spring2017/mf141
и набрать private код mf141.
@WildGreyPlus
карма
32,0
рейтинг 5,6
Похожие публикации
Самое читаемое Разработка

Комментарии (2)

  • +4
    Что бы никто не терял времени, как я.

    Это не туториал, а реклама переводов курсов. Стоимостью 500р.
    • 0
      Плюс один, интересно когда до людей дойдет, что книжки в 200 страниц по цене 1500 и платные интернет курсы, не особо помогают образованию и созданию специалистов.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.