ShaTuApp

Overview:
The ShaTuApp is a tutoring application in development by Regis University. Every senior class gets the opportunity to further its development. The app is intended to be run entirely by an AI. This application serves to teach upcoming computer scientists the SHA-256 algorithm, and may even cover more topics in its future.
Tools Used:
- Windows OS
- Git
- Git Bash
- GitHub
- Jira
- NetBeans IDE
- Java
- Java Swing
- MySQL
Design:
- The MainFrame is what displays the sign-in screen. After sign-in, the MainFrame becomes hidden and the SplashFrame becomes visible.
The SplashFrame is what displays the dashboard and the practice screen. The practice screen consists of a parent class, TutoringSessionView, and holds 16 child classes. Each child class is considered a view. The display is broken into two parts: StepSelectorView (to navigate between views), and StepView (to display a step).
- The views are all frontend, and must communicate with the backend to function properly. The backend is made up of several classes. The primary one involved with the views is the ShaTuTutor class. This class is what allows for hints, new examples, and answer checking.
- Every time a user presses a new example, the ShaTuDB increments its Assessment table’s exposure field by 1. The database table also holds fields to increment for each hint used, each successful answer, and marks the task as complete once the user’s successes are equal to, or greater than, the number of exposures reached.
Basic Status of the Project As I See it:
- The application has come a long way since my class began working on it. For this section I am going to provide a verbal walkthrough of the app as it stands after my class's development period:
- Launching the app opens a sign-in screen. Here you can create an account or sign in.
- If you forgot your sign in credentials, there conveniently is a forgot password button.
- After sign-in, the user is shown the dashboard. From the dashboard you can edit the app settings, logout, or select a method of review: Teach Me, Practice, Quiz Me. Currently only the Practice button is linked to a functionality.
- The Dashboard holds progress bars for each method of review; displaying the current progress a user has made for each method.
- After pressing the Dashboard’s practice button, the user is brought to the practice screen (otherwise known as TutoringSessionView). From here the user can return to the Dashboard, Logout, or use StepSelectorView to navigate between the steps of the SHA-256 algorithm.
- Each step view walks the user through the role that task plays in the algorithm, and how to complete it. The views provide example problems for the user to practice. Once the user has completed the task, and the Tutor feels the user has a solid understanding as to how it works, the user will be prompted to try a similar problem or to move on to the next task.
What work I completed specifically (code I worked on and decisions I made, design etc):
- Designed and implemented the dashboard.
- Added a logout feature and implemented it into the dashboard.
- Adjusted practice screen window size to prevent overlap in the GUI
Placed StepSelectorView within a scroll pane for it to work on any screen size, as well as allow users to collapse it to focus purely on their current task.
- Designed and implemented Initialize Variables task.
This task was one of the few unique views within the app, as it requires the user to define the 8 variables to be used by the algorithm. These variables are derived from constant values, so they are always the same. I chose to make the user define all of them within the task for this reason, which means there are no other examples of the view. This task holds a document listener that checks each input field. Text within those fields defaults to red, but turns green once a correct answer is input. I chose to have the task provide three hints that slowly push the user closer to the correct answer. The final ‘hint’ is visible via a show answer button, which does exactly as it states. The hints and answers may be toggled on or off.
- Moved all check, hint, and new example buttons from their unique views into the shared parent class.
The intent was to provide consistent implementation and placement of these buttons across all views, as well as minimize the amount of resources used. Some views remain frontend. Because of this, I chose to keep most of the original check, hint, and new example buttons alongside the universal ones from the shared parent class My hope is this will aid the next class in determining what the buttons are intended to do by their original developers, so their functionality can properly be transferred to their universal variants.