Automated evaluation of computer programming
First Claim
1. A computer-implemented method comprising:
- establishing multiple con-current programming sessions initiated by a plurality of client computer systems;
receiving a first source code execution request from a first con-current programming session of the multiple con-current programming sessions, the first source code execution request comprising a first instances of source code;
receiving a second source code execution request from a second con-current programming session of the multiple con-current programming sessions, the second source code execution request comprising a second instance of source code;
determining, based at least on load balancing of source code execution requests among a plurality of programming computer servers, to process on a first programming computer server, of the plurality of programming computer servers, the first source code execution request from the first con-current programming session and to process on a second programming computer server, of the plurality of programming computer servers, the second source code execution request from the second con-current programming session;
executing the first instance of source code by the first programming computer server concurrently with executing the second instance of source code by the second programming computer server, wherein, regardless of content of the first instance of source code, the executing the first instance of source code by the first programming computer server can only access a configured set of resources;
monitoring one or more server selectability metrics for the plurality of programming computer servers;
based on the one or more server selectability metrics for the plurality of programming computer servers, determining to deploy a new programming computer server;
deploying the new programming computer server based on an image of a specific programming computer server;
wherein the specific programming computer server has been previously determined to be stable.
2 Assignments
0 Petitions
Accused Products
Abstract
Techniques are described for analysis and evaluation of different computer programs developed by different users to accomplish programming tasks. A computer programming evaluation system provides users with one or more programming tasks and ability to input source code to solve the programming tasks. In an embodiment, using a client computer system, a user initiates a computer programming session with a programming system. As a result of the session, the client computer system is provided with user interface elements allowing the user to view one or more programming tasks and submit to the programming system source code for the one or more programming tasks. In an embodiment, different modes are used by the programming system to evaluate quality of the computer programming performed by a user in terms of accomplishing the programming task. By collecting result metrics from evaluations and comparing with complexity data of the programming tasks, the programming system generates a graph-based quantified knowledge map of computer programming for a user. Non-limiting examples of modes for evaluation of the computer programming include a practice mode, an arcade mode, versus mode, a bot mode and a bot training mode. In an embodiment, to execute source codes in parallel, a programming system may include multiple programming servers. Each programming server is a separate computer system that, in some embodiments, is a cloud computer system allocated from cloud services. Executing different instances of source code on different programming servers improves both the security and scalability of the programming system.
-
Citations
26 Claims
-
1. A computer-implemented method comprising:
-
establishing multiple con-current programming sessions initiated by a plurality of client computer systems; receiving a first source code execution request from a first con-current programming session of the multiple con-current programming sessions, the first source code execution request comprising a first instances of source code; receiving a second source code execution request from a second con-current programming session of the multiple con-current programming sessions, the second source code execution request comprising a second instance of source code; determining, based at least on load balancing of source code execution requests among a plurality of programming computer servers, to process on a first programming computer server, of the plurality of programming computer servers, the first source code execution request from the first con-current programming session and to process on a second programming computer server, of the plurality of programming computer servers, the second source code execution request from the second con-current programming session; executing the first instance of source code by the first programming computer server concurrently with executing the second instance of source code by the second programming computer server, wherein, regardless of content of the first instance of source code, the executing the first instance of source code by the first programming computer server can only access a configured set of resources; monitoring one or more server selectability metrics for the plurality of programming computer servers; based on the one or more server selectability metrics for the plurality of programming computer servers, determining to deploy a new programming computer server; deploying the new programming computer server based on an image of a specific programming computer server; wherein the specific programming computer server has been previously determined to be stable. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computer-implemented method comprising:
-
establishing multiple con-current programming sessions initiated by a plurality of client computer systems; receiving a first source code execution request from a first con-current programming session of the multiple con-current programming sessions, the first source code execution request comprising a first instances of source code; receiving a second source code execution request from a second con-current programming session of the multiple con-current programming sessions, the second source code execution request comprising a second instance of source code; determining, based at least on load balancing of source code execution requests among a plurality of programming computer servers, to process on a first programming computer server, of the plurality of programming computer servers, the first source code execution request from the first con-current programming session and to process on a second programming computer server, of the plurality of programming computer servers, the second source code execution request from the second con-current programming session; executing the first instance of source code by the first programming computer server concurrently with executing the second instance of source code by the second programming computer server, wherein, regardless of content of the first instance of source code, the executing the first instance of source code by the first programming computer server can only access a configured set of resources; maintaining a queue of the source code execution requests to be processed by the plurality of programming computer servers, wherein each entry in the queue is processed in an order of insertion into the queue; after receiving the first source code execution request from the first con-current programming session of the multiple con-current programming sessions, inserting an entry into the queue for the first source code execution request; after receiving the second source code execution request from the second con-current programming session of the multiple con-current programming sessions, inserting an entry into the queue for the second source code execution request. - View Dependent Claims (14, 15, 16, 17)
-
-
18. A server computer system comprising:
-
one or more processors; one or more storage media storing one or more computer programs for execution by the one or more processors, the one or more computer programs comprising a set of instructions for; establishing multiple con-current programming sessions initiated by a plurality of client computer systems; receiving a first source code execution request from a first con-current programming session of the multiple con-current programming sessions, the first source code execution request comprising a first instances of source code; receiving a second source code execution request from a second con-current programming session of the multiple con-current programming sessions, the second source code execution request comprising a second instance of source code; determining, based at least on load balancing of source code execution requests among a plurality of programming computer servers, to process on a first programming computer server, of the plurality of programming computer servers, the first source code execution request from the first con-current programming session and to process on a second programming computer server, of the plurality of programming computer servers, the second source code execution request from the second con-current programming session; executing the first instance of source code by the first programming computer server concurrently with executing the second instance of source code by the second programming computer server, wherein, regardless of content of the first instance of source code, the executing the first instance of source code by the first programming computer server can only access a configured set of resources; monitoring one or more server selectability metrics for the plurality of programming computer servers; based on the one or more server selectability metrics for the plurality of programming computer servers, determining to deploy a new programming computer server; deploying the new programming computer server based on an image of a specific programming computer server; wherein the specific programming computer server has been previously determined to be stable. - View Dependent Claims (19, 20, 21)
-
-
22. A server computer system comprising:
-
one or more processors; one or more storage media storing one or more computer programs for execution by the one or more processors, the one or more computer programs comprising a set of instructions for; establishing multiple con-current programming sessions initiated by a plurality of client computer systems; receiving a first source code execution request from a first con-current programming session of the multiple con-current programming sessions, the first source code execution request comprising a first instances of source code; receiving a second source code execution request from a second con-current programming session of the multiple con-current programming sessions, the second source code execution request comprising a second instance of source code; determining, based at least on load balancing of source code execution requests among a plurality of programming computer servers, to process on a first programming computer server, of the plurality of programming computer servers, the first source code execution request from the first con-current programming session and to process on a second programming computer server, of the plurality of programming computer servers, the second source code execution request from the second con-current programming session; executing the first instance of source code by the first programming computer server concurrently with executing the second instance of source code by the second programming computer server, wherein, regardless of content of the first instance of source code, the executing the first instance of source code by the first programming computer server can only access a configured set of resources; maintaining a queue of the source code execution requests to be processed by the plurality of programming computer servers, wherein each entry in the queue is processed in an order of insertion into the queue; after receiving the first source code execution request from the first con-current programming session of the multiple con-current programming sessions, inserting an entry into the queue for the first source code execution request; after receiving the second source code execution request from the second con-current programming session of the multiple con-current programming sessions, inserting an entry into the queue for the second source code execution request. - View Dependent Claims (23, 24, 25, 26)
-
Specification