For problem description, see Assessment Details.
Student Name | Student ID | Contribution Score |
---|---|---|
Do Le Long An | S-3963207 | 3 |
Nguyen Nguyen Khuong | S-3924577 | 3 |
Vo Tuong Minh | S-3877562 | 3 |
Tran Ly The Quang | S-3878707 | 3 |
.
├── notebooks/
│ ├── images/
│ └── Analysis.ipynb
├── src/
│ ├── main/java/vn/rmit/cosc2658
│ │ ├── development/
│ │ │ ├── InteractiveApp.java
│ │ │ ├── SecretKey.java
│ │ │ └── SecretKeyGuesser.java
│ │ ├── SecretKey.java
│ │ └── SecretKeyGuesser.java
│ └── test/java/vn/rmit/cosc2658/development
│ └── SecretKeyGuesserTest.java
├── test-data/
├── AssessmentDetails.md
├── README.md
├── LICENSE
├── pom.xml
└── requirements.txt
notebooks/
: This folder contains all the images and data analysis with Jupyter Notebook based on different performance parametersimages/
: This folder contains all the results of data visualization.Analysis.ipynb
: The Jupyter Notebook for plotting and visualizing data.
src/
: This folder contains two sub-folders:main/java/vn/rmit/cosc2658
: This folder contains the final guessing algorithm and thedevelopment
Java package.development/
: This Java package folder contains two classes that support our development and testing phase.SecretKey.java
: The initial provided class from the Assessment Details.SecretKeyGuesser.java:
The final key guessing algorithm implementation.
test/
: This folder contains all test cases (using JUnit) for various test secret keys.
test-data/
: This folder contains all test results from JUnit tests in .csv format.README.md
: A text file containing useful reference information about this project, including how to run the algorithm.LICENSE
: MITpom.xml
: XML file used in Maven-based Java projects for building automation and dependency management toolrequirements.txt
: Text file forpip
installation of necessary packages for our data visualization and analysis innotebooks
.
Requirement | Version |
---|---|
Git | latest |
Maven | 4.0.0 |
OpenJDK | 17.0.2 |
Python | 3.11 |
Note: For this project, we are using Python virtual environment to keep it light. However, feel free to use Anaconda if it is more convenient.
Extension requirements for building and running Java classes:
Requirement | Version |
---|---|
Extension Pack for Java | latest |
Test Runner for Java | latest |
Additional extensions for viewing data visualization in notebooks
:
Requirement | Version |
---|---|
Python | latest |
Jupyter | latest |
To properly setup Java and Python development environment for our project, refer to the following documentation:
To run tests, you need to install JUnit Maven dependency:
$ mvn install
If you are viewing and running Python scripts in notebooks
, install the required Python packages:
$ pip install -r ./requirements.txt
Requirement | Version |
---|---|
Python Plugin for IntelliJ IDEA | latest |
Note: The above requirement is needed only for viewing data visualization in notebooks
. All Java functionalities and toolchain integrations are IDE's built-ins, so no other plugins are required.
To properly setup OpenJDK 17 to work with IntelliJ IDEA toolchain, refer to this documentation: IntelliJ IDEA - SDKs.
To run tests, you need to install JUnit:
$ mvn install
To enable and run Python functionality within IntelliJ IDEA, refer to the following documentation: Python in IntelliJ IDEA.
If you are viewing and running Python scripts in notebooks
, install the required Python packages:
$ pip install -r ./requirements.txt
Refer to IntelliJ IDEA - Getting Started to learn about building, executing, debugging, and testing with IntelliJ IDEA and its Maven toolchain integration.
- A console applet is available for you to manually play with guessing a random secret key. Edit line 7 to use any positive non-zero key length of choice.
- Our final solution can be run by calling
vn.rmit.cosc2658.SecretKey.main()
. - All tests are in
vn.rmit.cosc2658.development.SecretKeyGuesserTest
.
Video available on YouTube: Link.