Skip to content

Commit a55bf55

Browse files
WoWastergsvgit
authored andcommitted
More rewrites and some .md formatting
1 parent a528c45 commit a55bf55

4 files changed

Lines changed: 126 additions & 116 deletions

File tree

README.en.md

Lines changed: 60 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33
---
44
# Formal Language Course
55

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.
77

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)
1010
- [Code style reference](https://www.python.org/dev/peps/pep-0008/)
1111
- [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)
1414
- 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)
1515
- [Tool for constructing and simulating various recognizers](https://github.com/spbu-se/KotlinAutomataConstructor)
1616

17-
Technologies:
17+
Technology stack:
1818
- Python 3.12
1919
- Pytest for unit testing
2020
- GitHub Actions for CI
@@ -26,37 +26,37 @@ Technologies:
2626

2727
- [Formal Language Course](#formal-language-course)
2828
- [Table of contents](#table-of-contents)
29-
- [Marks computation](#marks-computation)
29+
- [Grading](#grading)
3030
- [Tests](#tests)
31-
- [Homework Practical Tasks](#homework-practical-tasks)
31+
- [Exercises](#exercises)
3232
- [Working with the Project](#working-with-the-project)
33-
- [Homework Practical Tasks](#homework-practical-tasks-1)
34-
- [Completing Homework](#completing-homework)
33+
- [Homework](#homework)
34+
- [Completing homework](#completing-homework)
3535
- [Получение оценки за домашнюю работу](#получение-оценки-за-домашнюю-работу)
36-
- [Code](#code)
37-
- [Tests](#tests-1)
36+
- [Code style](#code-style)
37+
- [Tests and Autotests](#tests-and-autotests)
3838
- [Experiments](#experiments)
3939
- [Repository Structure](#repository-structure)
4040
- [Course developers](#course-developers)
4141
- [Вместо введения](#вместо-введения)
4242

43-
## Marks computation
43+
## Grading
4444

4545
The grade for the course is based on the points earned throughout the semester.
4646
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.
5151
- 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.
5353

5454
__TODO: первое предложение бредовое слегка и на русском. Надо поправить и там, и там__
5555

5656
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.
6060
Then, the final grade for the course would be:
6161
$(4 + 5) * 0.25 + (2.5 + 3) * 0.75 = 6.375$.
6262

@@ -75,7 +75,7 @@ __TODO: Подумать надо ли как-то поменять таблич
7575

7676
### Tests
7777

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).
7979
The typical number of tests during a course is 2-3.
8080
During the test, students can use any materials, but the time limit is strictly enforced.
8181
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:
8686
- Construct a leftmost derivation of this string in this grammar.
8787
- Build a finite automaton that represents the same language as this regular expression.
8888
- What is the space complexity of algorithm X?
89-
- Give the definition of a recursive finite automaton.
89+
- Give the definition of a RSM.
9090
- What is the difference between CNF and wCNF?
9191

92-
### Homework Practical Tasks
92+
### Exercises
9393

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.
102102

103103
## Working with the Project
104104

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.
106106
- It is recommended to install [`pre-commit`](https://pre-commit.com/#install) to keep the project in good condition.
107107
- You can install `pre-commit` by running the following command in the root of your project:
108108
```shell
@@ -115,42 +115,42 @@ They are based on tasks of the previous type, so solving them in isolation can b
115115
- Share the link to your fork of the repository with the instructor for it to be added to the results table.
116116
- You need to add reviewers to your repository with `admin` rights for reading, editing, and reviewing pull requests.
117117

118-
## Homework Practical Tasks
118+
## Homework
119119

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.
121121

122122
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.
124124
After three attempts, the points for the task are lost.
125125
The first review request must be made **before the deadline**.
126126
**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.
128128
If there are commits after the request and before the review, the points for the task will be halved permanently.
129129

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 requirements for the reports are not followed), a detailed review of the task will not be conducted, and the attempt will be considered failed.
131131
In such a case, the only feedback you may receive is something like "the task is not fully completed".
132132
Therefore, completing the task properly is the responsibility of the student.
133133

134-
### Completing Homework
134+
### Completing homework
135135

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/)).
137137

138138
Additionally, keep the following points in mind:
139139
- 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.
141141
- The branch should only contain commits made by the person submitting the task, and only those commits that directly relate to solving the task.
142142
- The filename should reflect its content (e.g., the name of the algorithm).
143143
- 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.
145145
- When completing homework in a new branch, you must open a corresponding pull request to the `main` branch of your fork.
146146
- Note that all tests must pass, not just those related to the task being submitted in the current pull request.
147147
- The pull request should have a clear title and description with relevant progress points.
148148
- 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.
150150
- Once you believe the task is complete, you can request a review from the reviewer.
151151
- To earn full points for the task, the review must be requested **before the deadline**.
152152
- 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.
154154
155155
### Получение оценки за домашнюю работу
156156
@@ -164,18 +164,18 @@ __TODO: Здесь вроде что-то надо было чинить, так
164164
- Если исчерпано количество попыток сдать задачу (больше трёх), то за неё получаете **0 баллов**.
165165
- Если после запроса ревью и до самого ревью в ветку были ещё коммиты, то за задачу можно получить **максимум половину баллов**. То есть в предыдущих пунктах заменяем **полный балл** на **половину полного балла**.
166166
167-
## Code
167+
## Code style
168168
169-
- Place the source code for programming tasks in the `project` folder.
169+
- Place the source code for programming exercises in the `project` folder.
170170
- Give files and modules meaningful names, following the officially accepted style.
171171
- 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.
173173
174-
## Tests
174+
## Tests and Autotests
175175
176176
There are two types of tests: those prepared by the instructor and your own.
177177
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.
179179
When working with these tests, the following rules should be followed:
180180
181181
- 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:
186186
pytestmark = pytest.mark.skip("Task 2 is not ready to test!")
187187
```
188188
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!
191191
192192
The following rules apply to your own tests:
193193
194194
- Place tests for homework assignments in the `tests` folder.
195195
- The naming format for test files is `test_[module/class/function being tested].py`.
196196
- 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:
198198
```shell
199199
python ./scripts/run_tests.py
200200
```
@@ -203,10 +203,10 @@ The following rules apply to your own tests:
203203
204204
An experiment (setup, measurements, results, analysis of results) should be documented as a Python notebook, which is published on GitHub.
205205
- 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.
208208
- 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.
210210
- 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.
211211
- The answers to the questions must be substantiated (by experiments), the observed behavior should be analyzed and justified.
212212
@@ -220,13 +220,13 @@ Ideally, all of this should be included in the notebook.
220220
├── scripts - helper scripts for automating development
221221
├── tests - directory for unit tests of homework assignments
222222
│ └── 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)
226228
```
227229
228-
__TODO: вот здесь русскую или английскую версию файлов лучше указать?__
229-
230230
## Course developers
231231
232232
- Semyon Grigorev [@gsvgit](https://github.com/gsvgit)

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
---
44
# Formal Language Course
55

6+
> [!NOTE]
7+
> English version of the README can be found in [README.en.md](README.en.md).
8+
69
Курс по формальным языкам: шаблон структуры репозитория для выполнения домашних работ,
710
а также материалы курса и другая сопутствующая информация.
811

0 commit comments

Comments
 (0)