Skip to content

Commit

Permalink
Merge pull request #523 from Bram-Hub/dev
Browse files Browse the repository at this point in the history
Spring 2023 Semester Pull Request
  • Loading branch information
charlestian23 authored May 5, 2023
2 parents d3932e8 e8704f9 commit f81475f
Show file tree
Hide file tree
Showing 349 changed files with 8,420 additions and 7,334 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 14,10 @@ jobs:

steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: Grant execute permission for gradlew
run: chmod x gradlew
- name: Build with Gradle
Expand All @@ -28,10 28,10 @@ jobs:

steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: gradlew executable
run: chmod x gradlew
- name: Run checkstyle
Expand Down
23 changes: 23 additions & 0 deletions .github/workflows/publish-javadoc.yml
Original file line number Diff line number Diff line change
@@ -0,0 1,23 @@
# modified from https://github.com/MathieuSoysal/Javadoc-publisher.yml

name: Publish Javadoc

on:
push:
branches:
- dev
permissions:
contents: write

jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Publish JavaDoc
uses: MathieuSoysal/[email protected]
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
javadoc-branch: javadoc
java-version: 11
target-folder: docs
project: gradle
2 changes: 1 addition & 1 deletion .idea/codeStyles/codeStyleConfig.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

43 changes: 23 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 9,9 @@
</p>
<hr />

