You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.en.md
+60-60Lines changed: 60 additions & 60 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,18 +3,18 @@
3
3
---
4
4
# Formal Language Course
5
5
6
-
A course on formal languages: repository structure template for completing homework assignments, as well as course materials and other related information.
6
+
A course on formal languages: repository template for completing homework assignments, as well as course materials and other related information.
7
7
8
-
Current:
9
-
-[List of tasks](https://github.com/FormalLanguageConstrainedPathQuerying/formal-lang-course/blob/main/tasks.en.md)
8
+
Useful links:
9
+
-[List of exercises](https://github.com/FormalLanguageConstrainedPathQuerying/formal-lang-course/blob/main/tasks.en.md)
-[On reachability with constraints in terms of formal languages, in Russian](https://github.com/FormalLanguageConstrainedPathQuerying/FormalLanguageConstrainedReachability-LectureNotes)
12
-
- A classic textbook on parsing algorithms: [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)
13
-
- A classic textbook on formal language theory: [M. A. Harrison. 1978. "Introduction to Formal Language Theory"](https://dl.acm.org/doi/book/10.5555/578595)
12
+
- A textbook on parsing algorithms: [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)
13
+
- A textbook on formal language theory: [M. A. Harrison. 1978. "Introduction to Formal Language Theory"](https://dl.acm.org/doi/book/10.5555/578595)
14
14
- Recent work on automata theory and its applications in various fields: [Editors: Jean-Éric Pin. 2021. "Handbook of Automata Theory"](https://ems.press/books/standalone/172)
15
15
-[Tool for constructing and simulating various recognizers](https://github.com/spbu-se/KotlinAutomataConstructor)
16
16
17
-
Technologies:
17
+
Technology stack:
18
18
- Python 3.12
19
19
- Pytest for unit testing
20
20
- GitHub Actions for CI
@@ -26,37 +26,37 @@ Technologies:
26
26
27
27
-[Formal Language Course](#formal-language-course)
-[Получение оценки за домашнюю работу](#получение-оценки-за-домашнюю-работу)
36
-
-[Code](#code)
37
-
-[Tests](#tests-1)
36
+
-[Code style](#code-style)
37
+
-[Tests and Autotests](#tests-and-autotests)
38
38
-[Experiments](#experiments)
39
39
-[Repository Structure](#repository-structure)
40
40
-[Course developers](#course-developers)
41
41
-[Вместо введения](#вместо-введения)
42
42
43
-
## Marks computation
43
+
## Grading
44
44
45
45
The grade for the course is based on the points earned throughout the semester.
46
46
Points are awarded for the following:
47
-
-Homework assignments (points for each task are specified separately).
48
-
- Tests (short, 5-10 minute control tasks).
49
-
A test is graded from 0 to 1 points.
50
-
Points from tests are used to weigh the points for homework assignments.
47
+
-Exercises (points for each task are specified separately).
48
+
- Tests (short, 5-10 minute assessment).
49
+
A test is graded from 0 to 1 points.
50
+
Points from tests are used to weigh the points for exercises.
51
51
- Additional tasks assigned by the instructor, such as preparing course materials, implementing demonstration algorithms, etc.
52
-
These are graded at the instructor's discretion, but no more than 30 points in total can be awarded.
52
+
These are graded at the instructor's discretion, but no more than 30 points in total can be awarded.
53
53
54
54
__TODO: первое предложение бредовое слегка и на русском. Надо поправить и там, и там__
55
55
56
56
The final grade for the course is a weighted sum of the points for tasks and additional assignments, where the weight is the points for the nearest tests (chronologically speaking) to the right.
57
-
One can think of the course as divided into blocks, where each block contains some tasks and a test that will weigh those tasks.
58
-
For example, suppose there are two blocks, each with 2 tasks and 2 tests.
59
-
Let's say the first two tasks earned 4 and 5 points, and the remaining two earned 2.5 and 3 points respectively. For the first test, the score is 0.25 points, and for the second test, it is 0.75 points.
57
+
One can think of the course as divided into blocks, where each block contains some exercises and a test that will weigh those exercises.
58
+
For example, suppose there are two blocks, each with 2 exercises and 2 tests.
59
+
Let's say the first two exercises earned 4 and 5 points, and the remaining two earned 2.5 and 3 points respectively. For the first test, the score is 0.25 points, and for the second test, it is 0.75 points.
60
60
Then, the final grade for the course would be:
61
61
$(4 + 5) * 0.25 + (2.5 + 3) * 0.75 = 6.375$.
62
62
@@ -75,7 +75,7 @@ __TODO: Подумать надо ли как-то поменять таблич
75
75
76
76
### Tests
77
77
78
-
A "test" is a small control task (lasting 5-10 minutes) that is written during a class (usually at the beginning).
78
+
A "test" is a small assessment (lasting 5-10 minutes) that is written during a class (usually at the beginning).
79
79
The typical number of tests during a course is 2-3.
80
80
During the test, students can use any materials, but the time limit is strictly enforced.
81
81
Tests can be rewritten (rewrites are usually centralized at the end of the semester), but with each rewrite, the maximum possible score for the test is halved.
@@ -86,23 +86,23 @@ Typical test questions:
86
86
- Construct a leftmost derivation of this string in this grammar.
87
87
- Build a finite automaton that represents the same language as this regular expression.
88
88
- What is the space complexity of algorithm X?
89
-
- Give the definition of a recursive finite automaton.
89
+
- Give the definition of a RSM.
90
90
- What is the difference between CNF and wCNF?
91
91
92
-
### Homework Practical Tasks
92
+
### Exercises
93
93
94
-
There are two types of tasks:
95
-
-Tasks with fully automated grading.
96
-
These tasks have known function names, signatures, and a set of test cases; if the tests pass, the task is considered completed.
97
-
The number of points for such tasks is at least 60.
98
-
This means that by completing all tests and submitting all such tasks, you can guarantee a grade of 3 (E-D) for the course.
99
-
-Tasks requiring evaluation by the instructor or assistant.
100
-
These are typically tasks that involve setting up experiments or developing relatively non-trivial solutions.
101
-
They are based on tasks of the previous type, so solving them in isolation can be difficult.
94
+
There are two types of exercises:
95
+
-**Exercises with fully automated grading.**
96
+
These exercises have known function names, signatures, and a set of test cases; if the tests pass, the task is considered completed.
97
+
The number of points for such exercises is at least 60.
98
+
This means that by completing all tests and submitting all such exercises, you can guarantee a grade of 3 (E-D) for the course.
99
+
-**Exercises requiring evaluation by the instructor or assistant.**
100
+
These are typically exercises that involve setting up experiments or developing relatively non-trivial solutions.
101
+
They are based on exercises of the previous type, so solving them in isolation can be difficult.
102
102
103
103
## Working with the Project
104
104
105
-
- To complete the homework practical tasks, you need to fork this repository to your GitHub account.
105
+
- To complete the exercises, you need to fork this repository to your GitHub account.
106
106
- It is recommended to install [`pre-commit`](https://pre-commit.com/#install) to keep the project in good condition.
107
107
- You can install `pre-commit` by running the following command in the root of your project:
108
108
```shell
@@ -115,42 +115,42 @@ They are based on tasks of the previous type, so solving them in isolation can b
115
115
- Share the link to your fork of the repository with the instructor for it to be added to the results table.
116
116
- You need to add reviewers to your repository with `admin` rights for reading, editing, and reviewing pull requests.
117
117
118
-
## Homework Practical Tasks
118
+
## Homework
119
119
120
-
All tasks have a deadline (usually one week from when they are assigned), after which the maximum score for the task is halved.
120
+
All exercises have a deadline (usually one week from when they are assigned), after which the maximum score for the task is halved.
121
121
122
122
The number of reviews is limited to three.
123
-
A review request is considered a check attempt.
123
+
Requesting a review counts as an attempt to submit assignment.
124
124
After three attempts, the points for the task are lost.
125
125
The first review request must be made **before the deadline**.
126
126
**Note**, there should be no commits between the review request and the actual review.
127
-
This means you should ensure everything is ready before requesting a review.
127
+
This means you must ensure everything is ready before requesting a review.
128
128
If there are commits after the request and before the review, the points for the task will be halved permanently.
129
129
130
-
Please note that if a review is requested but not all requirements for the solution are met (e.g., CI fails, not all parts of the task are completed, not all questions are answered, or report requirements are not followed), a detailed review of the task will not be conducted, and the attempt will be considered failed.
130
+
Please note that if a review is requested but not all requirements for the solution are met (e.g., CI fails, not all parts of the task are completed, not all questions are answered, or requirementsfor the reports are not followed), a detailed review of the task will not be conducted, and the attempt will be considered failed.
131
131
In such a case, the only feedback you may receive is something like "the task is not fully completed".
132
132
Therefore, completing the task properly is the responsibility of the student.
133
133
134
-
### Completing Homework
134
+
### Completing homework
135
135
136
-
When working on the homework, you must follow the GitHub Flow ([more info here](https://githubflow.github.io/) and [here](https://habr.com/ru/articles/346066/)).
136
+
When working on the homework, you must follow the GitHub Flow ([more info here](https://githubflow.github.io/) and [here (in Russian)](https://habr.com/ru/articles/346066/)).
137
137
138
138
Additionally, keep the following points in mind:
139
139
- Each homework assignment should be completed in a separate branch.
140
-
The branch should have a meaningful and consistent name.
140
+
The branch should have a meaningful and consistent name.
141
141
- The branch should only contain commits made by the person submitting the task, and only those commits that directly relate to solving the task.
142
142
- The filename should reflect its content (e.g., the name of the algorithm).
143
143
- Automatic tests should not be modified, except in cases explicitly mentioned in the task description.
144
-
- Commit messages should be clear and reflect the essence of what was done.
144
+
- Commit messages should be clear and reflect commit content.
145
145
- When completing homework in a new branch, you must open a corresponding pull request to the `main` branch of your fork.
146
146
- Note that all tests must pass, not just those related to the task being submitted in the current pull request.
147
147
- The pull request should have a clear title and description with relevant progress points.
148
148
- The task will be reviewed through the review of your pull request (by filling in the Reviewers field).
149
-
Even if the task doesn't require instructor verification, a review request must still be made.
149
+
Even if the task doesn't require instructor verification, a review request must still be made.
150
150
- Once you believe the task is complete, you can request a review from the reviewer.
151
151
- To earn full points for the task, the review must be requested **before the deadline**.
152
152
- When the review is complete and the task is **approved**, it must be merged into the `main` branch of your fork.
153
-
- The results of completed tasks will be reused in subsequent homework assignments.
153
+
- The results of completed exercises will be reused in subsequent homework assignments.
154
154
155
155
### Получение оценки за домашнюю работу
156
156
@@ -164,18 +164,18 @@ __TODO: Здесь вроде что-то надо было чинить, так
164
164
- Если исчерпано количество попыток сдать задачу (больше трёх), то за неё получаете **0 баллов**.
165
165
- Если после запроса ревью и до самого ревью в ветку были ещё коммиты, то за задачу можно получить **максимум половину баллов**. То есть в предыдущих пунктах заменяем **полный балл** на **половину полного балла**.
166
166
167
-
## Code
167
+
## Code style
168
168
169
-
- Place the source code for programming tasks in the `project` folder.
169
+
- Place the source code for programming exercises in the `project` folder.
170
170
- Give files and modules meaningful names, following the officially accepted style.
171
171
- Structure the code by using both classes and well-defined functions.
172
-
The clearer the code, the faster it can be reviewed, and the more likely you are to receive full points.
172
+
The clearer the code, the faster it can be reviewed, and the more likely you are to receive full points.
173
173
174
-
## Tests
174
+
## Tests and Autotests
175
175
176
176
There are two types of tests: those prepared by the instructor and your own.
177
177
178
-
The instructor-prepared tests are located in the `tests/autotests` folder and are used to check tasks with fully automated grading.
178
+
The instructor-prepared tests are located in the `tests/autotests` folder and are used to check exercises with fully automated grading.
179
179
When working with these tests, the following rules should be followed:
180
180
181
181
- In these tests, usually, only one block should be modified:
@@ -186,15 +186,15 @@ When working with these tests, the following rules should be followed:
186
186
pytestmark = pytest.mark.skip("Task 2 is not ready to test!")
187
187
```
188
188
In this block, you need to specify from which module(s) the required functions should be imported; otherwise, the tests will be skipped.
189
-
- If you find a bug **and** are ready to fix it, you can modify the file and then submit the change via a Pull Request to the main repository.
190
-
- If you find a bug and are not ready to fix it, you must urgently inform the instructor and take no further action!
189
+
- If you find a bug **and** are willing to fix it, you can modify the file and then submit the change via a Pull Request to the main repository.
190
+
- If you find a bug and are not willing to fix it, you must inform the instructor and take no further action!
191
191
192
192
The following rules apply to your own tests:
193
193
194
194
- Place tests for homework assignments in the `tests` folder.
195
195
- The naming format for test files is `test_[module/class/function being tested].py`.
196
196
- Use [`pytest`](https://docs.pytest.org/en/6.2.x/) to work with tests.
197
-
- To run the tests, you need to execute the following command from the root of the project:
197
+
- To run the tests, use the following command from the root of the project:
198
198
```shell
199
199
python ./scripts/run_tests.py
200
200
```
@@ -203,10 +203,10 @@ The following rules apply to your own tests:
203
203
204
204
An experiment (setup, measurements, results, analysis of results) should be documented as a Python notebook, which is published on GitHub.
205
205
- To perform experiments, you will need not only the code but also the environment and some configuration.
206
-
Accordingly, the solution submitted should include instructions for setting up the environment and reproducing the experiments.
207
-
Ideally, all of this should be included in the notebook.
206
+
Accordingly, the solution submitted should include instructions for setting up the environment and reproducing the experiments.
207
+
Ideally, all of this should be included in the notebook.
208
208
- Experiments should be reproducible (e.g., by reviewers).
209
-
- The notebook contains all the setup, code for the experiments, preparation of reports, and creation of graphs.
209
+
- The notebook must contain the setup, code for the experiments, preparation of reports, and creation of graphs.
210
210
- The notebook serves as a connected narrative describing the goals of the experiment, the methodology, analysis of the results, and answers to the questions posed.
211
211
- The answers to the questions must be substantiated (by experiments), the observed behavior should be analyzed and justified.
212
212
@@ -220,13 +220,13 @@ Ideally, all of this should be included in the notebook.
220
220
├── scripts - helper scripts for automating development
221
221
├── tests - directory for unit tests of homework assignments
222
222
│ └── autotests - directory with automated tests for homework assignments
223
-
├── pyproject.toml - dependencies for repository setup
224
-
├── README.md - main information about the project
225
-
└── tasks.md - file with descriptions of homework assignments
223
+
├── pyproject.toml - dependencies for repository
224
+
├── README.en.md - main information about the project (in English)
225
+
├── README.md - main information about the project (in Russian)
226
+
├── tasks.em.md - file with descriptions of homework assignments (in English)
227
+
└── tasks.md - file with descriptions of homework assignments (in Russian)
226
228
```
227
229
228
-
__TODO: вот здесь русскую или английскую версию файлов лучше указать?__
0 commit comments