Основы и методология программирования 2016/2017 — различия между версиями
(→Домашняя работа) |
(→Краткое содержание прочитанных лекций) |
||
Строка 26: | Строка 26: | ||
'''07.11.2016.''' Векторы и строки. Структуры. [[https://github.com/alzobnin/hse-cs-prog/tree/master/2016-2/02.cpp Код, написанный на лекции].] | '''07.11.2016.''' Векторы и строки. Структуры. [[https://github.com/alzobnin/hse-cs-prog/tree/master/2016-2/02.cpp Код, написанный на лекции].] | ||
+ | '''10.11.2016.''' Константность. Ссылки. Функции. [[https://github.com/alzobnin/hse-cs-prog/tree/master/2016-2/03.cpp Код, написанный на лекции].] | ||
== Используемое ПО == | == Используемое ПО == |
Версия 19:11, 11 ноября 2016
Материалы первого модуля (программирование на Python'е)
Содержание
Второй модуль (программирование на C++)
Лектор: А. И. Зобнин
Лекции: понедельник (еженедельно), 1-я пара (10:30 - 11:50), ауд. 622;
четверг (10 и 24 ноября, 8 декабря), 1-я пара (9:00-10:30), ауд. 622.
Программа второго модуля
- Встроенные типы данных, std::string. Потоковый ввод-вывод. Условный оператор, циклы, switch.
- Шаблон std::vector. Структуры как POD-типы.
- Функции. Передача параметров по значению и по ссылке. Константность. Шаблоны функций.
- Контейнеры map/set, unordered_map/unordered_set. Range-based for.
- Алгоритмы стандартной библиотеки. Итераторы. Лямбда-функции.
- Битовые операции. Выражения. Приоритет операторов.
- Временные объекты. Время жизни объекта. Классы. Конструкторы, деструктор. Перегрузка операторов.
- Стек и динамическая память. Умные указатели: std::unique_ptr/std::shared_ptr.
- Исключения. 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)
Контрольные работы
Будут проводиться на семинарах по четвергам каждую вторую неделю (начиная с 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