Introduction to JavaPreview

Introduction to Java

Please welcome a series of courses on the main Java concepts: Introduction, Statements and Arrays, Collections, and Classes. They include both the theory and coding practice with inline IDE tips and tricks.

Please note, the courses are Beta. Stay tuned for upcoming improvements and share your feedback in our tracker or twitter.

Find more details in the course’s Quickstart Guide



Kotlin Koans

Kotlin Koans

Do you want to get started with Kotlin, the powerful new programming language from JetBrains, but don’t know where to begin?

The Kotlin Koans course is a series of exercises specially designed to get you familiar with the Kotlin syntax.

Find more details in the course’s Quickstart Guide



Atomic KotlinNew

Atomic Kotlin

Atomic Kotlin is the book by Bruce Eckel and Svetlana Isakova that comes with learning resources. It explains Kotlin to both novices and experienced programmers, with no prior Java experience required, and now is open for early access.

The book is accompanied by the course – a set of code examples and small tasks with automatic checking and available answers.

Find more details in the course's Quickstart Guide



Kotlin for Java DevelopersNew

Kotlin for Java Developers

Kotlin for Java Developers is a Coursera course by Svetlana Isakova and Andrey Breslav.

This course is for experienced developers who know Java and want to learn nuances of Kotlin and its differences from Java.

The course includes programming assignments that should be solved using JetBrains Educational Products.

Read the Coursera Programming Assignments for more details



Introduction to Python

Introduction to Python

Interested in learning programming with a general-purpose language? The Introduction to Python course is specially designed for programmers with little or no previous coding experience.

To take the course, go to Learn ⟶ Browse Courses and choose Introduction to Python from the list.

Find more details in the course's Quickstart Guide



CheckiO IntegrationNew

CheckiO Integration

CheckiO is a programming learning platform and a gamified website that teaches Python through solving code challenges and competing for the most elegant and creative solutions.

You can now perform CheckiO missions right inside PyCharm Edu and enjoy its assistance.

To take the course, go to Learn ⟶ Browse Courses and choose Py CheckiO from the list. Your progress is synchronized and the IDE automatically updates the list of missions based on it.



Better User Experience New

We're constantly working to enhance the performance, user interface and user experience of our Educational Products, to help you focus on learning without getting distracted. Find more details on the blog

Task Description panel reworked

We've redesigned the Task Description panel to make all its features handier, such as checking the task solution, switching to the next task, managing task hints, and others.

Browse Courses faster

With more courses being published, it is nice to see the list of all the available courses quickly. Now, thanks to the latest IDE updates, Learn ⟶ Browse Courses action is a lot faster.

All educational options in one place

The Welcome screen and the File menu now have a dedicated menu group with all the educational options available, so you can choose the one you're interested in at the moment.

Custom keyboard shortcuts

If you don't like the shortcuts assigned by default to the actions you use while learning, you can now set up your own custom shortcuts, in Preferences | Keymaps.



Integration with Stepik

Stepik is a learning management and MOOC platform, which can be used by an educator to share courses with you privately. Stepik has a lot of public courses available, which you can access from your IDE.

Progress synchronization

If you like learning the theory lessons on Stepik but prefer to do the coding exercises in the IDE – you don't need to worry about losing your course progress. All your progress is synchronized between the platforms.

Importing more courses

You can import any course from Stepik that has programming tasks, which you can solve right inside the IDE. You can easily switch back-and-forth with Stepik any time you want.



Professional Environment

Productivity features such as smart code completion, code inspections, a visual debugger, and more not only boost your learning productivity, but later help you switch easily and seamlessly to other JetBrains tools.

Enjoy a fine–tuned workspace

Feel more at home with your IDE and help yourself stay focused and avoid distraction, with customizable color and keyboard shortcut schemes, and all the look-and-feel settings you need for productive development.

Learn faster with a smart editor

Take advantage of language-specific syntax & error highlighting to help you avoid code mistakes. Learn how to style your code right with the code formatting, and don't ever get stuck thanks to code completion and quick documentation.

Run & debug your code

Run your code to be sure everything goes right. Use the powerful debugger with a graphical UI to find out what went wrong—set breakpoints, run your code step by step and have all the information available to you at your fingertips.



We are excited to hear from you!

What languages and technologies do you want to learn with JetBrains? Please fill in the feedback form below, or contact us on Twitter.


Scala is Now Supported!Preview

Scala Support

You can now share your Scala knowledge in the form of coding tasks and custom verification tests.

If you need our support or want to help create Scala learning materials, please complete the feedback form at the bottom of this page or contact us on Twitter.

