Crear un proyecto de programación con carpetas y muchos archivos, en el navegador

Los programas reales no son un solo archivo. Un paquete de Python con un módulo de utilidades, un proyecto de Java repartido en clases y paquetes, una aplicación de Node con una carpeta lib y una carpeta de datos al lado: una tarea de código puede ser cualquiera de ellos, escrito y ejecutado por completo en el navegador, sin instalar nada en el ordenador del centro.

Cada alumno recibe su propia copia del proyecto entero, ve el mismo árbol de archivos que escribiste y lo ejecuta con el mismo botón «Ejecutar» que un ejercicio de un solo archivo. Las pruebas ocultas, la calificación, la entrega y lo demás funcionan exactamente igual que con un solo archivo.

El árbol de archivos

Los archivos de una tarea de código forman un árbol junto al editor. «Nuevo archivo» y «Nueva carpeta» crean uno, «Subir» trae archivos de texto de tu ordenador y «Renombrar o mover» admite una ruta completa, de modo que escribir lib/helpers.py pone el archivo en una carpeta llamada lib. Cada archivo se abre en su propio lenguaje: README.md en Markdown, un .csv como texto sin formato y helpers.py en Python.

«Quitar» quita un archivo al momento, con «Deshacer» al lado durante unos segundos. Una carpeta existe mientras tenga algún archivo, así que una carpeta nueva empieza con su primer archivo. En el árbol, las flechas recorren los archivos y abren y cierran las carpetas, Intro abre un archivo, F2 le cambia el nombre y Supr lo quita.

  1. Abre la tarea en su editor. Cualquier tarea de código: Python, Java, Go, JavaScript o TypeScript con Node, Bash y los demás lenguajes de programación.
  2. Añade archivos y carpetas. Pulsa «Nuevo archivo» y escribe una ruta como lib/helpers.py, o «Nueva carpeta», o «Subir» para traer los archivos de texto que ya tienes.
  3. Comprueba qué archivo se ejecuta. El programa es el archivo marcado «Aquí empieza la ejecución».
  4. Asígnala. Cada alumno recibe su propia copia de cada archivo, en el mismo árbol.

Se ejecuta como lo haría el proyecto en tu propio ordenador

El programa es el archivo marcado «Aquí empieza la ejecución», y se puede renombrar o mover a una carpeta como cualquier otro. Su extensión sigue siendo la del lenguaje, y un programa de Java, C#, Haskell o Kotlin conserva su nombre vaya donde vaya.

Los archivos se colocan tal como están en el árbol, así que el código los encuentra donde los pusiste: un programa de Python importa desde sus carpetas, las clases de un proyecto de Java pueden estar en paquetes bajo src/main/java, un módulo de Go compila sus propios subpaquetes, y JavaScript y TypeScript con Node importan entre carpetas. Un programa puede abrir cualquiera de sus archivos por su ruta, así que una carpeta de CSV se lee como data/readings.csv.

Lo que puede contener un proyecto

Hasta 50 archivos junto al programa, de 64 KB como máximo cada uno y 1 MB en total, en carpetas de hasta 7 niveles. Solo texto: lo que se sube se comprueba leyéndolo y no por su nombre, así que una imagen renombrada data.csv se rechaza y un archivo de texto sin extensión se acepta.

Un nombre empieza por una letra, un número o un guion bajo, y después usa letras, números, guiones bajos, puntos y guiones. Sin espacios, a propósito: un espacio es la forma más común de que falle una línea de comandos en el programa de un alumno.

Lo que reciben los alumnos

Al asignar la tarea se copian todos los archivos a cada alumno, que ve el mismo árbol y puede editar cualquier archivo en su copia. Solo puede añadir archivos propios si la tarea permite más de un archivo, y los archivos que le diste conservan su nombre. Los archivos de práctica y los entornos de pruebas tienen el mismo árbol, así que un alumno puede probar un proyecto propio fuera de cualquier módulo.

Sigue habiendo un único archivo de pruebas y una única lista de paquetes. La lista de paquetes es un archivo real en la raíz del árbol, como requirements.txt o pom.xml, y tiene su propia página en este manual. Las pruebas ocultas siguen ocultas, tenga la tarea los archivos que tenga.

Cuando el ejercicio debe seguir siendo un solo archivo

Desmarca «Más de un archivo» en la pestaña de ajustes de la tarea. Los archivos que ya tiene se conservan y se pueden seguir renombrando y moviendo, pero nadie puede añadir otro. Una página web y una tarea de SQL nunca admiten archivos adicionales, porque sus paneles son de lo que están hechas.

Preguntas frecuentes

¿Puedo traer un proyecto que ya tengo?
Sí. «Subir» lleva al árbol archivos de texto de tu ordenador. Un proyecto que está en un repositorio Git se puede cargar entero, con sus carpetas, con «Cargar desde Git», que tiene su propia página en este manual.
¿Pueden los alumnos añadir sus propios archivos?
Sí, si la tarea permite más de un archivo, como ocurre con una tarea de código nueva. Los archivos que les diste conservan su nombre, así que las pruebas siempre los encuentran.
¿Un proyecto de Java tiene que ser una sola clase?
No. Pon cada clase en su propio archivo, en paquetes si quieres; el programa es el archivo marcado «Aquí empieza la ejecución».
¿Necesitan los alumnos un IDE instalado?
No. El árbol, el editor y «Ejecutar» están en el navegador, y el código se ejecuta en nuestras máquinas, en un contenedor nuevo cada vez.