Giter Site home page Giter Site logo

progressor / progressormeteor Goto Github PK

View Code? Open in Web Editor NEW
7.0 6.0 1.0 5.68 MB

Progressor - The Programming Professor

Home Page: http://progressor.io/

License: MIT License

JavaScript 68.26% HTML 21.50% CSS 10.24%
progressor programming-professor meteor nodejs mongodb

progressormeteor's Introduction

Progressor - Meteor

This is the runnable component of the project Progressor - The Programming Professor. It contains both the web application and a compiled Executor JAR.

Deployment & Installation

These instructions are written for Ubuntu 16.04.1 LTS.

Prepare the Server

  1. Install Docker by executing curl -sSL https://get.docker.com/ | sh on the server.

On Your Development Machine

  1. Install Meteor
  2. Install meteor-up (mup) globally: npm install --global mup
  3. Clone this repository or navigate to the folder where you cloned it.
  4. Deploy the Meteor web application to the server. (Instructions adapted from meteor-up documentation.)
    1. Configure your server(s) including usernames and passwords in .deploy/mup.js as instructed.
    2. Configure the application using private/config.json and private/secret.json as instructed.
    3. Go to .deploy and set up the server by executing mup setup
    4. After the setup finished, deploy the web application and the MongoDB database by executing mup deploy
    • Additional Information
      • The user you want to use to deploy Progressor to the server needs to be in the docker and sudo groups and have NOPASSWD enabled.
      • If you want to re-deploy the application without the database, you can remove the servers from module.exports.mongo.servers in .deploy/mup.js.
      • More information about mup can be found in the official meteor-up documentation.
      • More information about the configuration of Progressor can be found in the advanced configuration options

Executor

You need to run the Executor to be able to solve exercises.

  • You can either clone the repository and build the project yourself
  • or simply use the JAR file included in the directory bin.
    • In this case, run the Executor with a working directory outside the Meteor projects, otherwise Meteor will recognize the files temporarily created and continuously restart the server.

Introduction

This repository contains a reactive Meteor web application.

Meteor is an app platform. Web application run on a Node.js web server and use a MongoDB document-oriented database.

Note: Meteor applications require activated JavaScript on the client side (in the web browser) or nothing is displayed.

Background

This project Progressor - The Programming Professor was started by three BSc students at the Bern University of Applied Sciences' (BUAS / @bfh) Computer Perception & Virtual Reality Lab (@cpvrLab).

It has since been provided as open-source in order to encourage other educational institutions, enterprises and individuals to get involved and set up their own installation.

Features

home page

Progressor offers two basic features.

  • You can create and solve exercises on your own and improve your programming skills.
  • Or you can create examinations for your students to take and evaluate their achievements.
Example Examination Student Examination Dashboard
example exercise examination dashboard

Architecture

The system is composed of two components.

  1. The Meteor web application that runs on a Node.js web server and uses a MongoDB database.
  2. The Executor, which is a seperate Java application that communicates with the web application using Apache Thrift and executed the code fragments entered by the users.

system architecture

progressormeteor's People

Contributors

dingqi avatar l00mi avatar luav avatar marcodev01 avatar mkhayati avatar prosso avatar stonewar avatar strubt avatar vhf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

cenga1

progressormeteor's Issues

License

Which license would you prefer @hudrima1 @StrubT @l00mi ? Do you have academic constraints wrt to license choice?

This point is crucial and should be resolved before making the repo publicly available. The best options are:

  • MIT (more liberties)
  • Apache (more liberties)
  • GPL (more restrictions)
  • AGPL (extremely restrictive)

depending on what you want people to be able to do with Progressor.

2nd bug with illegal terms

How to reproduce: Create an illegal term e.g. in the Python CreditCardIsOK exercise.
If you press [Save] the code disappears. The code got saved and you have to leave the edit mode and reenter again.

Advanced Executor handling

Handle Executor instances on a per-language basis. (Some Executors may not support all languages)
Use the same Executor instance for a specific exercise. (Executors may not be configured equivalently: language version, compiler, etc.; may be a bad idea as it is confusing to users)
https://pm.ti.bfh.ch/issues/2519

Tabs in Python exercises

With tab characters in Python exercises, you often get the error message "Inconsistent use of tabs ...". Can we replace tabs by spaces?

Change wording

By the way, I would suggest to rename this label to:

  • "logout other users" in case you are talking about other users
  • "logout other sessions" in case you are talking about other sesstions of this user
    "clients" is ambiguos.

Lists and Vectors in C++

In the CreditCardIsValid exercise in C++ I used the list container for the input parameter.
In the implementation I used vector. I think the mapping of the argument types to the implementation types need more explanation.

Bug with illegal terms

How to reproduce: In the Python exercise creditCardIsOK change the OK by Valid and you can not anymore compile it because of the id in Valid.
I think blacklist words should be checked case sensitive and as full words only.
On the other hand black list words should be allowed in the language comments.

More Translations

Please can you also prepare an it, es, ru, ar, zh version for this?

Deleted exercises

It is possible to delete exercises, but they will not be removed from the "My Created Exercises" list.
I can also open this removed exercises.
When I want to edit them, a Window will be opened with the message "HTTP (Not Found)".

duplicate exercises in prod

  • delete new categories

  • add new properties to old categories

  • add new properties to old exercises

  • delete duplicate exercises

Export/Import functionality per Exercise

To make sure uses can save their exercises for later uses and to make it possible to exchange exercises between different instances of the platform we need an export on the level of an exercise.

Not sure if there is a unique Exercise ID? This would be use full if an exercises is imported again on the same platform, to propose it as an update and not have a duplicate.

Also the unique IDs generated by Meteor should be globally unique, so no need to try to come up with something more clever.

Rearange the README.md

I feel that there is a bit to much of less important info on the README.md.

This should basically give an overview of what this project does (best with a screenshot or two) and point to the other infos.

Documentation

We need a nice README.md, a CONTRIBUTING.md and a LICENSE.

Reading the documentation should make the following straightforward:

  • Installing all the dependencies locally and being able to make all tests pass
  • Deploying the project in production
  • โ€ฆ

C++ exercises and the last 2 of 3 are invalid

Mentionend by luav:

They are Java code, not C++:
http://progressor.ti.bfh.ch/exercise/99yLgZmvswCof2Kpz (jojavova):
C++ does not have public visibility specifiers for non-member functions and does not have "String" type (std::string can be used).

http://progressor.ti.bfh.ch/exercise/ofDwr7Bhpn5Zx5NxJ (Creditcard is valid)
The same issue with "public". Also C++ does not have "boolean" type (bool should be used).

So the provided mockups can't be compiled. They should be either moved to Java section or fixed.

Translation to French

@vhf, you offered to translate the application to French.
You will have to copy the texts from lib/locales/en.js to lib/locales/fr.js and translate them.
In addition, it would be great if you could also translate server/example-data.js.

I marked all the instances with TODO: translate.

C++ while loop on the blacklist

It is not possible to create exercises with the while() loop, because it is on the blacklist.
As a result of this, the code is not executable.

OpenSourcing Communication

Short action plan regarding open-sourcing:

  • Announce on Twitter Account
  • Make an test Instance where people can play around and which can break if necessary
  • Ask for specific help on topics
  • Manage incoming questions
  • Change "comming soon" in upcoming box on front page with link to GitHub.

Spanish as 4th language?

I learn Spanish right now and got aware that Spanish is the second most spoken language on earth.
Because the multi-language feature is one of the most important advantages over competitors I want to ask how much effort it needs to add a 4th tab for the Spanish translation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.