The extendable learning management system - Aalto internal documentation

Information for instructions and support

What is A+?

A+ is an open-source platform for creating and (partly or fully) automatically grading electronic course assignments, currently used in Aalto University and Tampere University.

The core of A+ LMS consists of the  A+ portal  (frontend, data storage) and  MOOC grader  (assignment grading), of which new versions are released twice a year (before Christmas and at the beginning of the summer). There are also other components and services extending the core functionality. Details can be found in the public documentation:

A+ is a complementary system to Moodle, the official LMS provided by Aalto Learning Services (LES) as MyCourses. You could think the difference between the two like MS Word (MyCourses) and LaTeX (A+) - at least if we forget about VBScript for now. MyCourses gives you a GUI with low threshold adoption, a wide range of tools for basic needs in teaching (sharing course material and assignments, collecting student submissions, quizzes, peer feedback and discussions) and, at Aalto, a number of licenced or free add-ins, like Panopto for creating and sharing videos, Stack for mathematical assignments, CodeRunner for programming assignments, and H5P for creating interactive contents. You'll find the complete list of features at Compared to MyCourses, A+ provides you with additional features for producing course material including assignments with automatic assessment for Computer Science needs, with the drawback of a high threshold learning curve. It is also possible to use the MOOC grader with limited functionality through MyCourses via a Moodle plugin called Astra.

When should I use A+?

At Aalto, course workspaces for all courses published in Sisu are automatically created in MyCourses. Additionally, students are automatically enrolled to the workspace based on enrollments in Sisu. Therefore, you need to keep MyCourses in mind in every case. For additional information, please see the page About workspaces in the MChelp wiki. 

Consider using A+ LMS, when the features of MyCourses (including Stack for mathematical needs and CodeRunner for programming needs) do not fulfill your needs for course material and assessment. The main points are

  • you may develop online course materials and, e.g., interactive visualizations using web technologies
  • you may create automatically graded exercises in A+ without many technical limitations.
  • you develop A+ courses with a software engineering mindset: you define configuration files as well as source code for the materials and exercises in a Git (version control) repository.

What do I need to use A+?

To learn about creating and testing course material in A+, you will first need to set up a local course development environment on either Linux or MacOS, so the basic knowledge of using command line tools and git is helpful. If you have an Aalto workstation, this also requires you to apply for local administrative rights for your workstation (= wa account).

You will need to install the following software:

  • git
  • docker-ce (docker community edition)
  • docker-compose

Instructions for installing the tools above are linked in the A+ quick start guide. See also the Q&A section at the end of this page.


Problem: Course works in someone else's computer, but not on mine - although nothing has been changed. The script gives a strange error, with the following lines shown on the console:

grader_1  | CommandError: Course not found for key: default
grader_1  | [cmd] exited 1

Solution: Check, that the course directories have the execute (x) and read (r) permissions for all users. If not, run the following command at the same level where your course folder is located (the X option prevents adding unnecessary execute permissions to files):

chmod -R a+rX coursefolder

Practical info / Q&A

Here we have gathered some answers to Aalto-specific questions. If your question is not answered here, contact us using above-mentioned channels.

How do I start using A+ on my course?
  1. Set up the local testing environment (see A+ quick start guide)
  2. Study the sample course material, which will help you to get started in creating your own material
  3. Start creating the material for your course
  4. Before creating a remote repository, contact us and ask about hosting your course in our GitLab Group. Hosting the source files of your course in our GitLab group facilitates troubleshooting and publishing your course in A+. It also allows to keep a copy of your course even after the author of the first versions of the course leave Aalto University.
  5. Ask for help when needed;
    1. use the above-mentioned channels
  6. When your material is ready and tested in your environment, see the next question to move into production
How do I get my course in production?

If you already have a course workspace in A+, you may create a new course instance on your own. See the instructions.

If you have a course that has never used A+ before, contact the support via the form at Requests for course instances. The admins will create the first course workspace for the new course code.

Note to course projects outside the course group in

The course repository in must have user "apluslms" as a member with the Reporter role (read access). Otherwise, the servers are not able to download the course git repository. This apluslms user was already used in the autumn 2021, but for example, the spring courses might have missed this update during the autumn 2021.

Courses in the course group owned by EDIT (A+ team) already have this set up automatically.

  • if the course repository in is not under our course group, then add the user apluslms with the "Reporter" role and Markku Riekkinen and Jimmy Ihalainen as members with the "Maintainer" role so that we can change the project settings when necessary.
  • Note: may have a user "aplus", but that is the wrong one. "apluslms" is the correct one.
  • Adding members to the project in open your course project, then in the left-side menu, open Project information -> Members
  • We strongly suggest to transfer your repository to the  Aplus course group in  If you are interested, please ask us about the course group by email
How do I transfer an existing course git repository to the course group in
  1.  Contact
  2. A+ support will add you as an owner to the course-transfer group (
  3. You can then transfer your course git repository to the course-transfer group (namespace in GitLab). The transfer is done in the project page in Go to Settings - General - expand the Advanced section - Transfer project.
  4. A+ support transfers the repository from the course-transfer group to the course group.
  5. Anyone who has cloned the git repository to their computer needs to update the remote URL in the local repository. In the terminal, go to the repository directory and update the URL with the command git remote set-url origin NEW_URL (the remote name "origin" is the default name but you may have used a different name). You can check your git remotes and URLs with the command git remote -v
How early before the course start do I need to prepare the course material?

Typically the material should be finished a few months in advance, so any possible problems can be resolved. If your course material needs new features to be added in A+, you should contact A+ support at least one year before your course starts, as new features are only published every six months.

Can I use A+ for electronic exams?

Yes; A+ can be used in the Exam studio exams, and in online exams. Want to learn more? Contact us via the above-mentioned channels!

Instructions for using A+ in EXAM studio exams

How can I share my course material to others?

You can use

Where can I host private grading containers (images) when I can not publish them in

CS IT has a Docker registry at (requires VPN for accessing outside the campus).

When you use an image from this registry, the image field in the A+ exercise config.yaml follows the format hostname/group/image, for example:

view_type: access.types.stdasync.acceptFiles
  - field: file1
    name: myfile.txt
    mount: exercises/hello_world
    cmd: /exercise/

You need to add read permission for the "aplus/mooc-grader" user in the registry, so that the grader server can download the image.

  • No labels