Back in 2016, we partnered with Stepik to announce a brand-new Python course. It adapted to each student’s level of knowledge and interest and helped them stay more motivated and productive while learning Python. This course was the first step towards adopting Adaptive Learning, which we believe is one of the key trends in the future online education.
After an adoption period, we’ve fixed all the issues in the latest PyCharm Edu 3.5.1. The Adaptive Python course is now polished and ready to use! Let’s explore it in more detail.
The Adaptive Python Course
The IDE suggests the first lesson and the first task; you can find the description on the Task Description panel:
Now you can start solving the problem in the editor and check it when ready. Or, you can skip it and give feedback to the system, by clicking either Too Hard or Too Boring at the top of the screen. Depending on your answer and feedback, the IDE will suggest the next lesson for you. For example, if you clicked Too Hard, it will give you a simpler one:
The tasks may vary from a programming routine where you need to write code, to some questions with multiple answers to choose from. In the latter case you can still use the editor as a sandbox:
Sometimes you’ll get a lesson without a practice part, only theory. Read it before proceeding, or skip it with the help of feedback buttons:
You can always look back at your course history on the Project View panel:
The course will be finished when you go through all the lessons, solving or skipping each one with the feedback buttons.
Try the Adaptive Python сourse with PyCharm 3.5.1 by downloading it from our site.
Behind the Scenes
What’s interesting about the Adaptive Python course is the logic behind its personal recommendations. PyCharm Edu chooses the next lesson based on the algorithm that Stepik has developed.
On the one hand, the adaptive learning system needs to take into account the level of the student’s knowledge and to suggest lessons of corresponding complexity. On the other hand, it should also reasonably stay within the topics the student is working on.
Similar to the Elo rating system, all lessons and all students are rated: each lesson has a difficulty and each student has a skill level. Every time a student gets a lesson, its difficulty and the student skill change based on how well it gets solved. The system factors in the number of attempts and the solving time, in comparison with average results. Feedback also matters if the lesson was skipped by the student either with Too Hard or Too Boring options.
The next lesson is chosen to best match the student’s updated skill level based on Item Response Theory algorithms. The probability that the student will solve the lesson with a given difficulty is estimated to be 0.75. This makes the lesson difficult enough to let the student learn new topics, but still not too difficult to make them skip it.
The adaptive learning system also takes content tags into account. All lessons are labeled by course authors based on Wikidata knowledge graph. Each lesson has tags for the topics it covers, and tags for prerequisite topics which the student needs to know beforehand. Tags are there to help suggest relevant lessons; for example, they help provide the theory needed when a student skips a practical task by selecting Too Hard.
The adaptive learning system becomes more effective as it collects additional data about students and the tasks being solved. For every student and every lesson, it has some prediction error that is set to default values for new students and lessons without solving history. The Stepik dev team monitors these data based on a number of metrics, such as the ratio of solved lessons to recommended lessons, and others.
The team is tuning these algorithms all the time, and at this point we’re in need of more students and more feedback on the course to improve the adaptive learning system. So please give this new Adaptive Python Course a try with PyCharm Edu 3.5.1 and share your feedback with us, here in the comments on in our issue tracker.
PyCharm Edu Team
-The Drive to Learn