Первый этап обучения направлен на выработку и развитие навыков написания качественного кода, а также заполнение фундаментальных пробелов в знаниях. По сути, цель — научиться программировать с нуля. Чем меньшим опытом программирования обладает кандидат на обучение, тем обычно лучше — проще изначально заложить качественный фундамент, чем ломать вредные привычки и неправильные стереотипы.
Начинается обучение с классического языка C, чтобы правильно понять основы, а не запомнить как обезьяна, что «вот это работает, а как и почему — не знаю». Затем добавляется C++ и ООП. Еще придется познакомиться на практике с более высокоуровневыми языками программирования: Java и Python обязательны для всех, а JavaScript, Objective-C, PHP и Swift — для желающих.
Обучение на тренинге Boot Camp предусматривает онлайн-занятия и обязательные домашние задания между ними. Онлайн-занятия проводятся исключительно по субботам и воскресеньям и сгруппированы попарно в шесть уикендов. Между уикендами предусмотрены перерывы в несколько недель для выполнения практических задач по программированию.
Итоговая длительность обучения — от 4 месяцев, и зависит от вашего темпа.
- Основы синтаксиса С-подобных языков.
- Работа с командной строкой. Компиляция программ.
- Переменные. Константы. Макросы.
- Ввод и вывод данных. Взаимодействие с консолью.
- Операторы. Разновидности операций. Приоритет операторов.
- Ветвления. Функции. Циклы.
- Массивы и строки. Кодировки текста.
- Cтилистика кода. Конвенции наименований.
- Вещественные типы данных. Точность вычислений.
- Арифметическое переполнение.
- Создание и использование библиотек.
- Автоматическое тестирование. Основы TDD.
- Кэширование данных.
- Оптимизация работы циклов.
- Замеры производительности (бенчмаркинг).
- Буферизация ввода/вывода.
- Анализ алгоритмов. Алгоритмическая сложность.
- Алгоритмы обработки данных: поиск, сортировка, сдвиг, слияние.
- Динамическое программирование.
- Адресация памяти. Адресная арифметика.
- Безопасность: переполнение буфера.
- Динамическое распределение памяти. Утечки памяти.
- Хорошие практики работы с ветвями в git.
- Совместная работа с системой контроля версий git.
- Пользовательские типы данных.
- Классы и объекты. Инкапсуляция.
- Исключения и их обработка.
- Статические свойства и методы.
- Наследование. Иерархия классов.
- Полиморфизм. Виртуальные методы.
- Абстрактные классы и методы. Интерфейсы.
- Финальные классы и методы.
- Множественное наследование. Проблема ромба.
- Структуры данных: стек, очередь, список, граф, множество, словарь
- Взаимоотношения классов.
- Паттерны проектирования.
- Перегрузка операторов.
- Вложенные классы и функции. Замыкания.
- Обобщенное программирование. Параметрический полиморфизм.
- Анонимные классы и функции.
- Функции высшего порядка.
- Динамическая типизация: слабая, сильная.
- Виртуальная машина. Байт-код.
- Интерпретируемые языки. Сценарии.
- Автоматическое распределение памяти.
- Сравнение языков высокого уровня: удобство, документированость, производительность в типовых задачах.
- Интегрированные среды разработки: преимущества и особенности.
- Создание и настройка виртуальной машины с Ubuntu LTS.
- Настройка сети и проброс портов.
- Настройка переменных среды.
- Настройка SSH, SCP/SFTP.
- Установка и настройки веб-сервера NGINX.
- Установка и настройка виртуального окружения Python, uWSGI.
- Установка PHP + PHP-FPM.
- Создание и настройка VPS (DigitalOcean, Linode, etc.).
- Домены (подключение, записи: A, AAAA, CNAME, MX, TXT).
- Создание и использование SSL сертификатов (CertBot от Let's Encrypt).
- Автообновление сертификатов.
- Управление процессами (supervisor).
Продолжением Boot Camp является следующий этап — Junior Developer.