Astro

screenshot of Astro

a safe sandbox for C autograding

Overview

Astro is an innovative x86-64 simulator developed to enhance the experience of C programming students by simplifying the autograding process. It aims to filter out unnecessary confusion thrown up by traditional autograders, allowing students to focus solely on their coding skills rather than troubleshooting unreliable feedback. By isolating student code execution from the autograder's memory space, Astro presents a safer and more intuitive environment for learning C.

With a structure that avoids common pitfalls found in typical autograding setups, Astro effectively minimizes risks such as memory corruption and unexpected behavior due to system calls. This results in a more straightforward and effective way to evaluate student submissions while ensuring that the learning process remains focused and distinct.

Features

  • Isolation of Student Code: Astro ensures that student code runs independently within the simulator, preventing it from accessing or corrupting the autograder's memory.

  • No Syscall Support: By excluding arbitrary syscalls, Astro operates securely, mitigating risks associated with unauthorized network access or modifications.

  • Memory-Mapped Register Simulation: The simulator monitors access to special addresses, logging interactions and simulating hardware features without convoluted methods.

  • Enhanced Memory Leak Detection: Astro improves the conventional procedures for checking memory leaks, addressing limitations around false reports caused by assertion failures.

  • Simplified Feedback Mechanism: Students receive clear and concise output, enhancing their ability to focus on coding without being bogged down by confusing engendered errors.

  • Dependency Management: Astro operates seamlessly with the help of essential libraries like Unicorn and elfutils, ensuring a smooth setup experience for users.

  • User-Friendly Grader Interaction: By running an example grader in conjunction with the astro library, users can quickly dive into practical applications of the system.

Astro encompasses robust functionality aimed at creating an effective and enjoyable learning atmosphere for new C programmers.