BYU CS 236 Discrete Math Projects. Over the course of this class we built a Datalog Scanner, Parser, Relational Database, Datalog interpreter and then optimized the rule evaluation. More information can be found on https://faculty.cs.byu.edu/~barker/cs236/labs/labs.php Descriptions that are included below are taken verabutum from the class website. Projects build upon each other.
Data Scanner: Write a scanner that reads a sequence of characters from a text file, identifies the datalog language tokens found in the file, and outputs each token. (Project 1) https://faculty.cs.byu.edu/~barker/cs236/labs/lab1-extra.html
Data Parser: Write a parser that reads a datalog program from a text file, builds a data structure that represents the datalog program, and outputs the contents of the datalog program data structure.(Project 2) https://faculty.cs.byu.edu/~barker/cs236/labs/lab2-extra.html
The Relational Database: Write an interpreter that uses relational database operations to evaluate the queries in a Datalog Program. For this project, use only the facts to evaluate the queries. (The evaluation of rules will be added in the next project.) (Project 3) https://faculty.cs.byu.edu/~barker/cs236/labs/lab3-extra.html
The Datalog Interpreter: Add join and union operations to the relational database from the last project and use the new operations to evaluate the rules in a Datalog program. (Project 4) https://faculty.cs.byu.edu/~barker/cs236/labs/lab4-extra.html
Optimizing Rule Evaluation: Build the dependency graph for the rules in a Datalog program and use depth-first search on the graph to improve the evaluation of the rules. (Project 5) https://faculty.cs.byu.edu/~barker/cs236/labs/lab5-extra.html