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

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Краткое содержание прочитанных лекций)
 
(не показано 27 промежуточных версии 3 участников)
Строка 1: Строка 1:
 +
== Экзамен ==
 +
 +
Экзамен пройдёт 22 октября с 12:00.<br/>
 +
'''Распределение по аудиториям:'''<br/>
 +
161-1 - ауд. 301 <br/>
 +
161-2 - ауд. 420 <br/>
 +
163-1 - ауд. 503 <br/>
 +
163-2 - ауд. 505 <br/>
 +
 +
Сначала на экзамене будет предложен контест (длительностью 80 минут), в котором будет 4 задачи.
 +
Затем предполагается устное общение студента с преподавателем по мотивам написанного кода.
 +
 +
На экзамене можно пользоваться сайтом cppreference.com, выложенными конспектами лекций, своими бумажными материалами, любым текстовым редактором или средой разработки, а также своим компьютером. Запрещается пользоваться любыми способами связи, поисковыми системами, сайтами типа stackoverflow и т. д.
 +
 +
 
== Основы и методология программирования, пилотный поток, 2016-2017, 1 модуль ==
 
== Основы и методология программирования, пилотный поток, 2016-2017, 1 модуль ==
  
Строка 5: Строка 20:
 
'''Лекции:''' понедельник (еженедельно), 1-я пара (9:00-10:20), ауд. 205;<br />
 
'''Лекции:''' понедельник (еженедельно), 1-я пара (9:00-10:20), ауд. 205;<br />
 
среда (7 и 21 сентября, 5 и 19 октября), 2-я пара (10:30-11:50), ауд. 205.
 
среда (7 и 21 сентября, 5 и 19 октября), 2-я пара (10:30-11:50), ауд. 205.
 +
 +
'''Консультации лектора''': среда, 3-я пара (12:10 - 13:30), ауд. 618.
 +
 +
== Переписывание контрольных работ ==
 +
Переписывание состоится в субботу 15 октября в 10:30 в ауд. 503.
 +
Переписать работу можно если вы не писали работу, или не решили ни одной задачи, или вас допустил на переписывание преподаватель.
 +
  
 
== Краткое содержание прочитанных лекций ==
 
