https://blog.brownplt.org/2024/04/21/forge.html
The Brown PLT Blog
[brownplt]
RSS
CONTACT
GROUP PAGE
PREVIOUS POSTS
* Forge: A Tool to Teach Formal Methods
* Finding and Fixing Standard Misconceptions About Program Behavior
* Privacy-Respecting Type Error Telemetry at Scale
* Profiling Programming Language Learning
* The Examplar Project: A Summary
* A Core Calculus for Documents
* Observations on the Design of Program Planning Notations for
Students
* Conceptual Mutation Testing
* Generating Programs Trivially: Student Use of Large Language
Models
* A Grounded Conceptual Model for Ownership Types in Rust
* What Happens When Students Switch (Functional) Languages
* Typed-Untyped Interactions: A Comparative Analysis
* Little Tricky Logics
* Identifying Problem Misconceptions
* Performance Preconceptions
* Structural Versus Pipeline Composition of Higher-Order Functions
* Plan Composition Using Higher-Order Functions
* Towards a Notional Machine for Runtime Stacks and Scope
* Gradual Soundness: Lessons from Static Python
* Applying Cognitive Principles to Model-Finding Output
* Automated, Targeted Testing of Property-Based Testing Predicates
* A Benchmark for Tabular Types
* Student Help-Seeking for (Un)Specified Behaviors
* Adding Function Transformers to CODAP
* Developing Behavioral Concepts of Higher-Order Functions
* Adversarial Thinking Early in Post-Secondary Education
* Teaching and Assessing Property-Based Testing
* Students Testing Without Coercion
* Using Design Alternatives to Learn About Data Organizations
* What Help Do Students Seek in TA Office Hours?
* Combating Misconceptions by Encouraging Example-Writing
* The Hidden Perils of Automated Assessment
* Mystery Languages
* Resugaring Type Rules
* Picking Colors for Pyret Error Messages
* Can We Crowdsource Language Design?
* Crowdsourcing User Studies for Formal Methods
* User Studies of Principled Model Finder Output
* A Third Perspective on Hygiene
* Scope Inference, a.k.a. Resugaring Scope Rules
* The PerMission Store
* Examining the Privacy Decisions Facing Users
* The Pyret Programming Language: Why Pyret?
* Resugaring Evaluation Sequences
* Slimming Languages by Reducing Sugar
* In-flow Peer Review: An Overview
* Tierless Programming for SDNs: Differential Analysis
* Tierless Programming for SDNs: Verification
* Tierless Programming for SDNs: Optimality
* Tierless Programming for SDNs: Events
* Tierless Programming for Software-Defined Networks
* CS Student Work/Sleep Habits Revealed As Possibly Dangerously
Normal
* Parley: User Studies for Syntax Design
* Typechecking Uses of the jQuery Language
* Verifying Extensions' Compliance with Firefox's Private Browsing
Mode
* From MOOC Students to Researchers
* Social Ratings of Application Permissions (Part 4: The Goal)
* Social Ratings of Application Permissions (Part 3: Permissions
Within a Domain)
* Social Ratings of Application Permissions (Part 2: The Effect of
Branding)
* Social Ratings of Application Permissions (Part 1: Some Basic
Conditions)
* Aluminum: Principled Scenario Exploration Through Minimality
* A Privacy-Affecting Change in Firefox 20
* The New MOOR's Law
* Essentials of Garbage Collection
* (Sub)Typing First Class Field Names
* Typing First Class Field Names
* S5: Engineering Eval
* Progressive Types
* Modeling DOM Events
* Mechanized LambdaJS
* ECMA Announces Official lJS Adoption
* Objects in Scripting Languages
* S5: Wat?
* Belay Lessons: Smarter Web Programming
* S5: Semantics for Accessors
* S5: A Semantics for Today's JavaScript
* The Essence of JavaScript
* ADsafety
Forge: A Tool to Teach Formal Methods
Posted on 21 April 2024.
For the past decade we have been studying how best to get students
into formal methods (FM). Our focus is not on the 10% or so of
students who will automatically gravitate towards it, but on the
"other 90%" who don't view it as a fundamental part of their
existence (or of the universe). In particular, we decided to infuse
FM thinking into the students who go off to build systems. Hence the
course, Logic for Systems.
The bulk of the course focuses on solver-based formal methods. In
particular, we began by using Alloy. Alloy comes with numerous
benefits: it feels like a programming language, it can "Run" code
like an IDE, it can be used for both verification and
state-exploration, it comes with a nice visualizer, and it allows
lightweight exploration with gradual refinement.
Unfortunately, over the years we have also run into various issues
with Alloy, a full catalog of which is in the paper. In response, we
have built a new FM tool called Forge. Forge is distinguished by the
following three features:
1. Rather than plunging students into the full complexity of Alloy's
language, we instead layer it into a series of language levels.
2. We use the Sterling visualizer by default, which you can think of
as a better version of Alloy's visualizer. But there's much more!
Sterling allows you to craft custom visualizations. We use this
to create domain-specific visualizations. As we show in the
paper, the default visualization can produce unhelpful,
confusing, or even outright misleading images. Custom
visualization takes care of these.
3. In the past, we have explored property-based testing as a way to
get students on the road from programming to FM. In turn, we are
asking the question, "What does testing look like in this FM
setting?" Forge provides preliminary answers, with more to come.
Just to whet your appetite, here is an example of what a default
Sterling output looks like (Alloy's visualizer would produce
something similar, with fewer distinct colors, making it arguably
even harder to see):
Default Sterling output
Here's what custom visualization shows:
Custom Sterling output
See the difference?
For more details, see the paper. And please try out Forge!