1.Введение в Kotlin
Цель модуля: познакомить студентов с общими сведениями о языке, изучить синтаксис Kotlin, познакомиться с наиболее базовыми элементами языка. Модуль обзорный, в нем не планируется глубокое изучение всех элементов языка. Такое изучение будет происходить на практике в течение всей работы над выпускным проектом. Для работы потребуются: JDK 11, git, Intellij Idea Community Edition или GigaIDE от Сбера. Требования к ПК: памяти не менее 8 ГБ, рекомендуется не менее 16 ГБ. Рекомендуется установить Linux.
Тема 1: Введение в курс // ДЗ
Тема 2: Базовые элементы Kotlin
Тема 3: Функциональные элементы Kotlin
Тема 4: Объектно-ориентированное программирование
2. Расширенные возможности Kotlin
Цель модуля: познакомиться с расширенными возможностями языка Kotlin, знание которых отличает квалифицированного разработчика. Изучаемые темы частично являются обязательными для разработчика на Kotlin (корутины, DSL), частично опциональными (Multiplatform, интероперабельность с другими языками), знанием которых можно выгодно отличиться на собеседовании.
Тема 1: Предметно - ориентированные языки (DSL) // ДЗ
Тема 2: Конкурентность с корутинами
Тема 3: Конкурентность с Sequence и Flow-потоками
Тема 4: Мультиплатформенная разработка
Тема 5: Интероперабельность с другими языками
Тема 6: Расширенные возможности Gradle
3. Подготовка к разработке
В модуле обсуждается этап подготовки к старту проекта, который предшествует началу разработки. Среди тем рассматривается работа с идеей проекта, маркетинговая проработка, формирование требований и организация тестирования. Также обсуждается целевая архитектура проекта, инфраструктура сборки и функционирования. Модуль важен тем, что позволяет выполнить планирование и проработку выпускного проекта студента. Результатами работы в учебном модуле будут следующие: 1) список требований и критериев приемки к выпускному проекту; 2) описание API, с которым будет работать выпускной проект студента; 3) готовая инфраструктура для тестирования, развертывания и мониторинга выпускного проекта.
Тема 1: Выбор проекта и консультация по пройденному материалу // ДЗ
Тема 2: Маркетинг и аналитика проекта
Тема 3: Общие принципы защиты информации
Тема 4: Архитектурные принципы и архитектура проекта
Тема 5: Основы DevOps и среда выполнения приложения
4. Разработка API
Модуль посвящен разработке API и освоению различных элементов ООП. В нем студент разработает собственное API для выпускного проекта, сделает комплект различных классов для внутреннего использования в приложении, а также научится делать мапинг между этими сущностями. Также в модуле обсуждаются вопросы тестирования и мониторинга системы на базе логов. Обязательным результатом работы по учебному модулю являются: 1) API; 2) внутренние модели; 3) маперы. Опционально студент может освоить следующие темы: 1) разработка сквозных и интеграционных тестов; 2) разработка библиотек логирования.
Тема 1: Создаем интерфейс с помощью OpenAPI // ДЗ
Тема 2: Создаем внутренние модели и маперы
Тема 3: Тестирование проекта
Тема 4: Мониторинг, сбор логов и метрик
5. Фреймворки и асинхронный транспорт
Целью модуля является разработка серии приложений с применением нескольких фреймворков и транспортных интерфейсов, которые уже на самом раннем этапе разработки могут корректно отвечать и обеспечивать интеграцию нашего будущего сервиса с другими командами (фронтенд, смежные команды), несмотря на то, что до завершения проекта еще далеко. В рамках модуля будут обсуждаться HTTP-фреймворки Spring и Ktor, а также асинхронные транспортные интерфейсы WebSocket, RabbitMQ и Kafka.
Тема 1: Разработка приложения со Spring // ДЗ
Тема 2: Разработка приложения с KTOR
Тема 3: Транспорт с WebSocket
Тема 4: Транспорт с RabbitMQ
Тема 5: Транспорт с Kafka
Тема 6: Разработка бессерверного приложения
6. Бизнес-логика проекта
В этом модуле обсуждается создание бизнес-логики проекта. В соответствии с принципами чистой архитектуры, бизнес-логика выносится в отдельный модуль (Gradle-подпроект) и становится независимой от конкретной реализации транспортных моделей, баз данных, фреймворков и пр. Кроме того, шаблон проектирования «Цепочка обязанностей» позволяет бизнес-логику сделать максимально гибкой. Доработка вашего приложения при изменении постановки задачи будет простой, быстрой и дешевой. В рамках модуля планируется разработка библиотеки для шаблона «Цепочка обязанностей», внедрение ее в приложение, а также разработка валидаторов для всех входных данных.
Тема 1: Основы бизнес-логики и разработка библиотеки для шаблона CoR // ДЗ
Тема 2: Создание модуля бизнес-логики с использованием шаблона Цепочка Ответственности.
Тема 3: Шаг валидации в бизнес-цепочке
7. Работа с базами данных
В модуле рассматриваются следующие основные вопросы: - различные аспекты работы с базами данных, включая формирование миграций, особенности обслуживания конкурентного доступа к объектам в БД и др.; - исследование различных баз данных из разных поколений (SQL, NoSQL, NewSQL), которые либо активно применяются в современной разработке, либо активно развиваются и стремительно набирают популярность; - гибкая интеграция в приложение хранилищ, позволяющая легко и дешево заменять одну базу данных на другую.
Тема 1: Практические принципы работы с БД // ДЗ
Тема 2: Создание репозитария
Тема 3: Конкурентный доступ к БД
Тема 4: Репозитарий с PostgreSQL
Тема 5: Репозитарий с Cassandra
Тема 6: Репозитарий с графовой базой данных
8. Развитие бизнес-логики проекта
В рамках модуля развития бизнес-логики обсуждаются различные аспекты расширения возможностей приложения, которыми обычно обрастают любые реальные проекты. Также в модуле рассматриваются различные математические алгоритмы и подходы типа машины состояний и машинного обучения. В рамках модуля студенты узнают, как выполнять контроль состояний системы, обеспечивать авторизацию в приложении, а также интегрироваться с системами искусственного интеллекта.
Тема 1: Машина состояний
Тема 2: Авторизация и аутентификация в бэкенде
Тема 3: Введение в машинное обучение
Тема 4: Реализация алгоритмов ML в Kotlin-проекте
Тема 5: Обзор значимых проектов на Kotlin, которые выходят за рамки курса
9. Проектная работа
Заключительный месяц курса посвящен доработке выпускных проектов студентов. В течение этого месяца ожидается доделка всех оставшихся домашних заданий и подготовка к защите проекта.
Тема 1: Защита проектных работ
Цель модуля: познакомить студентов с общими сведениями о языке, изучить синтаксис Kotlin, познакомиться с наиболее базовыми элементами языка. Модуль обзорный, в нем не планируется глубокое изучение всех элементов языка. Такое изучение будет происходить на практике в течение всей работы над выпускным проектом. Для работы потребуются: JDK 11, git, Intellij Idea Community Edition или GigaIDE от Сбера. Требования к ПК: памяти не менее 8 ГБ, рекомендуется не менее 16 ГБ. Рекомендуется установить Linux.
Тема 1: Введение в курс // ДЗ
Тема 2: Базовые элементы Kotlin
Тема 3: Функциональные элементы Kotlin
Тема 4: Объектно-ориентированное программирование
2. Расширенные возможности Kotlin
Цель модуля: познакомиться с расширенными возможностями языка Kotlin, знание которых отличает квалифицированного разработчика. Изучаемые темы частично являются обязательными для разработчика на Kotlin (корутины, DSL), частично опциональными (Multiplatform, интероперабельность с другими языками), знанием которых можно выгодно отличиться на собеседовании.
Тема 1: Предметно - ориентированные языки (DSL) // ДЗ
Тема 2: Конкурентность с корутинами
Тема 3: Конкурентность с Sequence и Flow-потоками
Тема 4: Мультиплатформенная разработка
Тема 5: Интероперабельность с другими языками
Тема 6: Расширенные возможности Gradle
3. Подготовка к разработке
В модуле обсуждается этап подготовки к старту проекта, который предшествует началу разработки. Среди тем рассматривается работа с идеей проекта, маркетинговая проработка, формирование требований и организация тестирования. Также обсуждается целевая архитектура проекта, инфраструктура сборки и функционирования. Модуль важен тем, что позволяет выполнить планирование и проработку выпускного проекта студента. Результатами работы в учебном модуле будут следующие: 1) список требований и критериев приемки к выпускному проекту; 2) описание API, с которым будет работать выпускной проект студента; 3) готовая инфраструктура для тестирования, развертывания и мониторинга выпускного проекта.
Тема 1: Выбор проекта и консультация по пройденному материалу // ДЗ
Тема 2: Маркетинг и аналитика проекта
Тема 3: Общие принципы защиты информации
Тема 4: Архитектурные принципы и архитектура проекта
Тема 5: Основы DevOps и среда выполнения приложения
4. Разработка API
Модуль посвящен разработке API и освоению различных элементов ООП. В нем студент разработает собственное API для выпускного проекта, сделает комплект различных классов для внутреннего использования в приложении, а также научится делать мапинг между этими сущностями. Также в модуле обсуждаются вопросы тестирования и мониторинга системы на базе логов. Обязательным результатом работы по учебному модулю являются: 1) API; 2) внутренние модели; 3) маперы. Опционально студент может освоить следующие темы: 1) разработка сквозных и интеграционных тестов; 2) разработка библиотек логирования.
Тема 1: Создаем интерфейс с помощью OpenAPI // ДЗ
Тема 2: Создаем внутренние модели и маперы
Тема 3: Тестирование проекта
Тема 4: Мониторинг, сбор логов и метрик
5. Фреймворки и асинхронный транспорт
Целью модуля является разработка серии приложений с применением нескольких фреймворков и транспортных интерфейсов, которые уже на самом раннем этапе разработки могут корректно отвечать и обеспечивать интеграцию нашего будущего сервиса с другими командами (фронтенд, смежные команды), несмотря на то, что до завершения проекта еще далеко. В рамках модуля будут обсуждаться HTTP-фреймворки Spring и Ktor, а также асинхронные транспортные интерфейсы WebSocket, RabbitMQ и Kafka.
Тема 1: Разработка приложения со Spring // ДЗ
Тема 2: Разработка приложения с KTOR
Тема 3: Транспорт с WebSocket
Тема 4: Транспорт с RabbitMQ
Тема 5: Транспорт с Kafka
Тема 6: Разработка бессерверного приложения
6. Бизнес-логика проекта
В этом модуле обсуждается создание бизнес-логики проекта. В соответствии с принципами чистой архитектуры, бизнес-логика выносится в отдельный модуль (Gradle-подпроект) и становится независимой от конкретной реализации транспортных моделей, баз данных, фреймворков и пр. Кроме того, шаблон проектирования «Цепочка обязанностей» позволяет бизнес-логику сделать максимально гибкой. Доработка вашего приложения при изменении постановки задачи будет простой, быстрой и дешевой. В рамках модуля планируется разработка библиотеки для шаблона «Цепочка обязанностей», внедрение ее в приложение, а также разработка валидаторов для всех входных данных.
Тема 1: Основы бизнес-логики и разработка библиотеки для шаблона CoR // ДЗ
Тема 2: Создание модуля бизнес-логики с использованием шаблона Цепочка Ответственности.
Тема 3: Шаг валидации в бизнес-цепочке
7. Работа с базами данных
В модуле рассматриваются следующие основные вопросы: - различные аспекты работы с базами данных, включая формирование миграций, особенности обслуживания конкурентного доступа к объектам в БД и др.; - исследование различных баз данных из разных поколений (SQL, NoSQL, NewSQL), которые либо активно применяются в современной разработке, либо активно развиваются и стремительно набирают популярность; - гибкая интеграция в приложение хранилищ, позволяющая легко и дешево заменять одну базу данных на другую.
Тема 1: Практические принципы работы с БД // ДЗ
Тема 2: Создание репозитария
Тема 3: Конкурентный доступ к БД
Тема 4: Репозитарий с PostgreSQL
Тема 5: Репозитарий с Cassandra
Тема 6: Репозитарий с графовой базой данных
8. Развитие бизнес-логики проекта
В рамках модуля развития бизнес-логики обсуждаются различные аспекты расширения возможностей приложения, которыми обычно обрастают любые реальные проекты. Также в модуле рассматриваются различные математические алгоритмы и подходы типа машины состояний и машинного обучения. В рамках модуля студенты узнают, как выполнять контроль состояний системы, обеспечивать авторизацию в приложении, а также интегрироваться с системами искусственного интеллекта.
Тема 1: Машина состояний
Тема 2: Авторизация и аутентификация в бэкенде
Тема 3: Введение в машинное обучение
Тема 4: Реализация алгоритмов ML в Kotlin-проекте
Тема 5: Обзор значимых проектов на Kotlin, которые выходят за рамки курса
9. Проектная работа
Заключительный месяц курса посвящен доработке выпускных проектов студентов. В течение этого месяца ожидается доделка всех оставшихся домашних заданий и подготовка к защите проекта.
Тема 1: Защита проектных работ
Для просмотра скрытого содержимого необходимо Войти или Зарегистрироваться.