Освойте программирование на Java и Kotlin, мобильную разработку и UX/UI, разработайте свое приложение для Android - мы обучаем так, что вы освоите программирование, даже не имея технической базы.
Программирование на Java
1. Введение в программирование
- Computational thinking. Работа кода. Хранение и передача информации.
- Устройство WEB и работа браузера. Работа протоколов. DNS
- Основы работы с сетями. TCP/UDP
- Классификация языков программирования. Концепции объектно-ориентированного и функционального программирования. Принципы SOLID, KISS
- Качество кода.
- Введение в Git. Основные операции. Ветки, представление о мёрдже. Командная работа
2. Алгоритмы и структуры данных
- Типы данных: числа и операторы, переменные, строки, булевы выражения. Структуры данных: массивы, списки, очереди. Условия и циклы. Функции.
- Блок-схемы. О-нотация.
- Алгоритмы сортировки и поиска
- Представление о деревьях, хэш-таблицах, графах. Простые задачи на них.
- Алгоритмическое мышление и паттерны решения проблем. Алгоритмические задачи.
3. Java
- Установка JDK и IntelliJ IDEA. Особенности выполнения кода на Java
- Основные синтаксические конструкции и операторы. Переменные. Циклы
- Объекты и классы. Создание объектов. Копирование объектов. Внешние библиотеки классов
- Операции с числами. Строки, символы, подстроки. Сравнение строк. Регулярные выражения
- Массивы. Списки. Очереди. Поиск и сортировка
- Наследование и полиморфизм. Наследование классов. Доступ к методам и переменным. Абстрактные классы
- Коллекции (Java Collections Framework): list, treeset, treemap, queue, hashset, hashmap
- Примитивы
- Обработка исключений. Типы исключений
Мобильная разработка
4.1 Android Studio
- Работа в Android Studio IDE
- Структура android-проекта: Java/Kotlin, XML, .gradle files
- Система сборки Gradle
4.2 Интерфейсы и анимация
- Android-компонент Activity. Жизненный цикл, таски и BackStack
- Intents. Типы intents. IntentFilter
- Cтатические юзер-интерфейсы.
- Основные виджеты (View): EditText, TextView, Button, ImageView, ScrollView, HorizontalScrollView, Switch
- Контейнеры (ViewGroup): LinearLayout, RelativeLayout, FrameLayout, ConstraintLayout
- Динамические юзер-интерфейсы. RecyclerView, ViewPager, Spinner
- CustomView: Canvas, Bitmap, Paint
- UI-ресурсы: Drawables, String, Styles
- Support UI: Dialogs, ProgressBar
- Списки. Кастомизированные списки. ItemDecorator
- Элементы для навигации. Создание уведомлений. Взаимодействие элементов экрана с помощью контейнеров
- Жизненный цикл Fragment. FragmentManager. BackStack
- Передача данных между Activity и Fragment. Создание нескольких экранов и передача данных между ними.
- Анимация векторных изображений и элементов интерфейса
4.3 Архитектура приложения
- Принципы построения архитектуры мобильных приложений. Принципы чистой архитектуры.
- Архитектурные паттерны MVVM, MVI, MVP
- Применение LifeCycleOwner
- LiveData: создание данных, обновление, подписка на обновления
- ViewModel: создание модели, обмен данными
5. Kotlin
- Среда разработки
- Основные синтаксические конструкции и операторы. Условия. Циклы. Функции
- Объектно-ориентированное программирование на Kotlin
- Классы и объекты.
- Функции высшего порядка. Исключения. Аннотации
- Наследование. Системы классов. Интерфейсы
- Фукциональное программирование. Лямбда-функции
- Коллекции. Generics
6.1 Многопоточность
- Асинхронное выполнение задач приложения. AsyncTask.
- Thread. Hadler. Looper
- Multithreading. Корутины. Написание асинхронного кода
6.2 Работа с сетью
- Работа с протоколом HTTP. Библиотека OkHttp
- Подключение к сети через Retrofit: синхронная и асинхронная загрузка
- REST API
- Форматы данных. JSON, GSON. Protocol Buffer, Flat Buffer
- Загрузка изображений: Glide, Picasso
6.3 SQL и хранение данных
Хранение данных. Система файлов. DataBinding
- Данные у пользователя и запрос данных. SharedPreferences. RuntimePermissions
- Структура БД, основные запросы. Представление о SQL- и noSQL-базах данных
- Работа с RoomDB. Создание собственной БД
Продвинутая мобильная разработка
7.1 Android-компоненты
- Service. Запуск длительных задач в фоновом режиме. Пуш-уведомления.
- Создание отложенных задач. JobScheduler, WorkManager, AlarmManager
- Broadcasts-сообщения. BroadcastReceiver, LocalBroadcastReceiver
- Content Provider: обмен данными между приложениями
- Платформа FireBase для отслеживания ошибок приложения. Cloud Messaging, Crashlytics, Remote Config, App Indexing, Dynamic Link
7.2 Дополнительные библиотеки
- Концепция функционального программирования. RxJava для асинхронной работы приложения: основные классы и операторы
- Обработка ошибок и утечки памяти в RxJava
- Dagger2. Внедрение зависимостей. Модули и компоненты
- Dagger2. Проектирование многомодульного приложения
- Библиотека Anko
- Плюсы и минусы различных архитектурных паттернов. Рефакторинг кода
7.3 Безопасность приложения
- Шифрование и дешифрование данных
- Proguard. Встроенная обфускация и оптимизация
7.4 UX/UI (бонусный трек)
- Основы digital-дизайна
- UX-исследования. Построение CJM
- Проектирование в Figma. Дизайн-концепция. Material Design
- Прототипирование интерфейса
7.5 Сборка приложения
- Линтеры для проверки качества кода
- Оптимизация сборки в Gradle
- Docker-контейнеры
- Jenkins для сборки проекта
7. 6 Тестирование приложений
- A/B-тестирование приложений
- Unit-тесты в Android. Test Driven Development
- Интеграционное и модульное тестирование. JUnit, Mockito, Robolectic
- UI-тестирование в Android. Фреймворк Espresso
- Покрытие приложения тестами
- Концепция CI/CD. Поддержка и оптимизация приложений
7. 7 Публикация приложений в Play Store
- App Bundle: различные типы сборок приложения (dev и production). .keystore files. Платная и бесплатная версии
- Builds. Flavors. Flavor dimensions
- Публикация приложения в Play Store: загрузка приложения в маркет, распространение и локализации приложения
8. Финальный проект
- Командная разработка мобильного приложения с публикацией в Play Store
Никита Баришок
Ментор, преподаватель. Более 6 лет опыта разработки на Android. Работал в Trucker Path, ABBYY, BMSTU Research Insitute. Имеет опыт управления командой разработчиков в качестве тимлида. Основные навыки: Java, Android Development, RxJava.
Рустам Исламнуров
Ментор, преподаватель Более 4 лет опыта разработки на Android. Более 3-х лет преподавания Android-разработки в Samsung.
Виталий Раевский
Ведущий вебинаров и ментор. Более 11 лет опыта веб-разработки и более 5 лет разработки на Android.