Подготовительная программа по программированию на С/C++

Цель курса — подготовить студентов к поступлению и обучению в Технопарке; дать слушателям базовые навыки в области применения языков С и С++.

1. Работа с памятью на языке С.
2. Реализация средств инкапсуляции, полиморфизма и наследования в программах на языке С++.
3. Обработка исключительных ситуаций.
4. Базовые навыки обобщённого программирования.
5. Базовые навыки использования стандартной библиотеки С++.
6. Навыки командной работы, планирования и готовый проект в портфолио.

Подробнее

Курс посвящен изучению и реализации основных принципов объектно-ориентированного и обобщенного программирования на языке С++. В ходе семестра студенты делятся на команды и под руководством менторов разрабатывают полноценный проект.

10  лучших студентов, получивших максимальные баллы по итогам курса, в рамках отбора на основную программу сдают только кейс (онлайн-тестирование и техническое собеседование засчитываются автоматически).

На протяжении всего семестра за определенные виды работ, выполняемые студентами, выставляются баллы. Итоговый рейтинг по дисциплине представляет собой сумму баллов, полученных студентом за прохождение контрольных точек – домашних заданий, синкапов, защиты итогового проекта.
Важное условие — своевременное выполнение работ.

Подробнее

Преподаватели

Павел Бережной Павел Бережной

Программист С, разработчик бэкенда Почты.

Сергей Титаевский Сергей Титаевский

Выпускник МГТУ им. Н.Э.Баумана

Программа

занятие Часы в ауд. + сам. работа

Лекция №1: Вводная лекция. Знакомство и изучение Git   + ДЗ №1

Знакомство:
* Знакомство с курсом и его структурой
* Знакомство друг с другом

Git:
* Что это?
* Зачем это в разработке?
* Как устроен?
* Принцип работы
* Обзор команд
Домашнее задание №1: ДЗ №1. Работа с GitLab, первая программа на языке С
В процессе выполнения домашнего задания необходимо научиться взаимодействовать с GitLab, понять принципы работы с GIT и увидеть работу GitLab-pipeline's.
Домашнее задание состоит из четырех частей:
* Удовлетворение статических анализаторов кода с целью обучения написанию чистого и корректного кода, а так же демонстрации возможностей поиска ошибок в коде в процессе анализа.
* Исправление ошибок в существующей функции
* Написание собственной функции с имеющимся прототипом
* Написание отдельного модуля с новой функцией, удовлетворяющей ТЗ
4 часа + 2 часа СР

Семинар №1: Практикум №1. Работа с GIT и GitLab.  

В процессе занятия будет рассмотрено как взаимодействовать с системой GitLab:
* Форк репозитория
* Заведение ключей доступа
* Получение доступа к репозиторию через GIT
* Синхронизация upstream'а с форком

Работа в группе:
* "Плохое" использование гита
* Git-flow - best-practice
4 часа + 3 часа СР

Лекция №2: Работа с памятью; стандартная библиотека   + ДЗ №2

Будут рассмотрены следующие темы:
  • Понятие указателя
  • Работа с указателями
  • Массивы
  • Разбор стандартной библиотеки ввода-вывода
  • Разбор стандартной библиотеки для работы со строками
Домашнее задание №2: ДЗ №2 Работа с многомерными массивами
* Выбрать один из вариантов представления матриц в памяти.
* Реализовать интерфейс создания и уничтожения объектов представления матриц.
* Реализовать базовые функции для работы с матрицой.
* Реализовать базовые математические операции над матрицами.
4 часа + 2 часа СР

Лекция №3: Реализации контейнеров в языке С   + ДЗ №3

Будут рассмотрены реализации следующих контейнеров:
  • Вектор
  • Список
    • Односвязный
    • Двусвязный
    • Кольцевой
  • Стек
  • Очередь
  • Хэш-таблица
  • Дерево
Домашнее задание №3: ДЗ №3 Работа со строками
Реализация эффективного парсера писем на языке С.
4 часа + 2 часа СР

Семинар №2: Практикум №2. Решение задач на тему «Работа с файлами и памятью».  

Рассмтриваются методы для работы с форкнутым репозиторием.

Рассматриватся методы для работы с файлами. Студенты учатся работать с динамической памятью, выделять и освобождать ее. Отыскиваются и ликвидируются утечки памяти.
4 часа + 2 часа СР

Лекция №4: Профессиональная разработка на языке С  

На лекции будут рассмотрены следующие темы:
  • Реализация библиотек функций
  • Расширения компилятора GCC
  • IPC
  • Разработка параллельных приложений
4 часа + 3 часа СР

Лекция №5: Инкапсуляция  

Состав класса и представление объекта класса в памяти. Места и порядок вызовов специальных методов класса. Дружественность: когда хорошо - когда плохо. Операторы и их смысл. Перегрузка операторов.
4 часа + 2 часа СР

Семинар №3: Практикум №3. Решение задач на тему «Реализация структур данных на языке С».  

Разбор материала, который был дан на лекции:
* Работа со строками
* Демонстрация работы функции mmap.
* Реализация контейнера на языке С
4 часа + 2 часа СР

Лекция №6: Наследование и полиморфизм   + ДЗ №4

Наследование как способ добавления новых членов класса. Наследование как способ изменения поведения класса. Виртуальные функции. Наследование и агрегирование. Класс как область видимости. Раннее и позднее связывание. Перегрузка и перекрытие членов класса. Перегрузка функций. Перегрузка операций.
Домашнее задание №4: ДЗ5 Реализация обертки sqlite3
Реализация обертки sqlite3
4 часа + 2 часа СР

Лекция №7: Шаблоны и исключения  

Необходимость в обобщённом программировании. Шаблоны классов и методов. Параметры шаблонов. Специализация, конкретизация и перегрузка шаблонов. Исключения: назначение, использование и "плохие" советы
4 часа + 2 часа СР

Семинар №4: Практикум №4. Решение задач на тему «Объектная модель языка С++».  

Задача слушателя – предложить эффективное решение задач в виде программы (исходного кода) на языке С++. В решении максимально актуализируются знания, полученные на лекции №4.
4 часа + 3 часа СР

Лекция №8: Best practice   + ДЗ №5

Обзор промышленных библиотек. Паттерны и анти-паттерны программирования и проектирования.
Домашнее задание №5: ДЗ6 Реализация генератора XML
Реализация генератора XML
4 часа + 2 часа СР

Смешанное занятие №1: Soft-skills  

На занятии затронем темы публичных выступлений, командной разработки и планирования.
4 часа + 2 часа СР

Хакатон №1: Хакатон  

Хакатон
12 часа

Контрольное занятие №1: Проект. Презентация идеи проекта  

Публичная презентация идеи проекта.
Формальное описание фич и сроков их выполнения и согласование их с преподавателем.
4 часа + 2 часа СР

Контрольное занятие №2: Проект. Milestone 1  

Оценка степени выполнения проекта и формальное выполнение фич.
4 часа + 2 часа СР

Контрольное занятие №3: Проект. Milestone 2  

Оценка степени выполнения проекта и формальное выполнение фич.
4 часа + 2 часа СР

Контрольное занятие №4: Проект. Milestone 3  

Оценка степени выполнения проекта и формальное выполнение фич.
4 часа + 1 часа СР

Контрольное занятие №5: Проект. Milestone 4  

Оценка степени выполнения проекта и формальное выполнение фич
4 часа + 4 часа СР

Экзамен №1: Экзамен  

Публичная защита в офисе Mail Ru
4 часа + 4 часа СР