Uso de WebAssembly para proporcionar pistas ligeras en jueces en línea

Impacto

Downloads

Downloads per month over past year



De Andrés Alonso, Adrián and Benavente Romero, Raúl (2021) Uso de WebAssembly para proporcionar pistas ligeras en jueces en línea. [Trabajo Fin de Grado]

[thumbnail of DE ANDRÉS ALONSO 83217_ADRIAN_DE_ANDRES_ALONSO_TFG_Pistas_ligeras_WebAssembly_1006096_1982309597.pdf]
Preview
PDF
Creative Commons Attribution Non-commercial.

2MB



Abstract

Este proyecto trata de la integración de WebAssembly en un juez en línea. El motivo por el cual creímos necesaria dicha integración es reducir la carga de trabajo en el servidor, de manera que si un ejercicio no devuelve la salida esperada a ciertos casos básicos de prueba, no se envía al servidor. WebAssembly permite compilar archivos C, C++ y Rust y correrlos en el lado del cliente. Esto lo hace gracias a unas APIs de JavaScript, mediante las cuales puedes compartir funcionalidad entre JavaScript y WebAssembly. En resumidas palabras, permite compilar y ejecutar código C, C++ y Rust en el navegador. Ya que muchos jueces en línea tienen ejercicios para ser realizados en C/C++, WebAssembly nos ofrecía una posibilidad para comprobar la corrección básica de un ejercicio en el lado del cliente, esto es, antes de subirlo al servidor del juez en línea. De esta forma, se podría hacer que aquellos archivos C/C++ que no pasen los casos de prueba básicos no lleguen al servidor.
En este proyecto vamos a aplicar la tecnología WebAssembly sobre el juez online ya existente DOMjudge, el cual es utilizado en algunas asignaturas de este grado. Para ello, previamente hemos creado una simulación local de dicho juez en la que corroboramos la posibilidad de implementarlo en jueces en línea.
El proyecto está realizado en Linux, ya que es el sistema operativo necesario para instalar DOMjudge.
Todo el trabajo realizado se encuentra en: https://github.com/raubenav/DOMjudge-WebAssembly

Resumen (otros idiomas)

This project is about integrating WebAssembly into an online judge. The reason why we believe such integration is necessary is to reduce the workload on the server, so if an exercise does not retur the output expected to certain basic, it is not send to the server cases. WebAssembly allows you to compile C, C ++ and Rust files and run them on the client side. This is made thanks to JavaScript APIs, through which you can share functionality between JavaScript and WebAssembly. In short, it allows you to compile and run C,C ++ and Rust code in the browser. Since many online judges have exercises to be performed in C/C++, WebAssembly offered us a possibility to check the basic correctness of an exercise on the client side, that is, before uploading it to the online judge’s server. In this way, C/C++ files that fail the basic samples could be prevented from reaching the server. In this project we are going to apply theWebAssembly technology on the existing online judge DOMjudge, which is used in some subjects of this degree. To do this, we have previously created a local simulation of said judge in which we corroborate the possibility of implementing it in online judges. The project it’s made on Linux, because it’s the required operative system to install DOMjudge All project’s work can be accessed from: https://github.com/raubenav/DOMjudge-WebAssembly

Item Type:Trabajo Fin de Grado
Additional Information:

Trabajo de Fin de Grado en Ingeniería del Software, Facultad de Informática UCM, Departamento de Ingeniería del Software e Inteligencia Artificial, Curso 2020-2021.

Directors:
Directors
Gómez Martín, Pedro Pablo
Gómez Martín, Marco Antonio
Uncontrolled Keywords:Juez en línea, WebAssembly, Cliente, Servidor, DOMJudge, Compilar, JavaScript, jQuery, Emscripten.
Palabras clave (otros idiomas):Online judge, WebAssembly, Client, Server, DOMJudge, Compile, JavaScript, jQuery, Emscripten.
Subjects:Sciences > Computer science
Título de Grado:Grado en Ingeniería del Software
ID Code:68338
Deposited On:05 Nov 2021 16:55
Last Modified:05 Nov 2021 16:55

Origin of downloads

Repository Staff Only: item control page