Основы и методология программирования на ПМИ 2020/2021 (основной поток) 3 модуль — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Строка 23: Строка 23:
 
10. Сборка сложных проектов (заголовочные файлы, единицы трансляции, компоновщик, CMake).
 
10. Сборка сложных проектов (заголовочные файлы, единицы трансляции, компоновщик, CMake).
 
11. Реализация стандартных контейнеров.
 
11. Реализация стандартных контейнеров.
 
  
 
== Регулярные домашние контесты ==
 
== Регулярные домашние контесты ==
Строка 37: Строка 36:
 
В конце курса пройдёт теоретический экзамен в виде теста.
 
В конце курса пройдёт теоретический экзамен в виде теста.
  
 +
== Требования к оформлению кода программ ==
 +
Вот наш [https://gist.github.com/alzobnin/c09430499ef0d881d3d59534984750f4#file-cpp_style_guide-md style guide].
 +
Мы используем [https://github.com/cpplint/cpplint cpplint] для проверки некоторых требований. В контестах мы запускаем [https://github.com/alzobnin/hse-cs-prog/blob/master/cpplint.py вот такой модифицированный скрипт], не требующий указания опций, и принимающий в качестве параметра просто проверяемый файл.
  
 
== Формула оценок ==
 
== Формула оценок ==
 
 
У нас будет 8 регулярных домашних контестов, 4 контрольных и экзамен.
 
У нас будет 8 регулярных домашних контестов, 4 контрольных и экзамен.
  
Строка 52: Строка 53:
  
 
Все округления - математические.
 
Все округления - математические.
 
  
 
== Используемое ПО ==
 
== Используемое ПО ==
 
На лекциях мы будем работать в Linux, использовать текстовый редактор [https://en.wikipedia.org/wiki/Vim_%28text_editor%29 Vim] и компиляторы [https://gcc.gnu.org/ g++] и [http://clang.llvm.org/ clang]. В контесте мы используем компилятор g++-8. Вы можете использовать любую среду разработки и любой компилятор.
 
На лекциях мы будем работать в Linux, использовать текстовый редактор [https://en.wikipedia.org/wiki/Vim_%28text_editor%29 Vim] и компиляторы [https://gcc.gnu.org/ g++] и [http://clang.llvm.org/ clang]. В контесте мы используем компилятор g++-8. Вы можете использовать любую среду разработки и любой компилятор.
 
 
== Требования к оформлению кода программ ==
 
Вот наш [https://gist.github.com/alzobnin/c09430499ef0d881d3d59534984750f4#file-cpp_style_guide-md style guide].
 
Мы используем [https://github.com/cpplint/cpplint cpplint] для проверки некоторых требований. В контестах мы запускаем [https://github.com/alzobnin/hse-cs-prog/blob/master/cpplint.py вот такой модифицированный скрипт], не требующий указания опций, и принимающий в качестве параметра просто проверяемый файл.
 
  
 
==Курсы на Курсере от разработчиков Яндекса==
 
==Курсы на Курсере от разработчиков Яндекса==

Версия 21:34, 11 января 2021

Основы и методология программирования (C++), основной поток, 2020/2021, III модуль

Страница I модуля.

Лектор: А. И. Зобнин

Лекции: вторник и четверг, 11:10. Лекции проходят онлайн.

Телеграм-канал для объявлений: https://t.me/joinchat/WCcO-u6O5uBli0ON

Телеграм-группа для вопросов и обсуждений: https://t.me/joinchat/GGD7Q_iiHS9LQlfg

Краткая программа курса

1. Типы данных и переменные. Операторы. Контейнеры string/vector. Функции. 2. Структуры. Классы std::pair и std::tuple. Ссылки. Указатели. Константность. Передача параметров в функции. 3. Контейнеры стандартной библиотеки (array, deque, list, map, set, unordered_map, unordered_set). 4. Шаблонные функции. Алгоритмы стандартной библиотеки. 5. Жизненный цикл объектов. Static/dynamic storage duration. Move-семантика. 6. Классы. Шаблоны классов. Обработка исключений. 7. Наследование и полиморфизм. Фабрики объектов. Класс std::variant. 8. Идиома RAII. Умные указатели. 9. Работа с байтами и памятью. 10. Сборка сложных проектов (заголовочные файлы, единицы трансляции, компоновщик, CMake). 11. Реализация стандартных контейнеров.

Регулярные домашние контесты

Мы напишем 8 домашних контестов. Вот правила начисления баллов и проверки контестов.

1. Контест №1

Контрольные работы

Мы напишем 4 контрольных контеста с асинхронным прокторингом.
Даты будут объявлены позже. Контрольные контесты будут проходить вместо лекции с 11:10 до 12:30.

Экзамен

В конце курса пройдёт теоретический экзамен в виде теста.

Требования к оформлению кода программ

Вот наш style guide. Мы используем cpplint для проверки некоторых требований. В контестах мы запускаем вот такой модифицированный скрипт, не требующий указания опций, и принимающий в качестве параметра просто проверяемый файл.

Формула оценок

У нас будет 8 регулярных домашних контестов, 4 контрольных и экзамен.

При этом контрольная будет весить как две домашки, а экзамен - как четыре домашки.

Весь курс будет весить как 20 домашек. То есть, каждая домашка будет весить 0.05, контрольная - 0.1, а экзамен - 0.2.

Если сложить вместе все домашки и контрольные и считать, что оценка за элементы контроля выставляется по десятибалльной шкале, то будет такая формула оценки за III модуль: Round(0.4 * домашки + 0.4 * контрольные + 0.2 * экзамен).

Так как курс "продолжается" с I модуля, то итоговая оценка за весь курс будет равна Round(1/3 * первый модуль + 2/3 * третий модуль).

Все округления - математические.

Используемое ПО

На лекциях мы будем работать в Linux, использовать текстовый редактор Vim и компиляторы g++ и clang. В контесте мы используем компилятор g++-8. Вы можете использовать любую среду разработки и любой компилятор.

Курсы на Курсере от разработчиков Яндекса

Основы разработки на C++: белый пояс

Основы разработки на C++: жёлтый пояс

Основы разработки на C++: красный пояс

Основы разработки на C++: коричневый пояс

Основы разработки на C++: чёрный пояс

Видеолекции курса можно посмотреть бесплатно.

Полезные ссылки

cppreference.com - полезный сайт-справочник по C++

С++ tutorial - классический tutorial по C++ (немного устарел)

C++ Core Guidelines - рекомендации по C++ от Бьярна Страуструпа и Герба Саттера

- некоторые видеолекции по C++ прошлого учебного года