Skip to content

Commit

Permalink
Merge pull request #115 from Bram-Hub/issue112-create-contributing.md…
Browse files Browse the repository at this point in the history
…-file

Created contributing.md file and slight modifications to README
  • Loading branch information
Chase-Grajeda authored Jun 7, 2022
2 parents ba2ae10 + f6f6796 commit 45de1f3
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 9 deletions.
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
# LEGUP
# Legup
### A Project by Dr. van Heuveln
Logic Engine for Grid-Using Puzzles - a better way to learn formal logic

## Goal
The main goal of the LEGUP project is to provide a better interface for students to learn basic principles of logical reasoning.
The main goal of the Legup is to provide a better interface for students to learn basic principles of logical reasoning.

Dr. van Heuveln has taught logic courses on a frequent basis for the past 15 years, and noted that a good number of students struggle with the systems of modern formal logic that were developed in the late 1800's and early 1900's, and that have been universally used in logic courses since. These traditional systems use abstract linear symbol strings such as (P & Q) -> (R v S), and deploy even more abstract rules such as & Elim to infer new symbol strings from old ones, thus engaging the edu.rpi.legup.user in logical reasoning.
Dr. van Heuveln has taught logic courses on a frequent basis for the past 15 years, and noted that a good number of students struggle with the systems of modern formal logic that were developed in the late 1800's and early 1900's, and that have been universally used in logic courses since. These traditional systems use abstract linear symbol strings such as `(P & Q) -> (R v S)`, and deploy even more abstract rules such as & Elim to infer new symbol strings from old ones, thus engaging the user in logical reasoning.

This project brings about the idea that there are more pedagogically effective ways for students to learn the basic and important principles of logical reasoning.

LEGUP uses a more visual representation in a more concrete and engaging environment. These and other features of the LEGUP interface are suspected to have several advantages over more traditional interfaces in terms of learning logic.
Legup uses a more visual representation in a more concrete and engaging environment. These and other features of the Legup interface are suspected to have several advantages over more traditional interfaces in terms of learning logic.

## Use Cases

The LEGUP interface allows the edu.rpi.legup.user to solve different types of grid-based logical puzzles. Probably the best known example of such a edu.rpi.legup.puzzle is the popular Sudoku edu.rpi.legup.puzzle, but there are many other types of puzzles that are based on the principle of filling in cells of a square or rectangular grid with different kinds of objects. In all cases, the edu.rpi.legup.user is provided certain clues that will force a unique configuration of objects in the grid. These types of puzzles are often advertised as 'logic puzzles', and are claimed to train one's logical mind as, using deduction, users should be able to infer which object goes where.
The Legup interface allows the user to solve different types of grid-based logical puzzles. Probably the best known example of such a puzzle is the popular Sudoku puzzle, but there are many other types of puzzles that are based on the principle of filling in cells of a square or rectangular grid with different kinds of objects. In all cases, the user is provided certain clues that will force a unique configuration of objects in the grid. These types of puzzles are often advertised as 'logic puzzles', and are claimed to train one's logical mind as, using deduction, users should be able to infer which object goes where.

So, how does the LEGUP interface differ from online platforms for grid-based games? The most important difference is that the LEGUP interface requires the edu.rpi.legup.user to explicitly indicate their logical reasoning. Thus, solving the edu.rpi.legup.puzzle due to some lucky guesses is no longer an option! The interface will congratulate the edu.rpi.legup.user less on the fact that the edu.rpi.legup.user was able to solve the edu.rpi.legup.puzzle, but more on how the edu.rpi.legup.user solved the edu.rpi.legup.puzzle. This is essential to logic: logic is not about the truth or the correct or best answer, but about deductive implication and valid inference: what follows from what, and why?
So, how does the Legup interface differ from online platforms for grid-based games? The most important difference is that the Legup interface requires the user to explicitly indicate their logical reasoning. Thus, solving the puzzle due to some lucky guesses is no longer an option! The interface will congratulate the user less on the fact that the user was able to solve the puzzle, but more on how the user solved the puzzle. This is essential to logic: logic is not about the truth or the correct or best answer, but about deductive implication and valid inference: what follows from what, and why?

