| Containers module | Problems module | Compilers module | |
|---|---|---|---|
| All-round source code execution and skill assessment solution, capable of running any software stack in real-life scenarios | Skills assessment component, perfect for testing algorithmic skills in server-side programming languages and where accurate execution time measurement is required | Robust source code execution module with accurate execution time measurement | |
| 
                            Is it good for: assessing programming skills? in education, recruitment, e-learning, onboarding, and competitive programming  | 
                        Yes | Yes | No | 
| 
                            Is it good for: executing source code? in interactive tutorials, coding playgrounds, and interactive documentation  | 
                        Yes | No | Yes | 
| Source code executed in a safe run-time environment (sandbox) | Yes | Yes | Yes | 
| 
                            High scalability for large events and traffic peaks  | 
                        Yes | Yes | Yes | 
| Supported technologies | |||
| 
                            server-side/classical programming languages Python, Java, C#, C++ and others  | 
                        Yes | Yes | Yes | 
| 
                            front-end technologies JavaScript, React, HTML, CSS, and others  | 
                        Yes | No | No | 
| 
                            multi-stack applications, e.g., Node.js+React+MySQL  | 
                        Yes | No | No | 
| 
                            data science and machine learning Pandas, TensorFlow, Jupyter Notebook, etc.  | 
                        Yes | No | No | 
| 
                            mobile technologies Flutter, React Native, and others  | 
                        Yes | No | No | 
| 
                            databases MySQL, MongoDB, etc.  | 
                        Yes | Yes (SQLite) | Yes (SQLite) | 
| 
                            tools, e.g., git  | 
                        Yes | No | No | 
| Managing technologies / programming languages | You control what technologies, dependencies, libraries, etc. are included in your project. | Programming languages are managed by the Sphere Engine Team. We can add or update languages and libraries on your request. | Programming languages are managed by the Sphere Engine Team. We can add or update languages and libraries on your request. | 
| How many technologies / programming languages are supported? | Unlimited. You can install any technology you need. Each project may contain different libraries and frameworks. | 80+. List of all supported programming languages: https://sphere-engine.com/supported-languages | 80+. List of all supported programming languages: https://sphere-engine.com/supported-languages | 
| Example content | Yes, multiple projects for dozens of technologies | Yes, multiple programming challenges, each compatible with all supported programming languages | Yes, example programs with I/O processing | 
| 
                            Is content cross-language compatible? i.e., is it possible to execute submissions written in different programming languages in the context of the same project / programming challenge?  | 
                        No. Projects are typically designed for specific technology stacks. | Yes. By default, all programming challenges can be used with any of the supported programming languages | - | 
| Content Management System | Yes (for managing projects) | Yes (for managing programming challenges / problems) | - | 
| General features | |||
| 
                            Skill assessment / execution evaluation built-in features for testing programming skills  | 
                        Yes | Yes | No | 
| Batch (non-interactive) execution | 
                            Yes via API and in the Workspace (Online IDE)  | 
                        
                            Yes via API and in web widgets  | 
                        
                            Yes via API and in web widgets  | 
                    
| 
                            Interactive execution, i.e., when the end-user can interact with the executed application via web browser, command line, etc.  | 
                        
                            Yes in the Workspace (Online IDE)  | 
                        No | No | 
| 
                            Internet access does the executed application have access to the Internet  | 
                        Yes (can be disabled) | No | No | 
| Cost efficiency | High to very high | Very high | Very high | 
| Accuracy of the execution time measurement | Normal | High | High | 
| Multi-file submissions | Yes (API and Workspace) | Yes (API) | Yes (API) | 
| Multi-file content (projects / programming challenges) | 
                            Yes  2 GB per project or more upon request  | 
                        
                            Yes  20 MB per programming challenge (not counting in test cases)  | 
                        - | 
| Integration | |||
| Integration via RESTful API | Yes | Yes | Yes | 
| Integration via web widget (with ready out-of-the-box end-user UI) | 
                            Yes via workspaces: fully customizable online IDE supporting web, desktop, mobile and interactive applications  | 
                        
                            Yes via configurable widgets with built-in programming skills verification  | 
                        
                            Yes via configurable widgets with a coding playground  | 
                    
| JavaScript SDK for the web widget | Yes | Yes | Yes | 
| 
                            Content management via API API for managing projects (the Containers module) and programming challenges (the Problems module)  | 
                        Yes (coming soon) | Yes | - | 
| Webhooks | Yes | Yes | Yes | 
| Detailed execution workflow | |||
| Key concepts | 
                            
 
 
  | 
                        
                            
  | 
                        
                            
  | 
                    
| Execution workflow: batch (non-interactive) mode | 
                            
  | 
                        
                            
  | 
                        
                            
  | 
                    
| Execution workflow: interactive mode | 
                            
  | 
                        - | - | 
| Skill assessment / execution evaluation logic | 
                            The evaluation logic can be defined in the optional `test` stage.
                            The Containers module supports multiple types of evaluation logic and comes with
                            built-in tools supporting the content manager in implementing the testing process.
                            The most common evaluation scenarios are
                            
  | 
                        
                            The Problems module uses I/O-based evaluation. The evaluation is performed in two steps:
                            
  | 
                        
                             The Compilers module is designed for simple and robust source code execution and has no built-in skill assessment features. Suppose you're switching from your in-house compilator/checker, and you have evaluation logic already implemented in your system. In that case, you can use the Compilers module as a backend for executing end-users' source code. Note, however, that you will need to send input data and download output generated by the end-user's program individually for each submission. This can have an impact on the end-user's experience. For programming challenges with a large number of test cases or with large I/O data, we recommend using the Problems or Containers modules.  | 
                    
| Output | 
                            Customizable:
                            
  | 
                        
                            
  | 
                        
                            
  |