Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Crozzfire

Revision as of 14:06, 26 March 2009 by Da.comp.guy.gmail.com (Talk | contribs) (Gsoc Project Desc)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Project Description:

Title

Online Judge plugin to ECF

Abstract

Online judges are getting a lot of acceptance and response worldwide these days. Primarily, An Online judge is something which'll accept a piece of code (sent Online), compile and execute it and run it against a set of test cases to verify the correctness of the program. The result will be notified back to the client along with full details of the execution. Not only this, but an Online Judge also calculates other details such as Memory taken, Time of execution, Size of the Source code and so on. These judges are mostly used for conducting programming matches among a group of passionate people. But it can still be tweaked to do a lot of other stuffs. An online Judge can be used in a classrooms and make programming more exciting. It can be also use to teach basic programming concepts and carefully modified for it. In addition to this, the online judge is implemented in a group chat environment (On xmpp:jabber servers + gtalk integration). This would enhance the interaction and further increase the excitement. This project will add an Online Judge feature to ECF. Any one in the world can host an online competition/ programming session/ share codes online etc. Every code submission will be logged and necessary details will be E-mailed to the person.

Detailed Description

"Client" here would refer to the contestants and students . "Server" here would refer to the person hosting the Judge .

  • First of all the communication will be totally centralized on jabber servers. The basic idea is pretty simple: The person hosting the judge will add the clients to his/her list. The code submitted by the client will be run on the judge's machine. (The interface will be definitely attractive and easy to use).
  • Stress will be laid on the Interface so that people can submit codes while chatting with the group at the same time. This would certainly increase interaction and enthusiasm.
  • Group chat can be easily accomplished by existing API of ECF. Hence not much of time will be required to accomplish this task.
  • Working on the Judge Engine will be the major part. The code retrieved will be compiled and executed first. Multiple languages will be supported.
  • To start of with: C, C++ and Java codes can be submitted. To compile C/C++ codes: GCC(for Linux) or MinGW(for Windows) will be required. Java compilation will require JVM to be installed in the server machine.
  • The server will also have an option to log all the information for every code submissions. This would enable the users to check their history of submissions and details. A rank list will be maintained in case if its a programming contest. MYSQL can be used (connected via JDBC) to accomplish this task.
  • Emails will be sent to each client automatically after each code submission. The Email would include the source code, the result, Errors if any, Time of Execution, Memory taken etc.
  • File download feature will also be added to help the clients during a programming session/match.

Basic Architecture Diagram

Future Extendability

In future this Judge can be turned into a full features virtual classroom with the following features:

  • Voice and Video Support
  • Optimized Streaming live Desktop of the server
  • Online Library support
  • Database support to store information related to the student
  • Other Web Based tools etc.

Experience in this Field

I, along with a passionate group of friends, have already created a totally stable online judge (from scratch) for our University. This was a web based project and we have successfully completed it by using Java server pages, Apache Tomcat 5.5 Web server/servlet container, MySQL database server. Though it is used to host only local competitions at the moment, in a short period of time it'll be hosted on the web. Current supported languages are C and C++ (using GCC) on a linux server. Snapshots of the webpages are attached below:

Back to the top