PBL and the BDD package written using PBL were written as part of a larger effort to revitalize foundational computer science and logic education using a more hands-on approach. A computer science beginner often finds these principles disconnected from reality, and in turn does not enjoy or retain the material. The popular Python programming language provides a succinct syntax for expressing mathematical ideas, illustrates real-world connections, and offers a vehicle through which a student can teach a computer (codify the knowledge) and calculate outcomes (such as logical inferences).
To this end, we have developed educational Python modules for teaching foundational and logic topics. Our completed work includes modules for classical automata (NFA, PDA, Turing Machines) and a variety of logic engines (DPLL, BDD). This material was used to teach the course CS3100 Models of Computation at the University of Utah with over 50 enrolled students and was met with a positive response. We are also creating an e-book which we plan on releasing open source which will encourage adoption of our course material elsewhere. We hope to continue using and refining this material and creating even more modules for topics in logic and systematic software verification.
This web interface currently shows off some of the functionality of our BDD package and the Boolean algebra front end used to power it.