J
J
javenue2011-03-08 15:36:33
Programming
javenue, 2011-03-08 15:36:33

Solving programming problems on-line. Options

I would like to add to one resource the ability to solve programming problems, for example, as on Timus. The web application itself is written in Java, the whole thing is hosted under Ubuntu.

The problem is that there are other applications on the server, including commercial ones. Therefore, the option of launching the submitted solutions in separate processes is not suitable. In addition, there will be a rather serious restriction on programming languages, which we would not like.

We see such a solution to the problem: create simple desktop applications for the main operating systems (or write one cross-platform one) that will be able to launch processes locally, collect the received data and communicate with the server. That is, a person downloads the program and gets the opportunity to solve problems in almost any programming language.

Actually questions:
1. How would you feel about the need to download some software and run it at home? It is assumed that the site is in principle trusted and information about the site developers is open.
2. Maybe you have other ideas for organizing the process of solving problems and checking the results.

Thanks in advance for your answers.

Answer the question

In order to leave comments, you need to log in

5 answer(s)
B
burdakovd, 2011-03-08
@javenue

Running solutions locally, in addition to distrusting third-party software on the part of the user, does not give control on your part.
The participant will be able to open the checker sent to him and see the tests. Or in general, having disassembled the protocol, send the result “Everything is OK” to the server, without even solving the task.
Options:
Host tasks on specialized sites like TopCoder or SPOJ , etc. Many of them allow you to create private task sets.
The second option is to do it like in Google Code Jam. There is nothing running on the server. When the time comes to pass, the server provides the participant with a test set, the participant runs his program on these tests, and sends the results of the work to the server.

V
Vlad Frolov, 2011-03-08
@frol

In my opinion, the problem is that the participants will have access to the input. There are also usually limits on time and memory, then, depending on the performance of the participant's computer, one and the same implementation can be included in these restrictions and not included. The memory limit is also not clear how to control it.

J
Jazzist, 2011-03-08
@Jazzist

I don't understand, sorry.

J
javenue, 2011-03-08
@javenue

Thanks for the comments.
>> In my opinion, the problem is that the participants will have access to the input.
>> The participant will be able to open the checker sent to him and see the tests. Or in general, having disassembled the protocol, send the result “Everything is OK” to the server, without even solving the task.
Probably access to the tests is not so critical. And about “everything is OK” - naturally, the results will be checked on the server side. Although yes, there is little control, especially on memory and runtime.
>> The second option is to do it like in Google Code Jam.
Good option, thanks.
Another reason why I would like to make a desktop application. You can ask trusted users to act as a "server" to run other people's tasks. That is, they write that they say there are such and such compilers / interpreters on their system, they run a program that periodically pings the server for the presence of other people's solutions in the queue. If there is a solution, the program pulls it out with a set of tests (and maybe even with the correct results), executes it, measures time, memory, and so on.

P
Puma Thailand, 2011-03-08
@opium

In the world of web 2.0, this is suicide, make virtualization, at least openvz and drive everything there.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question