Java Classes

TeamDev Students Program

Обучение стартовало, но еще есть возможность присоединиться

Java Classes —

интернатура по Java для студентов, влюбленных в программирование.


языка программирования: Java и JavaScript

месяца full-time лекций и практики

талантливых студентов в одной группе

выпускников интернатуры становятся частью TeamDev


Наши менторы

Oleg Melnik

Опыт коммерческой разработки: 20+ лет.

Ментор: 10+ лет.

Отвечает за: Java.

Dmytro Kalinin

Опыт коммерческой разработки: 7+ лет.

Ментор: 5+ лет.

Отвечает за: JavaScript.

Vasylenko Roman

Опыт коммерческой разработки: 10+ лет.

Ментор: 5+ лет.

Отвечает за: Верстка.

Базовая программа


1. Погружение

  • Что такое программирование. Коротко об истории развития компьютерной техники и языков программирования.

  • Парадигмы программирования. Объектно-ориентированное программирование, критерии отличия от процедурного подхода.

  • Знакомство с функциональным программированием.

  • Основные тенденции индустрии на сегодняшний день.

2. Фундамент

  • Введение в Теорию Компиляторов. Что происходит с кодом после его написания.

  • Java как язык программирования. Особенности работы JVM. Модель памяти. Сборщик мусора.

  • Структура проекта. Модульность. Зависимости. Сборка проекта. Gradle. Continuous Integration.

  • Системы контроля версий. Git. GitHub. Branching. Pull Request. Code Review.

  • Коллекции. Тонкости использования с учетом затрат памяти и быстродействия. Stream API.

  • Оценка сложности кода при работе с данными.

3. Техники

  • Основные правила и принципы написания «чистого кода».

  • Объектно-ориентированный дизайн. SOLID. Паттерны проектирования.

  • Как писать понятный и надежный код. Читаемость кода.

  • API дизайн. Что это такое и почему это важно. Bumper-Sticker API Design.

  • Корректная обработка входных параметров. Assertions. Google Guava.

  • Как корректно использовать исключения и не перегружать клиентский код.

  • Документирование кода. Javadoc. Как документировать код быстро и по сути.

  • Логирование. Как не залипать в отладчике. Flogger.


4. Контроль качества

  • Для чего нужно писать тесты. Виды тестирования.

  • Unit Testing. JUnit.

  • Functional Testing. TDD.

  • Google Truth. NullPointerTester.

  • Dummies, Mocks, Stubs, Spies, and mocking libraries.

  • IntelliJ IDEA Inspections. Code Coverage.

  • Статические анализаторы кода. ErrorProne.

  • Как писать тесты так, чтобы это ускоряло разработку, а не наоборот.


5. Взлетаем

  • Что такое Интернет. Как устроены сети. Прикладной уровень в TCP/IP сетях.

  • HTTP. Request. Response. Session. Cookies. Servlet API. REST API. JSON.

  • Базовая архитектура web-приложений.

  • Основные принципы написания клиентской части приложения.

  • JavaScript. ООП в JavaScript. ES6. Promises. Generators. JSDoc. qUnit. ESLint. DOM. Базовые элементы верстки.

  • Введение в предметно-ориентированное проектирование.

  • Введение в Cloud Computing. Особенности написания приложений.

6. Полировка

  • Знакомство с методологиями разработки проектов. Специфика agile-методологий. Основные принципы SCRUM.

  • Работа в команде. Ответственность за результат. Права и обязанности программиста.

  • Составление резюме. Как сделать свое резюме привлекательным для работодателя, ничего не преувеличивая.


Требования к кандидатам


Мы ждём от кандидатов глубокого понимания и способности свободно размышлять на следующие темы:


  • Дискретная математика: булева алгебра, конечный автомат, двоичные деревья.


  • Java: синтаксис, особенности ООП, исключения, Generics, Annotations, Stream API.


  • Стандартные структуры данных: Array, Collection, List, Set, Map, Queue, Deque.


  • Базовые алгоритмы: хэширование, двоичный поиск, быстрые сортировки.


  • Опыт использования IntelliJ IDEA и GitHub.


  • Уровень английского языка Intermediate, желательно умение общаться голосом.