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.