The Aquinas Learning System

Aquinas is an interactive learning system that aims to teach computer programming and exploit development. Aside from running here, the source code behind Aquinas is available under the GNU Affero General Public License.

After registering, sign in to Aquinas. Select a project from the menu, study its lesson, clone the project template, complete the project, and submit your work using Git. (Don’t worry—one of the first projects will teach you how to use Git!) Aquinas grades project submissions, and provides feedback to students.

Unique Features

Aquinas brings together four activities:


Aquinas presents a series of projects, each preceded by a lesson covering the material the project tests. Students complete the projects and submit their work. Aquinas grades the submissions and presents the results.


Aquinas’ first aim is to teach the practice of programming. Many of Aquinas’ projects support submissions in various programming languages, including Python, Go, and C. Projects range from simple print utilities to networked applications.


Some of Aquinas’ projects take the form of exploit development: identify a vulnerability in an existing program, devise a way to exploit the vulnerability, and write your own program that puts your exploit into practice. Aquinas provides a safe playground in which students can investigate this type of work.


Aquinas is open source software; we distribute Aquinas’ backend under the GNU Affero General Public License. Anyone who follows Aquinas’ license can deploy their own instance of Aquinas and make contributions to Aquinas. The canonical Aquinas deployment is