-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the CS690-FinalProject-MiaLearningApp wiki!
Mia wakes up and checks her calendar. She’s juggling a few online courses—one on programming, another on marketing, and a personal goal to learn Spanish. There’s a quiz coming up in her marketing class, but she’s not sure what topics to focus on. She thinks about reviewing her notes but realizes they’re spread across multiple notebooks, random files on her computer, and bookmarked web pages. “I’ll figure it out later,” she mutters, heading out the door.
At work, Mia takes a quick coffee break and opens her programming course dashboard. She feels a little lost. Did she finish the module on functions, or was that the one on loops? She scrolls through the lessons but can’t remember where she left off. Her coworker Mark mentions how he tracks his learning progress in a spreadsheet. Mia considers it but quickly dismisses the idea—it feels like too much effort.
Over lunch, Mia chats with her friend Carla, who is also learning Spanish. “I keep a list of new words I’ve learned and review them weekly,” Carla says. Mia nods, thinking that sounds helpful. But where would she even keep such a list? Her notebook is already cluttered, and apps for everything feel overwhelming.
Mia gets a notification from her marketing course about an upcoming quiz. The reminder mentions topics she’s already studied, but she isn’t sure how well she knows them. “I should keep track of what I’ve mastered and what needs work,” she thinks but doesn’t take any action.
Back home, Mia tries to review her Spanish notes. She spends 10 minutes flipping through pages before finding the verb conjugation chart she needs. Frustrated by the disorganization, she decides to focus on something else and calls it a night.
Provide a unified tool that helps learners like Mia track multiple courses, organize study materials, plan tasks or quizzes, and gauge their mastery of each topic.
-
UC1: Record a New Note or Resource
- Trigger: Mia encounters new information she wants to save (e.g. a concept from a programming lesson, a marketing fact, or a Spanish phrase) or decides to consolidate existing scattered notes into the app.
- Actions: Mia opens the application and chooses to add a new note. She enters or pastes the note content (text, or a reference to an external resource) and optionally tags it with a course or topic (e.g. “Marketing – Social Media Strategies” or “Spanish – Verb Conjugation”). She saves the note into the system’s organized repository.
- Outcome: The new note is stored in a single, centralized location within the app, categorized by subject or topic. Mia’s study material is now consolidated, making it easier to find later instead of being lost in notebooks or random files.
-
Relevant Functional Requirements
-
Relevant Non-Functional Requirements
-
UC2: Search for a Note (Quick Retrieval)
- Trigger: Mia needs to quickly find specific information from her notes (for example, the Spanish verb conjugation chart she recalled, or notes on a marketing topic for the upcoming quiz).
- Actions: Mia initiates a search in the application (by keyword, tag, or topic). The system scans the stored notes for matches (e.g. she types “conjugation” or “Module X notes”). The relevant note or list of notes is displayed. Mia selects the desired note to view its details.
- Outcome: Mia quickly locates the needed information without manually flipping through pages or files. This saves time (as opposed to the 10 minutes searching through a paper notebook in the scenario) and reduces frustration, allowing her to immediately use the information in her study or homework.
-
Relevant Functional Requirements
-
Relevant Non-Functional Requirements
-
UC3: Track Course Progress
- Trigger: Mia wants to check or update her progress in a course (e.g. wondering whether she finished the “Functions” module in her programming class, or to mark that she completed a lesson). This could be prompted when she logs study time, finishes a module, or feels lost about where she left off.
- Actions: Mia opens the course progress section of the app and selects a course (Programming, Marketing, or Spanish). She views a list of modules/lessons for that course, with indicators of completion. For example, Module 5: “Functions” might be marked incomplete. If Mia has completed a module or lesson, she updates its status (e.g. marks “Functions” as completed). The system may also allow her to record the date of completion or any notes about it. The system updates the progress percentage or status for the course.
- Outcome: Mia can clearly see which parts of each course are completed and what is still pending. She no longer feels lost in her courses – for instance, she can confirm that the “Functions” module is done and that she needs to start “Loops” next. This use case keeps her learning on track and prevents confusion about her last learning activities.
-
Relevant Functional Requirements
-
Relevant Non-Functional Requirements
-
UC4: Prepare for an Upcoming Quiz
- Trigger: Mia learns of an upcoming assessment (for example, a marketing quiz notification she receives, listing topics, or her own knowledge that a quiz is next week). Concerned about what to study, she turns to the app to help organize her review.
- Actions: Mia creates a new “quiz” entry in the app, inputting details like the course (Marketing), quiz name or chapter, date of the quiz, and the list of topics or chapters it will cover. The app displays the quiz topics and allows Mia to link or note which of her stored notes relate to each topic. For instance, if “Social Media Metrics” is a quiz topic, Mia can tag or find her note on that topic (from UC1) and associate it. For each topic, Mia assesses her confidence or mastery. The system lets her mark topics as “mastered” or “needs review” (or perhaps on a scale). For example, she might mark “Topic A – mastered, Topic B – needs work.” Mia can then review the “needs review” topics by quickly accessing the associated notes or maybe writing a quick summary of what she needs to revisit. The system might also present a consolidated review list of those weaker topics.
- Outcome: Mia has a clear study plan for her quiz. She knows which topics she is strong in and which require more study. All relevant notes for the quiz are gathered in one place in the app, so she doesn’t have to dig through different notebooks. By the time the quiz arrives, Mia can focus on the areas that need work, increasing her confidence and preparedness.
-
Relevant Functional Requirements
-
Relevant Non-Functional Requirements
-
UC5: Manage Spanish Vocabulary List
- Trigger: When learning Spanish, Mia comes across new vocabulary (e.g. during lunch with Carla she learns a new word, or while studying she encounters unfamiliar terms). She decides to record these new words so she can practice and remember them.
- Actions: Mia opens the vocabulary or language learning section of the app. She adds a new vocabulary entry by inputting the Spanish word and its English meaning (and possibly a sample sentence or pronunciation note). Over time, the vocabulary list grows. Mia can use the app to review the list – for example, view all words or quiz herself. The app might allow sorting or filtering words (e.g. by date added or by “known/unknown”). If Mia reviews words, she can mark certain words as “learned” after she feels comfortable with them. The system might then remove them from the active review list or mark them differently.
- Outcome: Mia maintains a dedicated, uncluttered list of new Spanish words within the app. This makes weekly reviews (as Carla suggested) feasible – she can easily pull up all her recently added words and test herself. Over time, this systematic vocabulary practice helps her retain new language knowledge, something she couldn’t do effectively when all notes were cluttered in a general notebook.
-
Relevant Functional Requirements
-
Relevant Non-Functional Requirements
-
UC6: View Overall Learning Dashboard
- Trigger: Anytime Mia wants a big-picture view of her learning (for instance, at the end of the day or week), she can request an overview. Feeling overwhelmed by juggling tasks, she might use this feature to regain a sense of control.
- Actions: Mia selects an option to view a summary/dashboard in the app. The system displays an overview of her study data, including each active course with its completion percentage or status (from UC3), any upcoming quizzes or deadlines (from UC4 entries), and possibly a count of new vocabulary words added or pending review (from UC5). It might highlight items needing attention, e.g. “Marketing Quiz on Friday – 2 topics need review” or “Spanish: 5 new words to review this week.” Mia reviews this summary to plan her next study session (she might decide, for example, to spend the evening reviewing the two weak topics for the quiz, and schedule a vocabulary review for the weekend).
- Outcome: Mia gets a consolidated snapshot of her learning progress and upcoming obligations. This reduces anxiety by making her workload transparent. She can prioritize tasks effectively (deciding what to study next) because the app surfaces the critical information (like unfinished modules or impending quizzes) in one place.
-
Relevant Functional Requirements
-
Relevant Non-Functional Requirements
The project is subject to certain constraints and design boundaries, both those explicitly given and those implied by the scenario:
-
Technology Constraint: The application must be implemented in C# targeting .NET 8, and the user interface will be a console-based UI. No graphical desktop or web interface will be used. This influences the design – all interactions are text-based, and the solution should leverage .NET 8 capabilities while remaining a simple console app.
-
User Interface Limitations: Given the console UI, the app cannot provide rich graphical elements or persistent background notifications. Any reminders (for quizzes or reviews) will likely appear only when Mia runs the application and navigates to the relevant section (no pop-up alerts). The design must make the text output as clear as possible to compensate for the lack of visuals.
-
Offline Operation: The system is intended to be a standalone offline tool. It will not integrate with external online services or course platforms in this version. All data (courses, quiz topics, etc.) must be entered by Mia manually. This is a practical constraint as automatic fetching of her course data or calendar events is out of scope. While this means more manual input, the app focuses on simplicity and privacy (all data stays local).
-
Single-User, Personal Use: The application is designed for a single user (Mia) managing her own learning. Multi-user support (e.g. sharing notes with friends or concurrent users) is not required. This simplifies design (no user accounts or login needed) but is a conscious boundary – the data is assumed to be only accessed by Mia on her devices.
-
Data Storage: All information will be stored locally (e.g. in files or a lightweight database). There is a constraint to keep storage simple (likely a text or JSON file, or .NET’s local database options) given the console context. Cloud storage or synchronization across devices is not planned, so if Mia uses the app on multiple devices, she would have to transfer the data file manually. This is a potential limitation in convenience but keeps the system straightforward.
-
Scope of Features: The project must be completed within the course timeline and two development iterations. This imposes a practical constraint on how many features can be fully implemented. For instance, some nice-to-have features like the vocabulary quiz mode or a very detailed analytics dashboard might be deferred if time does not permit, focusing first on core functionality (note organization, progress tracking, basic quiz prep). The requirements have been prioritized (High/Med/Low) to reflect this.
-
Extensibility vs. Simplicity: While we aim for an extensible design, the initial implementation will prioritize a working console app over complex frameworks. For example, rather than implementing a complex plugin system, we will satisfy extensibility by writing clean code and documentation. This constraint is about balancing future-proofing with current complexity.