Open source software can play a vital role in education, especially when it comes to the engineering domain. As engineering involves complex tools and processes to deliver solutions, OSS ensures lower costs and more robust code built on open standards that can be continually peer-reviewed. This helps in effective teaching and the management of academics.
The most important open source software for an institution that is educating engineers are:
- Learning management systems (LMS) and tools
- Code collaboration tools
- Submission tracking and assessment frameworks
- Circuit/MCU simulation tools
- Interactive notebooks and IDEs (integrated development environments)
Though we are talking about engineering education here, many of the open source tools and frameworks discussed in this article are equally applicable to other academic and corporate segments.
Learning management systems (LMS) and tools
Code collaboration tools
Git is a popular source code management (SCM) protocol and supports distributed version control systems (VCS). Most open source projects are currently on Git hosting services like GitHub and others. To leverage the advantages of SCM, we can also host internal Git repos. GitLab is a good option for this with its complete continuous integration (CI) and continuous deployment/delivery (CD) tool chain. The community edition is free and easy to install in any on-premise server or available cloud service. When delivering educational content, GitLab can offer examples with wikis, along with lab manuals documented with version tracking (branches). It can also create groups for collaborative team work and submissions. CI/CD workflows can be integrated for build checks, issue trackers, to check code quality parameters and to present different dashboards.
This is a leading automation server with a rich set of plugins for engineering programming languages like C, C++, Java and Python. For the purpose of education content delivery, CI/CD pipelines can be set up to perform particular tasks, which include platform-specific builds, various code quality checks like static analysis, heap error detection, code complexity and standard compliance. xUnit frameworks can be integrated to perform unit and integration testing, and coverage. Also, rich dashboards and trending charts are supported to visualise the changes, based on the build.
Submission tracking and assessment engines
This is an open source programming assignment-submission system developed for programming courses in engineering institutes. Submitted code can be evaluated manually as per predefined rubrics or automatically against test metrics. It comes with a rich set of plugins for various checks on programming assignments like compilation, execution, coding style, static analysis, and memory leak detection for automated assessments. Scores can be configured for each of the desired parameters. We can check the functionality of the code with the help of the available xUnit framework. The evaluation can also be configured as a combined score in dual mode, i.e., some parameters get checked automatically and some manually. This framework helps the engineering faculty to set up formal assessments and programming challenges.
This is a Web based IDE for teaching programming modules. Examples can be created for sharing with students, or one can create blank/partial code and encourage students to submit the completed solutions. Examples in popular languages like C, C++ (up to C++14 std), Java and Python (with support for unit testing in the latter two) can be created. Codeboard.io can be hosted internally through Docker images. It can integrate with popular LMSs in engineering education through LTI plugins.
TAO is a next-generation open source assessment framework, with support for single sign-on and LTI. It can easily integrate assessments with popular LMSs. It is Question and Test Interoperability (QTI) compliant and has a great degree of interoperability with other LMS solutions. It offers a strong role based access matrix to define privileges for various roles like admin, test author, invigilator, student, etc, for hosting and managing the assessments, which can be objective questions using multiple choice or ‘mix and match’ questions.
MCU simulation tools
This is an open source emulator with support for various architecture families. It allows full system emulation with GUI and network support. The GNU MCU Eclipse project comes with a customised version of Qemu, which can emulate additional MCU targets like the STM32 family with Eclipse plugins for a complete development cycle. From mid-2019 onwards, these custom Qemu binaries have been part of the xPack project. Do refer to a previous article in OSFY for more details on the GNU MCU Eclipse project (https://opensourceforu.com/2017/12/developing-arm-targets-using-gnu-mcu-eclipse/).
ARM mbed OS is a free, open source embedded operating system designed for various ARM Cortex-M based targets. It comes with a rich set of drivers for various sensors, I/O devices, connectivity with a powerful networking stack, RTOS APIs and security. Recently, a Web based simulator has been introduced. It can run various examples with sensor interfacing and networking through mbed APIs.
Interactive notebooks and IDEs
URLs: https://github.com/jupyter/jupyter/wiki/Jupyter-kernels; https://xeus-cling.readthedocs.io/en/latest/