Teach by practice

PyCharm Edu helps to share knowledge and transfer programming skills in the form of code practicing tasks and integrated tests with all the productivity boosters a professional IDE has.

Course Structure

Every Python course created with PyCharm Edu is structured as a list of lessons. Each lesson contains tasks. A task has the following components: a description, a task.py file with exercise code, a tests.py file with the task check, and any other files needed for the learner to complete the task.

Create a course

Manage course structure

Create a course

To create a course, go to Create New Course, fill in the title and description, and set up the Python interpreter you want to work with. The IDE will automatically create a simple course with lesson1 and task1 included. Go to View | Tool Windows | Project (Alt+1) to look at the course structure and change it.

Course structure

Add more lessons and tasks via File | New...(Alt+N), rename from item context menu Refactor ⟶ Rename (Shift+F6), 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 (Course Creator ⟶ Make Visible to ⁄ Hide from Student).

Set up course dependencies

Specify the Python version information

Course dependencies

When designing your course, you'll most likely use some packages and libraries not installed on a learner's machine. List all the dependencies in the requirements.txt file when you create your course. When a learner opens the course on their computer, PyCharm Edu will create a separate virtual environment based on the default Python interpreter and install all the dependencies required.

Python version

You can easily specify the Python version your course is compatible with, thanks to Course Creator ⟶ Change Course Information. When a learner opens a course, PyCharm will pick the appropriate interpreter. If there is no interpreter installed on the student's computer, PyCharm will suggest choosing another version.

Working with Tasks

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

Write an exercise code

Open task.py file to write a code you want to share as an exercise. Once the code is ready, select a fragment you want a learner to fill in, invoke 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.

To execute your code, click Run icon in the left gutter—PyCharm Edu shows console with the code file output.

If you want to look how your task will be seen by the learner, right-click the task.py file in the Project tool window, and choose Course Creator ⟶ Show Preview.

Write a task description

Edit your task descriptions right in the task panel, by clicking the Edit icon. Put code snippets and hyperlinks to other tasks right inside your task description.

PyCharm Edu supports HTML and Markdown, so you can start editing with your preferred format, or even a combination of both.

Write a test

Run and debug your test

Every task has tests.py file that you need to modify to check the learner' solutions. Write your custom tests using PyCharm Edu testing framework. Get back to the Task Description panel and click Check icon—that will run your test and show the result as a learner will get it.

When the test is ready, you can run it to get the console output. Or you can place breakpoints and run the debugger to see the console output along with the variable viewer. Right-click the Run button from the test editor and choose the desired action.

Subtask Management

If you want to give learners an opportunity to work with the same code fragment, and gradually make tasks more complicated and sophisticated—add steps, or subtasks, for any task in your course. This feature request came from Venkat Subramaniam, and we want to thank him for his help with understanding this use case better!

Add subtasks

Add answer placeholders

Add a subtask

To create a new subtask for a current task, just go to the context menu and choose the Add Subtask command. Click the Switch subtask link to manage the list of subtasks: switch between them, delete them or create new ones.

Add an answer placeholder

Add more answer placeholders for your subtasks so learners can add new code elements to the task code fragment they are working with. You can always select Answer Placeholder ⟶ Hide for Previous Subtasks to avoid displaying these new code fragments on the previous steps.

Edit an existing answer placeholder

Work with a subtask test and description

Activate placeholder

If you want to change a code fragment that already has a placeholder created in one of the previous subtasks, you can Activate it. Then learners will be able to not only add new code fragments, but also to modify the code fragments they have already changed.

Subtask test file

Switch to the subtask you want to work with and change the task code file and description, as well as the test file just the same way you do for a simple task. Don't be afraid of losing the task code, description and checking test when adding a subtask: everything will be saved in the first subtask.

Course Sharing

Keep up your learning materials and share them publicly or privately with your students or co-workers on Stepik, a learning management and MOOC platform. Or save your course as an archive file.

Integration with Stepik

Integration with Stepik

In 2016 we partnered with Stepik to create the Adaptive Python course. But integration with Stepik also helps easily store and share your courses.

Once you've created an account and logged in to Stepik, you can easily authorize PyCharm Edu with Stepik Status Bar icon and a special Log in to Stepik link.

Then you can upload your course to Stepik, update it anytime you need, and share publicly or privately.

Find more details on the blog

Preview course

Create course archive

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

You can save your course as a zip file with Course Creator ⟶ Generate Course Archive action. The generated archive could be opened in PyCharm Edu via File | Open... menu item.


If you can’t find the answer or your question is missing, please contact our support team or visit our forum for help.

What is PyCharm Edu?

PyCharm Edu is a special free edition of the PyCharm IDE, bundling a range of tools for professional development along with additional educational functionality. Learners receive immediate feedback as they are guided through self-paced lessons. Educators can create their own courses with PyCharm Edu.

Is PyCharm Edu right for me?

It probably is if you want to go about teaching someone Python. As an educator, you can create your own courses using PyCharm Edu and share them publicly or privately with your students or co-workers.

Where can I get a course example?

Please visit our GitHub repository to download course examples. Install PyCharm Edu and select Open on the Welcome Screen to open any of the examples.

How can I create a course for PyCharm Edu?

To create a course or an assignment for PyCharm Edu, please use this tutorial.

How can I create a course with subtasks for PyCharm Edu?

To create a course with subtasks for PyCharm Edu, please use this tutorial.

Do I have to always be online to use PyCharm?

The software is installed locally, meaning that you don’t have to worry about network connectivity or server loads. You can study online or offline, anywhere and anytime. Everything can be synchronized with a remote server when needed.

Can I use PyCharm Edu to write professional Python projects?

Yes, you can. PyCharm Edu is based on PyCharm Community Edition and comprises all its features, making it just perfectly suitable for writing professional projects with Python.

How does PyCharm Edu differ from PyCharm Professional Edition or PyCharm Community Edition?

PyCharm Edu is based on the Community Edition and comprises all of its functionality. Additionally, it installs and detects Python during installation. It has a simpler UI (adjustable in settings) and adds courses.

PyCharm Professional Edition additionally supports different web development technologies, has remote development capabilities and additional languages, and supports working with databases.

Find more details on the Community and Professional editions difference.

What languages or technologies can I teach with PyCharm Edu?

PyCharm Edu only supports Python. If you want to teach Java, Kotlin or other languages the same way, please contact us.

Can I teach Django, Flask and Web programming Python using PyCharm Edu?

PyCharm Edu does not support advanced frameworks such as Django, Flask or Pyramid. Neither does it offer web development functionality. If this is what you’re after, please contact us.

If I run into any problems with PyCharm Edu, how can I get help?

We are committed to providing the same professional-level support for PyCharm Edu as we do for PyCharm Professional Edition. Please submit your support requests here. You can also file a bug or ask for a new feature in our issue tracker. To stay upto date on PyCharm news and updates, visit the product blog and follow us on twitter.