liquidlemon / sztos Goto Github PK
View Code? Open in Web Editor NEWDistributed online judging system for algorithmic problems
Distributed online judging system for algorithmic problems
Course, Problem, TestCase - user (teacher) should be able to create, update and delete instances of these models.
Privileged users should be able to prepare a summary for the purpose of grading. Such summaries should be available for each course, grouped by class.
Worker logs should be enough to enable debugging problems with the platform.
Grading should take into account whether the program finished in the required time.
It should also be possible to assign different weight to test cases within one solution.
Instead of using the single textarea
in the solution submission form the users should instead have a way to upload multiple files from their filesystem. Those files should then be stored in object storage (MinIO).
Compilation and test runs should be limited in terms of
The most robust solution we can easily achieve would use a combination of Docker containers and bubblewrap.
User should be able to navigate through website, this includes login/logout and problem views.
Django has a special abstraction for creating forms (both arbitrary and tied to specific models). When the number of forms in our application grows I'm sure this would simplify our codebase. I think we should use them wherever possible.
This also means refactoring the existing code that deals with forms.
Users should be able to easily download all of the files in their solution in a single archive.
Each problem should have at least one test case which contains input data and the expected output data.
Multiple users should be able to use the platform. For the time being, we don't need to have any UI for signing up but we should have one for logging in. Each user should have their own, independently tracked, solutions.
There should be two types of users - Teacher and Student, with different privileges.
Problems should be grouped into courses.
The code should be organized in such a way that adding additional execution environments is easy. As a proof of concept make it possible to solve problems in both C++ and Python.
After #22 is done we can start styling the website. The simplest way would be to use a CSS framework such as Bootstrap or Semantic UI (those two are just suggestions).
Problem description and user submissions with their state should be grouped in a single view. Neither takes up much space (we will have a separate view to display full solution sources in the future) and it simplifies the user experience.
Find out how to reduce duplication in templates to enable building a more complex layout.
When a solution is submitted a task should be launched which will check whether it's valid (e.g. checking whether it's the same as the length of the problem description as a PoC). It's state and validity should then be updated in the DB.
The initial proof of concept should follow the general flow described in #5 but it doesn't have to use containers or other safety features.
Teacher should be able to view specific student's solution source code.
After performing a single test the results (stdout, stderr, time, exit code) should be saved to the database.
The easiest way to add many users is to provide a list of their index numbers.
While solution is being processed the UI should reflect that and periodically poll the server for changes. This should be done on a per test case basis.
Show solution sources in a dedicated view. It should also be possible to download an archive containing all the sources.
Add suitable UI elements to newly created features
Privileged users (e.g. teaching assistants) should be able to modify unprivileged accounts through a special interface. This interface should allow them to modify the account passwords as well as assign users to classes. Each class should have its own list of available courses.
Solution's source code should be located in a separate view.
Either HTML or Markdown. Adding images is more difficult and low priority.
Users (specifically Teachers) should be able to create new Courses and Problems.
Adding breadcrumbs would be a good way to make navigation easier
Users should be able to create an account and log into it.
Users should be able to submit solutions to existing problems. For the time being the solution can be just arbitrary text, we'll use it for character count or something similar in the PoC.
Preferably available as both HTML and CSV.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.