All Projects → dodona-edu → Dodona

dodona-edu / Dodona

Licence: mit
Learn to code for secondary and higher education

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Dodona

Python Mini Projects
A collection of simple python mini projects to enhance your python skills
Stars: ✭ 354 (+1316%)
Mutual labels:  learn-to-code
Learning Graphql
The code samples for Learning GraphQL by Eve Porcello and Alex Banks, published by O'Reilly Media
Stars: ✭ 477 (+1808%)
Mutual labels:  learn-to-code
Python Tutorial
A Python 3 programming tutorial for beginners.
Stars: ✭ 647 (+2488%)
Mutual labels:  learn-to-code
Javascript Exercises
📚 Collection of JavaScript exercises and coding challenges.
Stars: ✭ 385 (+1440%)
Mutual labels:  learn-to-code
Learn Php
🐘 Learn modern PHP
Stars: ✭ 455 (+1720%)
Mutual labels:  learn-to-code
100 Days Of Code
Fork this template for the 100 days journal - to keep yourself accountable (multiple languages available)
Stars: ✭ 5,307 (+21128%)
Mutual labels:  learn-to-code
Sobre
Informações gerais sobre o Centro de Treinamento
Stars: ✭ 345 (+1280%)
Mutual labels:  learn-to-code
The Complete Guide To Modern Javascript
A comprehensive, easy-to-follow ebook to learn everything from the basics of JavaScript to ES2020. Read more on my blog https://inspiredwebdev.com or buy it here http://a-fwd.to/jHO6m9t. Get the course here https://www.educative.io/courses/complete-guide-to-modern-javascript?aff=BqmB
Stars: ✭ 827 (+3208%)
Mutual labels:  learn-to-code
30 Seconds Of Swift Code
A Swift implementation of 30-seconds-of-code: A curated collection of useful Swift 4 snippets that you can understand in 30 seconds or less.
Stars: ✭ 476 (+1804%)
Mutual labels:  learn-to-code
Curriculum
👩‍🏫 👨‍🏫 The open-source curriculum of Enki!
Stars: ✭ 624 (+2396%)
Mutual labels:  learn-to-code
Textbook Curriculum
Ada Developers Academy Online Curriculum
Stars: ✭ 396 (+1484%)
Mutual labels:  learn-to-code
Awesome Cn
超赞列表合集
Stars: ✭ 449 (+1696%)
Mutual labels:  learn-to-code
Es6 For Humans
A kickstarter guide to writing ES6
Stars: ✭ 5,170 (+20580%)
Mutual labels:  learn-to-code
Start Machine Learning In 2020
A complete guide to start and improve in machine learning (ML), artificial intelligence (AI) in 2021 without ANY background in the field and stay up-to-date with the latest news and state-of-the-art techniques!
Stars: ✭ 357 (+1328%)
Mutual labels:  learn-to-code
Numerical Computing Is Fun
Learning numerical computing with notebooks for all ages.
Stars: ✭ 730 (+2820%)
Mutual labels:  learn-to-code
Blog
刘博文(Berwin),花名“玖五”,畅销书《深入浅出Vue.js》作者、Speaker、阿里巴巴集团前端技术专家,天猫双11大促会场消防员、现负责包含天猫双11在内的超大型营销活动的终端渲染架构与专项PM。
Stars: ✭ 3,773 (+14992%)
Mutual labels:  learn-to-code
Tryenlight.github.io
💻 Learn to code by building projects (old site!)
Stars: ✭ 493 (+1872%)
Mutual labels:  learn-to-code
Python Introducing Pandas
Introduction to pandas Treehouse course
Stars: ✭ 24 (-4%)
Mutual labels:  learn-to-code
Juliatutorials
Learn Julia via interactive tutorials!
Stars: ✭ 732 (+2828%)
Mutual labels:  learn-to-code
Learnyoubash
Learn you how to write your first bash script
Stars: ✭ 589 (+2256%)
Mutual labels:  learn-to-code

Dodona

The Dodona project aims to provide a solution for the automatic testing of solutions for programming exercises.

On https://dodona.ugent.be, students can sign in with the credentials of the Smartschool, Office 365, or G Suite account of their school. After signing in, you can subscribe to one of the many courses. Dodona courses consist of several exercise series. Each exercise has a detailed exercise description and an extensive test suite. After submitting a solution to an exercise, a sandboxed background job is started to test the solution, and the result and feedback is displayed within seconds.

The documentation of this project can be found at https://dodona-edu.github.io.

Development Setup

  1. Install and start mysql or mariadb.
  2. If using mysql, change the sql-mode in the mysqld configuration block:
    sql-mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
    
  3. Create a dodona user with access to the dodona and dodona_test-N databases. You will need as much test databases as hou have CPU threads.
    CREATE USER 'dodona'@'localhost' IDENTIFIED BY 'dodona';
    GRANT ALL ON dodona.* TO 'dodona';
    GRANT ALL ON dodona_test.* TO 'dodona';
    GRANT ALL ON dodona_test-0.* TO 'dodona';
    ...
    GRANT ALL ON dodona_test-3.* TO 'dodona';
    
  4. Create and seed the database with rails db:setup. (If something goes wrong with the database, you can use rails db:reset to drop, rebuild and reseed the database.)
  5. Start the server. The simplest way is with rails s. Dodona will be available on a subdomain of localhost: http://dodona.localhost:3000.
  6. Because CAS authentication does not work in development, you can log in by going to these pages (only works with the seed database form step 4)
    • http://dodona.localhost:3000/nl/users/1/token/zeus
    • http://dodona.localhost:3000/nl/users/2/token/staff
    • http://dodona.localhost:3000/nl/users/3/token/student

Evaluating exercises locally

These steps are not required to run the server, but you need docker to actually evaluate exercises.

  1. Install and start docker.
  2. Clone the docker-images repository.
  3. Build a docker image. The build.sh scripts builds all images. But with the initial data, only dodona-python is needed. You can build this image with docker build --pull --force-rm -t "dodona-python" -f "dodona-python.dockerfile" ..

Loading visualisations locally

These steps are not required to run the server, but are needed to let the visualisations load.

  1. Install and start memcached.
  2. Create the following file tmp/caching-dev.txt.

Starting the server

The simplest way to start the server is with the rails s command. But this will not process the submission queue, and javascript will be compiled by webpack in the background (without output when something goes wrong).

  • To process the submission queue, delayed job needs to be started with the bin/delayed_job start command.
  • With bin/webpack-dev-server your javascript is reloaded live and you can see development output.

To run all these processes at the same time, the foreman gem is used. To start the rails server, delayed job and the webpack dev server, simply run bin/server. The foreman gem is not bundled with Dodona. Install it globally with gem install foreman.

This has one letdown: debugging with byebug is broken. You can run bin/server norails to only start webpack and delayed_job in foreman and then run rails s in a different terminal to be able to use byebug again.

Localhost subdomain

Dodona use subdomains in order to sandbox exercise descriptions (which are arbitrary HTML pages and could be used for malicious purposes if not properly sandboxed. We serve the main application in development from http://dodona.localhost:3000 and exercise descriptions from http://sandbox.localhost:3000.

If this does not work out of the box you can add the following lines to your /etc/hosts file:

127.0.0.1             dodona.localhost
127.0.0.1             sandbox.localhost

Running on Windows

Some gems (such as therubyracer) and dependencies (such as memcached) do not work on Windows. You should use WSL 2 instead, and run everything inside WSL. This means you use WSL for the database, memcached, git, Docker, etc.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].