[ca] Jutge.org (també anomenat "el Jutge") és una plataforma web per a la docència d'assignatures de programació. Els usuaris registrats com a professorat en aquesta plataforma hi pengen problemes per tal que el seu estudiantat els resolgui mitjançant programes, que el servei avalua compilant-los i executant-los tot aplicant-los-hi els jocs de prova que el creador del problema hi ha assignat. El Jutge és una eina útil per a l'ensenyament i es fa servir, amb un èxit notable, en moltes assignatures de programació a la UPC (a classes i exàmens de laboratori) i a diversos concursos de programació. L'arquitectura de Jutge.org es basa en un servidor web, vinculat a un servidor que gestiona una cua d'enviaments a corregir i diversos servidors de correcció. Anomenem "mòdul de correcció" al conjunt format pels servidors de correcció i el servidor de cua. El mòdul de correcció actual té diversos problemes que requereixen atenció: no hi ha mecanismes de gestió o administració del servei (detecció de servidors en funcionament, encesa o aturada de servidors, estadístiques, etc.), el servei no permet la comunicació amb l'usuari, tots els servidors estan sempre en funcionament independentment de la demanda (aquesta varia molt intensament) i el servei utilitza un llenguatge de programació lent i mal dissenyat (PHP). Aquest treball pretén construir un nou mòdul de correcció que no es limiti a resoldre les problemàtiques indicades, sinó que compleixi uns requeriments addicionals respecte al seu funcionament. D'una banda, ha de permetre controlar el funcionament dels servidors, adaptar la quantitat de servidors a la demanda i ser eficient, robust i segur. De l'altra, cal que les tasques a executar puguin tenir una prioritat i incloure fitxers, que les correccions es puguin fer en ordinadors externs al Jutge i que el temps d'execució dels enviaments no experimenti variacions d'entitat. Aquest projecte ha estat desenvolupat en un llenguatge de programació modern i preparat per a la concurrència: Go. Tanmateix, ha estat necessari escriure molt de codi i programar amb molta cura, atès que el mòdul treballa a baix nivell i els sistemes concurrents requereixen una atenció particular del programador. El resultat de la nostra feina és un mòdul de correcció que funciona correctament en termes generals, tot i que encara té algunes mancances i no arriba a assolir la totalitat dels requeriments establerts. Creiem que aquestes mancances es poden abordar sense problemes significatius en un futur proper.

[en] Jutge.org (also called "el Jutge" or "the Judge") is a web platform for the teaching of programming subjects. The users registered in this platform as professors can upload problems so that their students solve them by way of programs, which the service evaluates by compiling them and executing them by applying the test cases that the problem setter has assigned to the problem. The Judge is a useful tool for teaching and is used, with great success, in many programming subjects at UPC (in laboratory classes and exams) and at many programming contests. The architecture of Jutge.org is based upon a web server linked to a server which manages a queue of to-be-graded submissions and a few correction servers. We call the set of the correction servers and the queue server a "correction module". The current correction module has various problems which require attention: there are no management and administration mechanisms (detection of working servers, server startup and shutdown, statistics, etc.), the service does not allow for communicating with users, all servers are always running regardless of demand (which varies very intensively) and the service uses a slow, badly-designed programming language (PHP). This work aims to build a new correction module which does not limit itself to solving the stated issues, but instead complies with some additional requirements with regards to the way it operates. On the one hand, it must allow controlling the operation of the servers, adapt the amount of servers to the demand, and be efficient, robust, safe, and secure. On the other hand, it is necessary that tasks to be executed can have a priority and include files, that grading can be performed in computers outside the Jutge and that the execution time of submissions does not experience significant variation. This project has been developed in a modern, ready-for-concurrency programming language: Go. Nevertheless, it has been necessary to write large amounts of code and take much care while programming, as the module works at a low level and concurrent systems require particular attention from the programmer. The result of our work is a correction module that functions correctly in general, even though it still has a number of minor shortcomings and does not manage to meet the entirety of established requirements. It is to be expected that these shortcomings can be addressed without significant troubles in the near future.