02325 Programming Project
This is the homepage for the course 02325 Programming Project, which is taught in the period from the 8th to the 26th of June.
Introduction §1
The goal of this project is to challenge you with a real-life-adjacent development project. Hopefully, you will surprise yourself about how much you have learned in the last year, but also realize that there is still something to learn.
Learning Objectives §1.1
A student who has met the objectives of the course will be able to:
Organize, plan, and carry out collaborative work in a small project group;
Implement and adapt a solution in code to a problem with changing requirements over multiple deliverables;
Break down a development task into smaller pieces;
Prioritize requirements;
Store, access, and migrate data from/to a database;
Use layered architecture design;
Verify code using automatic and manual testing;
Use version control for collaboration and attribution; and
Document the design and development process.
Teaching Philosophy §1.2
Our teaching philosophy is that you only learn from your mistakes
. We will therefore push you to your limits, so that you get a change to make mistakes now where it doesn't matter instead of later when it might cost you your job.
Therefore, we will ask you to do things beyond your current skill level, and that we do not expect you to complete all tasks.
We do know that this is taxing, but don't let yourself get stuck or give up. Instead contact the TA or teacher as they really want to help.
Rules §1.3
We expect you to complete the task with most means necessary. This includes the use of GenAI (except for agentic AI) as well as the internet as large. You are, however, still bound by the Danish copyright laws and general academic rules:
Do not present others work, GenAI included, as your own.
If you use code or resources from the internet, make sure you do not infringe on their copyright.
Since the goal of this course is to learn to develop code, consider turning of all GenAI tools as they will hinder your ability to learn. The use of Agentic AI (e.g ., tools like Claude Code or OpenCode) is prohibited.
The Goal §1.4
The goal is to build a thesis and internship allocator for UTD, the University for a Technical Denmark.
At UTD every student need to complete multiple projects with an advisor. In the current setup, each student have to send emails to every advisor, they might want to do a project with, and hope that those advisor are available. This solution is a big pain point for the students because it is hard to figure out which advisors have slots left, for the advisor as they get many emails from students that want advising, and for the administration as they have to help the students find an advisor so they can graduate.
UTD, therefore, wants as system to keep track of student and their advisors. The system should be web-based and stored in an database.
Tech Stack §1.5
The customer already had a team working on the assignment but tragically they all got hit by a bus. For the project you will be using the following tech stack.
Java for the backend language.
Maven as the build-system.
Spring Boot for the web-framework using Thymeleaf as the template language.
Pico CSS for the frontend.
Groups §1.6
In this project, you are working in groups of 4 picked at random at the start of the course. We do this because of two reasons:
As in real life you cannot always decide who you are going to work with. People skills in software development is extremely important.
This is a chance to broaden your network and get to know more people to work with in the future.
We know that your skill levels are still varied. It is important then that the strong programmers in the group help the less strong. We follow the LEGO philosophy,
Blame is not for failure, it is for failing to help or ask for help. ― Jorgen Vig Knudstorp
Requirements §2
The course has the following hand-ins.
Group Contract §2.1
Setting expectations is important in group work. The contract will not be graded and the content of the contract is completely up to you, however, if you experience any disagreements during the course period, then we, the instructors, will use the contract as the basis for any enforcement.
Your group contract MUST contain all the group members names as well as their gitlab account.
To make sure you cover all the important topics, consider using the following Contract Template.
Remember to do the hard conversation now. What is acceptable behaviour, what is not? How many days can you be late before it will have consequences.
As soon as you hand in your group-contract, your group will be given a repository, which contains your first user-stories.
Git Repository §2.2
As part of the final commit you have to hand in a copy of your repository.
Your contributions to the projects code and report are measured using the commits to your joint repository. Only commits in the
mainbranch are counted. Make sure your git is setup correctly (see Git (§1)).
Using a complicated set of metrics we will calculate a Contribution Score, which indicate how much each individual contributes to the final product.
During the course, we will push a file SUMMARY.md to your repository which contains both your active user-stories as well as your contribution score.
To package up the repository follow the guide in Git (§3.2).
Report §2.3
The report must be no larger than 100 kB (~100.000 characters including spaces), and should be written in Markdown and render nicely on gitlab. It should be handed in as part of your repository (see home (§2.2)).
Product Video §2.4
A 5 minute video show-casing the most interesting features of your application. Consider using OBS, as a screen recorder.
This video is used to help the censor get a feeling of the final product, as well as something you can showcase to friends, family, and potential employers.
Individual Reflections §2.5
A pdf with individual reflection on your work in the project. You should cover:
What did you do well, where do you felt like you shine?
Where did you fail, and what did you learn from those failures?
How did you use GenAI, and did it help or hinder you?
Do you think your contribution score is accurate?
The individual reflections should be less that one page, two or three paragraphs.
Grading §3
As a rule of thumb, you cannot fail this course unless you do not participate. To show your participation, you need to have written a reasonable amount of code during of the three weeks and have pushed it to git.
Your grade will be based on:
the value created for the costumer,
your report,
the amount of code written and tested, and
your reflections on lessons learned.
Value created is measured as a number between 1 and 5 for each user-story, this number is secret but your costumer will try to hint importance to you if you ask them.
The amount of code written and tested is measured using your git history, it is therefore important to make sure your Git is set up correctly.
Course Plan §4
Find the current course plan here.
Course Evaluation and Feedback §5
Please do not hesitate to write to me directly or fill out the anonymous form.