Final Milestone Scenario - bounswe/bounswe2024group1 GitHub Wiki
Final Milestone Scenario: Exploring Functional Programming with the Programming Languages Forum App
Part 1: Intermediate Lisp Programmer (Alex Johnson) on Web
1. Account Creation
- Alex Johnson, an intermediate Lisp programmer passionate about functional programming, discovers the Programming Languages Forum app.
- They create an account using their email.
2. Exploring Tags
- After logging in, Alex navigates to the "Tags" section.
- They find the Functional Programming immediately, as the tags are sorted according to the number of questions and Functional Programming is among the most popular, with numerous questions.
- Intrigued, Alex clicks on the Functional Programming tag to explore.
3. Discovering a New Lisp Functionality
- While browsing, Alex sees a question titled, "How do circular data structures work in Lisp?"
- Curious, they click the question to learn more.
- The detailed explanation reveals a Lisp technique involving circular data structures that Alex hadn’t encountered before.
- Excited, Alex marks the question as Easy and upvotes both the question and the well-written answer.
4. Exploring Other Tags
- Wanting to learn more, Alex visits the profile of the user who answered the question by clicking into their name, Jordan Carter.
- On Jordan's profile, Alex sees the tags they follow, including Haskell.
- Intrigued by Haskell, Alex clicks the Haskell tag to explore further.
5. Formulating a New Question
- While browsing Haskell content, Alex wonders, "Does Haskell support circular data structures?"
- Unable to find an existing question that addresses this, Alex decides to create one:
- Navigates to the Create Question page.
- Reads the popover instructions for writing effective questions.
- Mentions the tag
@haskell
in the question body for clarity. - Tags the question with Functional Programming and Circular Data Structures.
- Sets the difficulty level to Beginner to attract insights from advanced users.
Part 2: Advanced Haskell Programmer (Riley Parker) on Mobile
1. Logging In and Filtering
- Riley Parker, an advanced Haskell programmer, logs into the Programming Languages Forum app on their mobile device.
- Riley navigates to the Haskell tag and filters for Beginner questions.
2. Discovering Alex’s Question
- Riley finds Alex’s newly posted question, "Does Haskell support circular data structures?"
- They find the question interesting and bookmark it for reference.
- Riley checks Alex’s profile and notes their reputation points and previous contributions.
3. Writing an Answer
- Riley writes a detailed response explaining how circular data structures works in Haskell.
- Before posting, Riley reads the popover with tips for writing effective answers.
- After posting, Riley revisits the Bookmarks section and confirms the question is saved there.
Part 3: Alex Johnson on Web
1. Receiving the Answer
- Alex logs back into the web app and finds Riley’s response to their question.
- They upvote the detailed answer and appreciate the supportive community.
2. Creating a Tag
- Inspired, Alex tries to create a tag for Circular Data Structures in Functional Programming, a concept central to their question.
- Initially, they can’t create the tag due to insufficient reputation points.
- As their question garners upvotes from other users, Alex’s reputation increases, enabling tag creation.
3. Exploring the New Tag
- Alex creates the Circular Data Structures in Functional Programming tag and navigates to its dedicated page.
- On the page, Alex explores the glossary and reads about the user-defined tags.
Summary
This scenario demonstrates the Programming Languages Forum app’s ability to foster a collaborative environment:
- Alex Johnson deepens their knowledge of Lisp and Haskell, contributes to the community, and creates a valuable tag.
- Riley Parker shares expertise in Haskell, supporting beginners while leveraging the mobile app’s features.
- The interaction between web and mobile platforms provides a seamless experience, showcasing the app’s design for diverse use cases.