My impressions on JetBrains MPS Advanced Course

Navigating through MPS is a tough ordeal when you are a beginner. Luckily there are resources for us that can help us with the process of learning to manipulate the tool. This post is my opinion on one such material - the MPS Advanced Online Course.

Previous knowledge

I had recently started my journey in the Model Driven Engineering domain. My previous knowledge was from two other courses called JetBrains MPS Elementary Course and JetBrains MPS for the impatient. Apart from that I had a bit of working experience for dealing with small MPS issues in a large company project.

My experience

The course is split up in sections each following more advanced topics on working with MPS. The sections were given in a way that they did not become boring. After a detailed introduction to the topic I was given exercises that would bolster the learning process. This process was consistently repeated throughout the entire course and it had a very natural flow to it.

Some of the things that were explained I had already met with and knew some parts of them but the explanations showed me new ways I could use them. The best thing about this course I think is that you could use it repeatedly in the future for reference. Its sections help you find what you are searching fast and can help you solve issues or come up with solutions you didn’t have before.

example structure
Figure 1. Example of the structure of the course

There was an issue I couldn’t solve for several days while working. The problem was with the editor aspect — I had trouble with a transformation menu not showing up when it needed to. None of the solutions I tried worked and I had to go inside the source code of MPS and follow up why it didn’t get called when it should’ve. Some time later, I had started to lose motivation for it so I jumped in the course because I hadn’t finished it yet. The part I was getting at was exactly where I was having problems and lo and behold the solution had been right under my nose the entire time. This issue will be explained with examples in a future blog post so stay tuned.

Figuring out a solution by myself would’ve taken a long time because MPS is quite large. Apart from that, remembering all different aspects and details about every language I was working with was and still is a challenge I don’t see solving in the forseeable future. I will keep the course close by while I begin more serious work with MPS in the future and I feel that it will help me quickly navigate implementations and problems.

Overall I think the course is worth it if you really want to understand how to manipulate MPS in a productive way. You can find information on the course on the JetBrains website. There you can register for different ways of carrying out the course. Even after finishing the course you could use it as a reference to some of the more complicated topics MPS contains like the SModel language.