Правительство Российской Федерации Национальный Исследовательский Университет Высшая Школа Экономики Факультет компьютерных наук Департамент Программной Инженерии Общеуниверситетский факультатив “Разработка iOS-приложений” Автор программы: С. А. Пронин [email protected] Утверждаю Одобрена на заседании департамента программной инженерии факультета компьютерных наук руководитель департамента ________________ С.М.Авдошин "____" _________________ 2014 г. Первый проректор НИУ-ВШЭ __________________ В.В. Радаев "____" _________________ 2014 г. Москва 2014 !1 Пояснительная записка Автор программы: С. А. Пронин Общие сведения об учебном курсе. Курс является общеуниверситетским факультативом. Курс читается в 1 - 4 модулях учебного года. Количество кредитов – 3. Продолжительность курса составляет 96 аудиторных учебных часов, в том числе 48 часов лекций, 48 часов семинарских занятий и 80 часов самостоятельной работы, всего 176 часов. Рубежный контроль включает домашнее задание (к концу первого и третьего модуля), зачет в конце четвертого модуля. Требования к студентам: Освоение дисциплины требует знания основ программирования и разработки приложений. Пониманием принципов ООП. Цель курса Целью преподавания дисциплины “Разработка iOS-приложений” является изучение принципов проектирования и разработки мобильных приложений на платформе iOS, а также изучение языка программирования Objective-C. Аннотация Предлагаемый курс ориентирован на изучение необходимых для формирования общепрофессиональных компетенций выпускника бакалавриата. Для решения поставленных задач используется платформа iOS 7+, язык программирования Objective-C. Учебные задачи курса Выработать у студентов навыки разработки мобильных iOS-приложений, включающих в себя создание разработку как отдельных модулей, библиотек, а также полноценных мобильных приложений для устройств семейства iPhone, iPad и iPod Touch. В результате изучения курса студенты должны: знать: • основы написания приложений на языке Objective-C для платформы iOS; • архитектуру мобильных приложений на платформе iOS; • стандартные библиотеки, поставляемые вместе с платформой; • особенности разработки под мобильные устройства; • ограничения разработки под мобильные устройства. иметь представление: • об особенностях оптимизации использования ресурсов устройства приложением. !2 уметь: • проектировать графический интерфейс универсальных (iPhone и iPad) приложений; • отлаживать и профилировать разработанные мобильные приложения. I. Тематический план учебной дисциплины № п/ п Наименование темы Всего часов Аудиторные часы Лекции Семинары Самостоятельная работа 1 модуль 1 Знакомство с разработкой для платформы iOS. Основные понятия и инструменты Погружение в язык Objective-C. Основные UI компоненты. Управление flow приложения. Паттерны взаимодействия, событий, обратных вызовов. Асинхронное выполнение задач. Итого в модуле 1 2 3 4 5 6 7 11 3 2 6 15 4 4 7 17 4 4 9 43 2 модуль 11 10 22 10 3 3 4 13 3 4 6 Создание собственных элементов управления. Анимация 10 3 3 4 Локализация приложений. Отладка, профилирование. 13 4 4 5 Итого в модуле 2 46 13 14 19 Взаимодействие с внешними ресурсами (Интернет-соединение, обработка данных). Локальное хранение данных. Хранилище настроек. SQLite и CoreData. !3 3 модуль 8 9 10 11 12 13 14 15 Основные принципы проектирования графического интерфейса пользователя для мобильных устройств О с о б е н н о с т и п р о е к т и р о в а н и я графического интерфейса для приложений на платформе iOS Способы навигации, обзор дизайн-паттернов проектирования интерфейсов Основные элементы управления Итого в модуле 3 Создание ресурсов и составляющих iOS приложений Существующие технологии на платформе iOS, т р е бу ю щ и е р а з р а б о т к у дизайна Визуальное проектирование прототипов приложений с помощью Storyboards Взаиморасположение элементов при использовании инструментов AutoLayout Итого в модуле 4 Всего 10 3 3 4 12 3 3 6 10 3 3 4 11 3 3 5 43 4 модуль 12 12 19 10 3 3 4 12 3 3 6 11 3 3 5 11 3 3 5 44 176 12 48 12 48 20 80 II.Формы рубежного контроля и правила вывода оценок зачета и экзамена Предусмотрено выполнение домашнего задания (1 модуль). Выполнение домашнего задания оценивается по десятибалльной шкале. Во втором модуле предусмотрен зачет. Оценки выводятся по следующим формулам. Оценки за домашнее задание по десятибалльной шкале выводится как среднее арифметическое оценок за каждую из частей домашнего задания. Оценка за зачет (4 модуль) выставляется как среднее арифметическое двух оценок: за выполнение домашнего задания в 1-м и 3-м модуле и за ответ на зачете по десятибалльной шкале (с учетом правил округления до целого числа баллов). !4 Оценки выставляются в ведомость и зачетную книжку. В экзаменационную ведомость и зачетную книжку студента выставляется также и оценка по данной дисциплине по пятибалльной шкале, получаемая из оценки по десятибалльной шкале в соответствии с приведенной ниже таблицей соответствия (см. Приложение № 2 к приказу Ректора ГУ-ВШЭ № 1002 от 17.06.2002). Таблица соответствия оценок по десятибалльной и пятибалльной системам. По десятибалльной шкале 1 − неудовлетворительно 2 − очень плохо 3 − плохо 4 − удовлетворительно 5 − весьма удовлетворительно 6 − хорошо 7 − очень хорошо 8 − почти отлично 9 − отлично 10 −блестяще По пятибалльной шкале неудовлетворительно − 2 удовлетворительно − 3 хорошо − 4 отлично − 5 IV. Базовые Источники 1. iOS Developer Library. https://developer.apple.com/library/ios/navigation/ 2. Programming with Objective-C. https://developer.apple.com/library/mac/documentation/cocoa/ conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html 3. iOS 7 Design Resources. https://developer.apple.com/library/ios/design/index.html V. Содержание программы 1. Знакомство с разработкой для платформы iOS. Основные понятия и инструменты. Основная литература: 1. xCode Overview. https://developer.apple.com/library/mac/documentation/ToolsLanguages/ Conceptual/Xcode_Overview/About_Xcode/about.html#//apple_ref/doc/uid/TP40010215CH1-SW1 2. iOS Technology Overview. https://developer.apple.com/library/ios/documentation/ miscellaneous/conceptual/iphoneostechoverview/Introduction/Introduction.html#//apple_ref/ doc/uid/TP40007898-CH1-SW1 3. Concepts in Objective-C Programming. Model-View-Controller. https:// developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/ Model-View-Controller/Model-View-Controller.html Дополнительная литература: 1. Start Developing iOS Apps Today. https://developer.apple.com/library/iOS/ referencelibrary/GettingStarted/RoadMapiOS/index.html !5 2. Погружение в язык Objective-C. Основные UI компоненты. Управление flow приложения. Основная литература: 1. Programming with Objective-C. https://developer.apple.com/library/mac/documentation/ cocoa/conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html 2. UIKit user interface catalogue. https://developer.apple.com/library/ios/documentation/ UserExperience/Conceptual/UIKitUICatalog/index.html#//apple_ref/doc/uid/TP40012857 3. Cocoa Core Competencies. Model-View-Controller. https://developer.apple.com/library/ios/ documentation/general/conceptual/devpedia-cocoacore/MVC.html 4. View Controller Programming guide for iOS. https://developer.apple.com/library/ios/ featuredarticles/viewcontrollerpgforiphoneos/Introduction/Introduction.html 5. View Programming Guide for iOS. https://developer.apple.com/library/ios/documentation/ windowsviews/conceptual/viewpg_iphoneos/Introduction/Introduction.html 6. Cocoa Application Competencies for iOS. Storyboard. https://developer.apple.com/library/ ios/documentation/general/conceptual/Devpedia-CocoaApp/Storyboard.html 3. Паттерны взаимодействий, событий, обратных вызовов. Асинхронное выполнение задач. Основная литература: 1. Blocks programming guide. https://developer.apple.com/library/ios/documentation/cocoa/ Conceptual/Blocks/Articles/00_Introduction.html 2. Programming with Objective-C. Working with blocks. https://developer.apple.com/library/ ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithBlocks/ WorkingwithBlocks.html 3. Event handling Guide for iOS. https://developer.apple.com/library/ios/documentation/ EventHandling/Conceptual/EventHandlingiPhoneOS/Introduction/Introduction.html 4. Concurrency programming guide. https://developer.apple.com/library/mac/documentation/ general/conceptual/concurrencyprogrammingguide/OperationObjects/ OperationObjects.html 4. Взаимодействие с внешними ресурсами Основная литература: 1. URL Loading System Programming Guide. https://developer.apple.com/library/ios/ documentation/Cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.html#// apple_ref/doc/uid/10000165-BCICJDHA Дополнительная литература: 1. NSURLSession Tutorial. http://www.raywenderlich.com/51127/nsurlsession-tutorial 5. Локальное хранение данных. Хранилище настроек. SQLite и CoreData. Основная литература: 1. Preferences and Settings Programming Guide. https://developer.apple.com/library/ios/ documentation/cocoa/Conceptual/UserDefaults/Introduction/Introduction.html#//apple_ref/ doc/uid/10000059i-CH1-SW1 2. CoreData Programming Guide. https://developer.apple.com/library/ios/documentation/ Cocoa/Conceptual/CoreData/cdProgrammingGuide.html#//apple_ref/doc/uid/TP30001200SW1 !6 3. An introduction to the SQLite C/C++ Interface. http://www.sqlite.org/cintro.html 4. File System Programming Guide. https://developer.apple.com/library/ios/documentation/ FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/ FileSystemOverview.html 6. Создание собственных элементов управления. Анимация. Основная литература: 1. View Programming Guide. https://developer.apple.com/library/ios/documentation/ windowsviews/conceptual/viewpg_iphoneos/CreatingViews/CreatingViews.html 2. Quartz 2D Programming Guide. https://developer.apple.com/library/mac/documentation/ graphicsimaging/conceptual/drawingwithquartz2d/Introduction/Introduction.html 3. UIKit Dynamics Tutorial. http://www.raywenderlich.com/50197/uikit-dynamics-tutorial 4. Core Animation Programming Guide. https://developer.apple.com/library/mac/ documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html#// apple_ref/doc/uid/TP40004514-CH1-SW1 7. Локализация приложений. Отладка, профилирование. Основная литература: 1. Internationalization Programming Topics. https://developer.apple.com/library/ios/ documentation/MacOSX/Conceptual/BPInternational/BPInternational.html 2. Instruments User Guide. https://developer.apple.com/library/mac/documentation/ developertools/conceptual/instrumentsuserguide/Introduction/Introduction.html 3. Performance Overview. https://developer.apple.com/library/ios/documentation/Performance/ Conceptual/PerformanceOverview/PerformanceTools/PerformanceTools.html 8. Основные принципы проектирования графического интерфейса пользователя для мобильных устройств. Основная литература: 1. Designing for iOS7. https://developer.apple.com/library/ios/documentation/UserExperience/ Conceptual/MobileHIG/index.html 2. Designing a User Interface. https://developer.apple.com/library/ios/referencelibrary/ GettingStarted/RoadMapiOS/DesigningaUserInterface.html 3. Build a User Interface. https://developer.apple.com/library/mac/documentation/ To o l s L a n g u a g e s / C o n c e p t u a l / X c o d e _ O v e r v i e w / E d i t _ U s e r _ I n t e r f a c e s / edit_user_interface.html 9. Особенности проектирования графического интерфейса для приложений на платформе iOS. Основная литература: 1. Designing for iOS7. https://developer.apple.com/library/ios/documentation/UserExperience/ Conceptual/MobileHIG/index.html 2. iOS App anatomy. https://developer.apple.com/library/ios/documentation/UserExperience/ Conceptual/MobileHIG/Anatomy.html 3. Integrating with iOS. https://developer.apple.com/library/ios/documentation/ UserExperience/Conceptual/MobileHIG/Integration.html 4. Terminology and wording. https://developer.apple.com/library/ios/documentation/ UserExperience/Conceptual/MobileHIG/FeedbackCommunication.html !7 10. Способы навигации, обзор дизайн-паттернов проектирования интерфейсов Основная литература: 1. Navigation. https://developer.apple.com/library/ios/documentation/UserExperience/ Conceptual/MobileHIG/Navigation.html 2. Modal Contexts. https://developer.apple.com/library/ios/documentation/UserExperience/ Conceptual/MobileHIG/Modal.html 3. Bars. https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/ MobileHIG/Bars.html 11. Основные элементы управления Основная литература: 1. UIKit Reference Catalog. https://developer.apple.com/library/ios/documentation/ UserExperience/Conceptual/UIKitUICatalog/index.html 2. UI Elements. https://developer.apple.com/library/ios/documentation/UserExperience/ Conceptual/MobileHIG/Bars.html 12. Создание ресурсов и составляющих iOS приложений Основная литература: 1. Icon and Image design. https://developer.apple.com/library/ios/documentation/ UserExperience/Conceptual/MobileHIG/IconMatrix.html 2. Design Principles. https://developer.apple.com/library/ios/documentation/UserExperience/ Conceptual/MobileHIG/Principles.html 3. Icons and graphics. https://developer.apple.com/library/ios/documentation/UserExperience/ Conceptual/MobileHIG/Iconography.html 4. Branding. https://developer.apple.com/library/ios/documentation/UserExperience/ Conceptual/MobileHIG/Branding.html 13. Существующие технологии на платформе iOS, требующие разработку дизайна Основная литература: 1. Passbook. https://developer.apple.com/library/ios/documentation/UserExperience/ Conceptual/MobileHIG/Passbook.html 2. Pass Design and creation. https://developer.apple.com/library/ios/documentation/ UserExperience/Conceptual/PassKit_PG/Chapters/Creating.html 3. Multitasking. https://developer.apple.com/library/ios/documentation/UserExperience/ Conceptual/MobileHIG/Multitasking.html 4. Keyboards and Input Views. https://developer.apple.com/library/ios/documentation/ UserExperience/Conceptual/MobileHIG/KeyboardInputView.html 14. Визуальное проектирование прототипов приложений с помощью Storyboards Основная литература: 1. Tutorial: Storyboards. https://developer.apple.com/library/ios/referencelibrary/ GettingStarted/RoadMapiOS/SecondTutorial.html 2. Cocoa Core Competencies: Storyboard. https://developer.apple.com/library/ios/ documentation/general/conceptual/Devpedia-CocoaApp/Storyboard.html 3. Storyboard Tutorial. http://www.raywenderlich.com/50308/storyboards-tutorial-in-ios-7part-1 !8 15. Взаиморасположение элементов при использовании инструментов Auto-Layout Основная литература: 1. Auto-Layout Guide. https://developer.apple.com/library/ios/documentation/userexperience/ conceptual/AutolayoutPG/Introduction/Introduction.html 2. Advanced Auto-Layout Toolbox: http://www.objc.io/issue-3/advanced-auto-layouttoolbox.html Домашнее задание по дисциплине «Разработка iOS-приложений» Индивидуальные домашние задания на разработку web-приложений выдаются в соответствии с пожеланиями студентов. Оценка качества освоения дисциплины Зачет проводится в форме написания проекта приложения с реализацией конкретной модели данных, с использованием соответствующих типов данных, а так же несколько экранов мобильного приложения для взаимодействия с данными 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Вопросы для подготовки к зачету в форме написания приложения Основные типы данных Objective-C из Foundation Framework. Синтаксис и возможности языка Objective-C. Циклы. Условия. Структуры данных. Модули. Классы. Методы. Наследование. Архитектура платоформы iOS. Основные фреймворки на каждом уровне Паттерн MVC. Основные особенности и способы реализации на платформе iOS. Основные паттерны взаимодействия, событий, обратных вызовов. Выполнение асинхронных операций. Хранение данных. Построение моделей. Особенности проектирования графического интерфейса пользователя для мобильных устройств на платформе iOS. Визуальное проектирование универсальных интерфейсов с использованием инструментов Auto-Layout. Перед проведением зачета публикуется открытый вариант теста. Автор программы С. А. Пронин !9