SPOJ (Sphere Online Judge) is an online judge system with over 315,000 registered users and over 20,000 problems. Tasks are prepared by its community of problem setters or are taken from previous programming contests. SPOJ allows advanced users to organize contests under their own rules and also includes a forum where programmers can discuss how to solve a particular problem.
Apart from the English language, SPOJ also offers its content in Polish, Portuguese and Vietnamese languages. The solution to problems can be submitted in over 40 programming languages, including esoteric ones, via the Sphere Engine. It is run by the Polish company Sphere Research Labs. [1]
The website is considered both an automated evaluator of user-submitted programs as well as an online learning platform to help people understand and solve computational tasks. [2] It also allows students to compare paradigms and approaches with a wide variety of languages.
This system was originally created to apply an online judge in the teaching of students. It basically focused on the students and lecturers of universities and members of a wider programming community, interested in algorithms and programming contests.
It aimed at different users for different purposes such as: [3]
The archived problems in SPOJ are divided in 5 categories: [4]
There may be limitations on submissions to make a problem more challenging. This includes the availability of languages (e.g. only esoteric languages) and computation time.
Submissions are judged on one cluster: [5]
Programs are checked either by comparison to a known correct answer or by running a dedicated judging code, unique to each problem. [2] This is increasingly necessary when there may be multiple answers in more complex problems. By using a computer, the marking is consistent, fair and can measure efficiency in real time, in comparison to human judging.
To ensure that the system runs effectively, the Linux commands RLIMIT_CPU stops poorly designed tests from affecting others. The chroot() system call applies restrictions to the running of programs by using file system sandboxes: the sleep() command, for example, is not permitted, as it would reduce the available memory.
The accessible, free and objective nature of the website allow students to gain logical and design experience based on previous successes. However, the system doesn't evaluate code quality, documentation or other more subjective characteristics which may be more important for real world applications.
After being submitted, a user is told whether the code produced an error while running or compiling; the time limit was exceeded; the wrong answer was output or was correct. Challenge problems' answers are accompanied by a score (see below).
The scores are given based on the category in which problems are divided. [6]
Scores for the 'challenge' category are typically the size of the submission in bytes, though may different. For example, it may be the number of correct decimal places of the constant π.
Note: SPOJ frequently change the formulae used for calculating the scores
SPOJ is used as a platform for a wide array of competitions, from local to international level and from short 1 hour problems to year-long leagues. Participants typically speak different languages so site ensures a more level playing field, as well as reducing the work load of the organisers. [2]
Users of online judge systems have little incentive for documentation and creating well-structured code, possibly making them less prepared for more typical applications of computing outside of competitions. [2]
Results of a study conducted at Gdańsk University of Technology [2] suggest that deadlines given in university situations, including bonus and penalty points depending on when an assignment is handed in, tend to be harsh on students who are not well organised, even if the same code is submitted. This has mixed motivational effects on students, encouraging some to keep up with deadlines, while demotivating others. The same study indicates that use of online judge systems lead to a reduction in communication between students and staff. However, in the case of staff with high teaching load, this reduction may allow staff to devote more of their time to students with difficulties, eliminating administrative overheads related to grading and time spent on discussions with students who do not need assistance.
SPOJ supports about 60 languages in which the users can submit their solutions. These include:
Ada, Assembler, AWK, Bash, Brainfuck, C, C++ and C99 strict, C#, Clojure, Common Lisp, D, Doc(no testing), Erlang, Fortran, F#, Go, Haskell, Icon, Intercal, Jar, Java, JavaScript, Lisp, Lua, Nemerle, Nice, Node.js, OCaml, Pascal, Pdf, Perl, PHP, Pike, PostScript, Prolog, Python, Ruby, Rust, Scala, Scheme, sed, Smalltalk, Tcl, Tecs, Text, and Whitespace.
A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. Distributed computing is a field of computer science that studies distributed systems.
The International Olympiad in Informatics (IOI) is an annual competitive programming and one of the International Science Olympiads for secondary school students. It is the second largest science olympiad, after International Mathematical Olympiad, in terms of number of participating countries. The first IOI was held in 1989 in Pravetz, Bulgaria.
Backtracking is a class of algorithms for finding solutions to some computational problems, notably constraint satisfaction problems, that incrementally builds candidates to the solutions, and abandons a candidate ("backtracks") as soon as it determines that the candidate cannot possibly be completed to a valid solution.
Topcoder is a crowdsourcing company with an open global community of designers, developers, data scientists, and competitive programmers. Topcoder pays community members for their work on the projects and sells community services to corporate, mid-size, and small-business clients. Topcoder also organizes the annual Topcoder Open tournament and a series of smaller regional events.
The Canadian Computing Competition (CCC) is an annual programming competition for secondary school students in Canada, organized by the Centre for Education in Mathematics and Computing at the University of Waterloo. Stage 1 is written at high schools and can be written in the programming language of the students' choice, with only a few, such as Maple and Mathematica, disallowed. There are two levels of problems presented, Junior and Senior. The top 20 students in the Senior division are invited to the University of Waterloo to participate in Stage 2, the Canadian Computing Olympiad (CCO). CCO participants are restricted to languages permitted at the IOI, which currently includes only Java, C and C++.. The CCO is used to select students to represent Canada at the IOI.
The United States of America Computing Olympiad (USACO) is an online computer programming competition, which serves as qualification for the International Olympiad in Informatics (IOI) in the United States of America. Primarily for secondary school students in the United States, the USACO offers four competitions during the academic year. Participants compete in four increasingly difficult divisions, each of which is provided a distinct set of 3 solvable competitive programming problems during each contest. Coding & submitting computer programs can be done in one of four languages: C, C++, Java, and Python. Competitors begin in the Bronze division, and advance through the levels by performing well in their current division.
The Centre for Education in Mathematics and Computing (CEMC) is a Canadian educational organization dedicated to promoting and creating activities and materials in mathematics and computer science. Founded in 1995 with origins dating back to the 1960s, it is housed within the Faculty of Mathematics at the University of Waterloo. It runs off of funding from the University of Waterloo, Deloitte, the Bill and Melinda Gates Foundation, and other individual donors. Its mission is to increase interest, enjoyment, confidence, and ability in mathematics and computer science among learners and educators.
CrypTool is an open-source project that is a free e-learning software for illustrating cryptographic and cryptanalytic concepts. According to "Hakin9", CrypTool is worldwide the most widespread e-learning software in the field of cryptology.
PC² is the Programming Contest Control System developed at California State University, Sacramento in support of Computer Programming Contest activities of the ACM, and in particular the ACM International Collegiate Programming Contest. It was used to conduct the ACM ICPC World Finals in 1990 and from 1994 through 2009. In 2010, the ACM ICPC World Finals switched to using Kattis, the KTH automated teaching tool; however, PC2 continues to be used for a large number of ICPC Regional Contests around the world.
Crowdsourcing involves a large group of dispersed participants contributing or producing goods or services—including ideas, votes, micro-tasks, and finances—for payment or as volunteers. Contemporary crowdsourcing often involves digital platforms to attract and divide work between participants to achieve a cumulative result. Crowdsourcing is not limited to online activity, however, and there are various historical examples of crowdsourcing. The word crowdsourcing is a portmanteau of "crowd" and "outsourcing". In contrast to outsourcing, crowdsourcing usually involves less specific and more public groups of participants.
The Texas Advanced Computing Center (TACC) at the University of Texas at Austin, United States, is an advanced computing research center that provides comprehensive advanced computing resources and support services to researchers in Texas and across the US. The mission of TACC is to enable discoveries that advance science and society through the application of advanced computing technologies. Specializing in high performance computing, scientific visualization, data analysis & storage systems, software, research & development and portal interfaces, TACC deploys and operates advanced computational infrastructure to enable computational research activities of faculty, staff, and students of UT Austin. TACC also provides consulting, technical documentation, and training to support researchers who use these resources. TACC staff members conduct research and development in applications and algorithms, computing systems design/architecture, and programming tools and environments.
In mathematical optimization and computer science, heuristic is a technique designed for solving a problem more quickly when classic methods are too slow for finding an approximate solution, or when classic methods fail to find any exact solution. This is achieved by trading optimality, completeness, accuracy, or precision for speed. In a way, it can be considered a shortcut.
Natural-language user interface is a type of computer human interface where linguistic phenomena such as verbs, phrases and clauses act as UI controls for creating, selecting and modifying data in software applications.
UVa Online Judge is an online automated judge for programming problems hosted by University of Valladolid. Its problem archive has over 4300 problems and user registration is open to everyone. There are currently over 100000 registered users. A user may submit a solution in ANSI C (C89), C++ (C++98), Pascal, Java, C++11 or Python. Originally it began without the last three options, but the Java option was added in 2001, the C++11 option was added in 2014, then the Python option was added in 2016.
Competitive programming is a mind sport usually held over the Internet or a local network, involving participants trying to program according to provided specifications. Contestants are referred to as sport programmers. Competitive programming is recognized and supported by several multinational software and Internet companies, such as Google and Facebook.
Benelux Algorithm Programming Contest (BAPC) is a programming contest for students from Belgium, the Netherlands, and Luxembourg. It is organized annually by an institution of higher education. From 1991 through 2004, the contest was held under the name NKP.
GPI-Space is a parallel programming development software, developed by the Fraunhofer Institute for Industrial Mathematics (ITWM). The main concept behind the software is separation of domain and HPC knowledge and leaving each part to the respective experts while the GPI-Space as framework integrates both parts together.
HackerRank is a technology company that focuses on competitive programming challenges for both consumers and businesses. Developers compete by writing programs according to provided specifications. HackerRank's programming challenges can be solved in a variety of programming languages and span multiple computer science domains.
Topcoder Open (TCO) is an annual design, software development, data science and competitive programming championship, organized by Topcoder, and hosted in different venues around US. In the first two years, 2001 and 2002, the tournament was titled TopCoder Invitational.
Codeforces is a website that hosts competitive programming contests. It is maintained by a group of competitive programmers from ITMO University led by Mikhail Mirzayanov. Since 2013, Codeforces claims to surpass Topcoder in terms of active contestants. As of 2018, it has over 600,000 registered users. Codeforces along with other similar websites are used by top sport programmers like Gennady Korotkevich, Petr Mitrichev, Benjamin Qi and Makoto Soejima, and by other programmers interested in furthering their careers.