diff --git a/lectures/README.md b/lectures/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..3c646d40a86d00c27b7a4fa76aa542635c5fa43f
--- /dev/null
+++ b/lectures/README.md
@@ -0,0 +1,11 @@
+# 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`.
diff --git a/lectures/build.gradle b/lectures/build.gradle
index 2aa92bc14492ba53c6b05c24587d903429da3749..5ba62a4f8ac4200563b2a062500582999e0f4556 100644
--- a/lectures/build.gradle
+++ b/lectures/build.gradle
@@ -1,6 +1,6 @@
 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 {
diff --git a/lectures/revealjs/course-intro.adoc b/lectures/revealjs/01-course-intro.adoc
similarity index 61%
rename from lectures/revealjs/course-intro.adoc
rename to lectures/revealjs/01-course-intro.adoc
index 75b6d2f8781fae999f13c754faee9900108939ff..a41d741f83a96231c90eaef7cacc9e04c1f37137 100644
--- a/lectures/revealjs/course-intro.adoc
+++ b/lectures/revealjs/01-course-intro.adoc
@@ -1,16 +1,18 @@
 = 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,15 +59,18 @@ 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 will be several individual assignments 
+- 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
@@ -77,13 +83,12 @@ 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 35 - 1st individual assignment, git++
+- week 36 - 2nd individual assignment, establish groups and start group work
+- week 38 - Deliverable 1 (10% / group) (monolitic desktop JavaFX application)
+- week 41 - Deliverable 2 (10% / group) (modular application)
+- week 47 - Deliverable 3 (50% / group) (final technical)
+- week 47 - Deliverable 4 (30% / individual) Reflection report
 
 == Evaluation and feedback
  
@@ -98,12 +103,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 +137,11 @@ Gruppekontrakt skal godkjennes av studentassistent, signeres av alle gruppemedle
 
 == Group registration form
 
-[.left]
-https://bit.ly/2HdMRQi
-
-[.right]
-image::../images/lecture01/qrcode-group-registration.svg[width=400]
+- The form will be announced shortly on Blackboard.
 
 == ! 
 
 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
diff --git a/lectures/revealjs/02-software-development.adoc b/lectures/revealjs/02-software-development.adoc
index 7492a7d10906e8894fa11eaa14e3b0410841c410..255d80398a8967f8dfd04f1e4e1b5858467ba921 100644
--- a/lectures/revealjs/02-software-development.adoc
+++ b/lectures/revealjs/02-software-development.adoc
@@ -1,13 +1,15 @@
 = 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
diff --git a/lectures/revealjs/03-dev-and-scm.adoc b/lectures/revealjs/03-dev-and-scm.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..3343562c340809b5d785fb5fa64f7cf42050067f
--- /dev/null
+++ b/lectures/revealjs/03-dev-and-scm.adoc
@@ -0,0 +1,15 @@
+= 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
diff --git a/lectures/revealjs/04-git-demo.adoc b/lectures/revealjs/04-git-demo.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..569ef0d4747bf20f594e64de7dd9553b9aa9b4db
--- /dev/null
+++ b/lectures/revealjs/04-git-demo.adoc
@@ -0,0 +1,100 @@
+= 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
diff --git a/lectures/revealjs/05a-admin-issues.adoc b/lectures/revealjs/05a-admin-issues.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..863137f31b760bc0df407f1a010d5fa406998eba
--- /dev/null
+++ b/lectures/revealjs/05a-admin-issues.adoc
@@ -0,0 +1,103 @@
+= 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
diff --git a/lectures/revealjs/03-build-tools-and-some-testing.adoc b/lectures/revealjs/06-build-tools-and-some-testing.adoc
similarity index 66%
rename from lectures/revealjs/03-build-tools-and-some-testing.adoc
rename to lectures/revealjs/06-build-tools-and-some-testing.adoc
index 86997bf07b7ecddec95a22a1e7e6694ad595653a..7510f7697b862ee4fefbb2679b95ddc92e77008b 100644
--- a/lectures/revealjs/03-build-tools-and-some-testing.adoc
+++ b/lectures/revealjs/06-build-tools-and-some-testing.adoc
@@ -1,107 +1,76 @@
 = 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
+- Administrative issues
 - Build tools
-- Gradle
 - Testing
-- JUnit
-- TestFX
-- Mockito
-- Jacoco
 
 [background-color = "#124990"]
 [color = "#fff6d5"]
-== Feedback from last lecture
-
-
-== !
-
-[.center-paragraph]
-image::../images/lecture03/q1.png[width=700]
-
-
-== !
-
-[.center-paragraph]
-image::../images/lecture03/q2.png[width=700]
-
-
-== !
-
-[.center-paragraph]
-image::../images/lecture03/q3.png[width=700]
-
+== Administrative issues
 
-== Feedback
-[.left]
-Go to: +
-app.one2act.no +
-Session: +
-KIPAT +
+== Individual assignment 1
 
-[.right]
-image::../images/lecture02/qr-app-one2act-no.svg[width=400]
+* delivered project must be in the master branch 
+* project needs to be named "valutakalkulator"  and the packages, build files and module information need to be named consistently and reference "valutakalkulator"
+* project must build successfully and run - check that before delivering
+* .gitpod.dockerfile and .gitpod.yml - are required for gitpod support
 
-== Example code on gitlab
+== Individual assignment 1 (cont.)
 
-Have you managed to build and run the example?
+* gitpod label in readme.md to point to your project
+* project name must be the same with the NTNU username 
+* project must be created inside https://gitlab.stud.idi.ntnu.no/it1901/students-2020 
 
-- A) Yes
-- B) No
+== Groups 
 
-== Deliverable 1
+* groups will be finalized today
+* TAs assigned to groups will be announced on Blackboard
+* work on the contract
+* choose project (domain)
+* supervision and meetings use A4-100 (Wednesdays and Fridays)
 
-Have you selected the domain for your project?
 
-- A) Yes
-- B) No
+== Group Deliverable 1
 
-
-=== Deliverable 1
-
-programmering av en enkel app,  bruk av gradle til bygging, og git og gitlab til kodehåndtering
+programmering av en enkel app,  bruk av maven til bygging, og git og gitlab til kodehåndtering
 Krav til innleveringen:
 
 - Kodingsprosjektet skal ligge i repoet på gitlab 
-- Prosjektet skal være konfigurert til å bygge med gradle
+- Prosjektet skal være konfigurert til å bygge med maven
 
-=== Deliverable 1
+== Group Deliverable 1
 
 - En README.md-fil på rotnivå i repoet skal beskrive repo-innholdet, spesielt hvilken mappe inni repoet som utgjør kodingsprosjektet.
 - En README.md-fil (evt. en fil som README.md lenker til) inni prosjektet skal beskrive hva appen handler om og er ment å gjøre (når den er mer eller mindre ferdig). Ha med et illustrerende skjermbilde, så det er lettere å forstå. Det må også være minst én brukerhistorie for funksjonaliteten dere starter med.
 
-=== Deliverable 1
+== Group Deliverable 1
 
 - Det må ligge inne (i gitlab) utviklingsoppgaver (issues) tilsvarende brukerhistorien, hvor hver utviklingsoppgave må være egnet til å utføres som en egen enhet. De som er påbegynt må være tilordnet det gruppemedlemmet som har ansvaret.
 
-=== Deliverable 1
+== Group Deliverable 1
 
 - Vi stiller ikke krav om at dere er kommet så langt, men det må i hvert fall være noe i hvert av de tre arkitekturlagene, domenelogikk, brukergrensesnitt (JavaFX-GUI) og persistens (fillagring, men ikke nødvendigvis JSON), slik at appen kan kjøres og vise frem "noe". For at det skal være overkommelig, er det viktig at domenet er veldig enkelt i første omgang. Det er viktigere at det som er kodet er ordentlig gjort. Koden som er sjekket inn bør være knyttet til tilsvarende utviklingsoppgave.
 
-=== Deliverable 1
-- Gradle skal være konfigurert så en kan kjøre app-en vha. gradle-oppgaven run. 
-- Det må finnes minst én test som kan kjøres med gradle. Bygget skal være rigget til å rapportere testdekningsgrad, som derfor skal være over 0%.
+== Group Deliverable 1
+- Maven skal være konfigurert så en kan kjøre app-en vha. gradle-oppgaven run. 
+- Det må finnes minst én test som kan kjøres med maven. Bygget skal være rigget til å rapportere testdekningsgrad, som derfor skal være over 0%.
+- Prosjektet skal være konfigurert for gitpod og kan åpnes i gitpod vha. gitpod-merkelappen.
 - Bruk simpleexample-prosjektet som inspirasjon, men ikke kopier kode direkte.
 
-
-== What is the biggest impediment preventing you to move forward with the project?
-
-Write keywords or a short sentence. use "none" if you have no impediments.   
-
-
 [background-color = "#124990"]
 [color = "#fff6d5"]
 == Build tools
@@ -212,24 +181,40 @@ image::../images/lecture03/gradle-tree.png[width=700]
 [.smaller-40]
 https://guides.gradle.org/creating-new-gradle-builds/
 
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== More on Maven
+
+== Maven (3)
 
-== Exercise
+* manages builds, dependencies, versions 
+* configuration file is `pom.xml`
+* has good IDE support
+* central repository(ies) for dependencies
 
-Work with the colleague next to you.
-Go to gradle.org and create a "hello world" gradle build using the available documentation.
-Time 15'
+== Maven - pom.xml
 
