This page was originally written for a Software Engineering project. Goals remain: LTI 1.3 provider (tool) and consumer (platform) are both needed.

1. Introduction

A+ is the open-source online learning environment developed at the Aalto CS department, and used also at Tampere University. It provides features especially designed to support teaching and learning in Computer Science related topics. The main ideas are that it enables automatic grading of exercises, and deploying online course materials from git version control. The overview of A+ architecture is presented in the slides by Jaakko Kantojärvi, and the teacher manual available on the A+ frontpage provides most details.

The features A+ provides do not exist in MyCourses, which is the main online learning environment used at Aalto. Because two separate systems are needed to support students in their learning, it has been meaningful to integrate these. The current integration, implemented as a MyCourses activity called Astra, is some years old now, and requires updating every time the Moodle version of MyCourses is upgraded. On the other hand, A+ is aimed to be part of the Aalto enterprise architecture, which requires standard ways of integrations. As a whole, a standard and modern integration is now needed. Therefore, we decided to aim for developing A+ to an LTI provider (and, secondarily, an LTI consumer). The Learning Tools Interoperability (LTI) is a standard designed for educational systems, and includes a protocol on how the systems should interact. The basic description of how LTI works is available at The idea of A+ as an LTI provider is that A+ assignments could be used via other systems. This serves the end-users, especially the students, who can do all their assignments seemingly via one single system. The LTI Tool functionality can be implemented directly in A+ or as a proxy component. 

2. Project goals

The goal of the project is to create a standard and general integration opportunity for A+ to be used with other learning management systems and other tools used for learning purposes together with A+. The LTI standard version 1.3 needs to be used.

The defined use cases for LTI provider are:

  • The LTI integration should compensate the needs which Astra currently supports; teachers who want to provide A+ assignments in courses using MyCourses as the main learning management system. More specifically,
    • LTI is used for single assignments
    • a whole course workspace is integrated (this refers to LTI login)
  • Teachers who use EXAM studio exams want to use A+ assignments in those exams. With LTI, the exam questions could be more easily used than currently (as soon as also EXAM provides LTI consumer)

Additionally and secondarily, the use case for A+ as LTI consumer is:

  • Teachers could use additional tools in courses which use A+ as the main learning management system; in these cases, students could do or teachers could assess some assignments in the external tool while most of the assignments are done within the current A+. One recent example is Gradescope, but there could be other needs, as well.

3. Technologies and needed skills

In this project, the technologies used in the already available services somewhat restrict the opportunity to choose which technologies to use. A+ and its main backend, the exercise grading service, are implemented with the Python Django web framework. Note; If a separate proxy component is chosen as the implementation strategy, it does not have to be developed in the same framework as A+. The project is not expected to be too complex as is; still, it requires understanding of existing systems.

4. Legal Issues

Intellectual Property Rights (IPR):

  • The results are published under open source license GPLv3 or MIT (depending on whether the project is built on top of existing systems that require GPLv3).
  • Note: we would like to use the MIT license everywhere, but unfortunately the a-plus project itself uses GPLv3. Other components should be MIT. BTW, Moodle uses GPLv3 and Moodle plugins should be the same.
  • No labels