Challenge Overview
Project Overview
TopCoder Competition Engine is a system used for Single Round Matches (SRM) and Marathon Matches (MM).
Originally, the TopCoder Competition Engine is only support five languages, C++, Java, Python, C# and VB.NET.
Recently, we have successfully added support for R Language.
We'd like to explore to use mono as platform for .NET related languages in a series of contests.
Competition Task Overview
This contest is going to add support for compilation of C# with Mono, Let's name it as Mono C#.
Mono Installation
beside the standard Arena VM, each competitor will be assigned a separate CentOS 64bit VM to install and setup Mono.
You can follow guide at http://www.mono-project.com/docs/getting-started/install/linux/ or compilation from source, please install the latest Mono version 3.8.0.
Please provide clear guide in your submission, so reviewers can follow it easily.
C# Compilation Porting
The support of Mono C# is going to replacing the C# in .NET framework, but this challenge will add it as new language, please investigate the standard procedure for C# compilation, and implement the similar functionality in Mono C#.
MPSQAS Client UpdateIn order to support for arena applet for algorithm and Marathon Match Web interface, there are other places to change, but for this contest, these are out of scope.
For this challenge, you just need to make the compilation support in MPSQAS Client, only for SRM (Individual Problem).
In the Solution tab, add an option Mono C# in the dropdown list, and make the Compile button work.
you'd better demonstrate various cases (valid and invalid) for compilation and success/error messages.
Verification
The SRM Problem Guide is provided in forum for your reference.
Reference
The following classes are related to code compilation.
- dev\app\src\main\com\topcoder\server\ejb\MPSQASServices\MPSQASServicesBean.java
- dev\app\src\main\com\topcoder\server\farm\compiler\CompilerInvoker.java
- dev\app\src\main\com\topcoder\services\compiler\invoke\CodeCompiler.java
- dev\app\src\main\com\topcoder\services\compiler\invoke\CPPCodeCompiler.java
- dev\app\src\main\com\topcoder\services\compiler\invoke\PythonCodeCompiler.java
- dev\app\src\main\com\topcoder\services\compiler\invoke\DotNetCodeCompiler.java
- dev\app\src\main\com\topcoder\services\compiler\invoke\JavaCodeCompiler.java
Winner Responsibility
Winner will be responsible to create pull request in final fix phase, and help with the merge.
About Code Base
For the code under /home/apps/dev directory, some are hosted in internal svn repositories, some are hosted in private repositories in github.
You can check Source Code Management For TopCoder Competition Engine - TopCoder Wiki
For SVN Access, please send request to support@topcoder.com, For github access, please post your github account in forum to ask PM to grant you access.
Arena VM Usage
Before asking your own VM, you need to have a public key on your profile before asking for the VM.
You can find more details on how to generate a key http://apps.topcoder.com/wiki/display/projects/Generate+SSH+Key and how to connect using it http://apps.topcoder.com/wiki/display/projects/Connect+Using+SSH+Key.
Please reference http://apps.topcoder.com/wiki/display/docs/Competition+Engine+VM+Setup for general usage.
Previously, we have made several update for the Arena VM. So when the Arena VM allocated is available for you, there is a problem and a SRM contest already setup, you can reuse that for testing.
Final Submission Guidelines
Submission Deliverables
Below is an overview of the deliverables:
- Code changes for support compilation of C# language with Mono.
- Sample Code for valid and invalid cases.
- Detailed deployment guide for environment setup and functionality verification.
- Working VM environment for verification.
Final Submission
For each member, the final submission should be uploaded to the Online Review Tool.