Introducing YAML format
EduTools 2.7 provides a completely reworked solution for storing course configuration files.
Previously, all course metadata was stored in XML format. Now you can see all the information about your course conveniently stored in YAML format. We worked hard to make this possible and we hope that you will enjoy using this feature.
YAML has a number of advantages such as:
Simple and understandable structure of configuration files. Configuring course properties becomes effortless.
Easy to store in a VCS, with a clearer diff.
Edit configuration files with ease: invalid values are highlighted and available value options are suggested via completion.
No extra delimiter. This makes the document more lightweight and much more readable.
course-info.yaml
course-info.yaml is a configuration file that contains basic information about a course.
It has the following structure:
name | description | value | example |
---|---|---|---|
title | Title of the course | string | Java Basics, Kotlin for beginners |
language | The language used for course materials | Any supported language | English, German, French, Spanish, Russian, and so on. |
summary | A summary describing what the course is about | string | Let’s learn some basics of Java programming language |
programming_language | Programming language of the course | Any supported programming language | Java, Kotlin, Python, Scala, JavaScript, or Rust |
programming_language_version | A version of the programming language (optional) | The version of the programming language | 3.8 (for Python) |
environment | Additional information about the course environment | string | sbt (for Scala courses) |
content | Directory names of lessons or sections included in the course | List of directory names | content:
- Introduction
- First steps
- Basics
- Test |
solutions_hidden | Hide "Peek Solution..." | boolean | solutions_hidden: true |
section-info.yaml
section-info.yaml is a course configuration file that specifies the structure of sections:
name | description | value | example |
---|---|---|---|
content | Directory names of the lessons included in the section | List of directory names | content:
- Introduction
- First steps
- Basics
- Test |
lesson-info.yaml
lesson-info.yaml is a course configuration file that manages the parameters of lessons:
name | description | value | example |
---|---|---|---|
type | Lesson type | “lesson” (optional), “framework” | type: lesson type: framework |
content | Directory names of tasks included in the section | List of directory names | content:
- Introduction
- First steps
- Basics
- Test |
The type parameter has two possible values: lesson and framework. These values determine the type of lesson.
Change the value to ‘lesson’ or ‘framework’ if you want to convert your framework lesson to a simple one or vice versa.
task-info.yaml
task-info.yaml is a configuration file that describes the properties of a task:
name | description | value | example |
---|---|---|---|
type | Task type | “edu”, “theory”, “output”, “ide”, “code”, “choice” | type: edu type: theory type: code |
custom_name (optional) | Custom name for the task if it differs from its directory name. Useful when you need to use a symbol that is not allowed in directory names, for example, “:”. | string | Hello, World! |
files | Files included in the task | List of file paths relative to task directory. Also contains the file’s name, visible fields, and placeholders’ parameters. | files:
- name: src/Task.java |
visible | Indicates whether the file is shown to the learner | boolean | visible: true visible: false |
feedback_link (optional) | Custom link for learners to leave their feedback about the task | string | Google Forms link: https://forms.gle/FNKFJTup5ACGfmMi5 |
placeholders | Answer placeholders. See this table to learn about the parameters. | array | placeholders:
- offset: 162
length: 51
placeholder_text: type_here |
The type may have one of six possible values: edu, theory, output, ide, code, or choice. These values determine the type of task.
edu - a task that has local tests.
theory - a task that doesn't require tests but might contain a code sample.
output - a task that is validated by the provided output of the program.
ide - a task that helps to learn IDE functionality.
code - tasks that work with a remote checker (specific to Stepik only).
choice - quiz tasks, tasks with multiple answer choices (for their parameters see this table).
Multiple-choice tasks
The specific parameters of multiple-choice tasks are described in the table below:
name | description | value | example |
---|---|---|---|
is_multiple_choice | Indicates whether the multiple-choice task allows multiple correct answers | boolean | is_multiple_choice: false is_multiple_choice: true |
message_correct (optional) | Custom message to be shown to a learner if they choose the correct solution | string | “Great job!” or “Fantastic!” |
message_incorrect (optional) | Custom message to be shown to a learner if they choose an incorrect solution | string | “Review how to define a function to solve this task” |
options | The list of options. See this table to learn about the parameters. | string | options:
- text: 1
is_correct: true
- text: 2
is_correct: false |
Options
Options have the following parameters:
name | description | value | example |
---|---|---|---|
text | The text of the option | string | - text: 1
is_correct: true
- text: 2
is_correct: false |
is_correct | If the option is a part of the correct answer | boolean | is_correct: true is_correct: false |
Placeholders
The specific parameters of placeholders are described in the table below:
name | description | value | example |
---|---|---|---|
offset | Placeholder start offset | number | 162 |
length | Placeholder length | number | 51 |
placeholder_text | Text to be shown to the learner as a placeholder | string | type_here |
dependency (optional) | Dependency on another placeholder. See this table to learn about the parameters. | string | dependency:
section: Introduction to Java
lesson: Getting started
task: Hello World
file: src/Task.java
placeholder: 1
is_visible: false |
Dependency
Dependencies have the following parameters:
name | description | value | example |
---|---|---|---|
section | Section directory name if the placeholder dependency is inside a section | string | Introduction to Java |
lesson | Lesson directory name | string | Getting started |
task | Task directory name | string | Hello World |
file | File path relative to the directory of the task | string | src/Task.java |
placeholder | Placeholder index starting from 0 | number | 1 |
is_visible | Indicates whether the placeholder is shown in place of a dependency | boolean | is_visible: true is_visible: false |