Boot Camp

Первый этап обучения направлен на выработку и развитие навыков написания качественного кода, а также заполнение фундаментальных пробелов в знаниях. По сути, цель — научиться программировать с нуля. Чем меньшим опытом программирования обладает кандидат на обучение, тем обычно лучше — проще изначально заложить качественный фундамент, чем ломать вредные привычки и неправильные стереотипы.

Начинается обучение с классического языка C, чтобы правильно понять основы, а не запомнить как обезьяна, что «вот это работает, а как и почему — не знаю». Затем добавляется C++ и ООП. Еще придется познакомиться на практике с более высокоуровневыми языками программирования: Java и Python обязательны для всех, а JavaScript, Objective-C, PHP и Swift — для желающих.

Обучение на тренинге Boot Camp предусматривает онлайн-занятия и обязательные домашние задания между ними. Онлайн-занятия проводятся исключительно по субботам и воскресеньям и сгруппированы попарно в шесть уикендов. Между уикендами предусмотрены перерывы в несколько недель для выполнения практических задач по программированию.

Итоговая длительность обучения — от 4 месяцев, и зависит от вашего темпа.

Программа тренинга Boot Camp

Основы программирования

  1. Основы синтаксиса С-подобных языков.
  2. Работа с командной строкой. Компиляция программ.
  3. Переменные. Константы. Макросы.
  4. Ввод и вывод данных. Взаимодействие с консолью.
  5. Операторы. Разновидности операций. Приоритет операторов.
  6. Ветвления. Функции. Циклы.
  7. Массивы и строки. Кодировки текста.
  8. Cтилистика кода. Конвенции наименований.
  9. Вещественные типы данных. Точность вычислений.
  10. Арифметическое переполнение.
  11. Создание и использование библиотек.
  12. Автоматическое тестирование. Основы TDD.

Быстродействие и память

  1. Кэширование данных.
  2. Оптимизация работы циклов.
  3. Замеры производительности (бенчмаркинг).
  4. Буферизация ввода/вывода.
  5. Анализ алгоритмов. Алгоритмическая сложность.
  6. Алгоритмы обработки данных: поиск, сортировка, сдвиг, слияние.
  7. Динамическое программирование.
  8. Адресация памяти. Адресная арифметика.
  9. Безопасность: переполнение буфера.
  10. Динамическое распределение памяти. Утечки памяти.

Системы контроля версий

  1. Хорошие практики работы с ветвями в git.
  2. Совместная работа с системой контроля версий git.

ООП и структуры данных

  1. Пользовательские типы данных.
  2. Классы и объекты. Инкапсуляция.
  3. Исключения и их обработка.
  4. Статические свойства и методы.
  5. Наследование. Иерархия классов.
  6. Полиморфизм. Виртуальные методы.
  7. Абстрактные классы и методы. Интерфейсы.
  8. Финальные классы и методы.
  9. Множественное наследование. Проблема ромба.
  10. Структуры данных: стек, очередь, список, граф, множество, словарь
  11. Взаимоотношения классов.
  12. Паттерны проектирования.

Высокоуровневые языки

  1. Перегрузка операторов.
  2. Вложенные классы и функции. Замыкания.
  3. Обобщенное программирование. Параметрический полиморфизм.
  4. Анонимные классы и функции.
  5. Функции высшего порядка.
  6. Динамическая типизация: слабая, сильная.
  7. Виртуальная машина. Байт-код.
  8. Интерпретируемые языки. Сценарии.
  9. Автоматическое распределение памяти.
  10. Сравнение языков высокого уровня: удобство, документированость, производительность в типовых задачах.
  11. Интегрированные среды разработки: преимущества и особенности.

Linux для серверов

  1. Создание и настройка виртуальной машины с Ubuntu 18.04 LTS.
  2. Настройка сети и проброс портов.
  3. Настройка переменных среды.
  4. Настройка SSH, SCP/SFTP.
  5. Установка и настройки веб-сервера NGINX.
  6. Установка и настройка виртуального окружения Python 3.8, uWSGI.
  7. Установка PHP + PHP-FPM.
  8. Создание и настройка VPS (DigitalOcean, Linode, etc.).
  9. Домены (подключение, записи: A, AAAA, CNAME, MX, TXT).
  10. Создание и использование SSL сертификатов (CertBot от Let's Encrypt).
  11. Автообновление сертификатов.
  12. Управление процессами (supervisor).

Попробовать свои силы в освоении программирования вы можете записавшись на открытое занятие.

Продолжением Boot Camp является следующий этап — Junior Developer.