== Краткое содержание прочитанных лекций ==
'''05.09.2016.''' C++: ввод-вывод, условный оператор, циклы, оператор switch. [[https://github.com/alzobnin/hse-cs-prog/tree/master/2016-1/01.cpp Код, написанный на лекции].]
+
'''05.09.2016.''' C++: ввод и вывод, условный оператор, циклы, оператор switch. [[https://github.com/alzobnin/hse-cs-prog/tree/master/2016-1/01.cpp Код, написанный на лекции].]
  
 +
'''07.09.2016.''' Шаблон std::vector. [[https://github.com/alzobnin/hse-cs-prog/blob/master/2016-1/02.cpp Код, написанный на лекции].]
 +
 +
'''12.09.2016.''' Выражения. Приоритет операторов. Функции. Передача параметров в функции. [[https://github.com/alzobnin/hse-cs-prog/blob/master/2016-1/03.cpp Код, написанный на лекции].]
 +
 +
'''19.09.2016.''' Структуры. Ассоциативные массивы. [[https://github.com/alzobnin/hse-cs-prog/blob/master/2016-1/04.cpp Код, написанный на лекции].]
 +
 +
'''21.09.2016.''' Алгоритмы стандартной библиотеки. [[https://github.com/alzobnin/hse-cs-prog/blob/master/2016-1/05.cpp Код, написанный на лекции].]
 +
 +
'''28.09.2016.''' Алгоритмы стандартной библиотеки (продолжение). [[https://github.com/alzobnin/hse-cs-prog/blob/master/2016-1/06.cpp Код, написанный на лекции].]
 +
 +
'''03.10.2016.''' Классы. [[https://github.com/alzobnin/hse-cs-prog/blob/master/2016-1/07.cpp Код, написанный на лекции].]
 +
 +
'''05.10.2016.''' Конструкторы, деструкторы. Итераторы. [[https://github.com/alzobnin/hse-cs-prog/blob/master/2016-1/08.cpp Код, написанный на лекции].]
 +
 +
'''10.10.2016.''' Наследование. Виртуальные функции. [[https://github.com/alzobnin/hse-cs-prog/blob/master/2016-1/09.cpp Код, написанный на лекции].]
 +
 +
'''17.10.2016.''' Идиома RAII. [[https://github.com/alzobnin/hse-cs-prog/blob/master/2016-1/10.cpp Код, написанный на лекции].]
 +
 +
'''19.10.2016.''' Умные указатели. Move-семантика.
  
 
== Используемое ПО ==
 
== Используемое ПО ==
Мы будем работать в Linux, использовать текстовый редактор [https://en.wikipedia.org/wiki/Vim_%28text_editor%29 vim] и компилятор [https://en.wikipedia.org/wiki/Clang clang 3.8].
+
Мы будем работать в Linux, использовать текстовый редактор [https://en.wikipedia.org/wiki/Vim_%28text_editor%29 Vim] и компилятор [https://en.wikipedia.org/wiki/Clang clang 3.8].
  
 
На занятия можно приносить свой ноутбук.
 
На занятия можно приносить свой ноутбук.
  
==Преподаватели и ассистенты==
+
== Преподаватели и ассистенты ==
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Подгруппа !! Преподаватель !! Учебные ассистенты !! Семинары !! Страница подгруппы
 
! Подгруппа !! Преподаватель !! Учебные ассистенты !! Семинары !! Страница подгруппы
 
|-
 
|-
| 161-1 || Константин Бажанов || || вторник, 2-я пара, ауд. 513; среда, 1-я пара, ауд. 327 ||
+
| 161-1 || Константин Бажанов || Александр Тиунов || вторник, 2-я пара, ауд. 513; среда, 1-я пара, ауд. 327 ||
 
|-
 
|-
| 161-2 || Павел Мельничук || || понедельник, 2-я пара, ауд. 513; среда, 1-я пара, ауд. 513 || [[Основы и методология программирования 2016/2017 пилотный поток/161-2|161-2]]
+
| 161-2 || Павел Мельничук || Александр Тиунов || понедельник, 2-я пара, ауд. 513; среда, 1-я пара, ауд. 513 || [[Основы и методология программирования 2016/2017 пилотный поток/161-2|161-2]]
 
|-
 
|-
| 163-1 || Алексей Зобнин || || понедельник, 2-я пара, ауд. 501; среда, 1-я пара, ауд. 503 ||
+
| 163-1 || Алексей Зобнин || Александр Зойкин || понедельник, 2-я пара, ауд. 501; среда, 1-я пара, ауд. 503 ||
 
|-
 
|-
| 163-2 || Алексей Панов || || понедельник, 2-я пара, ауд. 327; среда, 1-я пара, ауд. 505 ||
+
| 163-2 || Алексей Панов || Александр Зойкин || понедельник, 2-я пара, ауд. 327; среда, 1-я пара, ауд. 505 ||
 
|-
 
|-
 
|}
 
|}
 +
 +
== Домашняя работа ==
 +
[https://official.contest.yandex.ru/contest/2843 Ссылка на контест] (начало - 12:00 3 октября, конец - 23:59 10 октября).
 +
 +
'''Как узнать свой вариант:'''
 +
Если вы из подгруппы 161-2 - обратитесь к своему преподавателю.
 +
 +
Для всех остальных: примените вот такую функцию к своему логину в Яндекс.Контесте:
 +
    std::vector<size_t> get_variants(const std::string& login, size_t problems_count = 3) {
 +
        size_t hash = 0;
 +
        for (char c : login) {
 +
            hash += static_cast<unsigned int>(c);
 +
            hash %= (1 << problems_count);
 +
        }
 +
        std::vector<size_t> variants(problems_count);
 +
        for (size_t i = 0; i != problems_count; ++i)
 +
            variants[i] = ((hash >> i) & 1) + 1;
 +
        return variants;
 +
    }
 +
 +
 +
'''Как сдавать задачи'''
 +
 +
Во-первых, Вам надо сдать свою задачу в Яндекс.Контест. Кроме того, Вам требуется отправить файл с кодом задачи в систему [http://anytask.org/ Anytask]. Зарегистрируйтесь в этой системе, указав правильные фамилию и имя. Введите при регистрации инвайт, который можно получить у своего преподавателя. Нажмите на поле на пересечении строки с вашей фамилией и столбца с задачей в таблице. Отправьте в систему файл с расширениями *.h или *.cpp. После этого файл загрузится на review. Вход в систему Review board осуществляется по тому же логину и паролю, что и в Anytask.
 +
Все комментарии по задачам будут появляться в Anytask'е по мере проверки.
 +
 +
== Формулы оценок ==
 +
'''Итоговая оценка за I модуль''' = 0,12 * Аудиторная_работа + 0,18 * Домашняя_работа + 0,3 * Контрольные + 0,4 * Экзамен
 +
 +
 +
== Требования к оформлению кода программ ==
 +
 +
Мы используем cpplint для проверки стиля. Вот [http://wiki.cs.hse.ru/%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BD%D1%8F%D1%82%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%BA%D1%83%D1%80%D1%81%D1%83_%D0%9E%D0%B8%D0%9C%D0%9F/C%2B%2B_check список требований].
 +
 +
Флаги для [https://github.com/google/styleguide/blob/gh-pages/cpplint/cpplint.py 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
 +
 +
== Полезные ссылки ==
 +
[http://overthewire.org/wargames/bandit/ Bandit] - игра для освоения консольных команд Linux
 +
 +
[http://people.dunnewind.net/practical_vim.pdf Practical Vim] - хороший учебник по Vim
 +
 +
[https://raw.githubusercontent.com/alzobnin/hse-cs-prog/master/2016-1/.vimrc .vimrc] - файл с найстроками Vim (от Алексея Зобнина)

Текущая версия на 01:35, 22 октября 2016

Экзамен

Экзамен пройдёт 22 октября с 12:00.
Распределение по аудиториям:
161-1 - ауд. 301
161-2 - ауд. 420
163-1 - ауд. 503
163-2 - ауд. 505

Сначала на экзамене будет предложен контест (длительностью 80 минут), в котором будет 4 задачи. Затем предполагается устное общение студента с преподавателем по мотивам написанного кода.

На экзамене можно пользоваться сайтом cppreference.com, выложенными конспектами лекций, своими бумажными материалами, любым текстовым редактором или средой разработки, а также своим компьютером. Запрещается пользоваться любыми способами связи, поисковыми системами, сайтами типа stackoverflow и т. д.


Основы и методология программирования, пилотный поток, 2016-2017, 1 модуль

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

Лекции: понедельник (еженедельно), 1-я пара (9:00-10:20), ауд. 205;
среда (7 и 21 сентября, 5 и 19 октября), 2-я пара (10:30-11:50), ауд. 205.

Консультации лектора: среда, 3-я пара (12:10 - 13:30), ауд. 618.

Переписывание контрольных работ

Переписывание состоится в субботу 15 октября в 10:30 в ауд. 503. Переписать работу можно если вы не писали работу, или не решили ни одной задачи, или вас допустил на переписывание преподаватель.


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

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

07.09.2016. Шаблон std::vector. [Код, написанный на лекции.]

12.09.2016. Выражения. Приоритет операторов. Функции. Передача параметров в функции. [Код, написанный на лекции.]

19.09.2016. Структуры. Ассоциативные массивы. [Код, написанный на лекции.]

21.09.2016. Алгоритмы стандартной библиотеки. [Код, написанный на лекции.]

28.09.2016. Алгоритмы стандартной библиотеки (продолжение). [Код, написанный на лекции.]

03.10.2016. Классы. [Код, написанный на лекции.]

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

10.10.2016. Наследование. Виртуальные функции. [Код, написанный на лекции.]

17.10.2016. Идиома RAII. [Код, написанный на лекции.]

19.10.2016. Умные указатели. Move-семантика.

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

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

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

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

Подгруппа Преподаватель Учебные ассистенты Семинары Страница подгруппы
161-1 Константин Бажанов Александр Тиунов вторник, 2-я пара, ауд. 513; среда, 1-я пара, ауд. 327
161-2 Павел Мельничук Александр Тиунов понедельник, 2-я пара, ауд. 513; среда, 1-я пара, ауд. 513 161-2
163-1 Алексей Зобнин Александр Зойкин понедельник, 2-я пара, ауд. 501; среда, 1-я пара, ауд. 503
163-2 Алексей Панов Александр Зойкин понедельник, 2-я пара, ауд. 327; среда, 1-я пара, ауд. 505

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

Ссылка на контест (начало - 12:00 3 октября, конец - 23:59 10 октября).

Как узнать свой вариант: Если вы из подгруппы 161-2 - обратитесь к своему преподавателю.

Для всех остальных: примените вот такую функцию к своему логину в Яндекс.Контесте:

   std::vector<size_t> get_variants(const std::string& login, size_t problems_count = 3) {
       size_t hash = 0;
       for (char c : login) {
           hash += static_cast<unsigned int>(c);
           hash %= (1 << problems_count);
       }
       std::vector<size_t> variants(problems_count);
       for (size_t i = 0; i != problems_count; ++i)
           variants[i] = ((hash >> i) & 1) + 1;
       return variants;
   }


Как сдавать задачи

Во-первых, Вам надо сдать свою задачу в Яндекс.Контест. Кроме того, Вам требуется отправить файл с кодом задачи в систему Anytask. Зарегистрируйтесь в этой системе, указав правильные фамилию и имя. Введите при регистрации инвайт, который можно получить у своего преподавателя. Нажмите на поле на пересечении строки с вашей фамилией и столбца с задачей в таблице. Отправьте в систему файл с расширениями *.h или *.cpp. После этого файл загрузится на review. Вход в систему Review board осуществляется по тому же логину и паролю, что и в Anytask. Все комментарии по задачам будут появляться в Anytask'е по мере проверки.

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

Итоговая оценка за I модуль = 0,12 * Аудиторная_работа + 0,18 * Домашняя_работа + 0,3 * Контрольные + 0,4 * Экзамен


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

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

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

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

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

.vimrc - файл с найстроками Vim (от Алексея Зобнина)