Over the past decade, Computer Science education researchers have built a number of drag-and-drop environments for teaching computer programming. Notable examples include Alice (CMU), Scratch (MIT), Greenfoot (Kent), and AppInventor (Google). Although each project has its own emphasis (e.g., object oriented design, interaction with media, simulation and games, mobile development), they all focus on teaching introductory programming concepts. Students learn about instructions, decisions, loops, variables, operators, and so forth by manipulating "blocks" that represent these structures. This design has a number of pedagogical advantages, including simplifying the programming environment, encouraging self-directed learning, making the execution of programs visual, eliminating syntax error messages, and making data structures concrete.
Bags is a new type of drag-and-drop environment suitable for teaching relational algebra. In contrast to current tools like Scratch and Alice that allow students to interact with computation, our approach enables students to explore and manipulate structured data. Students formulate database queries by combining blocks representing relational operations, including selection, projection, inner/outer join, grouping, aggregation, and sorting. Our approach allows students to evaluate ad hoc queries in real-time, giving them an interactive visualization of the data as they add or remove individual operations. Students are also able to experiment with different configurations of blocks and observe the corresponding query results.
Why the name Bags? In set theory, a "bag" is a set that may contain duplicate items. SQL and other database languages are based on bag semantics.
- Save/Load projects (import/export xml)
Jan 22, 2015 - delta release
- Show the relational algebra expression
- Custom datasets (import your own csv)
May 2, 2014 - gamma release
- Set operations (union/intersect/difference)
- Group-level aggregation (count, sum, etc.)
- Allow direct user input in most blocks
Feb 28, 2014 - beta release
- Added vlds and extended palettes
- Sorting and duplicate elimination
- Limit block and "is null" blocks
- Grouping and aggregation blocks
Nov 7, 2013 - alpha release
- Bags is released!