A great addition to a field where there aren't many offerings: SQL Island (https://sql-island.informatik.uni-kl.de) and SQL Murder Mystery (https://mystery.knightlab.com) come to mind. The mechanism of SQL Noir is close to that of the latter, i.e., an undirected, essentially standalone adventure.
I myself am working on SQLab, a SQL game engine that allows you to augment an arbitrary base with exercises on that base to produce directed, standalone adventures: https://github.com/laowantong/sqlab.
You download a dump of the database (currently MySQL, SQLite, Postgres), and can play under any administrator interface. On the same page there's a link to the long police investigation I designed for my (French) students. If you're a teacher or researcher in the field, the principles of SQLab are explained here: https://arxiv.org/abs/2410.16120.
Great project, totally agree! Also further great projects posted here. I'll chip in here my project of an SQL Game Console that comes with a SQL Game Editor -- allowing students to build their own SQL escape game in the browser: https://eskuel.de . It's been fun trying this out in the class room (only available in German right now). Example game: https://eskuel.de/zoo/
A goldmine of Logo exercises, where the goal would be to write the shortest program for a given drawing. All of them could be classified by Kolmogorov complexity.
As an Airbnb host, I have done this sort of thing for my guests and my own usage, but with a "flat" structure: a simple, searchable inventory (https://maisonrougevernet.fr/inventaire) which doubles as technical documentation for some items (with optionally links to PDFs, videos, etc.).
Text-to-diagram tools are great, but often make the user struggle with the automatic layout (e.g. Graphviz).
Mocodo adopts a mixed approach to the layout problem : diagram-as-text, but the line breaks and the order of the nodes (entities and relationships) are used as positional hints. The resulting layout is constrained to an invisible grid corresponding to a left-to-right and top-to-down reading of the source.
Moreover, since there are relatively few possible grid positions, automatically rearranging the layout becomes an assignment problem, which can be solved by a simple b&b algorithm.
Obviously, this wouldn't scale, but this is just a teaching tool that I use to present small ERDs to my students.
You may test it at https://mocodo.net. Click the turning arrows to draw the diagram and the shuffle symbol to rearrange it randomly.
My own tool adopts a mixed approach to the layout problem : diagram-as-text, but the line breaks and the order of the boxes (entities and relations) are used as position hints. The resulting layout is constrained to an invisible grid corresponding to a left-to-right and top-to-down reading of the source.
Moreover, since there are relatively few possible grid positions, automatically rearranging the layout becomes an assignment problem, which can be solved by a simple b&b algorithm.
Obviously, this wouldn't scale, but this is just a teaching tool that I use to present small ERDs to my students.
You may test it at https://mocodo.net. Click the turning arrows symbol to draw the diagram and the shuffle symbol to rearrange it randomly.
I've been teaching programming with Python at various levels for the last 15 years. Over time, the exercises, examples, algorithmic patterns I accumulated for these courses became so numerous that I started to have trouble finding my way around: which ones to present in which course, in which order, at which time, and with which expected benefits?
I developed a tool to help me answer these questions, and more generally to rethink the structure and content of my curriculum. After a few years of tinkering with a rough implementation of these ideas, I decided to rewrite it from scratch with the hope of making it useful to my colleagues, and anyone facing the same issues: this is how Paroxython was born.
How can you use it? In a preliminary step, you make it tag your collection of educational Python programs. Then, whenever you want, based on the things your students already know, the concepts you intend to make them discover or practice, and those you wish to introduce later (or never), it recommends you a list of programs roughly ordered by increasing learning costs.
I've been teaching programming with Python at various levels for the last 15 years. Over time, the exercises, examples, algorithmic patterns I accumulated for these courses became so numerous that I started to have trouble finding my way around: which ones to present in which course, in which order, at which time, and with which expected benefits? I developed a tool to help me answer these questions, and more generally to rethink the structure and content of my curriculum. After a few years of tinkering with a rough implementation of these ideas, I decided to rewrite it from scratch with the hope of making it useful to my colleagues, and anyone facing the same issues: this is how Paroxython was born. How can you use it? In a preliminary step, you make it tag your collection of educational Python programs. Then, whenever you want, based on the things your students already know, the concepts you intend to make them discover or practice, and those you wish to introduce later (or never), it recommends you a list of programs roughly ordered by increasing learning costs.
I've been teaching programming with Python at various levels for the last 15 years. Over time, the exercises, examples, algorithmic patterns I accumulated for these courses became so numerous that I started to have trouble finding my way around: which ones to present in which course, in which order, at which time, and with which expected benefits?
I developed a tool to help me answer these questions, and more generally to rethink the structure and content of my curriculum. After a few years of tinkering with a rough implementation of these ideas, I decided to rewrite it from scratch with the hope of making it useful to my colleagues, and anyone facing the same issues: this is how Paroxython was born.
How can you use it? In a preliminary step, you make it tag your collection of educational Python programs. Then, whenever you want, based on the things your students already know, the concepts you intend to make them discover or practice, and those you wish to introduce later (or never), it recommends you a list of programs roughly ordered by increasing learning costs.
To all of you who are going back to school in, and despite, these difficult times, I wish you a year filled with beautiful human and pedagogical experiences.