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

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Новая страница: «== Основы и методология программирования, пилотный поток, 2020/2021, I модуль == '''Лектор:''' [https…»)
 
Строка 8: Строка 8:
  
 
== Краткое содержание лекций ==
 
== Краткое содержание лекций ==
сб 05.09. Типы данных и переменные. Операторы. Контейнеры string/vector. Функции. <br/>
+
05.09. Типы данных и переменные. Операторы. Контейнеры string/vector. Функции. <br/>
вт 08.09. Структуры. Ссылки. Указатели. Константность. Передача параметров. <br/>
+
08.09. Структуры. Ссылки. Указатели. Константность. Передача параметров. <br/>
сб 12.09. Контейнеры стандартной библиотеки. <br/>
+
12.09. Контейнеры стандартной библиотеки. <br/>
вт 15.09. Шаблонные функции. Алгоритмы стандартной библиотеки. <br/>
+
15.09. Шаблонные функции. Алгоритмы стандартной библиотеки. <br/>
сб 19.09 5. КР 1 <br/>
+
19.09. КР 1 <br/>
вт 22.09. Жизненный цикл объектов. Стек и динамическая память. Move-семантика. <br/>
+
22.09. Жизненный цикл объектов. Стек и динамическая память. Move-семантика. <br/>
сб 26.09. Классы. Шаблоны классов. Обработка исключений. <br/>
+
26.09. Классы. Шаблоны классов. Обработка исключений. <br/>
вт 29.09. Наследование и полиморфизм. Фабрики объектов. <br/>
+
29.09. Наследование и полиморфизм. Фабрики объектов. <br/>
сб 03.10 9. КР 2 <br/>
+
03.10. КР 2 <br/>
вт 06.10. Идиома RAII. Умные указатели. <br/>
+
06.10. Идиома RAII. Умные указатели. <br/>
сб 10.10. Работа с байтами и памятью. <br/>
+
10.10. Работа с байтами и памятью. <br/>
вт 13.10. Реализация стандартных контейнеров. <br/>
+
13.10. Реализация стандартных контейнеров. <br/>
сб 17.10. КР 3 <br/>
+
17.10. КР 3 <br/>
 +
 
  
 
== Регулярные домашние контесты ==
 
== Регулярные домашние контесты ==
Строка 28: Строка 29:
 
== Контрольные работы ==
 
== Контрольные работы ==
 
Мы напишем 3 контрольных контеста.<br/>
 
Мы напишем 3 контрольных контеста.<br/>
сб 19.09. КР 1 <br/>
+
19.09. КР 1 <br/>
сб 03.10. КР 2 <br/>
+
03.10. КР 2 <br/>
сб 17.10. КР 3 <br/>
+
17.10. КР 3 <br/>
 +
 
 +
 
 +
== Экзамен ==
 +
В конце курса пройдёт теоретический экзамен в виде теста.
 +
 
 +
 
 +
== Формула оценок ==
 +
0.15 * (КР1 + КР2 + КР3) + 0.25 * ДЗ + 0.3 * ЭКЗ
  
  
Строка 37: Строка 46:
 
На практические занятия можно приносить свой ноутбук и использовать любую среду разработки.
 
На практические занятия можно приносить свой ноутбук и использовать любую среду разработки.
  
== Формула оценок ==
 
Результат третьего модуля = 0.4 * контрольные + 0.3 * регулярные_контесты + 0.3 * экзамен
 
 
Итог: Округление(1/3 * результат первого модуля + 2/3 * результат третьего модуля)
 
  
 
== Требования к оформлению кода программ ==
 
== Требования к оформлению кода программ ==

Версия 07:21, 5 сентября 2020

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

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

Лекции: вторник и суббота, 9:30. Лекции проходят онлайн.

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

Краткое содержание лекций

05.09. Типы данных и переменные. Операторы. Контейнеры string/vector. Функции.
08.09. Структуры. Ссылки. Указатели. Константность. Передача параметров.
12.09. Контейнеры стандартной библиотеки.
15.09. Шаблонные функции. Алгоритмы стандартной библиотеки.
19.09. КР 1
22.09. Жизненный цикл объектов. Стек и динамическая память. Move-семантика.
26.09. Классы. Шаблоны классов. Обработка исключений.
29.09. Наследование и полиморфизм. Фабрики объектов.
03.10. КР 2
06.10. Идиома RAII. Умные указатели.
10.10. Работа с байтами и памятью.
13.10. Реализация стандартных контейнеров.
17.10. КР 3


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

1. Контест №1


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

Мы напишем 3 контрольных контеста.
19.09. КР 1
03.10. КР 2
17.10. КР 3


Экзамен

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


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

0.15 * (КР1 + КР2 + КР3) + 0.25 * ДЗ + 0.3 * ЭКЗ


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

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


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

Мы используем cpplint для проверки стиля. Вот список требований.

Флаги для cpplint: --filter=-,+build/include,-build/include_order,+build/include_what_you_use,+build/storage_class,+readability/alt_tokens,+readability/braces, +readability/casting,+readability/inheritance,+runtime/casting,-runtime/explicit,+whitespace/blank_line,+whitespace/braces,+whitespace/comma, +whitespace/comments,+whitespace/empty_conditional_body,+whitespace/empty_loop_body,+whitespace/end_of_line, +whitespace/ending_newline,+whitespace/forcolon,+whitespace/indent,+whitespace/line_length,+whitespace/newline, +whitespace/operators,+whitespace/parens,+whitespace/semicolon,+whitespace/tab --linelength=100

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

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

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

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

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

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

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

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

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

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

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

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

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