A clear Fordel.
Christian, and
TA Christian (2 hours after 13, most days)
You only learn from your mistakes.
Working in small groups
Prioritize requirements
Verify the code
Use version control
From 4th of June to 26th of June,
Work in random groups of four, to
Build a real product,
with changing requirements.
UTD needs a project and internship allocator.
You already have some code.
Yes, at every meeting you will get more US to do.
You have to figure out what customer wants.
Out of meeting you can send emails, but expect some delay.
Mimic Nature
Help you get a bigger network
A great change to set expectations.
It will be the legal
document we will hold you to, if disputes happens.
How much do you want to work?
What happens is someone is not pulling their weight?
Or, if they pull too much?
In sickness and health.
What is unacceptable behavior?
If you work 120 hours, what grade would you expect?
How many hours on top would an better grade be worth to you?
How many sick days can you have?
Is using GenAI okay?
Plagiarise.
Break Copyright.
Copilot and ChatGPT is fine, but you own the code.
Value produced to the customer,
your report,
the amount and quality of the code written and tested,
your team work, and
your reflections on lessons learned.
Blame is not for failure, it is for failing to help or ask for help. ― Jorgen Vig Knudstorp
Do not write any code, or
Prevent your group members from writing code.
Writing tests is a great way to get unstuck and create value.
A clever way to calculate how much of the final version you contributed to.
Only looks at source code and the report.
You will get feedback before each meeting.
You cannot push directly to the main branch (use pull requests).
Only commits where you are the author counts.
If you are pair programming, switch between authors.
Use the webpage :), but
let me know if something is missing.
Use the TA slots (after 13, most days),
Contact the TA or Me on emails or teams,
I might arrange Q/A's during the course if needed.
Send anonymous feedback! home (§5)
Make sure to fill out your Group Contracts, home (§2.1).
Create a Gitlab (§4) account.
Come talk to me when both is done, and I'll create your repository.
Now we are ready to get technical.
As a student I want to have constant feedback so that I use the feedback to improve.
Figure HTTP is a Protocol
Figure from mdn webdocs.
Figure from mdm webdocs
@GetMapping("/login")
public String getLogin() {
return "login"; // Render the login template
}@PostMapping("/login")
public String postLogin(
@RequestParam("email") String email,
@RequestParam("password") String password,
Model model,
HttpSession session) {
// ...
session.setAttribute("auth", auth);
return "redirect:/";
}The good thing about a key-chain is that you lose all your keys at once.
try (var uow = unitOfWork.begin()) {
auth = authenticator.authenticate(user, password);
uow.commit();
}In file X.sql describe how to go from database X-1 to X.
Never change a migration file, after it has been deployed.
Just create a new one.
Figure Bad dependencies
Figure Inversed Dependencies
Unit Tests (Only test the behavior)
End-to-End Tests (Test everything)
Arrange (Setup the state)
Act (Do something)
Assert (Check the state has changed correctly)
@Test
@DisplayName("with no local is invalid")
void with_no_domain_is_invalid() {
var t = assertThrows(InvalidEmail.class,
() -> Email.of("my@"));
assertEquals("domain is empty", t.getMessage());
}
Figure Code coverage report, borrowed from geeksforgeeks.
100% is impossible, but
0% is unacceptable.
Now is the time for questions.