Find more details in the Quickstart Guide



Better User Experience New

We're constantly working to enhance the performance, user interface and user experience of our Educational Products, to help you focus on teaching without getting distracted. Find more details on the blog

Task Description panel reworked

We've redesigned the Task Description panel to make all its features handier, such as checking the task solution, switching to the next task, managing task hints, and others.

Browse Courses faster

With more courses being published, it is nice to see the list of all the available courses quickly. Now, thanks to the latest IDE updates, Learn and Teach ⟶ Browse Courses action is a lot faster.

All educational options in one place

The Welcome screen and the File menu now have a dedicated menu group with all the educational options available, so you can choose the one you're interested in at the moment.

Custom keyboard shortcuts

If you don't like the shortcuts assigned by default to the actions you use while working on your course, you can now set up your own custom shortcuts, in Preferences | Keymaps.



Course Structure

Every course created in the IDE contains one or more lessons. Each lesson is structured as a list of tasks. A task has the following components: a description, a file with exercise code, a file with the task check, and any other files needed for the learner to complete the task.

Create a new course

To create a course, go to File | Create New Course and enter a title and description. The IDE will automatically create a simple course with lesson1 and task1 included. Go to View | Tool Windows | Project to verify the course structure.

Open a course as an educator

When creating a new course, it is often much easier to start with some existing course as a template rather than create everything from scratch. Go to Learn and Teach ⟶ Browse Courses, find a course which code tasks and tests you want to take a closer look at, and click the arrow icon next to the Join button.

Manage lessons, tasks, and files

Add more lessons and tasks via File | New..., rename from the context menu Refactor | Rename, and drag-n-drop to reorder. If you need additional files for the task, just add them and decide whether you want to make them visible to learners or not.

Group lessons into sections

To create a new section, right-click the course and select New | Section, rename with Refactor | Rename, and drag-n-drop to reorder. You can also drag lessons from one section to another.



Working with Tasks

Teach with the help of simple and effective "fill in the missing code" exercises. Let learners independently check their assignments with your integrated tests, and help them learn with special hints.

Write exercise code

Open a task file to write the code you want to share as an exercise. Once the code is ready, select a fragment you want a learner to fill in, use the Add Answer Placeholder command, and add the text describing what code the learner should write. Add some hints to help the learner find the right code fragment.

Create dependent answer placeholders

If you want to give learners an opportunity to reuse code they have already written in a previous task, you will need to create a dependent answer placeholder (Answer Placeholder -> Add Dependency). The dependent placeholder will be automatically replaced with the learner's answer from the previous task.

Write a test

Every task has a test file that you need to modify to check the learner's solutions. Get back to the Task Description panel and click the Check icon – this will run your test and show the result the way the learner will see it. When the test is ready, you can run or set breakpoints and debug your code.

Write a task description

To edit your task descriptions right in the Editor, simply open the task.html file. Preview all the changes on the Task Description panel while editing. Put code snippets and hyperlinks to other tasks, .png images, tables, psi elements, and IDE keyboard shortcuts right inside your task description. The IDEs support HTML and Markdown.



Framework Lessons Preview

To give learners an opportunity to work with a project structure, and to gradually make the project more complicated and sophisticated, consider adding Framework Lessons.

From a learner's perspective

From a learner’s perspective, Framework Lesson is a set of code files, a project with a list of tasks they need to go through. Every task opens one or more project files in the Editor so learners can work with answer placeholders in those files.

Set up a project structure

Right-click your course and choose New | Framework Lesson to start your project. Create a new task in the created lesson and add all the project files under the task directory. Add answer placeholders to one or more files you want learners to start with.

Create the next step

Right-click the framework lesson and create a new task with New | Task. All the project files with all the placeholders will be automatically copied from the previous task. All the placeholders are copied as dependent ones, which means there is no need for learners to re-enter all the answer placeholders they have already worked with. Now the new placeholders can be added as a next step for learners to go further.



Course Sharing

Keep up with your learning materials and share them publicly or privately with your students or co-workers.

Preview course

Before sharing your course, it's good to view it from a learner's perspective and to test it. Right-click on the course view and go to Course Creator ⟶ Preview Course to open your course in learner mode.

Integration with Stepik

Stepik, a learning management and MOOC platform, helps you easily store and share your courses. You can upload your course to Stepik, update it anytime you need, and share it either publicly or privately.



We are excited to hear from you!

Which languages and technologies do you want to be able to to teach with JetBrains? Please fill in the feedback form below, or contact us on Twitter.

Please contact us if you're interested in learning or teaching with Educational Products: