- о курсе: цели, кем станете по окончании, как будем заниматься, о домашних заданиях;
о Kotlin: общие сведения о языке, обзор функциональности Kotlin, экосистемы, место место на рынке языков, его применимость и ограничения, конкурентные преимущества и недостатки, критерии выбора для конкретных проектов;
инициализация программы на Kotlin, создание проекта с Gradle и Kotlin, первая программа и автотест.
- узнать стек технологий для полноценной работы;
понять, что такое Git и научиться базовым действиям с ним;
создать первый проект на Kotlin;
установить и поработать с IDE.
- типы данных, используемых в Kotlin;
арифметические и другие операторы;
создание переменных;
управление инициализацией переменных;
понимать, что такое nullability, зачем оно нужно и как применяется;
управление потоком исполнения с помощью циклов и условий;
ввод и вывод с консоли.
- узнать все условные структуры;
знать разницу между if-when;
уметь применять структуры в практике;
правильное использование for и while;
знать разницу между for и while;
научиться применять структуры на практике.
- научиться использовать функции и "разбивать" код на блоки;
узнать, что такое ветвление кода;
управление рекурсиями;
понимание функции как объекта.
- научиться создавать строки и управлять ими;
знать, как строки хранятся в памяти;
использовать enum;
понимать, что такое массив и как он устроен;
понимание листов (list) и чем они отличаются от массива.
- детальное изучение массивов;
знать различия массивов и списков данных;
понимание устройства двумерного массива;
изучить общее представление о многомерных массивах.
- ответить на оставшиеся вопросы;
упорядочить знания предыдущих занятий;
посмотреть на примеры решения задач;
получить обратную связь.
- рассмотреть понятие класса и объекта в языке Kotlin;
научиться создавать и использовать классы и объекты;
научиться добавлять методы и переменные в классы.
наследование:
1) изучить родительские и дочерние классы;
2) instanceof;
полиморфизм;
инкапсуляция:
1) правильное использование видимости методов.
- понять отличия интерфейсов от абстрактных классов;
более детально изучить понятие наследования;
рассмотреть использование интерфейсов и абстрактных классов.
- понять отличия анонимных и внутренних классов;
узнать все виды внутренних классов;
применимость их в реальном мире.
- рассмотреть существующие архитектуры классов;
научиться ловить и обрабатывать ошибки;
повторить понятие функции как объекта.
- ответить на оставшиеся вопросы;
упорядочить знания предыдущих занятий;
посмотреть на примеры решения задач;
получить обратную связь.
- более детальное изучение lambda-функций;
научиться создавать extension-функции;
узнать о базовых scope-функциях;
понимать, что такое DSL и его примеры.
- научиться читать, проектировать и создавать DSL;
реализовать свой гибкий DSL.
- ознакомиться с методами тестирования и подходом TDD;
затронуть некоторые интересные keywords в Kotlin.
- ответить на оставшиеся вопросы;
упорядочить знания предыдущих занятий;
посмотреть на примеры решения задач;
получить обратную связь.
- изучить различные структуры данных и их отличия;
понимать различия в операциях над ними, таких как: добавление, удаление и т. д.
научиться быстро определять необходимую структуру данных для каждой задачи;
использовать и понимать generics.
- познакомиться с главной концепцией hash-функции;
научиться различать и понимать смысл ассоциативных массивов и таких понятий как "ключ" и "значение";
уметь использовать сложные и вложенные мапы;
использовать структуру JSON.
- научиться применять и анализировать сортировки, понимать разницу и их сложность;
рассмотреть реализации различных сортировок;
быть готовым рассказать реализацию одного из популярных алгоритмов или написать его с нуля.
- понимать устройство корутин и принципы из работы;
создавать код с асинхронным выполнением;
запускать корутины в нескольких потоках;
тестировать асинхронный код.
- создавать проекты с Gradle
пользоваться инфраструктурой Gradle, включая таски, конфигурации и пр.
генерировать "толстые" jar-файлы и запускать их
генерировать Docker-образы
- Ознакомиться с основами сетевых технологий и TCP/IP.
- Ознакомится с основными понятиями Web-разработки.
- создавать web-приложения на Ktor;
- формировать контроллеры и эндпоинты;
- обрабатывать REST-запросы;
- тестировать Ktor-приложения.
- понимать, что такое REST API, зачем его используют;
отличать методы, принципы и т. д.;
понимать, что такое POST-запрос и чем он отличается от GET;
создание своего несложного REST API на Ktor.
- понимать, какие бывают способы авторизации и как их настроить;
какие бывают виды ошибок и как их обрабатывать;
научиться тестировать сервер и применять TDD в реальной жизни.
- знать устройство мультиплатформенного проекта;
самостоятельно создавать проекты для JVM, JS, Native;
тестировать мультиплатформенный код.
- написание клиент-части на сервере Ktor;
создание интерактивного сервера/клиента.
- ответить на оставшиеся вопросы;
упорядочить знания предыдущих занятий;
посмотреть на примеры решения задач;
получить обратную связь.
- выбрать тему выпускного проекта;
обсудить порядок сдачи выпускного проекта;
задать вопросы по пройденному курсу.
- продемонстрировать результаты выполнения выпускной работы.