Предположительная дата старта — середина 2021 года.

2

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

4

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

6

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

50%

разработчиков TeamDev — выпускники интернатуры

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

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

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

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

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

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

2. Фундамент

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

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

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

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

  • Контроль качества кода. IntelliJ IDEA Inspections. Code Coverage. ErrorProne.

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

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

3. Техники

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

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

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

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

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

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

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

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

4. Тестирование

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

  • Unit Testing. JUnit.

  • Functional Testing. TDD.

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

  • Google Truth. NullPointerTester.

  • Mocks, Stubs, and mocking libraries.

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.

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

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

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

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

  • Математика: множество, операции над множествами; функция, характеристики функции, график функций, линейная, степенная, показательная, логарифмическая функция, предел функции, производная, интеграл.

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

  • Основные принципы ООП: наследование, инкапсуляция, полиморфизм, конструктор, деструктор, виртуальные методы, множественное наследование.

  • Принципы работы и критерии подбора под задачу стандартных структур данных: Array, Collection, List, Set, Map, Stack, Queue.

  • Базовые алгоритмы: хэширование, хэш-функция, хэш-таблица, Binary Search, быстрые сортировки.

  • Знание часто используемых паттернов проектирования: Factory, Factory Method, Builder, Command, State, Strategy, Visitor, Composite, Marker Interface.

  • Знание основ языка Java: синтаксис, обработка входных параметров, особенности реализации ООП в Java, примитивные типы данных, исключения, Generics, Annotations, packages java.lang, java.util, java.io.

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

  • Способность решать логические и математические задачи, умение быстро думать и не бояться писать код — пробуйте себя на LeetCode и подобных сайтах.

  • Уровень английского языка не ниже intermediate — свободное чтение, написание писем, общение голосом.

* Если какие-то темы вызывают страх, неприязнь или сопротивление — не спеши и подучись. Ты же хочешь стать программистом, соответственно тебе придется рано или поздно с этим всем разобраться и потом с удовольствием использовать в каждодневной работе. Иначе у тебя не получится пройти собеседование.

Идет набор на программу!

Предположительная дата старта — середина 2021 года.

Java Classes —

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