Commit 9f5e7478 authored by Hallvard Trætteberg's avatar Hallvard Trætteberg
Browse files
parents 998a802c 9164a090
Pipeline #138260 failed with stages
in 25 seconds
# Materiale laget med asciidoctor
Mappa **asciidoctor** inneholder tekstlig materiale, mens **revealjs**-mappa
inneholder lysarkene.
## Hvordan bygge
Bygging av både dokumentasjon og lysark skjer med gradle.
Bruk `gradle asciidoctor` for å generere HTML for det tekstlige og `gradle asciidoctorRevealJs` for lysarkene.
Konvertering kan også gjøres med den generelle `gradle build`.
plugins {
id 'org.asciidoctor.jvm.convert' version '3.0.0-alpha.3'
id 'org.asciidoctor.jvm.revealjs' version '3.0.0-alpha.3'
id 'org.asciidoctor.jvm.convert' version '3.2.0'
id 'org.asciidoctor.jvm.revealjs' version '3.2.0'
}
repositories {
......@@ -14,7 +14,7 @@ repositories {
}
dependencies {
asciidoctorGems 'rubygems:asciidoctor-revealjs:2.0.0'
asciidoctorGems 'rubygems:asciidoctor-revealjs:4.0.1' // asciidoctorGems 'rubygems:asciidoctor-revealjs:2.0.0'
}
asciidoctor {
......
= IT1901
:customcss: slides.css
:icons: font
:includedir: revealjs/includes/
:LECTURE_TOPIC: Course Introduction
:LECTURE_NO: 1st lecture
include::{includedir}header.adoc[]
++++
<img id="main-logo" class="main-logo" src="images/template/main_logo_eng_no_text.png" width="300" alt="ntnu logo"/>
++++
[.smaller-80]
- Velkommen til IT1901 Informatikk prosjektarbeid 1
- Welcome to IT1901 Informatics, Project 1
Høst 2019 / Fall 2019
Høst 2021 / Fall 2021
== Agenda
......@@ -41,6 +43,7 @@ Smidig og moderne praksis og konstruksjon
** mobil
** web
== IT1901 Goals
[.smaller-80]
......@@ -56,20 +59,23 @@ Smidig og moderne praksis og konstruksjon
** documentation
** code quality
== Group work
== Individual and Group work
- there are 3 group deliverables and one individual deliverable
- there is on individual development assignment (mandatory to pass to get a grade)
- there are 3 group deliverables
- one individual report
- students will work in groups of 4
- fill in the form that will be announced shortly on Blackboard to be assigned to a group
== Deliverables and tasks
- go through the available materials
- work on individual assignments (you need to have all assignments approved to get a grade)
- until you are assigned to a group you must
** set up your development environment
** checkout, build and run the simple example
** checkout, build and run the todo list example
https://gitlab.stud.idi.ntnu.no/it1901/course-material/tree/master/simpleexample
https://gitlab.stud.idi.ntnu.no/it1901/todo-list
The first task for the group is to select the domain.
......@@ -77,13 +83,13 @@ The first task for the group is to select the domain.
[.smaller-80]
[%step]
- week 2 - domain description, first user stories
- week 3 - Deliverable 1 (10% / group) (Desktop JavaFX application)
- week 4 - week 7 - move to REST API backend, modularization, additional feature, ci
- week 8 - Deliverable 2 (10% / group) (modular application, REST based backend)
- week 9 - week 11 - choose between web client or Android client and implement the new architecture for same domain
- week 12 - Deliverable 3 (50% / group) (final technical)
- week 13 - Deliverable 4 (30% / individual) Reflection
- week 34 - start on individual assignment, intro, git++
- week 35 - establish groups and start group work
- week 36 - deliver individual assignment
- week 38 - Deliverable 1 (10% / group) (basic modular JavaFX application)
- week 41 - Deliverable 2 (10% / group) (improved modular application)
- week 46 - Deliverable 3 (50% / group) (final technical)
- week 47 - Deliverable 4 (30% / individual) Reflection report
== Evaluation and feedback
......@@ -98,12 +104,20 @@ The first task for the group is to select the domain.
- point is to learn by implementing these using the required architectures
- we are not looking for quantity but for quality, so just few core features will suffice
== About domain selection (2)
- the chosen app needs to be suitable for a cloud based service
- there must therefore be some dynamic data per user managed by the server.
- eg. a (currency) calculation will NOT fit such a project.
- one good starting point are the cases from the HCI course (MMI)
== Referansegruppe
- Trenger 3-5 medlemmer til referansegruppe i faget
- Mulighet til å påvirke kurset og forbedre kurset for de som skal ta det senere år
- 3 møter; uke 5, uke 9 og etter kursslutt
- Ca. en time per møte - over lunch i kantina
- Ca. en time per møte
- Meld deg i pausen om du er interessert!
- If until next week there are no volunteers we will randomly select 5 students
......@@ -124,49 +138,22 @@ Gruppekontrakt skal godkjennes av studentassistent, signeres av alle gruppemedle
== Group registration form
[.left]
https://bit.ly/2HdMRQi
- The form will be announced shortly on Blackboard.
[.right]
image::../images/lecture01/qrcode-group-registration.svg[width=400]
== Tools used in IT1901
In the course we will use several tools:
[.smaller-80]
[%step]
** git for source code management
** gitlab for collaboration: repository sharing, issue tracking, issue boards, code review ...
** gitpod - automatically spin a workspace that is accessible via a browser to work, collaborate, evaluate ...
** VSCode - recommended IDE to use as it is the same as the gitpod environment
** sdkman - recommended tool to manage JDK and Maven
== !
image::../images/lecture01/teamwork.png[canvas, size=contain]
++++
<div id="footer" class="footer">
<div style="display:table-row;">
<span class="element" style="width:150px;">
<a href="https://www.ntnu.no" target="_blank">
<img id="footer-logo" class="footer-logo"
src="images/template/logo_ntnu.png"
alt="ntnu logo" height="28"/>
</a>
</span>
<span class="element" style="width:300px;">| IT1901 </span>
<span class="element">| Course Introduction </span>
<span class="element">&nbsp;&nbsp;&nbsp;&nbsp;</span>
</div>
</div>
<div id="vertical-ntnu-name" class="vertical-ntnu-name">
<span class="helper"></span>
<img src="images/template/vertical-ntnu-name.jpg" alt="Norwegian University of Science and Technology" />
</div>
<script type="text/javascript">
window.addEventListener("load", function() {
revealDiv = document.querySelector("body div.reveal")
footer = document.getElementById("footer");
revealDiv.appendChild(footer);
titleSlideDiv = document.querySelector("div.slides section.title")
mainLogo = document.getElementById("main-logo");
titleSlideDiv.prepend(mainLogo);
vertName = document.getElementById("vertical-ntnu-name");
revealDiv.appendChild(vertName);
} );
</script>
++++
\ No newline at end of file
include::{includedir}footer.adoc[]
\ No newline at end of file
= Software Development
:customcss: slides.css
:icons: font
:includedir: revealjs/includes/
:LECTURE_TOPIC: Software Development
:LECTURE_NO: 3rd Lecture
include::{includedir}header.adoc[]
++++
<img id="main-logo" class="main-logo" src="images/template/main_logo_eng_no_text.png" width="300" alt="ntnu logo"/>
++++
[.smaller-80][.center-paragraph]
IT1901 Fall 2019 - 2nd Lecture
IT1901 Fall 2020 - 3rd Lecture
[background-color = "#124990"]
[color = "#fff6d5"]
......@@ -23,62 +25,44 @@ IT1901 Fall 2019 - 2nd Lecture
[color = "#fff6d5"]
== Administrative issues
== Feedback
[.left]
Go to: +
app.one2act.no +
Session: +
RIBOO +
[.right]
image::../images/lecture02/qr-app-one2act-no.svg[width=400]
== Example code on gitlab
Have you managed to build and run the example?
- A) Yes
- B) No
== Group registration form
- About half of you filled in the form
- deadline to fill in the form is Wednesday, August 26
== Example code on gitlab (2)
https://s.ntnu.no/it1901groups
What IDE are you using ?
== Individual Assignment 1
- A) Eclipse
- B) IntelliJ
- Requires that you get access to the it1901/studenter-2020 group
** in gitlab (request access)
** gets approved within the day / next day
** only about half of you did that
- the exercise is mandatory to get a grade in the course
== Individual Assignment 1 (cont.)
== Example code on gitlab (3)
- deadline August 27th
- on BB post the link to the repo
- the main deliverable is the repo itself
Are there any issues encountered ?
== Provided materials
- A) no issues
- B) could not clone the project
- C) could not build the project
- D) could not run the project
- E) other issue
== !
image::../images/lecture02/groups-padding.png[canvas, size=contain]
- very few students did watch the materials
- they contain important information for assignments
- relevant materials for 1st assignment
** gitpod episodes
** git course
** introduction to gitlab
== Reference Group
- Tommy Chan
- Vivi Cecilie Galschiødt Svendsen
- Johan Ludvig Holst
- Aksel Kirknes
- Aksel Saugestad
- Lars-Olav Vågene
- Trenger 3-5 medlemmer til referansegruppe i faget
- Mulighet til å påvirke kurset og forbedre kurset for de som skal ta det senere år
- 3 møter / Ca. en time per møte
- Meld deg om du er interessert! (email / chat / group registration form)
- If there are not enough volunteers we will randomly select the rest
== Deliverable 1
- each student group has assigned a group (folder) in gitlab gr19xx
- in the folder there is a repository with name gr19xx which will be used for delivering the code
- deadline September 9th, 2019
- group contract has deadline on September 3rd, 2019
[background-color = "#124990"]
......@@ -109,15 +93,6 @@ Engineering refers to the practice of organizing the design and construction of
[.smaller-60]
Rogers, G.F.C. (1983)
== Exercise
[.smaller-60]
Engineering refers to the practice of organizing the design and construction of any artifice which transforms the physical world around us to meet some recognized need. Rogers, G.F.C. (1983)
- Discuss with a colleague sitting next to you. Look at Rogers’ definition of engineering. How would you relate elements of that definition to your understanding of software development?
[.smaller-40]
Adapted from _An introduction to software development (Open University)_
[background-color = "#124990"]
......@@ -181,20 +156,6 @@ https://www.visual-paradigm.com/scrum/what-is-sprint-in-scrum/
Software quality is the degree to which a software solution meets the design requirements and the user needs and expectations.
== Feedback
[.left]
Go to: +
app.one2act.no +
Session: +
RIBOO +
[.right]
image::../images/lecture02/qr-app-one2act-no.svg[width=400]
== Exercise
- Discuss with the colleague next to you about what properties influence software quality.
- Type 3-5 keywords that you consider to be most important.
== Quality attributes
......@@ -283,13 +244,6 @@ image::../images/git-repo-commands.png[width="500px"]
* `git pull` - henter andres endringer, i tilfelle konflikt
* `git push` - deler endringer med andre via serveren
== Exercise
- Go to your group repository
- https://gitlab.stud.idi.ntnu.no/it1901/gr19xx
- add any members that might not have access
- modify the readme and add your name in a list
== Forgreining (branching)
[.smaller-60]
......@@ -441,39 +395,5 @@ Automatisering av alt som fremmer kvalitet, men som tar tid, f.eks.
image::../images/lecture02/doad.jpg[canvas, size=contain]
++++
<div id="footer" class="footer">
<div style="display:table-row;">
<span class="element" style="width:150px;">
<a href="https://www.ntnu.no" target="_blank">
<img id="footer-logo" class="footer-logo"
src="images/template/logo_ntnu.png"
alt="ntnu logo" height="28"/>
</a>
</span>
<span class="element" style="width:300px;">| IT1901 - 2nd lecture </span>
<span class="element">| Software Development </span>
<span class="element">&nbsp;&nbsp;&nbsp;&nbsp;</span>
</div>
</div>
<div id="vertical-ntnu-name" class="vertical-ntnu-name">
<span class="helper"></span>
<img src="images/template/vertical-ntnu-name.png" alt="Norwegian University of Science and Technology" />
</div>
<script type="text/javascript">
window.addEventListener("load", function() {
revealDiv = document.querySelector("body div.reveal")
footer = document.getElementById("footer");
revealDiv.appendChild(footer);
titleSlideDiv = document.querySelector("div.slides section.title")
mainLogo = document.getElementById("main-logo");
titleSlideDiv.prepend(mainLogo);
vertName = document.getElementById("vertical-ntnu-name");
revealDiv.appendChild(vertName);
} );
</script>
++++
\ No newline at end of file
include::{includedir}footer.adoc[]
\ No newline at end of file
= Software Development
:customcss: slides.css
:icons: font
:includedir: revealjs/includes/
:LECTURE_TOPIC: Software development
:LECTURE_NO: 3rd lecture
include::{includedir}header.adoc[]
[.smaller-80][.center-paragraph]
IT1901 Fall 2020 - 3rd Lecture
include::{includedir}dev_content.adoc[]
include::{includedir}footer.adoc[]
\ No newline at end of file
= SCM - Git demo
:customcss: slides.css
:icons: font
:includedir: revealjs/includes/
:LECTURE_TOPIC: Git demo
:LECTURE_NO: 4th lecture
include::{includedir}header.adoc[]
[.smaller-80][.center-paragraph]
IT1901 Fall 2020 - {LECTURE_NO}
[background-color = "#124990"]
[color = "#fff6d5"]
== Git demo
== Installing and setting up git
- Go to https://git-scm.com/downloads
- Download and install the right version for your OS
- git commands are now available
[.grid-left-right-50-50]
== Typical sequence (share project)
[.area-left]
- starting a project and sharing it on Gitlab for team collaboration
** `git init`
** `git status`
[.area-right]
** `git add ...`
** `git commit ...`
** `git remote ...`
** `git push`
== Commit messages
image::../images/git_commit_2x.png[size=75%]
[.smaller-40]
https://xkcd.com/1296/
== Commit messages (seriously)
- Separate subject from body with a blank line
- Limit the subject line to 50 characters
- Capitalize the subject line
- Do not end the subject line with a period
- Use the imperative mood in the subject line
- Wrap the body at 72 characters
- Use the body to explain what and why vs. how
[.grid-left-right-50-50]
== Typical sequence (simple collaboration)
[.area-left]
- working with a shared project
** `git clone`
** `git pull`
[.area-right]
** `git status`
** `git add ...`
** `git commit ...`
** `git push`
== Conflicts (1)
** when same files (lines) are changed by different devs
** automatic merge is not possible
** we need to solve that to be able to push our changes
== Conflicts (2) - Setup
- `git config merge.tool vimdiff`
- `git config merge.conflictstyle diff3`
- `git config mergetool.prompt false`
== Conflicts (3) - Solving
- `git mergetool`
- `:wqa` save and exit from vi
- `git commit -m "message"`
- `git clean` remove file (might remove other untracked files)
== Typical sequence (with branching)
- working with branches
** `git pull`
** `git checkout -b <branch_name>`
** `git status` + `git add ...` + `git commit ...`
** `git checkout master`
** `git merge <branch_name>`
include::{includedir}footer.adoc[]
\ No newline at end of file
= Administrative Issues
:customcss: slides.css
:icons: font
:includedir: revealjs/includes/
:LECTURE_NO: 5th lecture
:LECTURE_TOPIC: Admin issues
include::{includedir}header.adoc[]
[.smaller-80][.center-paragraph]
IT1901 Fall 2020 - {LECTURE_NO}
[background-color = "#124990"]
[color = "#fff6d5"]
== Administrative Issues
- Reference group
- Groups
- Deadlines
== Reference group
[.smaller-60]
[%header,cols=3*]
|===
|Name
|Email
|Specialization
|Kamomilla Godlund
|kamomilla.godlund@gmail.com
|Datateknologi
|Ruben Kobbeltvedt
|ruben.kobbeltvedt@gmail.com
|Informatikk
|Jan Ming Lam
|janmla@stud.ntnu.no
|Informatikk
|Una Onsrud
|una.onsrud@gmail.com
|Datateknologi
|Idun Syvertsen
|id.syver@outlook.com
|Datateknologi
|===
== Reference group (2)
- Special thanks to the reference group volunteers for their interest in the course.
- Please relay your proposals for improvements and general feedback related to the course to the reference group members.
== Groups
- most groups are formed on BB, some more work needed
- for issues with the groups contact
** Sondre (sondrhel@stud.ntnu.no) or
** Anh-Kha (akvo@stud.ntnu.no)
- will soon start adding members to Gitlab groups
== Groups (2)
- contact your team mates and start working on the group contract
- start working on finding a suitable project
== Gruppekontrakt
- Minimumskrav til avtale:
** Tilstedeværelse
** Tidsbruk
** Forventninger til den enkeltes bidrag
** Hva som skjer ved avvik eller uenigheter
Gruppekontrakt skal godkjennes av studentassistent, signeres av alle gruppemedlemmer - og leveres sammen med første innlevering
== About domain selection
- choose an app / service that you know well and select a couple of features to implement during the semester
- point is to learn by implementing these using the required architectures
- we are not looking for quantity but for quality, so just few core features will suffice
== About domain selection (2)
- the chosen app needs to be suitable for a cloud based service
- there must therefore be some dynamic data per user managed by the server.
- eg. a (currency) calculation will NOT fit such a project.
- one good starting point are the cases from the HCI course (MMI)
== Coming Deadlines
- today (at 18:00) is the deadline for submitting the first assignment
** push you last changes to your repository on Gitlab
** post the link to the repository on BB
- Thursday (at 23:59) is the deadline for the second assignment
include::{includedir}footer.adoc[]
\ No newline at end of file
= Build tools. Introduction to testing
:customcss: slides.css
:icons: font
:includedir: revealjs/includes/
:LECTURE_TOPIC: Build tools. Introduction to testing
:LECTURE_NO: 6th Lecture
++++
<img id="main-logo" class="main-logo" src="images/template/main_logo_eng_no_text.png" width="300" alt="ntnu logo"/>
++++
include::{includedir}header.adoc[]
[.smaller-80][.center-paragraph]
IT1901 Fall 2019 - 3rd Lecture
IT1901 Fall 2020 - {LECTURE_NO}
[background-color = "#124990"]
[color = "#fff6d5"]
== Overview
[.smaller-80]
- Feedback from last lecture