-== Exercise feedback
+* modelVersion (4.0.0) config file format version
+* groupId - ID of group owning the project 
+* artifactId - name of the final output
+* version  - version of the created artifact
 
-Have you succeeded to create the required gradle build?
+== Maven - pom.xml (cont.)
 
-- A) Yes
-- B) No
+* dependencies - list of artifacts we depend upon
+* packaging - e.g. .jar (Java archive)
+* description 
 
+https://maven.apache.org/pom.html#Quick_Overview
 
-[background-color = "#124990"]
-[color = "#fff6d5"]
-== Gradle demo
+== Maven dependencies
+
+* list of dependencies 
+* each dependecy has specified
+** groupId
+** artifactId
+** version (optional, good to have)  
+** scope (default is `compile`)
 
 
 [background-color = "#124990"]
@@ -379,39 +364,4 @@ https://www.jacoco.org/
 
 
 
-++++
- <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 - 3rd lecture </span>
-     <span class="element">| Build tools. Introduction to testing </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
diff --git a/lectures/revealjs/07-gitlab.adoc b/lectures/revealjs/07-gitlab.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..9b0e79230f0c23e8aaaf8cad0c3fe18f3cab362a
--- /dev/null
+++ b/lectures/revealjs/07-gitlab.adoc
@@ -0,0 +1,98 @@
+= User stories. Gitlab for agile development
+:customcss: slides.css
+:icons: font
+:includedir: revealjs/includes/
+:LECTURE_NO: 7th lecture
+:LECTURE_TOPIC: User stories. Gitlab for agile development
+
+
+include::{includedir}header.adoc[]
+
+
+[.smaller-80][.center-paragraph]
+IT1901 Fall 2020 - {LECTURE_NO}
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+==  User stories. Gitlab for agile development
+- Administrative Issues
+- User stories
+- Gitlab for agile
+
+== Groups
+* Groups are finalized
+* TAs for groups are announced on BlackBoard
+* GitLab groups https://gitlab.stud.idi.ntnu.no/it1901/groups-2020
+* gr20xx
+* for issues with the groups contact
+** Sondre (sondrhel@stud.ntnu.no) or 
+** Anh-Kha (akvo@stud.ntnu.no) 
+
+== Group contract (1)
+- Minimum requirements for agreement:
+** Presence
+** Time spent
+** Expectations for the individual contribution
+** What happens in the event of deviations or disagreements
+
+
+== Group contract (2)
+* must be approved by the TA for the group 
+* signed by all group members 
+* and delivered together with the first group deliverable
+
+== Group contract (3)
+- more recommeded items:
+** handling differences in motivation level and ambition
+** what quality is expected, how defines the group something to be "done"
+** distribution of time between meetings / group work / individual work
+** what happens if course work needs more time than expected
+
+== Group contract (4)
+- more recommeded items:
+** delays, sickness, absence - how does the group handle these
+** meeting routines both for physical and virtual (agreement for time, agenda, meeting minutes etc)
+** general communication tools (email, phone, im etc) and response time
+** dealing as a group with deliverables and deadlines 
+
+== Group contract (5)
+- more recommeded items:
+** roles 
+** giving feedback to the others  
+** dealing with conflicts and disagreements
+** dealing with breach of contract
+** procedure to follow if the group is not able to solve conflicts / disagreements internally
+
+
+== Next Deadline
+- 17th of September at midnight 
+** push you last changes to the group repository on Gitlab
+** post the signed group contract on BB
+
+== 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)
+
+== User stories
+
+- slides from 1st lecture
+- video on user stories
+
+== Gitlab for agile
+
+* Issues
+* Milestones
+* Task lists
+* Labels
+* Boards
+* Quick actions
+
+
+include::{includedir}footer.adoc[]
\ No newline at end of file
diff --git a/lectures/revealjs/08-workflow-example.adoc b/lectures/revealjs/08-workflow-example.adoc
index bb6a78a99540c7da9f643f3567ab4846695a24c0..dd2db520e972ef2fe4dafe71305880d01689980f 100644
--- a/lectures/revealjs/08-workflow-example.adoc
+++ b/lectures/revealjs/08-workflow-example.adoc
@@ -1,14 +1,14 @@
 = Workflow Example 
 :customcss: slides.css
 :icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: Workflow example
+:LECTURE_NO: 8th 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 - 8th Lecture
-
+IT1901 Fall 2019 - {LECTURE_NO}
 
 [background-color = "#124990"]
 [color = "#fff6d5"]
@@ -59,39 +59,4 @@ https://gitlab.stud.idi.ntnu.no/it1901/course-material/issues
 link:scm.html[Source code management (SCM)]
 
 
-++++
- <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 - 8th lecture </span>
-     <span class="element">| Workflow example </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>
-++++
+include::{includedir}footer.adoc[]
diff --git a/lectures/revealjs/07-documentation.adoc b/lectures/revealjs/09-documentation.adoc
similarity index 71%
rename from lectures/revealjs/07-documentation.adoc
rename to lectures/revealjs/09-documentation.adoc
index aa516f8fcc21f100915565c130b7be21f6bd3bf5..4b0b88a67895ce1029553b3ffa7205d62ee1075f 100644
--- a/lectures/revealjs/07-documentation.adoc
+++ b/lectures/revealjs/09-documentation.adoc
@@ -1,13 +1,14 @@
 = Documentation 
 :customcss: slides.css
 :icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: Documentation
+:LECTURE_NO: 9th 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 - 7th Lecture
+IT1901 Fall 2020 - {LECTURE_NO}
 
 
 [background-color = "#124990"]
@@ -17,6 +18,7 @@ IT1901 Fall 2019 - 7th Lecture
 - Documentation
 - Markdown
 - Gitlab Flavoured Markdown (GFM)
+- PlantUML
 
 
 [background-color = "#124990"]
@@ -145,39 +147,28 @@ https://gitlab.stud.idi.ntnu.no/help/user/markdown
 - it can be versioned same way as the code
 - holding  documentation in the repository and updating it will allow consulting the repository contents with the correct documentation for that snapshot in time
 
