Educator Start Guide
With Educational Products, you can learn programming languages in the form of coding tasks and get instant feedback right inside of IDEs based on JetBrains IntelliJ Platform.
Educational Products support Java, Kotlin, Python, JavaScript, Rust, and Scala, with more to come.
Choose your programming language
This tutorial will walk you through creating a simple JavaKotlinPythonScala course with a set of programming tasks and integrated tests. You can switch to a different programming language using the Section drop-down menu at the top of the page:
Prerequisites
You can create a Java course in IntelliJ IDEA with EduTools plugin installed.
Download IntelliJ IDEA Community with EduTools plugin , or Install EduTools Plugin if you have already installed IntelliJ IDEA Community or Ultimate.Prerequisites
You can create a Kotlin course in IntelliJ IDEA or Android Studio with EduTools plugin installed.
Prerequisites
You can create a Python course in PyCharm Educational Edition.
Download PyCharm Educational , or Install EduTools Plugin if you have already installed PyCharm Community or Professional.Prerequisites
You can create a Java course in WebStorm with EduTools plugin installed.
Download WebStorm and Install EduTools plugin if you have already installed IntelliJ IDEA Community or Ultimate.Prerequisites
You can create a Java course in CLion with EduTools plugin installed.
Download IntelliJ IDEA Community with EduTools plugin , or Install EduTools Plugin if you have already installed IntelliJ IDEA Community or Ultimate.Start teaching
Creating a course
-
When installed for the first time, the IDE asks if you're a Learner or an Educator. Please choose Educator to enable course creation functionality:
-
To create a new course, go to
from the or in the , fill in the title, author and description: -
Every course created with your IDE is structured as a list of lessons. Each lesson contains tasks.
A task has the following components:
a task.html description file,
a Task.java Task.kt task.py Task.scala lib.rs task.js file with exercise code,
Test.java Tests.kt tests.py Test.scala tests.rs test.js file with the task check,
any other files needed for the learner to complete the task.
Go to
or invoke Alt+1 to look at the course structure: -
Add more lessons, tasks, or group lessons into sections via the
, drag-n-drop items to reorder them.To rename items right-click them then in the menu use
or invoke Shift+F6:
Working with tasks
-
Open Task.java Task.kt task.py Task.scala lib.rs task.js file to write the code you want for the exercise, for example:
class HelloJava { public static void main(String[] args) { System.out.println(sayHello()); } private static String sayHello(){ return "Hello, Java!"; } }fun hello(): String = "Hello, Kotlin!" fun main(args: Array<String>) { println(hello()) }def hello() -> str: return "Hello, Python!" print(hello())object Task extends App { def hello() = { "Hello, Scala!" } println(hello()) }pub fn hello_world() -> String { String::from("Hello, World!") }function sum(a, b) { return a + b; } -
Click on the Run icon in the left gutter to run your code and check if it works as expected:
-
Once the code is ready, select a fragment you want a learner to fill in, invoke
command from the right-click menu and add the placeholder text and some hints to help the learner find the right solution: -
If you want to see how your task will be look to the learner, right-click the Task.java Task.kt task.py Task.scala lib.rs file in the Project tool window, and choose :
-
Now it's time to add the task description. Click the Edit icon at the top of the panel, or just open task.html file. Preview all the changes on the panel while editing.
Writing tests
-
You can write your custom tests to automatically verify the learner's solution. Every task has a Test.java Tests.kt tests.py Test.scala tests.rs test.js file that you will need to modify:
-
Let's replace the test file content with the following:
import org.junit.Test; import static org.junit.Assert.*; public class HelloJavaTest { @Test public void testSolution() { assertEquals("You should say hello to Java", "Hello, Java!", HelloJava.sayHello()); } }import org.junit.Assert import org.junit.Test class Test { @Test fun testSolution() { Assert.assertEquals("You should say hello to Kotlin", "Hello, Kotlin!", hello()) } }from test_helper import run_common_tests, failed, passed, get_answer_placeholders def test_answer_placeholders(): placeholders = get_answer_placeholders() placeholder = placeholders[0] if placeholder == '"Hello, Python!"': passed() else: failed("You should say hello to Python") if __name__ == '__main__': run_common_tests() test_answer_placeholders()import org.junit.runner.RunWith import org.scalatest.junit.JUnitRunner import org.scalatest.FunSuite @RunWith(classOf[JUnitRunner]) class TaskTest extends FunSuite { test("Task.hello") { assert(Task.hello === "Hello, Scala!") } }import org.junit.runner.RunWith use task1::hello_world; #[test] fn test() { assert_eq!("Hello, World!", hello_world()); } -
To check that your code passes your own tests go back to Task.java Task.kt task.py Task.scala lib.rs task.js and click the Check button at the bottom of the Task Description panel. If your code and test are correct, you will see the Correct message:
Course preview
-
When you have finished creating your course, it's a good idea to view your course from a learner's perspective and test it. Right-click on the course view and go to
to open your course in learner mode: -
So you can verify the course structure:
-
Solve tasks with the
button and verify the wrong answer feedback: -
Check your hints with the links available below the task description:
-
Compare the solution with the suggestions and verify the suggested solution
-
Compare the solution with the suggestions and verify the suggested solution
-
Check the right answer feedback:
Course sharing
-
You can share your learning materials publicly or privately with your students or co-workers on Stepik, a learning management and MOOC platform. Or you can save your course as an archive file.
-
To save your course as a zip file, go to
action.The generated archive can be opened via the Browse Courses available from the
and in the with the icon: -
If you have an account on Stepik, you can easily upload your course there, update it anytime you need, and share publicly or privately.