Legup (**L**ogic **E**ngine for **G**rid-**U**sing **P**uzzles) is a better way to learn formal logic. It was created by [Dr. Bram van Heuveln](https://science.rpi.edu/itws/faculty/bram-van-heuveln), whose goal for this project is to provide a better interface for students to learn the basic principles of logical reasoning.
LEGUP (**L**ogic **E**ngine for **G**rid-**U**sing **P**uzzles) is a better way to learn formal logic. It was created by [Dr. Bram van Heuveln](https://science.rpi.edu/itws/faculty/bram-van-heuveln), whose goal for this project is to provide a better interface for students to learn the basic principles of logical reasoning.

> Note: A web version of Legup ([Bram-Hub/LegupWeb](https://github.com/Bram-Hub/LegupWeb)) based on this app version of Legup is actively being developed. However, it is very much in the early stages of development and will not be ready for general use for quite a while. Contributions to both versions of Legup are greatly appreciated. If you are interested in using Legup for educational purposes, please use this app version.
> Note: A web version of LEGUP ([Bram-Hub/LegupWeb](https://github.com/Bram-Hub/LegupWeb)) based on this app version of LEGUP was being developed. It is very much in the early stages of development and will not be ready for general use for quite a while. Development on this web version has halted for a while, as no one has been actively working on the project. Contributions to both versions of LEGUP are greatly appreciated. However, if you are interested in using LEGUP for educational purposes, please use this app version.
## Table of Contents
- [Background](#background)
Expand All @@ -23,44 23,46 @@ Legup (**L**ogic **E**ngine for **G**rid-**U**sing **P**uzzles) is a better way
- [License](#license)

## Background
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.
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.
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 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.
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 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?
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 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.
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.

## For Educators
If you are an educator interested in using Legup, go to the [releases page](https://github.com/Bram-Hub/Legup/releases) to download the latest release of Legup. You can have your students download Legup from the same page. Some sample puzzle files can be found in the [puzzle files folder](https://github.com/Bram-Hub/Legup/tree/master/puzzles files).
If you are an educator interested in using LEGUP, go to the [releases page](https://github.com/Bram-Hub/Legup/releases) to download the latest release of LEGUP. You can have your students download LEGUP from the same page. Some sample puzzle files can be found in the [puzzle files folder](https://github.com/Bram-Hub/Legup/tree/master/puzzles files).

## For Students
If you are a student interested in learning the basics of logic, Legup is a great way for you to get started. If your instructor is using Legup in the classroom and you are looking for extra practice, you can reference the sample puzzle files can be found in the [puzzle files folder](https://github.com/Bram-Hub/Legup/tree/master/puzzles files) to get more practice.
If you are a student interested in learning the basics of logic, LEGUP is a great way for you to get started. If your instructor is using LEGUP in the classroom and you are looking for extra practice, you can reference the sample puzzle files can be found in the [puzzle files folder](https://github.com/Bram-Hub/Legup/tree/master/puzzles files) to get more practice.

Additionally, if you are interested in computer science and programming, please consider contributing to Legup! Not only would it a great way to practice logical reasoning, but it is also a great way to dip your toes into open source software and contributing to open source projects.
Additionally, if you are interested in computer science and programming, please consider contributing to LEGUP! Not only would it a great way to practice logical reasoning, but it is also a great way to dip your toes into open source software and contributing to open source projects.

## Documentation
Documentation is actively being worked on on the [Legup wiki](https://github.com/Bram-Hub/Legup/wiki).
Documentation is actively being worked on on the [LEGUP wiki](https://github.com/Bram-Hub/Legup/wiki).

Documentation is very much in the early stages, and we would greatly appreciate anyone who is willing to help write and structure the documentation. Currently, the priority is to write detailed documentation on how Nurikabe works, as it is the puzzle that is the most developed within Legup.
The Javadocs for our application are currently hosted directly on [our GitHub Pages site](https://bram-hub.github.io/LEGUP/).

Documentation is very much in the early stages, and we would greatly appreciate anyone who is willing to help write and structure the documentation. Currently, the priority is to write detailed documentation on how Nurikabe works, as it is the puzzle that is the most developed within LEGUP.

## Contributing
All contributions to Legup will be greatly appreciated. Currently, we need the most help in the following areas:
All contributions to LEGUP will be greatly appreciated. Currently, we need the most help in the following areas:
- Documentation
- Test suites

Please read our [contribution guidelines](CONTRIBUTING.md) for more detailed guidelines on how to contribute to Legup.
Please read our [contribution guidelines](CONTRIBUTING.md) for more detailed guidelines on how to contribute to LEGUP.

## License
Legup is licensed under the GPL-3.0 license, which can be viewed [here](LICENSE).
LEGUP is licensed under the GPL-3.0 license, which can be viewed [here](LICENSE).
```
Legup: A Better Way to Learn Formal Logic
Copyright (C) 2022, the Legup Developers
LEGUP: A Better Way to Learn Formal Logic
Copyright (C) 2022, the LEGUP Developers
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
Expand All @@ -76,5 78,6 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
```

Some of the icons used in Legup were taken from or derived from the icons found on https://fonts.google.com/icons, which
is licensed under the [Apache-2.0 license](https://www.apache.org/licenses/LICENSE-2.0.html).
The look and feel of LEGUP uses [FlatLaf](https://github.com/JFormDesigner/FlatLaf), which is licensed under the [Apache-2.0 license](https://www.apache.org/licenses/LICENSE-2.0.html).

Some of the icons used in LEGUP were taken from or derived from the icons found on https://fonts.google.com/icons, which is licensed under the [Apache-2.0 license](https://www.apache.org/licenses/LICENSE-2.0.html).
2 changes: 1 addition & 1 deletion bin/main/edu/rpi/legup/legup/config
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 15,7 @@
<puzzle name="LightUp"
qualifiedClassName="edu.rpi.legup.puzzle.lightup.LightUp"
fileType=".xml"
fileCreationDisabled="true"/>
fileCreationDisabled="false"/>
<puzzle name="Masyu"
qualifiedClassName="edu.rpi.legup.puzzle.masyu.Masyu"
fileType=".xml"
Expand Down
2 changes: 1 addition & 1 deletion bin/main/edu/rpi/legup/legup/main_window.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 52,7 @@
<left>
<TabPane prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<tabs>
<Tab text="Basic Rules">
<Tab text="Direct Rules">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="186.0" prefWidth="169.0"/>
</content>
Expand Down
50 changes: 27 additions & 23 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,37 11,38 @@ apply plugin: 'application'
apply plugin: 'checkstyle'
mainClassName = 'edu.rpi.legup.Legup'

sourceCompatibility = 1.8
sourceCompatibility = 11

dependencies {
implementation 'org.jetbrains:annotations:20.1.0'
implementation 'org.jetbrains:annotations:20.1.0'
compile project(':legup-update')
compile 'com.google.firebase:firebase-admin:6.3.0'
compile 'org.apache.httpcomponents:httpclient:4.5.1'
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25'
implementation 'com.formdev:flatlaf:3.0'
implementation project(':legup-update')
implementation 'com.google.firebase:firebase-admin:6.3.0'
implementation 'org.apache.httpcomponents:httpclient:4.5.1'
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
implementation group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25'

// compile 'com.google.code.gson:gson:2.8.2'
// compile 'commons-cli:commons-cli:1.4'
// compile 'commons-io:commons-io:2.6'
compile 'org.apache.commons:commons-lang3:3.12.0'
compile 'org.apache.logging.log4j:log4j-api:2.17.2'
compile 'org.apache.logging.log4j:log4j-core:2.17.2'
// implementation 'com.google.code.gson:gson:2.8.2'
// implementation 'commons-cli:commons-cli:1.4'
// implementation 'commons-io:commons-io:2.6'
implementation 'org.apache.commons:commons-lang3:3.12.0'
implementation 'org.apache.logging.log4j:log4j-api:2.17.2'
implementation 'org.apache.logging.log4j:log4j-core:2.17.2'

testCompile group: 'junit', name: 'junit', version: '4.12'
testCompile 'junit:junit:4. '
testImplementation group: 'junit', name: 'junit', version: '4.12'
testImplementation 'junit:junit:4. '
}

task customFatJar(type: Jar) {
manifest {
attributes('Implementation-Title': 'Legup',
'Implementation-Version': version,
'Implementation-Version': archiveVersion,
'Main-Class': 'edu.rpi.legup.Legup',
'SplashScreen-Image': 'edu/rpi/legup/images/Legup/LegupSplash.png')
}
archiveName = 'Legup.jar'
baseName = 'Legup.jar'
archiveFileName = 'Legup.jar'
archiveBaseName = 'Legup.jar'
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
Expand All @@ -51,21 52,23 @@ task customFatJar(type: Jar) {
}

jar {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE

from {
configurations.compile.collect {
configurations.compileClasspath.collect {
it.isDirectory() ? it : zipTree(it)
}
configurations.runtime.collect {
configurations.runtimeClasspath.collect {
it.isDirectory() ? it : zipTree(it)
}
}
manifest {
attributes('Implementation-Title': 'Legup',
'Implementation-Version': version,
'Implementation-Version': archiveVersion,
'Main-Class': 'edu.rpi.legup.Legup',
'SplashScreen-Image': 'edu/rpi/legup/images/Legup/LegupSplash.png')
}
archiveName = 'Legup.jar'
archiveFileName = 'Legup.jar'
}

/*
Expand All @@ -81,7 84,7 @@ createExe() {
bundledJrePath = 'jre'
bundledJre64Bit = true
jdkPreference = 'preferJre'
jreMinVersion = '1.8.0'
jreMinVersion = '11'
jreRuntimeBits = '64/32'
}

Expand All @@ -105,4 108,5 @@ task buildNativeWindows(type: Exec, dependsOn: 'createExe') {

repositories {
mavenCentral()
}
}
targetCompatibility = JavaVersion.VERSION_11
Original file line number Diff line number Diff line change
@@ -0,0 1,11 @@
<Legup>
<puzzle name="LightUp">
<board width="3" height="3">
<cells>
<cell value="-4" x="0" y="0"/>
<cell value="-1" x="0" y="1"/>
<cell value="-4" x="0" y="2"/>
</cells>
</board>
</puzzle>
</Legup>
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 1,10 @@
<Legup>
<puzzle name="LightUp">
<board width="3" height="3">
<cells>
<cell value="-4" x="0" y="0"/>
<cell value="-4" x="2" y="0"/>
</cells>
</board>
</puzzle>
</Legup>
Original file line number Diff line number Diff line change
@@ -0,0 1,10 @@
<Legup>
<puzzle name="LightUp">
<board width="3" height="3">
<cells>
<cell value="-4" x="0" y="0"/>
<cell value="-4" x="0" y="2"/>
</cells>
</board>
</puzzle>
</Legup>
Original file line number Diff line number Diff line change
@@ -0,0 1,13 @@
<Legup>
<puzzle name="LightUp">
<board width="3" height="3">
<cells>
<cell value="-3" x="0" y="0"/>
<cell value="-3" x="0" y="2"/>
<cell value="-4" x="1" y="1"/>
<cell value="-3" x="2" y="0"/>
<cell value="-3" x="2" y="2"/>
</cells>
</board>
</puzzle>
</Legup>
Original file line number Diff line number Diff line change
@@ -0,0 1,11 @@
<Legup>
<puzzle name="LightUp">
<board width="3" height="3">
<cells>
<cell value="-4" x="0" y="0"/>
<cell value="-3" x="1" y="1"/>
<cell value="-4" x="2" y="2"/>
</cells>
</board>
</puzzle>
</Legup>
Loading

0 comments on commit f81475f

Please sign in to comment.