Skip to content

1. Lab: Teams & Problem Space

Estimated time to read: 9 minutes

In this lab we will build the teams, and you will discuss the problem space you want to address. You will set up flutter and implement your first app.

1.1 Preparation

Please complete the following tasks before your first lab session. Estimated time: 4 hours.

1.1.1 Project Idea

You can complete this preparation individually or collaborate with a team of up to 6 students.

  • Project Idea

    • Goal: Gain real-world insights to guide your project by observing and interacting with people. Focus on understanding their behaviors, needs, and frustrations.
    • Task: Choose a dynamic, people-oriented location relevant to your project’s theme. Spend at least 15 minutes observing the activities, joys, and frustrations of those around you. Document what captures their attention, what brings them joy, and what causes annoyance. These observations will help shape your project’s direction.
  • App Analysis

    • Research and analyze both successful and poorly-rated apps. Identify the key features that contribute to a positive user experience and those that lead to dissatisfaction. Reflect on the elements that make an app engaging or ineffective.
  • API Exploration

    • Explore available APIs that align with your project’s objectives. Identify APIs that offer useful data, services, or functionalities you could incorporate into your solution.
  • Presentation (1-2 minutes per student, each student must actively participate)
    • Prepare a concise presentation of your findings.
      • No notes are allowed; you may include one slide, but it must be submitted to me by email at least 24 hours before the lab session.
    • Aim to engage and encourage other students to join your project.

1.1.2 Flutter Setup

Individual preparation

  1. Install Flutter. If you already have Flutter installed, ensure it is up to date by running flutter upgrade.
  2. Familiarize yourself with the fundamentals of Dart, focusing on its similarities to and differences from other programming languages you are familiar with. Then, create a simple console application that showcases some of Dart's unique features.
  3. Copy the code of Counter App, run the application, try to understand it and make one minor modification.

1.2 During the lab

  • We will address any questions you have.
  • You run your console and flutter applications (individually).
  • You will give your presentations.
  • Teams of 4 to 6 students will be formed.
  • I will create the repositories for each team.
  • You will finalize and agree on a project idea.

1.2.1 Project Portfolio

Throughout the semester, you will maintain a project portfolio, which will be hosted on GitLab Pages. The provided CI/CD pipeline in the initial project setup includes basic infrastructure for this, but ensure it works correctly for your project and make any necessary adjustments to suit your needs.

  • Source Referencing: In academic writing, it is crucial to properly credit all sources. This practice is an essential part of your project portfolio. Make sure to reference any external materials you use, whether it’s code, ideas, or research. Accurate referencing is key.
    • Understand the different types of resources, how to list them in lit.bib and how to reference them in mkdocs-bibex [ @ shortname ] (remove the spaces!)

      and the reference in lit.bib

      @book{shortname,
          ...
      

Your project portfolio will serve as both a documentation of your progress and a blueprint for your BPSE (Bachelor Project Software Engineering) and future projects. Based on your project, include practical examples that demonstrate how to apply the theory in the context of your work. Ensure you reference the relevant theory where appropriate.

Throughout the process of transforming an idea into a solution, numerous decisions and pivotal choices are made. The portfolio should clearly document this journey, providing a well-organized record of your progress over time. In addition, it must offer reasoned explanations for the decisions you make at each step.

  • Describe Your Approach and Implementation: Provide a clear, objective explanation of how you approached and implemented the task. Walk through the process step by step, highlighting the critical decisions and strategies you used.

  • Focus on Usability: Explain how you ensured the usability of your solution. What specific steps did you take to address user needs and ensure a smooth user experience? This could include considerations for ease of use, accessibility, and functionality.

  • Document Key Intermediate Steps: Capture and document the most significant milestones and decisions along the way. This could include sketches, prototypes, feedback loops, or other key moments that shaped your final solution.

  • Outline Your Methodology: Discuss the methodology you followed to tackle the task. Whether you applied agile, design thinking, or another framework, clarify how you approached the problem-solving process and why you chose that approach.

  • Evaluate Alternatives and Justify Your Decisions: Reflect on different possible approaches and weigh their pros and cons. Why did you choose the specific solution you implemented? Justify your decisions based on factors like usability, feasibility, and project goals.

By documenting your progress and providing thoughtful, reasoned explanations for each decision, you not only create a detailed record of your work but also demonstrate your ability to critically assess and justify the choices you made. This process of reflection and justification ensures that your solution is well thought-out and grounded in solid reasoning.

1.3 After the lab

Document the following parts in your portfolio (use the files provided in the folder docs)

  • 🧰 short description of the problem
    • Clear formulation of the problem and the goals to be achieved.
    • Description of the ideal state after the problem has been solved.
    • Examine and describe alternative solutions, including a brief review of other apps. Highlight their strengths and weaknesses, and explain why these solutions fail to adequately address the problem.
    • Distinction from similar problems or related topics that are not part of the solution scope.
    • Definition of the assumptions made to understand and model the problem.