-++++
- <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 - 7th lecture </span>
-     <span class="element">| Documentation </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
+== Plant UML
+
+- open source tool for UML diagrams
+- it takes a textual description and produces a diagram
+- supported within markdown in GitLab
+- uses Graphviz to lay out the diagrams
+
+== Adding diagrams to markdown 
+
+[source, role="stretch"]
+----
+```plantuml
+class LatLong {
+	double latitude
+	double longitude
+}
+class LatLongs
+LatLongs *--> "*" LatLong: "latLongs"
+class MetaData
+LatLong *--> "1" MetaData: "metaData"
+```
+----
+
+
+include::{includedir}footer.adoc[]
\ No newline at end of file
diff --git a/lectures/revealjs/10-unit-testing.adoc b/lectures/revealjs/10-unit-testing.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..02ca6a20203414a3ae3b04adefb2f9111ce17659
--- /dev/null
+++ b/lectures/revealjs/10-unit-testing.adoc
@@ -0,0 +1,231 @@
+= Unit testing 
+:customcss: slides.css
+:icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: Unit testing 
+:LECTURE_NO: 10th Lecture
+
+include::{includedir}header.adoc[]
+
+[.smaller-80][.center-paragraph]
+IT1901 Fall 2020 - {LECTURE_NO}
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Testing
+
+== Testing
+
+[%step]
+- is an important part of software development
+- a way to ensure software quality
+- automated testing allows to develop new features with a minimal effort to check if the software still works as expected
+- testing frameworks  
+
+== Testing (2)
+
+[%step]
+- design 
+- implement
+- write automated tests
+- run tests
+- we do not test just for know, we write tests to keep running them during project life cycle 
+
+== Testing (3)
+
+[%step]
+- design tests
+- implement the test
+- provide inputs
+- run the tests
+- provide expected outputs
+- check if the result  we get matches what we expect
+- produce a manageable output that the developer can consult 
+
+== Testing (3)
+
+- design tests
+- implement the test
+- provide inputs
+- *run the tests*
+- provide expected outputs
+- *check if the result  we get matches what we expect*
+- *produce a manageable output that the developer can consult* 
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== JUnit
+
+
+== JUnit
+
+- Is a Java unit testing framework.
+- provides the means to automate test
+- allows to eliminate redundant testing tasks  
+
+
+== JUnit 4
+
+``` java
+import org.junit.*;
+
+public class FoobarTest {
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+        // Code executed before the first test method
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        // Code executed before each test
+    }
+ 
+    @Test
+    public void testOneThing() {
+        // Code that tests one thing
+    }
+
+    @Test
+    public void testAnotherThing() {
+        // Code that tests another thing
+    }
+
+    @Test
+    public void testSomethingElse() {
+        // Code that tests something else
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        // Code executed after each test 
+    }
+ 
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+        // Code executed after the last test method 
+    }
+}
+```
+
+[.smaller-40]
+https://en.wikipedia.org/wiki/JUnit
+
+== JUnit 5 
+
+``` java
+import org.junit.jupiter.api.*;
+
+public class FoobarTest {
+    @BeforeAll
+    public static void setUpClass() throws Exception {
+        // Code executed before the first test method
+    }
+
+    @BeforeEach
+    public void setUp() throws Exception {
+        // Code executed before each test
+    }
+ 
+    @Test
+    public void testOneThing() {
+        // Code that tests one thing
+    }
+
+    @Test
+    public void testAnotherThing() {
+        // Code that tests another thing
+    }
+
+    @Test
+    public void testSomethingElse() {
+        // Code that tests something else
+    }
+
+    @AfterEach
+    public void tearDown() throws Exception {
+        // Code executed after each test 
+    }
+ 
+    @AfterAll
+    public static void tearDownClass() throws Exception {
+        // Code executed after the last test method 
+    }
+}
+```
+
+== JUnit 4 vs JUnit 5
+
+[.smaller-60]
+[%header,cols=3*] 
+|===
+|Element
+|JUnit 4
+|JUnit 5
+
+
+|package
+|org.junit.*
+|org.junit.jupiter.api.*
+
+|code before first test
+|@BeforeClass
+|@BeforeAll
+
+|code before each test
+|@Before
+|@BeforeEach
+
+|test
+|@Test
+|@Test
+
+|code after each test
+|@After
+|@AfterEach
+
+|code after last test
+|@AfterClass
+|@AfterAll
+
+
+
+|===
+
+== JUnit 4 vs JUnit 5 (2)
+
+[.smaller-60]
+[%header,cols=3*] 
+|===
+|Element
+|JUnit 4
+|JUnit 5
+
+
+|ignoring test
+|@Ignore
+|@Disabled
+
+|assertions *statically* accessed with
+|`Assert.assert`...
+|`Assertions.assert`...
+
+|assertion messsage position
+|in the beginning of argument list
+|in the end of argument list   
+
+|===
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Testing in simpleexample1
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Testing in todo-list example
+
+
+
+include::{includedir}footer.adoc[]
\ No newline at end of file
diff --git a/lectures/revealjs/11-code-quality.adoc b/lectures/revealjs/11-code-quality.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..6c4e87da9901f1a0e578bc8c1e9dc8d5fc37172d
--- /dev/null
+++ b/lectures/revealjs/11-code-quality.adoc
@@ -0,0 +1,84 @@
+= Code quality 
+:customcss: slides.css
+:icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: Code quality 
+:LECTURE_NO: 11th Lecture
+
+include::{includedir}header.adoc[]
+
+[.smaller-80][.center-paragraph]
+IT1901 Fall 2020 - {LECTURE_NO}
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Code quality
+
+== Code quality
+
+- automated tests
+- coding standards and consistent formatting
+- check for higher level types of errors (bug patterns)
+
+
+== Tools for automatic code checking
+
+- Checkstyle (https://checkstyle.sourceforge.io/index.html) 
+- Spotbugs (https://spotbugs.readthedocs.io/en/latest/index.html)
+- Pmd (https://pmd.github.io)
+- Sonarcube (https://www.sonarqube.org/)
+- ... 
+
+== Checkstyle
+
+- static analysis
+- finds errors like
+** references to variables with undefined value
+** variables that are never used
+** syntax and coding standards violations
+** dead code blocks 
+
+== Checkstyle (2)
+
+- naming conventions
+- line length
+- whitespace
+- Javadoc comments
+- annotations
+ 
+== Checkstyle (3)
+
+- can be configured to use a certain set of checks
+- extendable - one can write own checks
+- plugins for IDEs
+ 
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Checkstyle examples 
+
+ 
+== Spotbugs
+
+- checks bytecode and not the source
+- looks for "bug patterns"
+- example:
+
+```
+An apparent infinite loop (IL_INFINITE_LOOP)
+This loop doesn't seem to have a way to terminate (other than by perhaps throwing an exception).
+```
+
+== Spotbugs (2)
+
+- extendable
+- plugins for Maven Gradle Ant
+- Eclipse IDE integration 
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Spotbugs examples
+
+
+
+include::{includedir}footer.adoc[]
\ No newline at end of file
diff --git a/lectures/revealjs/12-modular.adoc b/lectures/revealjs/12-modular.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..3c8cabc0ecec03d65cebabadc23f54a96bfff770
--- /dev/null
+++ b/lectures/revealjs/12-modular.adoc
@@ -0,0 +1,259 @@
+= Modular software 
+:customcss: slides.css
+:icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: Modular software 
+:LECTURE_NO: 12th Lecture
+
+include::{includedir}header.adoc[]
+
+[.smaller-80][.center-paragraph]
+IT1901 Fall 2020 - {LECTURE_NO}
+
+
+== Overview
+- Group deliverable 2
+- Architectural styles
+- Modular projects with Maven
+
+== Group deliverable 2
+
+- modularisering 
+** kodingsprosjektet skal deles opp i egnede moduler med avhengigheter mellom (og til andre, relevante moduler)
+** bygging styres (fortsatt) av maven og hver modul har hensiktmessig konfigurasjon
+
+[.smaller-80]
+== Group deliverable 2 (cont.)
+
+- arkitektur (full tre-lags arkitektur)
+** kjernelogikken og ui-et skal skilles fra hverandre (domenelaget + brukergrensesnittlaget )
+** persistens med JSON og Jackson evt. alternativt bibliotek (persistenslaget)
+*** definere filformat for brukerdata og evt. innstillinger
+*** reflektere over og velge mellom dokumentmetafor (desktop) og implisitt lagring (app)
+** alle tre lagene spiller sammen
+
+== Group deliverable 2 (cont.)
+
+- kodekvalitet
+** tester skal skrives for all modulene 
+** testdekningsgrad  (Jacoco) og (annen) kodekvalitet skal sjekkes av egne tillegg ( for eksempel Checkstyle og Spotbugs som plugins) 
+** rimelig god testdekning av alle lagene
+
+== Group deliverable 2 (cont.)
+- dokumentasjon
+** dokumentasjon (readme filer og kommentarer) må oppdateres
+** dokumentere arkitektur med minst et diagram (bruk PlantUML) i tillegg til teksten i readme
+
+[.smaller-80]
+== Group deliverable 2 (cont.)
+- arbeidsvaner
+** kodingsoppgaver skal være utgangspunktet for alt arbeid (Issues for alle ting som skal gjøres)
+** greiner (branch) samler arbeid for hver kodingsoppgave
+** bruk milepæl (milestones) knyttet til innleveringen
+** dere jobber i par og bytter på å kode
+
+[.smaller-80]
+== Group deliverable 2 (cont.)
+- leverer på gitlab
+** prosjektet må være gitpod-klart, så vi kan åpne det i gitpod fra en merkelapp i repoet 
+** maven skal brukes til kjøring av applikasjonen, testene og av  kodekvalitet sjekker
+** kode for vurdering må leveres i mastergreina av standard repo for gruppen (https://gitlab.stud.idi.ntnu.no/it1901/groups-2020/gr20nn/gr20nn)
+- På Blackboard leverer dere en enkel tekst som nevner at repo-et er klart for vurdering.
+- Hvis dere leverer etter fristen, informerer du lærerassistenten.
+
+
+== Architectural styles
+
+An architectural style is a conceptual specification of how a certain
+system will be structured and function. 
+
+== Architectural styles
+
+- monolithic applications
+- 3-tier applications
+- REST
+
+== layers vs tiers
+
+- sometimes the terms are used interchangeably
+- there is a difference
+** layers - logical separation
+** tiers - physical separation
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== monolithic applications
+
+== monolithic applications (1)
+
+- All the functionality is packed in a single software unit
+** presentation
+** logic
+** data
+- designed without modularity
+- also called single-tiered application
+
+== !
+
+image::../images/lecture12/1tier.png[canvas, size=contain]
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== 3-tier applications
+
+== !
+
+image::../images/lecture12/3tier.png[canvas, size=contain]
+
+== 3-tier applications (2)
+
+- application where the various functions are separated
+** presentation tier (UI / frontend)
+** logic tier (business tier)
+** data tier (data storage + data access)
+- also called 3-layer
+- application is modular 
+
+== 3-tier applications (3)
+
+- ability to update / replace just parts of the application
+- ability to independently scale the layers
+- ability to re-use layers
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== REST
+
+[.smaller-80]
+== REST
+- Representational state transfer (REST)  
+- architectural style involving use of Web Services 
+- set of constraints are applied 
+** client server
+** statelessness (no client context is stored on the server side)
+** cacheability (responses state if they can be cached or not)
+** uniform interface
+** layered system (adding layers like proxy or load balancer)
+
+
+== REST (cont.)
+
+- Web services that implement REST are called RESTful APIs
+- a base URI, example: https://gitlab.stud.idi.ntnu.no/api/v4
+- standard HTTP methods (e.g., GET, POST, PUT, PATCH and DELETE);
+- data formats for requests and responses (json, xml, etc)
+
+== !
+
+image::../images/lecture12/itodo.png[canvas, size=contain]
+
+== !
+
+image::../images/lecture12/mtodo.png[canvas, size=contain]
+
+
+== !
+
+image::../images/lecture12/rtodo.png[canvas, size=contain]
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Modular projects with Maven
+
+
+== Modular projects with Maven
+
+- use of inheritance
+- parent `pom` has configuration that is inherited by modules' `pom`
+- the descendent `pom` can override inherited configuration elements
+- descendant `pom` inherits most elements with the exception of things like artifactid, name which are used to identify the parent `pom`
+
+
+== Modular projects with Maven (2)
+
+- reduce complexity and size of individual build files
+- reliably use consistent versions for dependencies and plugins 
+
+== Parent pom example
+
+```xml
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>it1901.todolist</groupId>
+    <artifactId>parent</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+               ...
+            </dependency>
+            ...
+        </dependencies>
+    </dependencyManagement>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+      				...
+                </plugin>
+                ...
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <modules>
+        <module>core</module>
+        <module>fxui</module>
+    </modules>
+</project>
+
+```
+
+== Descendant pom example
+
+```xml
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>it1901.todolist</groupId>
+        <artifactId>parent</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>fxui</artifactId>
+
+    <dependencies>
+		<dependency>
+			...
+		</dependency>
+		...
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                ...
+            </plugin>
+            ...
+        </plugins>
+    </build>
+</project>
+
+```
+
+include::{includedir}footer.adoc[]
\ No newline at end of file
diff --git a/lectures/revealjs/13-solid-uml.adoc b/lectures/revealjs/13-solid-uml.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..e6601f6585d8500f72cdf4b92246d781e77b238c
--- /dev/null
+++ b/lectures/revealjs/13-solid-uml.adoc
@@ -0,0 +1,282 @@
+= Object oriented design principles 
+:customcss: slides.css
+:icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: OOP SOLID + UML 
+:LECTURE_NO: 12th Lecture
+
+include::{includedir}header.adoc[]
+
+[.smaller-80][.center-paragraph]
+IT1901 Fall 2020 - {LECTURE_NO}
+
+
+
+[.smaller-30]
+Partially based on slides from Torgeir Dingsøyr and Hallvard Trætteberg
+
+
+== Overview
+- OOD -  SOLID, DRY
+- UML Diagrams
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Object Oriented Design
+
+
+== Object Oriented Design
+
+“An object-oriented system is made up of interacting objects that 
+maintain their own local state and provide operations on that state. 
+The representation of the state is private and cannot be accessed directly 
+from outside the object. Object-oriented design processes involve 
+designing object classes and the relationships between these classes.” 
+(Sommerville: p 198)
+
+
+== Object Oriented Principles
+
+- Encapsulation
+- Abstraction
+- Inheritance
+- Polymorphism
+
+
+== Common issues OOD
+
+- External dependencies:
+** New requirements can produce changes in many places
+
+- Internal dependencies:
+** changes in a part of the code affect other parts
+** difficult to re-use code
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== SOLID principles
+
+== SOLID principles 
+
+- **S**ingle responsibility principle
+- **O**pen–closed principle
+- **L**iskov substitution principle
+- **I**nterface segregation principle
+- **D**ependency inversion principle
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Single responsibility principle
+
+
+== Single responsibility principle
+
+- A class should only have a single responsibility
+- A class should have one, and only one reason to change
+- Examples:
+** simpleexample2: JSON-serialization
+*** Latlong serializer
+*** Latlong deserializer
+
+
+== Single responsibility principle
+
+Applying this principle has as effects:
+
+- Smaller sized classes
+- Classes that are easier to:
+** understand
+** test
+** maintain
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Open–closed principle
+
+== Open–closed principle
+
+- Software entities should be open for extension, but closed for modification.
+- Example: JavaFX classes
+
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Liskov substitution principle
+
+== Liskov substitution principle
+
+- Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Interface segregation principle
+
+== Interface segregation principle
+
+- Many client-specific interfaces are better than one general-purpose interface.
+
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Dependency inversion principle
+
+
+== Dependency inversion principle
+
+- One should depend upon abstractions, not concretions.
+- e.g. Data access layer in between controler and domain layer
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== DRY Principle
+
+
+== Don't Repeat Yourself (DRY)
+
+"Every piece of knowledge or logic must have a single, unambiguous representation within a system."
+
+[.smalled-40]
+https://en.wikipedia.org/wiki/Don%27t_repeat_yourself
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== KISS Principle
+
+== Keep It Simple, Stupid (KISS)
+
+- write simple code
+- if classes / methods become lengthy and complicated you need to consider refactoring
+** extracting code in separate classes methods
+** eliminate redundant code
+
+
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== UML
+
+[.smaller-80]
+== UML - Unified Modelling Language
+
+- 13 diagrams that show various perspectives on the system
+
+- purpose:
+** Stimulate and focus discussion about an existing or a new system
+** Document an existing system
+** Detailed description to generate a system
+
+- informal use of UML:
+** “I do not find UML to be useful during the design process itself and prefer informal notations that are quicker to write and that can be easily drawn on a whiteboard.” (Sommerville, s. 175)
+
+== !
+
+image::../images/lecture13/uml-diagrams.png[canvas, size=contain]
+
+[.smaller-20]
+[.left-30] 
+Fowler, Martin., (2003). UML distilled: a brief guide to the standard object modeling language. Pearson Education
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Package diagram
+
+[.smaller-80]
+== Package diagram
+
+- Gir en oversikt over avhengigheter mellom moduler av et system
+- Viser “pakker” - typisk grupper av klasser
+- Viser avhengigheter mellom pakker/moduler
+- Hver klasse er kun medlem av en “pakke”
+- Pakker representerer et hierarkisk navnerom, så hver klasse innen en pakke må ha et unikt navn
+- En pakke skal ikke kunne være medlem av flere moduler
+
+[.smaller-30]
+Fowler, Martin., (2003). UML distilled: a brief guide to the standard object modeling language. Pearson Education.
+
+
+== !
+
+image::../images/lecture13/package-diagram.png[canvas, size=contain]
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Class diagram
+
+
+== Class diagram
+
+- Viser typer objekter i systemet og statiske relasjoner mellom dem
+- Enkleste form: Klassenavn i bokser
+- Viser egenskaper (attributter, assosiasjoner) og operasjoner (metoder) for en klasse
+
+
+[.smaller-30]
+Sommerville: Software Engineering, Pearson, 2016. 10th Edition, page 149.
+
+== !
+
+image::../images/lecture13/class-diagram-1.png[canvas, size=contain]
+
+[.smaller-30]
+[.left-30]
+Kilde: Yngve Lindsjørn, Universitetet i Oslo: IN2000: Kravhåndtering, modellering & design.
+
+
+== !
+
+image::../images/lecture13/class-diagram-2.png[canvas, size=contain]
+
+
+[.smaller-30]
+[.left-30]
+Kilde: Yngve Lindsjørn, Universitetet i Oslo: IN2000: Kravhåndtering, modellering & design.
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Sequence diagram
+
+[.smaller-80]
+== Sequence diagram
+
+- Brukes for å analysere samarbeid mellom objekter
+- Modellerer interaksjoner mellom aktører og objekter i et system og interaksjon mellom objekter i et scenarie
+- Aktører og objekter finnes øverst i diagrammet
+- Tidsakse nedover i diagram
+- Piler indikerer interaksjon mellom objekter
+- Annoterte piler indikerer metodekall
+- Kan vise alternative sekvenser
+
+[.smaller-30]
+Sommerville: Software Engineering, Pearson, 2016. 10th Edition, page 146.
+
+== !
+
+image::../images/lecture13/sequence.png[canvas, size=contain]
+
+== !
+
+```puml
+
+actor User
+User -> "~#newTodoItemButton: Button" as newTodoItemButton: click
+newTodoItemButton -> TodoController: handleNewTodoItemAction
+TodoController -> "~#newTodoItemText: TextField" as newTodoItemText: getText
+TodoController -> TodoList: addTodoItem
+TodoList -> TodoList: fireTodoListChanged
+TodoList -> TodoListListener: todoListChanged
+TodoListListener -> TodoController: autoSaveTodoList
+TodoListListener -> TodoController: updateTodoListView
+
+```
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Summary
+
+include::{includedir}footer.adoc[]
\ No newline at end of file
diff --git a/lectures/revealjs/14-git-gitlab.adoc b/lectures/revealjs/14-git-gitlab.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..3ae494c76ae22bcfe61e06f2659fe5eb61b71bcc
--- /dev/null
+++ b/lectures/revealjs/14-git-gitlab.adoc
@@ -0,0 +1,133 @@
+= Git and GitLab 
+:customcss: slides.css
+:icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: Git and GitLab 
+:LECTURE_NO: 14th Lecture
+
+include::{includedir}header.adoc[]
+
+[.smaller-80][.center-paragraph]
+IT1901 Fall 2020 - {LECTURE_NO}
+
+[.smaller-80]
+== Overview
+- Git
+** basic workflow recap
+** working with branches
+** code review
+- GitLab
+** Issues
+** Milestones
+** Merge requests
+** Issues / MR Templates
+
+== Basic workflow
+
+- work on main branch (master)
+- could be usable for individual / very small teams 
+- prone to conflicts 
+
+[.grid-left-right-50-50]
+== Typical sequence (basic)
+
+[.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)
+
+== Conflicts (4)
+
+- one can plan ahead what issues should be worked on in parralel to minimize the chance of conflicts
+- when working on a feature branch, keeping up to date with relevant branches (master or other branch we depend upon) can reduce the risk of getting conflicts
+
+
+== Improved workflow 
+
+- keep master only for finished work
+- uses branches for development work
+- when a feature branch is done it is merged into master
+
+[.grid-left-right-50-50]
+== Typical sequence (branches)
+
+[.area-left]
+** `git clone`
+** `git pull` 
+** `git checkout -b <branch_name>` 
+
+[.area-right]
+** `git status` + `git add ...` + `git commit ...` 
+** `git checkout master` 
+** `git merge <branch_name>` 
+** `git push`
+
+
+== Improved workflow (code review) 
+
+- keep master only for finished work
+- uses branches for development work
+- when a feature branch is done a merge request is created
+- code review takes place and more commits happen to address the comments
+- the branch is finally merged into master 
+
+== Gitlab specific push options
+
+- push options
+
+```bash 
+-o merge_request.create 
+-o merge_request.target=my-target-branch 
+-o merge_request.label="Label with spaces"
+```
+
+== Advanced workflow (git flow)
+- https://nvie.com/posts/a-successful-git-branching-model/
+- uses 2 long lived main branches - `master` and `develop`
+- shorter lived branches for `features`, `releases` and `hotfixes`
+
+== Gitlab for agile
+
+* Issues
+* Milestones
+* Task lists
+* Labels
+* Boards
+* Quick actions
+
+== Using templates
+
+* Issue templates
+* Merge request templates
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Summary
+
+include::{includedir}footer.adoc[]
\ No newline at end of file
diff --git a/lectures/revealjs/17-rest-api.adoc b/lectures/revealjs/17-rest-api.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..3a20c4b37716f6e668408560a2048b656484b93a
--- /dev/null
+++ b/lectures/revealjs/17-rest-api.adoc
@@ -0,0 +1,97 @@
+= REST APIs 
+:customcss: slides.css
+:icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: REST APIs 
+:LECTURE_NO: 17th Lecture
+
+include::{includedir}header.adoc[]
+
+[.smaller-80][.center-paragraph]
+IT1901 Fall 2020 - {LECTURE_NO}
+
+[.smaller-80]
+== Overview
+
+- REST APIs
+** HTTP requests
+** Methods
+** APIs
+** REST Recap
+
+
+
+== HTTP requests
+ - **H**yper**t**ext **T**ransfer **P**rotocol (HTTP)
+ - clients (e.g. browser) send requests
+ - servers (web site / service) send responses
+
+== HTTP Request message
+ 
+ - a request line `GET / HTTP/1.1`
+ - request headers - `User-Agent`, `Accept`, `Content-Type` etc.
+ - an empty line (containing only a `carriage return` and a `line feed`)
+ - an optional message body
+
+== HTTP Methods
+
+- HTTP specification defines `methods` to indicate what action is expected from the server
+** GET, HEAD, OPTIONS
+** POST, PUT, PATCH
+** DELETE
+
+== APIs
+
+- **A**pplication **P**rogramming **I**nterface
+- "Glue" that makes possible different pieces of software to interoperate
+- It is meant to be machine readable / usable
+- APIs are everywhere - at different levels - software libraries, operating system, applications, web services etc.
+
+== APIs (2) 
+
+- typically a set of calls or requests, expected call format, expected response format, data structures
+- separate the implementation from the interface
+- allow programs in one language to use functionality written in some other language
+- cater to modular software
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== REST
+
+[.smaller-80]
+== REST
+- **RE**presentational **S**tate **T**ransfer (REST)  
+- architectural style involving use of Web Services 
+- set of constraints are applied 
+** client server
+** statelessness (no client context is stored on the server side)
+** cacheability (responses state if they can be cached or not)
+** uniform interface
+** layered system (adding layers like proxy or load balancer)
+
+
+== REST (cont.)
+
+- Web services that implement REST are called RESTful APIs
+- a base URI, example: https://gitlab.stud.idi.ntnu.no/api/v4
+- set of exposed web resources
+- standard HTTP methods (e.g., GET, POST, PUT, PATCH and DELETE);
+- data formats for requests and responses (json, xml, etc)
+
+== !
+
+image::../images/lecture12/rtodo.png[canvas, size=contain]
+
+== Security considerations
+
+- CORS (Cross-Origin Resource Sharing)
+** headers `Access-Control-Allow-Origin` 
+- Authentication (Basic Auth,  OAuth etc)
+- HTTPS (HTTP over TLS)
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Summary
+
+include::{includedir}footer.adoc[]
\ No newline at end of file
diff --git a/lectures/revealjs/19-common-issues.adoc b/lectures/revealjs/19-common-issues.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..f13e583e6a4dd6aa8dbced55137bc2edec7e5292
--- /dev/null
+++ b/lectures/revealjs/19-common-issues.adoc
@@ -0,0 +1,112 @@
+= Common issues 
+:customcss: slides.css
+:icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: Common issues 
+:LECTURE_NO: 19th Lecture
+
+include::{includedir}header.adoc[]
+
+[.smaller-80][.center-paragraph]
+IT1901 Fall 2020 - {LECTURE_NO}
+
+[.smaller-80]
+== Overview
+
+- Planer vs. implementasjon
+- Uheldig programmeringspraksis
+- Testing
+- Sjekk av kodekvalitet
+- Utviklingsoppgaver
+- Merge requests
+- Diverse
+
+== Planer vs. implementasjon
+
+- Litt vel stor forskjell mellom ambisjoner som beskrevet i planer, 
+skjermbildeskisser og faktisk innlevering.
+- Det er lurt å tenke at innlevering 2 og 3 er noe brukere kunne prøvd ut.
+- Mange strekker seg litt langt, på bekostning av kvalitet.
+
+== Uheldig programmeringspraksis
+
+- En del kjernekode er rene data-klasser uten noen særlig logikk, heller ikke validering.
+- Innkapsling brytes ved at interne lister returneres direkte
+- Variabler og felt types til implementasjonsklasser heller enn grensesnitt (ArrayList<> vs. List<>)
+
+[.notes]
+--
+* Innkapsling brytes ved at interne lister returneres direkte. Når slike lister returneres, er det et heller ikke mye vits i å implementere Iterable, fordi den har til hensikt å støtte iterasjon uten tilgang til underliggende liste.
+--
+
+[.smaller-80]
+== Testing
+
+- Testing er ment å øke tilliten til koden
+- Ikke test kode som er like triviell som testen; det er viktigere å teste metoder med logikk
+- Det er ikke vits i å teste toString(), når den kun er ment å bli brukt til debugging
+- En del bruker try/catch og fail() galt når det ikke trengs
+
+[.notes]
+--
+* En del tester av triviell kode, som gettere og settere som kunne vært generert, er helt unødvendige. Det er viktigere å teste metoder med logikk , f.eks. filtrering, oppdatering av data osv.
+* Det er ikke vits i a test toString() når det ikke regnes som api for andre klasser.
+* En del bruker try/catch og fail() galt, det er f.eks. ikke vits i å ha try { ... } catch (Exception e) { fail(); }, for testformål er det bedre å bare la koden kræsje.
+--
+
+[.smaller-80]
+== Sjekk av kodekvalitet
+
+- Mange tar ikke hensyn til checkstyle-anmerkninger, og en del har ikke engang koblet det inn.
+- Noen prøver å lure spotbugs...  
+```java
+    // We need to implement this to make spotbugs shut up.
+    // Technically, we are supposed to make equals and compareTo
+    // agree, but we specifically want events to be sorted
+    // chronologically. The right way is probably to implement
+    // a comparator instead of overriding compareTo, and sorting
+    // with that.
+    @Override
+    @Deprecated
+    public boolean equals(Object o) {
+        // We can check quilcky by comparing pointers
+        if (this == o) {
+            return true;
+        }
+        return false;
+    }
+
+```
+
+== Utviklingsoppgaver
+
+- Mange utviklingsoppgaver mangler detaljer og/eller diskusjoner
+- Noen knytter ikke oppgaver til "assignee" og/eller milepæler
+- Verktøyene er ment å hjelpe på samarbeidet og brukes ikke bare for syns skyld
+
+== Merge forespørsler
+
+- noen grupper bruker merge forespørsler jevnlig, og det er bra!
+- men det er få kommentarer eller diskusjoner for forbedring av koden...
+
+[.smaller-80]
+== Diverse
+
+- For mange er opptatt av registrering/innlogging
+- Oppdeling i flere kontrollere kan være vanskelig å gjøre ryddig
+- Ikke bruk toString() til visning i UI-et
+- Mange legger til filer i repoet som burde vært ignorert (i .gitignore)
+
+[.notes]
+--
+* For mange er opptatt av registrering/innlogging, men det kan ikke sies å være viktig å få feedback på fra brukere, selv om det selvagt vil være nødvendig.
+* Oppdeling i flere kontrollere er ofte riktig, men kan være vanskelig å gjøre ryddig, f.eks. navigering mellom ulike Scene.
+* Ikke bruk toString() til visning i UI-et, selv om det er en billig måte å f.eks. vise elementer i lister. 
+* Many add to the repository files that should be ignored (settings from IDE, files generated by OS, build folders etc) - use .gitignore
+--
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Summary
+
+include::{includedir}footer.adoc[]
\ No newline at end of file
diff --git a/lectures/revealjs/agiletools.adoc b/lectures/revealjs/agiletools.adoc
index c817c6082693b416bd0349175c600f5443571c95..df06dd3149c94b7c4a14cbeb0c3508ca32569f32 100644
--- a/lectures/revealjs/agiletools.adoc
+++ b/lectures/revealjs/agiletools.adoc
@@ -1,10 +1,12 @@
 = Smidig praksis og verktøy
 :customcss: slides.css
 :icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: Agile tools
+:LECTURE_NO: 
+
+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"/>
-++++
 
 == Smidig praksis og verktøy
 
@@ -131,39 +133,4 @@ link:scm.html[Source code management (SCM)]
 link:ci.html[Continuous Integration (CI)]
 
 
-++++
- <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">| Agile tools </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
diff --git a/lectures/revealjs/ci.adoc b/lectures/revealjs/ci.adoc
index 1d198bb14619c1cb226de8d51c6f23c5b9d56049..75e999ee7f0df8bc9850c672b5a400aa1c59a7bf 100644
--- a/lectures/revealjs/ci.adoc
+++ b/lectures/revealjs/ci.adoc
@@ -1,10 +1,11 @@
 = Kontinuerlig integrasjon
 :customcss: slides.css
 :icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: Continuous Integration
+:LECTURE_NO: 
 
-++++
-	<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[]
 
 == Kontinuerlig integrasjon (CI)
 
@@ -214,39 +215,4 @@ image::../images/gradle-views.png[width=300]
 * så utføres byggeinstruksjoner iht. innstillinger
 
 
-++++
- <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">| Continuous Integration </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
diff --git a/lectures/revealjs/feedback.adoc b/lectures/revealjs/feedback.adoc
index dc6613c3bd988272a09d4ba247cbc6b60109aa4d..4f2a53b44d3e35baca4871be511417403bdb021b 100644
--- a/lectures/revealjs/feedback.adoc
+++ b/lectures/revealjs/feedback.adoc
@@ -2,10 +2,11 @@
 = &nbsp;    
 :customcss: slides.css
 :icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: 
+:LECTURE_NO: 
 
-++++
-	<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[]
 
 [.left]
 Go to: +
@@ -17,39 +18,4 @@ KIPAT +
 image::../images/lecture02/qr-app-one2act-no.svg[width=400]
 
 
-++++
- <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 - 3rd lecture </span>
-     <span class="element">| Build tools. Introduction to testing </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
diff --git a/lectures/revealjs/gitpod.adoc b/lectures/revealjs/gitpod.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..c14015abdf8d7b3dbb60097fec5594c80be77740
--- /dev/null
+++ b/lectures/revealjs/gitpod.adoc
@@ -0,0 +1,112 @@
+= Gitpod
+:customcss: slides.css
+:icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: Gitpod
+:LECTURE_NO: 
+
+include::{includedir}header.adoc[]
+
+
+== Problem
+
+Rigging av utviklingsomgivelse tar mye tid
+
+[.smaller-80]
+* språk og rammeverk, f.eks. python, java, javafx osv.
+* støtteapplikasjoner og byggesystemer, f.eks. git, gradle, mavem, npm,, sbt osv.
+* IDE-er med riktig versjon og nødvendige tillegg, f.eks. Eclipse, IntelliJ, VSCode
+* ...
+
+Spesielt problematisk for kortvarig bruk, f.eks. øvinger og eksempler
+
+== Gitpod = Theia + git + Docker
+
+[.smaller-80]
+* Theia-IDE (basert på VSCode) i nettleseren startes opp fra en git-repo-lenke
+* Virtuell maskin kjører i skyen
+* Arbeidsområdet (workspace) og konfigurasjonen hentes fra repoet
+* Støtter alle relevante språk, rammeverk og byggesystemer
+* Kobles til git-skytjeneste som github og gitlab, men kan kjøres innomhus
+
+== Gitpod @ IDI
+
+[.smaller-80]
+* Vi har vår egen *gitpod.idi.ntnu.no* koblet mot *gitlab.stud.ntnu.no*
+(*gitpod.io* brukes mot *github.com*).
+* brukes i IT1901 til
+** https://gitlab.stud.idi.ntnu.no/it1901/gitpod-templates[prosjektmaler] og -eksempler
+** øvinger i personlig repo
+** prosjektet i gruppe-repo
+* skal prøves ut på andre studentgrupper i høst
+
+=== Gitpod-arkitektur
+
+[.stretch]
+image::../images/gitpod-arch.png[width=800]
+
+
+== Gitpod-scenarier
+
+Dele eksempler
+
+[.smaller-80]
+* Fagstab
+** rigger opp eksempel
+** gir instruksjoner i README
+** publiserer i repo og deler lenke
+* Student
+** åpner repo i gitpod og jobber videre
+** evt. lagrer i eget repo
+
+== Gitpod-scenarier
+
+Få veiledning
+
+[.smaller-80]
+* Student (working inside gitpod)
+** tar _snapshot_
+** deler snapshot-lenke med fagstab
+* fagstab
+** åpner lenke i gitpod
+** ser gjennom og kommenterer
+
+== Gitpod-scenarier
+
+Eksamen
+
+[.smaller-80]
+* fagstab
+** forberede innhold og kontekst for oppgavene
+** dele gitpod-lenke, f.eks. i Inspera
+* student
+** åpne lenke og gjøre oppgave
+** lagre besvarelse i eget repo
+* sensor
+** åpner repo-lenke og vurderer besvarelse
+
+
+== Gitpod i IDI-emner
+
+Støtter mange undervisnings-scenarier
+
+* kode- og prosjekteksempler
+* øvinger og småskala prosjekter
+* alle relevante språk og rammeverk, spesielt web-utvikling
+* vanlig git-arbeidsflyt
+* deling av nå-tilstand vha. _snapshots_
+
+== Typiske scenarier 1
+
+Jobbe videre med eksempel/mal
+
+[.smaller-80]
+* fagstab gjør tilgjengelig repo med eksempel/mal
+* student åpner repo i Gitpod og jobber med materialet
+* tar evt. vare på det i eget repo
+** lager evt. eget repo på *gitlab.stud.idi.ntnu.no*
+** bytter til eget repo med *git remote*
+** lagrer endringer med *git add, commit og push*
+
+include::{includedir}footer.adoc[]
+
diff --git a/lectures/revealjs/images/git_commit_2x.png b/lectures/revealjs/images/git_commit_2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b3e6a451f0942f5ee89988b9b5e962deddf8daf
Binary files /dev/null and b/lectures/revealjs/images/git_commit_2x.png differ
diff --git a/lectures/revealjs/images/gitpod-arch.png b/lectures/revealjs/images/gitpod-arch.png
new file mode 100644
index 0000000000000000000000000000000000000000..e31e2732d54a04e12889a13e1f2b464257a3c172
Binary files /dev/null and b/lectures/revealjs/images/gitpod-arch.png differ
diff --git a/lectures/revealjs/images/lecture12/1tier.png b/lectures/revealjs/images/lecture12/1tier.png
new file mode 100644
index 0000000000000000000000000000000000000000..59bb60e6667b29bd75111f0b794157c898b6fa98
Binary files /dev/null and b/lectures/revealjs/images/lecture12/1tier.png differ
diff --git a/lectures/revealjs/images/lecture12/3tier.png b/lectures/revealjs/images/lecture12/3tier.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2d91cc0dd69bad2313c6d94b34dcdaf53bed58b
Binary files /dev/null and b/lectures/revealjs/images/lecture12/3tier.png differ
diff --git a/lectures/revealjs/images/lecture12/itodo.png b/lectures/revealjs/images/lecture12/itodo.png
new file mode 100644
index 0000000000000000000000000000000000000000..f86f4910c4b551404715fc8213ec85ea550a52a9
Binary files /dev/null and b/lectures/revealjs/images/lecture12/itodo.png differ
diff --git a/lectures/revealjs/images/lecture12/mtodo.png b/lectures/revealjs/images/lecture12/mtodo.png
new file mode 100644
index 0000000000000000000000000000000000000000..d233ad660058856d9f5823adb08185b237a8e32f
Binary files /dev/null and b/lectures/revealjs/images/lecture12/mtodo.png differ
diff --git a/lectures/revealjs/images/lecture12/rtodo.png b/lectures/revealjs/images/lecture12/rtodo.png
new file mode 100644
index 0000000000000000000000000000000000000000..b91ad9b305455669c556befa5046826e0e3033d1
Binary files /dev/null and b/lectures/revealjs/images/lecture12/rtodo.png differ
diff --git a/lectures/revealjs/images/lecture13/class-diagram-1.png b/lectures/revealjs/images/lecture13/class-diagram-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..f4cd1b14b03a982176ab595f77af93fa00f8e3bb
Binary files /dev/null and b/lectures/revealjs/images/lecture13/class-diagram-1.png differ
diff --git a/lectures/revealjs/images/lecture13/class-diagram-2.png b/lectures/revealjs/images/lecture13/class-diagram-2.png
new file mode 100644
index 0000000000000000000000000000000000000000..55b5828b8fdb3b752c2579ecb84ddc4153b8b64a
Binary files /dev/null and b/lectures/revealjs/images/lecture13/class-diagram-2.png differ
diff --git a/lectures/revealjs/images/lecture13/package-diagram.png b/lectures/revealjs/images/lecture13/package-diagram.png
new file mode 100644
index 0000000000000000000000000000000000000000..344ee5becbf6fb6cebceb60bae5a897a1f39718d
Binary files /dev/null and b/lectures/revealjs/images/lecture13/package-diagram.png differ
diff --git a/lectures/revealjs/images/lecture13/sequence-diagram.png b/lectures/revealjs/images/lecture13/sequence-diagram.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a356bcc042de5fdb6a69daed76607802493baa5
Binary files /dev/null and b/lectures/revealjs/images/lecture13/sequence-diagram.png differ
diff --git a/lectures/revealjs/images/lecture13/sequence.png b/lectures/revealjs/images/lecture13/sequence.png
new file mode 100644
index 0000000000000000000000000000000000000000..ae5da509efb3104173da3977a1706239576bd10f
Binary files /dev/null and b/lectures/revealjs/images/lecture13/sequence.png differ
diff --git a/lectures/revealjs/images/lecture13/uml-diagrams.png b/lectures/revealjs/images/lecture13/uml-diagrams.png
new file mode 100644
index 0000000000000000000000000000000000000000..f79931b46db364b53fdec60d5c12831b10efd62e
Binary files /dev/null and b/lectures/revealjs/images/lecture13/uml-diagrams.png differ
diff --git a/lectures/revealjs/includes/dev_content.adoc b/lectures/revealjs/includes/dev_content.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..f8b26cb04077d91c8448b52df744670f8bca851a
--- /dev/null
+++ b/lectures/revealjs/includes/dev_content.adoc
@@ -0,0 +1,264 @@
+:includedir: revealjs/includes/
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Overview
+
+- Administrative issues
+- About software development
+- Software development methods
+- Software quality.
+- Practices used in modern agile development
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Administrative issues
+
+== Group registration form
+
+- About half of you filled in the  form
+- deadline to fill in the form is Wednesday, August 26
+
+https://s.ntnu.no/it1901groups
+
+== Individual Assignment 1
+
+- 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.)
+
+- deadline August 27th
+- on BB post the link to the repo 
+- the main deliverable is the repo itself
+
+== Provided materials
+
+- 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 
+
+- 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 
+
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== About Software Development
+
+== What is Software Development
+
+[.center-paragraph]
+“Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components.”
+
+[.smaller-60]
+https://en.wikipedia.org/wiki/Software_development
+
+== What is Software Development (2)
+
+[.center-paragraph]
+“Software development refers to a set of computer science activities dedicated to the process of creating, designing, deploying and supporting software.”
+
+[.smaller-60]
+IBM Research
+
+== Engineering perspective  
+
+[.center-paragraph]
+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.
+
+[.smaller-60]
+Rogers, G.F.C. (1983)
+
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Software development methods
+
+== Software development method
+
+- A set of activities, work-flows and artifacts that aim at organizing the process of designing, constructing and testing software and deploying it and maintaining it within its context of use. 
+
+** waterfall
+** agile (SCRUM)
+
+== Waterfall model
+
+[.center-paragraph]
+image::../images/lecture02/Waterfall model.svg[width=650]
+
+[.smaller-40]
+https://en.wikipedia.org/wiki/Waterfall_model
+
+== SCRUM model
+
+[.center-paragraph]
+image::../images/lecture02/scrum-sprint.png[width=700]
+
+[.smaller-40]
+https://www.visual-paradigm.com/scrum/what-is-sprint-in-scrum/
+
+== Activities 
+
+[.smaller-80]
+- *Analysis* - understanding the problem 
+- *Design* - describing, conceptually the software solution
+- *Implementation* - creating such a solution in software.
+- *Testing* - check that the software solution has certain desired properties
+- *Deployment* - deliver the solution in its context of operation and use
+
+== Activities (2) 
+
+
+** Maintenance - ensure that the software solution keeps working
+** The world and the context of any software solution is dynamic
+
+
+== Activities (3) 
+
+- Software needs to be updated to keep up with
+** operating system updates, 
+** updates of software on which the solution requires
+** security vulnerabilities
+** changing technology
+** changing requirements
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Software quality
+
+== What is software quality ?
+
+Software quality is the degree to which a software solution meets the design requirements and the user needs and expectations.
+
+
+== Quality attributes
+
+- Reliability
+- Efficiency
+- Security
+- Maintainability 
+** adaptability, 
+** portability and 
+** transferability (from one development team to another). 
+
+== Quality attributes (2)
+
+- Usability
+** Effectiveness
+** Efficiency
+** Satisfaction
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Practices used in modern agile development
+
+** source code management (SCM)
+** issue tracking
+** continuous integration (CI)
+
+== Source Code Management (SCM)
+
+== SCM Tools
+
+- CVS (Concurrent Versioning System, released 1990)
+- SVN (Apache Subversion, released 2000)
+- Git (created by Linus Torvalds , released 2005)
+- Mercurial
+
+
+include::scm_content.adoc[]
+
+
+== Issue Tracking
+
+== Oppgavesporing (issue tracking)
+
+En _oppgave_ (issue) er arbeid som skal følges opp
+
+* ny funksjon, forbedring, feilretting, konfigurasjon ...
+* hver oppgave har en dialog/diskusjonstråd
+* halvautomatisk knytning til _endringer_ (commits)
+
+== Oppgavesporing forts.
+
+Oppgavesporing er viktig for transparens
+
+* kunder trenger innsyn i prosess
+* teamet trenger å dele kunnskap
+* løse og distribuerte prosjekter (f.eks. åpen kildekode) har ekstra behov
+* støtter vurdering...
+
+== Oppgavesporing forts.
+
+[.smaller-80]
+* oppgaver opprettes ifm. planlegging av iterasjon, f.eks. fra _brukerhistorier_, _funksjonsønsker_ eller _feilrapporter_
+* oppgaver knyttes til
+** _milepæl_ for iterasjon
+** utviklinger som jobber med den
+* _merkelapper_ (labels) kan angi _fasen_ en oppgave er i
+** f.eks. planlagt, utvikling, testing, godkjent
+** _oppgavetavler_ (issue boards) visualiserer fremdrift
+
+== Oppgavetavle (issue board)
+
+image::https://about.gitlab.com/images/blogimages/workflow.png[size=80%]
+
+== Oppgavesporing forts.
+
+* dialog/diskusjonstråd dokumenterer prosessen
+** designidéer, avgjørelser, avhengigheter, ...
+** knyttes til endringer (commits) gjennom oppgavenummer (#)
+** oppsummerer hva som ble gjort
+
+[.center-paragraph]
+Viktig for transparens!
+
+== Kontinuerlig integrasjon (CI)
+
+Automatisering av alt som fremmer kvalitet, men som tar tid, f.eks.
+
+* kompilering og bygging av jar-filer (generelt avledete artifakter)
+* kjøring av enhets- og integrasjonstester
+* analyser av ulike typer kvalitet (formatering, kodingsstandarder, vanlige feil, ...)
+* bygging av kjørbart system og kjøring av systemtester
+
+== Smidig utfordring
+
+[.smaller-60]
+* Hvordan iterere raskt?
+** skrive korrekt kode raskt
+** være trygg på kvaliteten
+** levere ofte, for å få tilbakemelding fra brukere
+
+[.smaller-60]
+* Mange nivåer av testing
+** egen kode - enhetstesting
+** koden innen teamet - integrasjonstesting
+** hele systemet - systemtesting (og evt. deployment)
+
+== Smidig løsning
+
+[.smaller-80]
+* Kontinuerlig - bygg, sett sammen og test
+* Innimellom - lever (release) og sett i drift/prod. (deploy)
+* Alt for mye arbeid uten støtte
+** _byggeverktøy_ automatiserer prosessen
+** _byggetjenere_ sikrer reproduserbar prosess
+
+
diff --git a/lectures/revealjs/includes/footer.adoc b/lectures/revealjs/includes/footer.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..7a5dbce7d19730f7ff2e062fcaf536bbcb3c8cf7
--- /dev/null
+++ b/lectures/revealjs/includes/footer.adoc
@@ -0,0 +1,37 @@
+[subs="attributes"]
+++++
+ <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 - {LECTURE_NO}</span>
+     	<span class="element">| {LECTURE_TOPIC} </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
diff --git a/lectures/revealjs/includes/header.adoc b/lectures/revealjs/includes/header.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..4115f09a1989a0c85e0a63d2edfdf7a293cfc106
--- /dev/null
+++ b/lectures/revealjs/includes/header.adoc
@@ -0,0 +1,3 @@
+++++
+	<img id="main-logo" class="main-logo" src="images/template/main_logo_eng_no_text.png" width="300" alt="ntnu logo"/>
+++++
diff --git a/lectures/revealjs/includes/scm_content.adoc b/lectures/revealjs/includes/scm_content.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..335ff84b2e45d03594f049855ce36d1af971cda1
--- /dev/null
+++ b/lectures/revealjs/includes/scm_content.adoc
@@ -0,0 +1,120 @@
+== Kildekodehåndtering
+
+* lagring av kode
+* sporing av endringer
+* versionering
+* distribusjon
+
+[.grid-left-right-50-50]
+== `git`
+
+[.smaller-60]
+[.area-left]
+* sporing og deling av kodeendringer i såkalte _repo_ (repository)
+* både sentrale og lokale repo har all endringshistorikk
+* initiell kopi hentes ved å _kloning_ (clone)
+* endringer (i filer) registreres i _commits_ 
+* commits deles med andre ved å _dytte_ (push) til en server
+* andre kan da _dra_ (pull) endringene inn i lokalt repo
+
+[.area-right]
+image::../images/git-local-remote-repo.png[]
+
+[.grid-left-right-50-50]
+== 4 repo-"kopier"
+
+[.smaller-60]
+[.area-left]
+* originalen (_origin_), hentet fra server (`pull`)
+* arbeidsområdet (_working directory_), lokale filer som kan være endret
+* indeksen (_staging area_ eller _index_), endringer du har lagt til med (`add`)
+* lokalt repo, endringene du har commitet (`commit`)
+
+[.area-right]
+image::../images/git-repo-copies.png[]
+
+== repo-kommandoer
+
+image::../images/git-repo-copies.png[width="400px"]
+image::../images/git-repo-commands.png[width="500px"]
+
+== Typisk sekvens
+
+[.smaller-80]
+* `git pull` (eller `clone` første gang) - henter ned endringer fra serveren
+* gjør egne endringer
+* `git status` - viser hva som er endret
+* `git add <fil eller mappe>` - legger endringer til fremtidig commit
+* `git commit -m <melding, m/oppgavenummer>` - registrerer all endringene (lagt til med `add`)
+* `git pull` - henter andres endringer, i tilfelle konflikt
+* `git push` - deler endringer med andre via serveren
+
+== Forgreining (branching)
+
+[.smaller-60]
+[.left-70]
+* greiner (branches)
+** sporer egne utviklingstråder
+** gjør jobbing i parallell ryddigere 
+* sammenslåing (merging)
+** en (hoved)grein slås gjerne sammen med en annen, når den andre er ferdig (nok)
+** etter sammenslåing, så deles gjerne resultatet med andre
+** andre henter så ned for å være oppdatert
+
+[.right]
+image::../images/git-branching.png[width="200px"]
+
+== Sekvens m/forgreining
+
+[.smaller-80]
+* `git pull` - henter ned endringer fra serveren
+* `git checkout -b <navn på (ny) grein>` - lager ny grein, med utgangspunkt i den du jobber med
+* gjør egne endringer
+* `git add ...` og  `git commit ...` - registrerer all endringene
+* `git checkout master` - bytter til hovedgrein
+* `git merge <navn på grein>` - slår annen grein (den nye) sammen med denne (hovedgreina)
+* ...
+
+== Eclipse-støtte for git
+
+[.smaller-60]
+* Egne Eclipse-tillegg - JGit (git-impl) og EGit (UI)
+* Git Repositories-panel - oversikt over repo
+** klone repo fra server eller registrere lokalt repo
+** utføre `pull` og `push`
+** utføre `checkout` inkl. lage ny grein
+** ...
+
+image::../images/git-repositories-view.png[height="200px"]
+
+== Eclipse-støtte forts.
+
+[.smaller-60]
+* Git Staging - statusoversikt
+** filer i arbeidsområdet som er endret
+** filene i indeksen
+** legge til (`add`) eller fjerne (`remove`) fra indeksen
+
+image::../images/git-staging-view.png[width="800px"]
+
+== Endringsforespørsler
+
+[.smaller-60]
+* en `pull`/`merge`-forespørsel (request) brukes for mer formell godkjenning av endringer
+** Pull Request er github-termen, mens Merge Request brukes i gitlab
+* brukes ofte for å inkludere endringer utenfra, f.eks.
+** utviklere utenfor kjerne-teamet
+** brukere av åpen kildekode som har fikset feil
+* forenkler administrasjon av åpne prosjekter
+
+== PR/MR-prosedyre
+
+[.smaller-60]
+* (utenforstående oppretter kopi på egen server)
+* lager en grein for endringene og utfører dem lokalt
+* i stedet for å slå sammen med egen hovedgrein
+** `push` grein til egen server
+** lag en  `pull`/`merge`-forespørsel (PR/MR), som (potensielt) kan inkluderes i hovedgreina
+** UI for dette finnes på github/i gitlab
+** forespørselen får en egen dialog/diskusjonstråd
+** en utvikler med rettigheter kan så godkjenne evt. avslå forespørsel
diff --git a/lectures/revealjs/scm.adoc b/lectures/revealjs/scm.adoc
index 87ac7b7985247f43341a471e80221c47080a8af2..a3c0f19059d1a49bce2036fbc18e1934b1d50465 100644
--- a/lectures/revealjs/scm.adoc
+++ b/lectures/revealjs/scm.adoc
@@ -1,167 +1,12 @@
 = SCM - Source Code Management
 :customcss: slides.css
 :icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: Source Code Management
+:LECTURE_NO: 
 
-++++
-	<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[]
 
-== Kildekodehåndtering
+include::{includedir}scm_content.adoc[]
 
-* lagring av kode
-* sporing av endringer
-* versionering
-* distribusjon
-
-[.grid-left-right-50-50]
-== `git`
-
-[.smaller-60]
-[.area-left]
-* sporing og deling av kodeendringer i såkalte _repo_ (repository)
-* både sentrale og lokale repo har all endringshistorikk
-* initiell kopi hentes ved å _kloning_ (clone)
-* endringer (i filer) registreres i _commits_ 
-* commits deles med andre ved å _dytte_ (push) til en server
-* andre kan da _dra_ (pull) endringene inn i lokalt repo
-
-[.area-right]
-image::../images/git-local-remote-repo.png[]
-
-[.grid-left-right-50-50]
-== 4 repo-"kopier"
-
-[.smaller-60]
-[.area-left]
-* originalen (_origin_), hentet fra server (`pull`)
-* arbeidsområdet (_working directory_), lokale filer som kan være endret
-* indeksen (_staging area_ eller _index_), endringer du har lagt til med (`add`)
-* lokalt repo, endringene du har commitet (`commit`)
-
-[.area-right]
-image::../images/git-repo-copies.png[]
-
-== repo-kommandoer
-
-image::../images/git-repo-copies.png[width="400px"]
-image::../images/git-repo-commands.png[width="500px"]
-
-== Typisk sekvens
-
-[.smaller-80]
-* `git pull` (eller `clone` første gang) - henter ned endringer fra serveren
-* gjør egne endringer
-* `git status` - viser hva som er endret
-* `git add <fil eller mappe>` - legger endringer til fremtidig commit
-* `git commit -m <melding, m/oppgavenummer>` - registrerer all endringene (lagt til med `add`)
-* `git pull` - henter andres endringer, i tilfelle konflikt
-* `git push` - deler endringer med andre via serveren
-
-== Forgreining (branching)
-
-[.smaller-60]
-[.left-70]
-* greiner (branches)
-** sporer egne utviklingstråder
-** gjør jobbing i parallell ryddigere 
-* sammenslåing (merging)
-** en (hoved)grein slås gjerne sammen med en annen, når den andre er ferdig (nok)
-** etter sammenslåing, så deles gjerne resultatet med andre
-** andre henter så ned for å være oppdatert
-
-[.right]
-image::../images/git-branching.png[width="200px"]
-
-== Sekvens m/forgreining
-
-[.smaller-80]
-* `git pull` - henter ned endringer fra serveren
-* `git checkout -b <navn på (ny) grein>` - lager ny grein, med utgangspunkt i den du jobber med
-* gjør egne endringer
-* `git add ...` og  `git commit ...` - registrerer all endringene
-* `git checkout master` - bytter til hovedgrein
-* `git merge <navn på grein>` - slår annen grein (den nye) sammen med denne (hovedgreina)
-* ...
-
-== Eclipse-støtte for git
-
-[.smaller-60]
-* Egne Eclipse-tillegg - JGit (git-impl) og EGit (UI)
-* Git Repositories-panel - oversikt over repo
-** klone repo fra server eller registrere lokalt repo
-** utføre `pull` og `push`
-** utføre `checkout` inkl. lage ny grein
-** ...
-
-image::../images/git-repositories-view.png[height="200px"]
-
-== Eclipse-støtte forts.
-
-[.smaller-60]
-* Git Staging - statusoversikt
-** filer i arbeidsområdet som er endret
-** filene i indeksen
-** legge til (`add`) eller fjerne (`remove`) fra indeksen
-
-image::../images/git-staging-view.png[width="800px"]
-
-== Endringsforespørsler
-
-[.smaller-60]
-* en `pull`/`merge`-forespørsel (request) brukes for mer formell godkjenning av endringer
-** Pull Request er github-termen, mens Merge Request brukes i gitlab
-* brukes ofte for å inkludere endringer utenfra, f.eks.
-** utviklere utenfor kjerne-teamet
-** brukere av åpen kildekode som har fikset feil
-* forenkler administrasjon av åpne prosjekter
-
-== PR/MR-prosedyre
-
-[.smaller-60]
-* (utenforstående oppretter kopi på egen server)
-* lager en grein for endringene og utfører dem lokalt
-* i stedet for å slå sammen med egen hovedgrein
-** `push` grein til egen server
-** lag en  `pull`/`merge`-forespørsel (PR/MR), som (potensielt) kan inkluderes i hovedgreina
-** UI for dette finnes på github/i gitlab
-** forespørselen får en egen dialog/diskusjonstråd
-** en utvikler med rettigheter kan så godkjenne evt. avslå forespørsel
-
-
-
-++++
- <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">| Source Code Management </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
diff --git a/lectures/revealjs/slides.css b/lectures/revealjs/slides.css
index ef62a7edfd8961bad88597cee913cd005f1abad2..778fe744ea1be60585aece885d4530f0e1640fd0 100644
--- a/lectures/revealjs/slides.css
+++ b/lectures/revealjs/slides.css
@@ -22,6 +22,15 @@
 	font-size: 40%;
 }
 
+.smaller-30 {
+	font-size: 30%;
+}
+
+
+.smaller-20 {
+	font-size: 20%;
+}
+
 .left {
 	float: left;
 }
diff --git a/lectures/revealjs/template.adoc b/lectures/revealjs/template.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..7fce5fe314da40ef58f663375b27abc402b8d65d
--- /dev/null
+++ b/lectures/revealjs/template.adoc
@@ -0,0 +1,40 @@
+= Title here
+:customcss: slides.css
+:icons: font
+:includedir: revealjs/includes/
+:LECTURE_TOPIC: Topic
+:LECTURE_NO: Nth lecture
+
+include::{includedir}header.adoc[]
+
+
+[.smaller-80][.center-paragraph]
+IT1901 Fall 2020 - {LECTURE_NO}
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Section slide
+
+== Normal slide
+
+- Blah
+- Foo
+- Bar
+
+[.grid-left-right-50-50]
+== 2 column slide 
+
+[.area-left]
+- blah blah cloud
+** foo
+** bar
+** baz
+
+[.area-right]
+- blah blah cloud
+** right foo
+** right bar
+** righ baz
+
+
+include::{includedir}footer.adoc[]
\ No newline at end of file