From 9a6686b2ace1356b3f72548c6239db679552e329 Mon Sep 17 00:00:00 2001 From: gsv Date: Tue, 6 Feb 2024 14:15:37 +0300 Subject: [PATCH 1/4] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20readme.=20=D0=93=D0=BE=D1=82=D0=BE=D0=B2=D0=BB=D1=8E=20?= =?UTF-8?q?=D0=BF=D0=BE=D1=87=D0=B2=D1=83=20=D0=B4=D0=BB=D1=8F=20=D0=B0?= =?UTF-8?q?=D0=B2=D1=82=D0=BE=D0=BC=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D1=8F=D0=B5?= =?UTF-8?q?=D0=BC=D1=8B=D1=85=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 55 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9a7d730e5..a5d1b92fb 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,6 @@ - [Таблица с текущими результатами](https://docs.google.com/spreadsheets/d/1-vx82auNr0PQDQ3SwA7IYewZyOC9iHIaoX1w1qRUZ3I/edit?usp=sharing) - [Список задач](https://github.com/FormalLanguageConstrainedPathQuerying/formal-lang-course/tree/main/tasks) - [Стиль кода как референс](https://www.python.org/dev/peps/pep-0008/) -- [Материалы по курсу](https://github.com/FormalLanguageConstrainedPathQuerying/formal-lang-course/blob/main/docs/lecture_notes/Formal_language_course.pdf) - [О достижимости с ограничениями в терминах формальных языков](https://github.com/FormalLanguageConstrainedPathQuerying/FormalLanguageConstrainedReachability-LectureNotes) - Классика по алгоритмам синтаксического анализа: [Dick Grune, Ceriel J. H. Jacobs, "Parsing Techniques A Practical Guide"](https://link.springer.com/book/10.1007/978-0-387-68954-8#bibliographic-information) - Классика по теории формальных языков: [M. A. Harrison. 1978. "Introduction to Formal Language Theory"](https://dl.acm.org/doi/book/10.5555/578595) @@ -24,6 +23,58 @@ - Сторонние пакеты из `requirements.txt` файла - Английский язык для документации или самодокументирующийся код +## Из чего складывается оценка за курс + +Оценка за курс складывается из баллов, полученных за работу в семестре. Баллы начисляются за следующее. + - За домашние работы (балл за каждую задачу указывается отдельно). При этом у каждой работы есть жёсткий дедлайн и после него балл уменьшается вдвое. + - За летучки (короткие, 5-10 минут, контрольные работы). Летучка оценивается от 1 до 0 баллов с шагом 0.25. Сами по себе баллы за летучки не суммируются, но служат для корректировки баллов за домашние работы. + - За дополнительные задания от преподавателя, такие как оформление материалов по курсу, реализация демонстрационных алгоритмов и т.д. Оценивается на усмотрение преподавателя но не более 30 баллов за всё. + +Итоговая оценка за курс --- это взвешенная сумма баллов за задачи и дополнительные задания, где вес --- баллы за ближайшую справа (в хронологическом порядке) летучку. +Можно думать, что курс разбит на блоки и в каждом блоке есть сколько-то задач и летучка, которая будет весом для этих задач. +Пусть, например, в курсе было два блока по 2 задачи и 2 летучки. +Пусть за первые две задачи получено 4 и 5 баллов, за оставшиеся две 2.5 и 3 балла соответственно. При этом за первую летучку 0.25 балла, за вторую --- 0.75 балла. +Тогда итогова я оценка за курс: +$$ +\underbrace{(4+5)}_{\text{Первые две домашки}}*\underbrace{0.25}_{\text{Летучка 1}} + \underbrace{(2.5+3)}_{\text{Вторые две домашки}}*\underbrace{0.75}_{\text{Летучка 2}} = 6.375. +$$ + +Баллы конвертируются в оценки следующим образом: + +| Балл | ECTS | Классика | +| :---: | :---: | :---: | +|90+ -- 100 | A | 5 | +|80+ -- 90 | B | 4 | +|70+ -- 80 | C | 4 | +|60+ -- 70 | D | 3 | +|50+ -- 60 | E | 3 | +|0 -- 50 | F | 2 | + +### Летучки + +Летучка --- маленькая контрольная работа (на 5-10 минут) которая обычно пишется на паре (обычно в самом начале). +Типичное количество летучек за курс --- 3--4. +Во время написания летучки можно пользоваться любыми материалами, но время написания жёстко ограниченно. +Летучки можно переписывать (переписывания обычно централизованные в конце семестра), но при каждом переписывании максимально возможный балл за летучку падает в два раза. +То есть если за написанную с первой попытки летучку можно получить максимум 1 балл, то за идеально написанную со второй попытки уже только 0.5 балла и т.д. +Боле того, в качестве оценки за летучку засчитывается балл с последней попытки (а не максимум по всем попыткам, например). + +Типичные вопросы на летучке: +- Постройте левосторонний вывод данной цепочки в данной грамматике. +- Постройте конечный автомат, задающий тот же язык, что и данное регулярное выражение. +- Какова пространственная сложность алгоритма X? +- Дайте определение рекурсивного конечного автомата. +- В чём отличие НФХ от ОНФХ? + +### Домашние практические работы + +Работы бывают двух типов: +- С полностью автоматической проверкой. Подразумевается, что к этим задачам известен набор тестов и если он проходит, то задача засчитывается. Количество баллов за такие задачи не менее 60. То есть написав все летучки и сдав все такие задачи можно гарантированно получить 3 (E-D) за курс. +- Требующие проверки преподавателем или ассистентом. Как правило, это задачи на постановку экспериментов или разработку относительно нетривиальных решений. Они основаны на задачах предыдущего типа, потому решать их в изоляции затруднительно. + +У всех задач есть дедлайн (как правило --- неделя с момента, когда она была задана) после которого максимальный балл за задачу падает в два раза. +У задач второго типа может добавляться **мягкий дедлайн**: если проверка запрошена до него, то есть шансы получить отзыв от преподавателя и исправить замечания до **жёсткого дедлайна**. + ## Работа с проектом - Для выполнения домашних практических работ необходимо сделать `fork` этого репозитория к себе в `GitHub`. @@ -39,6 +90,8 @@ - Ссылка на свой `fork` репозитория размещается в [таблице](https://docs.google.com/spreadsheets/d/1-vx82auNr0PQDQ3SwA7IYewZyOC9iHIaoX1w1qRUZ3I/edit?usp=sharing) курса с результатами. - В свой репозиторий необходимо добавить проверяющих с `admin` правами на чтение, редактирование и проверку `pull-request`'ов. + + ## Домашние практические работы ### Дедлайны @@ -51,15 +104,13 @@ - Каждое домашнее задание выполняется в отдельной ветке. Ветка должна иметь осмысленное консистентное название. - При выполнении домашнего задания в новой ветке необходимо открыть соответствующий `pull-request` в `main` вашего `fork`. - `Pull-request` снабдить понятным названием и описанием с соответствующими пунктами прогресса. -- Проверка заданий осуществляется посредством `review` вашего `pull-request`. +- Проверка заданий осуществляется посредством `review` вашего `pull-request`. Даже если сдаётся задача, не требующая проверки преподавателем, необходимо запросить ревью. - Как только вы считаете, что задание выполнено, вы можете запросить `review` у проверяющего. - Если `review` запрошено **до мягкого дедлайна**, то вам гарантированна дополнительная проверка (до жёсткого дедлайна), позволяющая исправить замечания до наступления жёсткого дедлайна. - Если `review` запрошено **после мягкого дедлайна**, но **до жесткого дедлайна**, задание будет проверено, но нет гарантий, что вы успеете его исправить. - Когда проверка будет пройдена, и задание **зачтено**, его необходимо `merge` в `main` вашего `fork`. - Результаты выполненных заданий будут повторно использоваться в последующих домашних работах. -### Опциональные домашние задания -Часть задач, связанных с работой с GPGPU, будет помечена как опциональная. Это означает что и без их выполнения (при идеальном выполнении остальных задач) можно набрать полный балл за курс. ### Получение оценки за домашнюю работу From ad005cede15383c4a9e18cfad2be6846b3015b4e Mon Sep 17 00:00:00 2001 From: Semyon Date: Tue, 6 Feb 2024 20:49:30 +0300 Subject: [PATCH 2/4] Update README.md --- README.md | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a5d1b92fb..2e4ab5413 100644 --- a/README.md +++ b/README.md @@ -34,21 +34,18 @@ Можно думать, что курс разбит на блоки и в каждом блоке есть сколько-то задач и летучка, которая будет весом для этих задач. Пусть, например, в курсе было два блока по 2 задачи и 2 летучки. Пусть за первые две задачи получено 4 и 5 баллов, за оставшиеся две 2.5 и 3 балла соответственно. При этом за первую летучку 0.25 балла, за вторую --- 0.75 балла. -Тогда итогова я оценка за курс: -$$ -\underbrace{(4+5)}_{\text{Первые две домашки}}*\underbrace{0.25}_{\text{Летучка 1}} + \underbrace{(2.5+3)}_{\text{Вторые две домашки}}*\underbrace{0.75}_{\text{Летучка 2}} = 6.375. -$$ +Тогда итогова я оценка за курс: $(4+5)*0.25 + (2.5+3)*0.75 = 6.375.$ Баллы конвертируются в оценки следующим образом: | Балл | ECTS | Классика | | :---: | :---: | :---: | -|90+ -- 100 | A | 5 | -|80+ -- 90 | B | 4 | -|70+ -- 80 | C | 4 | -|60+ -- 70 | D | 3 | -|50+ -- 60 | E | 3 | -|0 -- 50 | F | 2 | +|(90 -- 100] | A | 5 | +|(80 -- 90] | B | 4 | +|(70 -- 80] | C | 4 | +|(60 -- 70] | D | 3 | +|(50 -- 60] | E | 3 | +|[0 -- 50] | F | 2 | ### Летучки From 85541cf22f49a687c3accd312095b3592aba56a2 Mon Sep 17 00:00:00 2001 From: Semyon Date: Thu, 8 Feb 2024 16:17:23 +0300 Subject: [PATCH 3/4] =?UTF-8?q?=D0=A1=D0=B2=D0=B5=D0=B6=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B0=20=D0=BD=D0=B0=20=D1=82?= =?UTF-8?q?=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=83=20=D1=81=20=D1=80=D0=B5?= =?UTF-8?q?=D1=83=D0=BB=D1=8C=D1=82=D0=B0=D1=82=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2e4ab5413..ed74ede46 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ а также материалы курса и другая сопутствующая информация. Актуальное: -- [Таблица с текущими результатами](https://docs.google.com/spreadsheets/d/1-vx82auNr0PQDQ3SwA7IYewZyOC9iHIaoX1w1qRUZ3I/edit?usp=sharing) +- [Таблица с текущими результатами](https://docs.google.com/spreadsheets/d/1zVPStPIwvrCY2cZBLypZyCMgZ5yB2RLS0TCkwR7JfXo/edit?usp=sharing) - [Список задач](https://github.com/FormalLanguageConstrainedPathQuerying/formal-lang-course/tree/main/tasks) - [Стиль кода как референс](https://www.python.org/dev/peps/pep-0008/) - [О достижимости с ограничениями в терминах формальных языков](https://github.com/FormalLanguageConstrainedPathQuerying/FormalLanguageConstrainedReachability-LectureNotes) From d4385f89e653cead59eb625c6186110ab1080284 Mon Sep 17 00:00:00 2001 From: Semyon Date: Thu, 8 Feb 2024 16:18:55 +0300 Subject: [PATCH 4/4] =?UTF-8?q?=D0=90=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B0=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B2=D0=B0=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tasks/task1.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasks/task1.md b/tasks/task1.md index 81a5526cf..be8c6009c 100644 --- a/tasks/task1.md +++ b/tasks/task1.md @@ -1,14 +1,14 @@ # Задача 1. Инициализация рабочего окружения * **Мягкий дедлайн**: -- -* **Жёсткий дедлайн**: 26.02.2023, 23:59 +* **Жёсткий дедлайн**: 14.02.2024, 23:59 * Полный балл: 5 ## Задача - [ ] Сделать `fork` данного репозитория. -- [ ] Добавить ссылку на ваш `fork` в [таблицу](https://docs.google.com/spreadsheets/d/1-vx82auNr0PQDQ3SwA7IYewZyOC9iHIaoX1w1qRUZ3I/edit?usp=sharing). -- [ ] Добавить в совладельцы форка одного из ассистентов (чтобы узнать, кого именно, нужно посмотреть в [таблицу](https://docs.google.com/spreadsheets/d/1-vx82auNr0PQDQ3SwA7IYewZyOC9iHIaoX1w1qRUZ3I/edit?usp=sharing)) +- [ ] Добавить ссылку на ваш `fork` в [таблицу](https://docs.google.com/spreadsheets/d/1zVPStPIwvrCY2cZBLypZyCMgZ5yB2RLS0TCkwR7JfXo/edit?usp=sharing). +- [ ] Добавить в совладельцы форка одного из ассистентов (чтобы узнать, кого именно, нужно посмотреть в [таблицу](https://docs.google.com/spreadsheets/d/1zVPStPIwvrCY2cZBLypZyCMgZ5yB2RLS0TCkwR7JfXo/edit?usp=sharing)) - [ ] Реализовать модуль, предоставляющий перечисленные ниже возможности. Для работы с графами использовать [cfpq-data](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/tutorial.html#graphs). Данный модуль в дальнейшем будет расширяться. Функции, которые необходимо реализовать: - [ ] По имени графа вернуть количество вершин, рёбер и перечислить различные метки, встречающиеся на рёбрах. Для получения графа по имени использовать [эту функцию](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/tutorial.html#get-a-real-graph). - [ ] По количеству вершин в циклах и именам меток строить [граф из двух циклов](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/reference/graphs/generated/cfpq_data.graphs.generators.labeled_two_cycles_graph.html#cfpq_data.graphs.generators.labeled_two_cycles_graph) и сохранять его в указанный файл в формате DOT (использовать pydot).