Welcome & Organization
Estimated time to read: 14 minutes
On this site you will find some general information, a script and the exercises for the lab of the lecture Human Computer Interaction (HCI) of Prof. Dr. Ute Trapp at Hochschule Darmstadt, Germany. The workload of this module for a typical efficient working student with the corresponding pre knowledge is 5 ECTS, i.e. ~115h (about 3 weeks).
Objective of the Lab
In this lab you will ideate, validate, plan and develop your own mobile app. The focus of the lab is not on the best software architecture. However, we expect you to apply your knowledge of OOAD and the parallel course SWE -- here, you find the lecture slides of both modules. You should also have a basic understanding of databases or take the parallel course.
focus
We focus on the users perspective.
Beyond technical skills and UX methods, this course focuses on crucial soft skills
- Effective Communication
- Giving and Receiving Feedback
- Problem-Solving as a Team
- Accountability and Responsibility
- Time Management and Agile Prioritization
Essentially, you'll learn to develop software professionally, reflecting on your process and sharpen your project management skills with GitLab as your central tool.
focus
During the semester you will develop a mobile app using Flutter.
However, the programming part accounts for a little less than 50% of the total grade. The implementation itself will be done in two labs only, the three other labs address user experience issues. But a new framework and programming language need more than two labs to learn it, hence you will work on little tasks on your own before you start to implement your project.
grading
The last opportunity to withdraw from the course without a grade is ???. If you abandon your team after that date, I will proceed with a normal grading, which may result in a failing grade of 5.0.
Project
You are free to choose a project of your interest. It is only requested that you address a real problem for users you have access to. Checkout Global Gamers Challenge or United Nations Goals.
You can also integrate Gemini AI or develop an AR application in Flutter. Note: I do not have any experience with gemini or AR in Flutter.
One week after the first lab it is not possible to change the project idea.
Tip
Here are some hints of the students of the previous semester
- früher anfangen, Flutter zu lernen
- Eigeninitiative zeigen
- Termine mit Team vereinbaren
- nicht zu komplizierte Projektidee wählen
- offenes Labor besuchen
- stellt früh Fragen, dann kann man frühzeitig Fehler beheben
- einigt euch im Team, keine Einzelgänge
- erklärt euch den Code im Team
- niemals aufgeben bei Praktika
- es ist aufwändig und teilweise komplex, aber es lohnt sich
- Aber im Studium insgesamt war ein entscheidender Moment, als ich verstanden habe, dass ich Inhalte nicht sofort komplett verstehen muss sondern nur wissen sollte, dass sie existieren und ich sie bei Bedarf nachschlagen kann.
- Gerade in Kursen wie HCI oder SE beobachte ich oft, dass Studierende versuchen, alles sofort zu durchdringen, was eher zu Frust führt. Diese Erkenntnis hat für mich enorm den Stress reduziert und hilft mir dabei gezielter zu lernen.
Backend
The development of a backend is not part of this course, hence do not invest time to do so. However, there are great tools and available APIs to use in your project.
- Geoapify: Places, POIs and Routing
- API generator: Tool used in the videos and the repository provided. With the tool you may define one table with different columns, get a permanent URL and modify the data with REST-calls. Low-code backend seems to be similar, but I did not test it.
- bund - administration: APIs provided by the administration of Germany, e.g. waste management.
- OpenFoodFacts
- Public APIs Developers Can Use in Their Projects
- Big List of Free and Open Public APIs (No Auth Needed)
In the demos provided (moodle), you'll find Supabase demo application. Supabase is a relational cloud database that can easily be used as a backend.
If you're interested in exploring NoSQL, Firebase is a great option for Flutter. It integrates seamlessly with Flutter, and there are many packages available to simplify access to Firebase in your Flutter applications. Feel free to use Firebase as your backend, but keep in mind that the thinking behind NoSQL databases differs from SQL, and it may take some time to get used to it. In Server - Firebase you will find good links to get started with Firebase.
That said, the backend is not the focus of this module, and efforts spent learning NoSQL will not be specifically acknowledged here. But remember, learning is always valuable! 😉
Lecture and theory
Please come prepared for the lecture (refer to Moodle for details). During the session, we will primarily focus on discussing specific topics, exploring different approaches, and either working on the lab itself or preparing tasks for the lab. I will also be doing some live coding throughout.
Although you will find a script in the theory part of this site, I expect you to come to the lectures and fill the gaps and to discuss different approaches. As cognitive learning requires reflection and discussion.
On this website, you will find the theory and requirements for completing the labs. In Moodle, you can find everything regarding the grading and the schedule. In Moodle, you'll also find short tasks to help reinforce the theory.
Topics of the Lab sessions
The lab sessions will cover the following topics
- Lab 1: Teams & Problem Space
- Lab 2: User Research
- Lab 3: Prototypes & Design
- Lab 4: Architecture & Implementation GUI
- Lab 5: Implementation MVP
- Lab 6: UX Evaluation / Presentation
Carrying out the Lab
You are expected to use your private notebook and a gitlab repository, which you will get during the first lab session (lab 1).
Preparation and Follow-up
In each lab description you will find a preparation. It is essential that you have dealt extensively with that preparation before the lab date. You will notice that the tasks are formulated very openly. It's up to you how deeply you want to understand the topics. As usual, understanding comes with using, reading is not sufficient, reading is just the start;)
AI-Tools
Feel free to use AI tools as needed, but don't just complete tasks — embrace learning opportunities. Strive to solve problems independently and aim for a deep understanding. Relying solely on copy-pasting and only reviewing results when the code becomes complex won't help you achieve this. Consider this: if a senior developer, architect, or product owner wanted, they could easily use ChatGPT to handle everything, skipping problem-solving altogether. In that case, there’d be no need to hire you, the ChatGPT coder.
Aim to be the person who sees the bigger picture, understands which pieces are needed, and knows how to put them together. Be the one who understands users' problems and translates them into solutions.
Prompting ChatGPT for a small task is simple, and in such cases, it’s a great option — no computer science degree required. However, designing a complete solution requires practice and experience. So, take the initiative and work through the steps yourself.
Feedback
We are happy to give you feedback
- 3 days after your lab (a tutor will write a gitlab issue)
- at the beginning of the following lab for the documentation of the last lab
Teamwork
Each of you will work on a project in groups of four or six at most. It is recommended to address either iOS or Android, not necessarily both -- web is mandatory. As in reality, it is up to you to distribute the workload fairly. However, if one or more do not contribute as planned, do not hesitate to contact me. Do so as early as possible -- and not after the grading. Work together as a team. Be reliable and fair to each other, and communicate. Read and follow the instructions of teamwork.
Communication
For general questions use the Moodle Forum. For individual questions use the lab, lecture and on demand consultation hour.
Do not hesitate to communicate with the lecturer in case of any problems or questions. A lively communication is explicitly encouraged.
AI
This material was developed using artificial intelligence (AI) technologies:
- The fundamental structure was established by myself.
- Texts have been refined and optimized through AI-assisted editing to enhance clarity and readability.
- Some examples within the material were generated by AI systems.
- I have reviewed and revised everything, ensuring the quality and accuracy of the content.
Thanks
The source code and infrastructure of the page as well as some content is based on the material of Ralf Hahn, Stefan Zander, Stefan Ruehl and others I am not aware of.
This website was created using MkDocs, Markdown und Visual Studio Code and rendered with Material Theme for MkDocs.