Skip to content

Latest commit

 

History

History
30 lines (28 loc) · 5.78 KB

PlanningDocument.md

File metadata and controls

30 lines (28 loc) · 5.78 KB

Iteration 1

  • Syntax Testing: As a user, I want to be able to test my knowledge of the syntax of a programming language, so I can assess my understanding and identify areas for improvement. Priority: high. Cost: 8 days.
    • Test Syntax: Implement the main functionality of the app, test users knowledge of a given language's syntax by offering multiple types of problems (fill in the blank, drag and drop, etc). Utilize inheritance, have a question ancestor that splits off into different forms of questions. Priority: high. Cost: 8 days.
  • View Progress: As a user, I want to be able to view how much progress I have completed in the course where I am learning the syntax of a new programming language. Priority: high. Cost: 7 days.
    • Show Progress Screen: Implement functionality that allows user to view syntax learning progress in Swing-based GUI, avoid clutter and ensure the best visual experience for the user. Priority: high. Cost: 7 days.

Iteration 2

  • User Database: As a user, I would need my own account where all my progress and achievements will be tailored to my preferences. I would also like to learn and practice on other devices as well. Priority: medium. Planned Cost: 5 days. Actual Cost: 4 days.
    • Login: Create a database to store user progress and achievements, and tailor problems to user's preferences. Store locally on SQLite, and remotely on MongoDB to allow user to practice from multiple devices. Planned Cost: 3 days. Actual Cost: 2 days.
    • Sign Up: If the user is not signed in, allow them to sign up and store their credentials in the local/remote database. Planned Cost: 2 days. Actual Cost: 2 days.
  • Badges and Awards: As a user, I want to be able to feel rewarded for my progress to push me to keep learning a given programming languages syntax. Priority: low. Planned Cost: 2 days. Actual Cost: 2 days.
    • Badges: Create a reward system to celebrate progress, by awarding the user badges to display on their profile. Assign users badges based on their current fluency in a programming languages syntax. Priority: low. Planned Cost: 1 day. Actual Cost: 1 day.
    • Awards: Give the user a "Hot Streak" award appropriate to how many questions they've solved in a row. Priority: low. Planned Cost: 1 day. Actual Cost: 1 day.
  • View Progress: As a user, I want to be able to view how much progress I have completed in the course via a progress bar. Priority: high. Planned Cost: 1 day. Actual Cost: 2 days.
    • Progress Bar: Implement a progress bar on the home screen of the application to supplement the progress section, by giving the user a quick way to view their completion in the course at a glance. Priority: low. Planned Cost: 1 day. Actual Cost: 2 days.
  • Syntax Testing: As a user, I want to be able to test my knowledge of the syntax of a programming language, with new questions being added with ease. Priority: high. Planned Cost: 6 days. Actual Cost: 5 days.
    • Test Syntax: Implement the main functionality of the app, test users knowledge of a given language's syntax by offering multiple types of problems (fill in the blank, drag and drop, etc). Pull questions and answers from the database randomly, allowing new questions to be added with ease. Priority: high. Planned Cost: 6 days. Actual Cost: 5 days.

Iteration 3

  • Q&A Feature: As a user, I want to engage with the learning community by asking and answering questions related to programming language syntax. Priority: medium. Planned Cost: 1 day. Actual Cost: 2 days.
    • Q&A Platform: Develop a platform where users can post questions, answer others' questions, and interact through comments. Implement a voting system to promote the best answers. Priority: medium. Planned Cost: 1 day. Actual Cost: 2 days.
  • Learning Pages: As a user, I want to be able to view a programming language's documentation at a glance to learn more about what a method might do, while I am learning. I also want to be able to highlight certain notes and save them for later, to view them quicker. Priority: medium. Cost: 3 days.
    • Display "Learning Pages": Give the user important documentation pertinent to the language they are learning. Show this information in a separate window. Priority: medium. Cost: 2 days.
    • Save Notes: Allow the user to save specified elements of the documentation to look at later. Store saved notes in a separate tab. Priority: low. Cost: 1 day.
  • Daily Streaks: As a user, I want to be motivated to maintain a consistent learning schedule by being rewarded for keeping daily learning streaks. Priority: low. Cost: 2 days.
    • Streak Tracking: Implement a daily streak counter in the database that increments when the user completes lessons or practices on consecutive days. Award the user incentives such as special badges for maintaining it. Priority: low. Cost: 2 days.
  • Lesson Rating: As a user, I want to be able to provide feedback on the quality of the lessons I complete, so the platform can improve its content. Priority: low. Cost: 1 day.
    • Rating System: Add a rating feature to lessons, allowing users to provide feedback on the content's effectiveness and clarity. Collect user ratings and use them to inform future improvements. Priority: low. Cost: 1 day.
  • Syntax Testing: As a user, I want to be able to test my knowledge of the syntax of MULTIPLE programming languages, with new questions being added with ease. Priority: high. Planned Cost: 4 days. Actual Cost: 3 days.
    • Test Syntax: Implement the main functionality of the app, test users knowledge of a given language's syntax by offering multiple types of problems (fill in the blank, drag and drop, etc). Pull questions and answers from the database randomly, allowing new questions to be added with ease. Add support for multiple programming languages, giving the user more freedom (Python, Java, C++). Priority: high. Planned Cost: 4 days. Actual Cost: 3 days.