Предположительная дата старта — середина 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 для студентов, влюбленных в программирование.