Основы и методология программирования 2016/2017 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Краткое содержание прочитанных лекций)
(Домашняя работа)
Строка 73: Строка 73:
  
 
'''Контест 2''' (Вектор, индексация строк, функции): https://official.contest.yandex.ru/contest/3202 (дедлайн 17.11.2016 9:00)
 
'''Контест 2''' (Вектор, индексация строк, функции): https://official.contest.yandex.ru/contest/3202 (дедлайн 17.11.2016 9:00)
 +
 +
'''Контест 3.1''' (Сортировка структур, контейнеры, рекурсия): https://official.contest.yandex.ru/contest/3434 (дедлайн 24.11.2016 9:00)
 +
 +
'''Контест 3.2''' (Рекурсия без циклов): https://official.contest.yandex.ru/contest/3435 (дедлайн 24.11.2016 9:00)
  
 
== Контрольные работы ==
 
== Контрольные работы ==

Версия 22:06, 15 ноября 2016

Материалы первого модуля (программирование на Python'е)

Второй модуль (программирование на C++)

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

Лекции: понедельник (еженедельно), 1-я пара (10:30 - 11:50), ауд. 622;
четверг (10 и 24 ноября, 8 декабря), 1-я пара (9:00-10:30), ауд. 622.


Программа второго модуля

  1. Встроенные типы данных, std::string. Потоковый ввод-вывод. Условный оператор, циклы, switch.
  2. Шаблон std::vector. Структуры как POD-типы.
  3. Функции. Передача параметров по значению и по ссылке. Константность. Шаблоны функций.
  4. Контейнеры map/set, unordered_map/unordered_set. Range-based for.
  5. Алгоритмы стандартной библиотеки. Итераторы. Лямбда-функции.
  6. Битовые операции. Выражения. Приоритет операторов.
  7. Временные объекты. Время жизни объекта. Классы. Конструкторы, деструктор. Перегрузка операторов.
  8. Стек и динамическая память. Умные указатели: std::unique_ptr/std::shared_ptr.
  9. Исключения. Move-семантика.


Краткое содержание прочитанных лекций

31.10.2016. C++: ввод и вывод, условный оператор, циклы, оператор switch. [Код, написанный на лекции.]

07.11.2016. Векторы и строки. Структуры. [Код, написанный на лекции.]

10.11.2016. Константность. Ссылки. Функции. [Код, написанный на лекции.]

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

Рекомендуется работать в Linux, использовать текстовый редактор Vim и компилятор clang 3.8.

На занятия можно приносить свой ноутбук.


Преподаватели и ассистенты

Подгруппа Преподаватель Учебные ассистенты Семинары Консультации
162-1 Алексей Зобнин Николай Вельдяйкин Пн, 9:00, 501; Чт, 9:00*, 301; Чт, 10:30, 412
162-2 Василий Жовнер Николай Вельдяйкин Пн, 9:00, 513; Чт, 9:00*, 10:30, 327
164-1 Федор Строк Никита Попов Вт, 15:10, 420; Чт, 9:00*, 10:30, 501
164-2 Илья Макаров Никита Попов Вт, 13:40, 420; Чт, 10:30*, 12:10, 416
165-1 Евгений Салагаев Валерия Бубнова Чт, 9:00*, 10:30, 503; Пт, 9:00, 412
165-2 Иван Фефер Валерия Бубнова Пн, 9:00, 503; Чт, 9:00*, 10:30, 505
166-1 Андрей Кондратьев Петр Жижин Пн, 9:00, 605; Чт, 9:00*, 10:30, 513
166-2 Михаил Густокашин Петр Жижин Пн, 13:40, 301; Чт, 10:30*, 12:10, 301 Чт. 13:40-16:40, 501
167-1 Алексей Умнов Никита Александров Ср, 12:10, 513; Чт, 10:30*, 501; Пт, 15:10, 505 см. страницу семинаров
167-2 Дмитрий Вельтищев Никита Александров Пн, 9:00, 327; Чт, 9:00*, 10:30, 605
168-1 Михаил Дектярёв Александра Рябинина Пн, 9:00, 505; Чт, 9:00*, 411; Чт, 10:30, 432
168-2 Андрей Кашин Александра Рябинина Ср, 9:00, 10:30, 501; Чт, 9:00*, 416

Домашняя работа

Новая домашняя работа выкладывается еженедельно по средам в 9:00. Максимальная оценка за работу 1200 баллов (соответствует оценке 12). Дедлайн на выполнение домашней работы - 1 неделя. Еще в течение одной недели можно сдавать задачи и они будут получать половину баллов.

За неудачную посылку по задаче предусмотрен штраф в 1 балл, однако, если неудачных посылок очень много, но задача сдана, то она будет оценена минимум в 80% баллов.

Контест 1 (Числа, if, циклы, строки): https://official.contest.yandex.ru/contest/3156 (дедлайн 10.11.2016 9:00)

Контест 2 (Вектор, индексация строк, функции): https://official.contest.yandex.ru/contest/3202 (дедлайн 17.11.2016 9:00)

Контест 3.1 (Сортировка структур, контейнеры, рекурсия): https://official.contest.yandex.ru/contest/3434 (дедлайн 24.11.2016 9:00)

Контест 3.2 (Рекурсия без циклов): https://official.contest.yandex.ru/contest/3435 (дедлайн 24.11.2016 9:00)

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

Будут проводиться на семинарах по четвергам каждую вторую неделю (начиная с 17 ноября).


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

Накопленная оценка за II-III модули = 0,4 * (Средняя оценка за домашние работы) + 0,6 * (Средняя оценка за контрольные работы)


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

Мы используем 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

Вот скрипт, в котором уже включены эти флаги (и который можно запускать без дополнительных параметров): https://yadi.sk/d/vRnvWsAlxzyaG

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

Bandit - игра для освоения консольных команд Linux

Practical Vim - хороший учебник по Vim