LEGUP also provides a single interface that is capable of supporting many different types of puzzles. Since most of the interface remains the same, however, users wil start to recognize certain similarities between the different puzzles. In particular, since they have to explicitly state their reasoning, users should start to see strong similarities in their logical reasoning patterns from edu.rpi.legup.puzzle to edu.rpi.legup.puzzle, which is the very basis of the abstract logical reasoning principles taught in traditional logic courses. However, rather than being 'thrown in the water' with abstract principles based on obscure symbols, users instead are dealing with a concrete, fun, and engaging logic edu.rpi.legup.puzzle. As such, LEGUP aims to give its users a 'leg up' when it comes to the understanding of logic.
LEGUP also provides a single interface that is capable of supporting many different types of puzzles. Since most of the interface remains the same, however, users wil start to recognize certain similarities between the different puzzles. In particular, since they have to explicitly state their reasoning, users should start to see strong similarities in their logical reasoning patterns from puzzle to puzzle, is the very basis of the abstract logical reasoning principles taught in traditional logic courses. However, rather than being 'thrown in the water' with abstract principles based on obscure symbols, users instead are dealing with a concrete, fun, and engaging logic puzzle. As such, LEGUP aims to give its users a 'leg up' when it comes to the understanding of logic.

## Gradle

This project uses Gradle for dependency management.

## XML Board Specifications

An example for the Battleship edu.rpi.legup.puzzle demonstrates the proper format for XML files to be read in. Puzzles have particular x and y values associated with a location of each puzzleElement. The board size dictates the square size of the board. Currently LEGUP supports Battleship, Fillapix, LightUp, Masyu, Nurikabe, Sudoku, and Treetent puzzles.
An example for the Battleship puzzle demonstrates the proper format for XML files to be read in. Puzzles have particular x and y values associated with a location of each puzzleElement. The board size dictates the square size of the board. Currently LEGUP supports Battleship, Fillapix, LightUp, Masyu, Nurikabe, Sudoku, and Treetent puzzles.

```
<edu.rpi.legup.Legup>
Expand All @@ -42,4 +42,4 @@ An example for the Battleship edu.rpi.legup.puzzle demonstrates the proper forma
</edu.rpi.legup.puzzle>
</edu.rpi.legup.Legup>
```
Element values are dependent on the type of edu.rpi.legup.puzzle. This is specified in each edu.rpi.legup.puzzle's documentation.
Element values are dependent on the type of `edu.rpi.legup.puzzle`.
15 changes: 15 additions & 0 deletions contributing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Welcome to the Legup Contributing Guide
Thank you for investing your time and contributing to Legup! In this guide, you will get an overview of the general principles you should follow when contributing to Legup.

## New Contributor Guide
To get an overview of the project, please reference the [README](https://github.com/Bram-Hub/Legup/blob/master/README.md).

### Getting Started
Before you begin coding, please read our [programming principles](https://github.com/Bram-Hub/Legup/wiki/Programming-Principles). This will cover our standards for commenting, documenting and reporting issues, and creating and merging branches.

***If there is any one point that should be emphasized from the programming principles, it's that for the most part, all developers should branch off of and merge into `dev`***. `dev` will be the only branch that merges into `master` and will be done under the approval of Dr. van Heuveln.

Please refer to the [developer setup guide](https://github.com/Bram-Hub/Legup/wiki/Programming-Setup-Guide) to get set up with the Legup repository. Please note that the developer setup guide is a *guide*. We recommend you use IntelliJ and GitHub Desktop, but feel free to use other IDEs and/or the command line if you feel more comfortable with that.

## References
This guide is loosely adapted from the [GitHub docs contributing guide](https://github.com/github/docs/blob/main/CONTRIBUTING.md).

0 comments on commit 45de1f3

Please sign in to comment.