Skip to content

FOSSEE/online_test

Folders and files

NameName
Last commit message
Last commit date
Oct 8, 2020
Jan 4, 2018
Feb 1, 2021
Mar 24, 2021
Mar 25, 2021
Dec 22, 2020
Jan 16, 2021
Mar 31, 2022
Mar 16, 2018
Mar 13, 2017
Jan 4, 2018
Feb 16, 2021
Mar 24, 2021
Feb 18, 2015
Oct 13, 2015
Jul 2, 2020
May 20, 2020
Jan 4, 2018
Nov 14, 2017
Mar 23, 2018
Mar 25, 2021
Aug 20, 2019

Repository files navigation

Yaksh

Build Status Documentation Status Version Status Coverage Status

To get an overview of the Yaksh interface please refer to the user documentation at Yaksh Docs

This is a Quickstart guide to help users setup a trial instance. If you wish to deploy Yaksh in a production environment here is a Production Deployment Guide

Introduction

This project provides an "exam" app that lets users take an online programming quiz.

Features

  • Define fairly complicated programming problems and have users solve the problem.
  • Immediate verification of code solution.
  • Supports pretty much arbitrary coding questions in Python, C, C++, Java, R, Scilab and Bash.
  • Supports Multiple choice, Fill in the blanks, Arrange options and File upload based questions.
  • Since it runs on Python, you could technically test any Python based library.
  • Create course with lessons and quiz for online learning.
  • Almost real-time monitoring for quiz.
  • Supports automatic and manual grading, regrading of quiz.
  • Add grading system to the course.
  • Scales to over 500+ simultaneous users.
  • Distributed under the BSD license.

To get a glimpse of all the available features check our demo website https://yaksh-demo.fossee.in. It has 50 teacher and student login.

Sample teacher login

Username:- teacher1 Password:- teacher1

Sample student login

Username:- student1 Password:- student1

Requirements

Python 3.6, 3.7, 3.8

Django 3.0.3

Celery 4.4.2

Installation

Note: Currently, only Linux and MacOS is supported for the project.

If Python 3.6 and above is not available in the system, then we recommend using miniconda. Download miniconda with Python 3.6 and above.

Installing Miniconda

  1. Download miniconda from https://docs.conda.io/en/latest/miniconda.html according to the OS version.
  2. Follow the installation instructions as given in https://conda.io/projects/conda/en/latest/user-guide/install/index.html#regular-installation
  3. Restart the Terminal.

Pre-Requisite

  • Install redis server

    Redis is required for celery. Celery runs a background task to re-evaluate the submissions.

    sudo apt install redis-server (Debian/Ubuntu)
    
    yum install redis (Centos)
    
  • Start redis server

    systemctl start redis
    
  • Check redis server status

    systemctl status redis
    
  • Run celery worker

    celery -A online_test worker -B
    
  • Ensure pip is installed

Installing Yaksh

  • Clone the repository

    git clone https://github.com/FOSSEE/online_test.git
    
  • Go to the online_test directory

    cd online_test
    
  • Install the dependencies:

    • Install Django and dependencies

      pip3 install -r requirements/requirements-common.txt
      
    • Install Code Server dependencies

      sudo pip3 install -r requirements/requirements-codeserver.txt
      

Quick Start

  1. Start up the code server that executes the user code safely:

    • To run the code server in a sandboxed docker environment, run the command:

      $ invoke start
      
    • Make sure that you have Docker installed on your system beforehand. Docker Installation

    • To run the code server without docker, locally use:

      $ invoke start --unsafe
      
    • Note this command will run the yaksh code server locally on your machine and is susceptible to malicious code. You will have to install the code server requirements in sudo mode.

  2. On another terminal, run the application using the following command:

    $ invoke serve
    
    • Note: The serve command will run the django application server on the 8000 port and hence this port will be unavailable to other processes.
  3. Open your browser and open the URL http://localhost:8000/exam

  4. Login as a teacher to edit the quiz or as a student to take the quiz Credentials:

    • Student - Username: student | Password: student
    • Teacher - Username: teacher | Password: teacher
  5. User can also login to the Default Django admin using;

    • Admin - Username: admin | Password: admin

History

At FOSSEE, Nishanth had implemented a nice django based app to test for multiple-choice questions. Prabhu Ramachandran was inspired by a programming contest that he saw at PyCon APAC 2011. Chris Boesch, who administered the contest, used a nice web application Singpath that he had built on top of GAE that basically checked your Python code, live. This made it fun and interesting.

Prabhu wanted an implementation that was not tied to GAE and hence wrote the initial cut of what is now 'Yaksh'. The idea being that anyone can use this to test students programming skills and not have to worry about grading their answers manually and instead do so on their machines.

The application has since been refactored and maintained by FOSSEE Developers.

Contact

For further information and support you can contact

Python Team at FOSSEE: pythonsupport@fossee.in

License

This is distributed under the terms of the BSD license. Copyright information is at the bottom of this file.

Authors

FOSSEE Developers

Copyright (c) 2011-2017 FOSSEE