├── .gitignore ├── Makefile ├── README.md ├── _helpers ├── Makefile └── template.tex ├── ad ├── 01-1-Einstieg.md ├── 01-2-Rekursion.md ├── 02-1-Collections.md ├── 02-2-Array-Listen-Queue-Stack.md ├── 03-1-Baeume.md ├── 03-2-Binaere-Baeume.md ├── 04-1-Hashes.md ├── 04-2-Praxis-Tipps.md ├── 05-1-Threads.md ├── 05-2-Synchronisation.md ├── 06-1-Thread-Steuerung.md ├── 06-2-Thread-Pools.md ├── 07-Weiterfuehrende-Konzepte.md ├── 08-1-Sortieren-Grundlagen.md ├── 08-2-Einfache-Sortieralgorithmen.md ├── 09-Hoehere-Sortieralgorithmen.md ├── 10-Parallelisierungsframeworks.md ├── 11-1-Automaten.md ├── 11-2-Formale-Sprachen.md ├── 11-3-Regulaere-Sprachen.md ├── 12-Suchalgorithmen.md ├── 13-1-Graphen.md ├── 13-2-Graphen-Algorithmen.md ├── Makefile └── variables.yaml ├── aiso ├── 01-Einfuehrung.md ├── 02-Rationale-Agenten.md ├── 03-Suchprobleme-modellieren.md ├── 04-Systematische-Suche.md ├── 06-Heuristische-Suche.md ├── 07-Lokale-Suche.md ├── 08-Simultane-Spiele.md ├── 09-Sequentielle-Spiele.md ├── 10-Constraint-Programming.md ├── 11A-Constraint-Programming.md ├── 11B-Constraint-Programming.md ├── 13-Constraint-Programming.md ├── Makefile └── variables.yaml ├── appe ├── 01A-Anforderungen.md ├── 01B-Architektur.md ├── 01C-Layers-und-Tiers.md ├── 02A-MVC.md ├── 02B-Apache-Maven.md ├── 02C-Dependency-Management.md ├── 03A-SoDa.md ├── 03B-Architekturbeschreibung.md ├── 04A-Business-Logik.md ├── 04B-Testing.md ├── 05-Data-Modelling.md ├── 07-SOLID.md ├── Makefile ├── images │ └── 01A-Kano.png └── variables.yaml ├── bw ├── 01-Unternehmensziele-1.md ├── 02-Unternehmensziele-2.md ├── 03-Markt-und-Marketing-1.md ├── 04-Markt-und-Marketing-2.md ├── 05-Organisationtheorie.md ├── 06-Aufbauorganisation-1.md ├── 07-Aufbauorganisation-2.md ├── 08-Ablauforganisation.md ├── 09-Personal-1.md ├── 10-Personal-2.md ├── 11-Veraenderungsmanagement.md ├── Makefile └── variables.yaml ├── cg ├── 01A-Einfuehrung.md ├── 01B-Farbe.md ├── 01C-WebGL.md ├── 02A-Farbe.md ├── 03A-Projektive-Geometrie-1.md ├── 03B-Projektive-Geometrie-2.md ├── 05A-Projektive-Geometrie-3.md ├── 06A-Scan-Konvertierung.md ├── 06B-Viewing.md ├── 06C-Visibility.md ├── 08A-Clipping.md ├── 08B-Beleuchtung.md ├── 09A-Curves.md ├── 09B-Flaechen.md ├── 11A-Raytracing.md ├── 12A-Rendering.md ├── Makefile ├── images │ ├── 01B-cie-normfarbtafel.png │ ├── 01B-cie-spektralwertkurven.png │ ├── 01C-webgl-data-flow.png │ ├── 01C-webgl-pipeline.png │ ├── 03A-spatprodukt.png │ ├── 03A-vektorprodukt.png │ ├── 06B-isometrische-projektion.png │ ├── 06B-kabinettsprojektion.png │ ├── 06B-kavaliersprojektion.png │ ├── 06B-orthographische-projektion.png │ ├── 06B-perspektivische-projektion.png │ ├── 06B-projektionen.png │ ├── 06B-webgl-frustum.png │ ├── 06B-webgl-ortho.png │ ├── 06B-webgl-perspective.png │ ├── 08A-sutherland-hodgman.png │ ├── 08B-Schattierungen.png │ ├── 08B-lichtquellen.png │ ├── 09B-kugelkoordinaten.png │ └── 09B-zylinderkoordinaten.png └── variables.yaml ├── ci ├── 01-Einfuehrung.md ├── 02-Netzwerk-Aspekte.md ├── 03-Identity-Management.md ├── 06-Client-und-Betriebsaspekte.md ├── 07-Evaluation.md ├── Makefile └── variables.yaml ├── cna ├── 1-Rechnerarchitekturen-1.md ├── 1-Rechnerarchitekturen-2.md ├── 1-Rechnerarchitekturen-3.md ├── 1-Rechnerarchitekturen-4.md ├── 1-Rechnerarchitekturen-5.md ├── 1-Rechnerarchitekturen-6.md ├── 1-Rechnerarchitekturen-7.md ├── 1-Rechnerarchitekturen-8.md ├── 2-Betriebssysteme-1.md ├── 2-Betriebssysteme-2.md ├── 2-Betriebssysteme-3.md ├── 3-Netzwerke-01.md ├── 3-Netzwerke-02.md ├── 3-Netzwerke-03.md ├── 3-Netzwerke-04.md ├── 3-Netzwerke-05.md ├── 3-Netzwerke-06.md ├── 3-Netzwerke-07.md ├── 3-Netzwerke-08.md ├── 3-Netzwerke-09.md ├── 3-Netzwerke-10.md ├── Makefile └── variables.yaml ├── dawa ├── 01A-Notwendigkeit-DAWA.md ├── 01B-Umgang-mit-SQL-Server.md ├── 02-Das-Data-Warehouse-1.md ├── 03-Das-Data-Warehouse-2.md ├── 04-Unstrukturierte-Daten.md ├── 05-Informations-und-Datenqualitaet-1.md ├── 06-Informations-und-Datenqualitaet-2.md ├── 07-Informations-und-Datenqualitaet-3.md ├── 08-Historisierung.md ├── 09-OLAP.md ├── 10-MDX.md ├── 11-Architektur.md ├── 12-Hadoop.md ├── 13-Metadaten-und-Strategien.md ├── Makefile ├── images │ ├── 06A-Soudex.png │ └── 06B-Koelner-Phonetik.png └── variables.yaml ├── dbs ├── 01A_DB.md ├── 01B_DM.md ├── 02A_ER.md ├── 02B_RS.md ├── 03A_R1.md ├── 03B_R2.md ├── 04A_S1.md ├── 04B_S2.md ├── 05A_S3.md ├── 05B_DP.md ├── 06A_DI.md ├── 06B_OM.md ├── 07A_DS.md ├── 07B_TR.md ├── 08A_R3.md ├── 08B_AO.md ├── 09A_BC.md ├── 09B_ND.md ├── 10A_BD.md ├── 10B_GD.md ├── 11A_DD.md ├── 11B_CD.md ├── Makefile └── variables.yaml ├── dl4g ├── 02-Sequential-Games.md ├── 03-Monte-Carlo-Tree-Search.md ├── 04-Information-Sets.md ├── 06-Supervised-Machine-Learning.md ├── 07-Neuronal-Networks.md ├── 08-Deep-Neuronal-Networks.md ├── 11-Reinforcement-Learning.md ├── Makefile ├── images │ ├── 02-backward-induction.png │ └── 02-minimax.png └── variables.yaml ├── enapp ├── 01A-Tooling.md ├── 04A-EJB.md ├── 05A-Web-Tier.md ├── 06A-Messaging.md ├── 08A-JNDI-LDAP.md ├── 09A-REST.md ├── 10A-Agile-Architektur.md ├── 11A-High-Availability.md ├── 12A-Security.md ├── 13A-CDI.md ├── Makefile ├── images │ ├── 06A-jms-receive.png │ ├── 06A-jms-relationen.png │ └── 06A-jms-send.png └── variables.yaml ├── fkom ├── 01-Einfuehrung.md ├── 02-Protokolle.md ├── 03-Korrespondenz.md ├── 04_Anleitungen.md ├── 05-Zusammenfassunge.md ├── 06-Web-Texte.md ├── 07-Verstaendlichkeit.md ├── 08-Wissenschaftlich-Schreiben.md ├── 09-Abstract.md ├── 10-Schreibstil.md ├── Makefile └── variables.yaml ├── gdf ├── 00-Einfuehrung.md ├── 01-Strategische-Fuehrung.md ├── 02-Organisation.md ├── 03-Fuehrungs-Beduerfnisse-und-Faehigkeiten.md ├── 04-Fuehrungsgrundsaetze.md ├── 05-Risikomanagement.md ├── 06-Personalfuehrung.md ├── 07-Operative-Fuehrung.md ├── 08-Wissensmanagement.md ├── Makefile └── variables.yaml ├── ios ├── 01-Swift-Crash-Course.md ├── 02-Interface-Builder-and-Provisioning.md ├── 03-Lifecycle-ViewController.md ├── 04-Protokolle.md ├── 05-Fragmentierung.md ├── 06-Kommunikation.md ├── 07-Persistenz.md ├── 08-Memory-and-Frameworks.md ├── 09-More-Swift.md ├── Makefile └── variables.yaml ├── ipcv ├── 01-Einfuehrung.md ├── 02-Farbe.md ├── 03A-Farbsegmentierung.md ├── 03B-Bildverbesserung.md ├── 04-Faltung.md ├── 05-Filter-und-Pyramiden.md ├── 06-Kantendetektion.md ├── 07-Segmentierung.md ├── 08-Snakes.md ├── 09A-Neuronale-Netze.md ├── 09B-Objekterkennung.md ├── 10-Objekt-Tracking.md ├── 11A-Features.md ├── 11B-3D-Rekonstruktion.md ├── 12-Kompression-1.md ├── 13-Kompression-2.md ├── Makefile ├── images │ ├── 01A-helligkeitsveraenderung.png │ ├── 01B-kontrastveraenderung.png │ ├── 01C-gamma-korrektur.png │ ├── 01D-nachbarschaft.png │ ├── 01E-connected-component-labeling.png │ ├── 02A-CIE.png │ ├── 05A-Gauss-und-Laplace-Pyramide.png │ ├── 08A-GVF.png │ ├── 13A-LZW.png │ └── 13B-Arithmetische-Kodierung.png └── variables.yaml ├── isf ├── 01-Sicherheit.md ├── 02-Kryptologie.md ├── 03-Informationssicherheit.md ├── 04-Asymmetrische-Verfahren.md ├── 05-1-ISMS.md ├── 05-2-Repetitionsfrage.md ├── 06-Bedrohungen.md ├── 07-IT-Security.md ├── 08-Bedrohungen-auf-Anwendungsebene.md ├── 09-Authentisierung-Biometrie.md ├── 10-Firewallkonzept.md ├── 11-Privatsphaere-und-Anonymitaet.md ├── 12-Konzepte-der-IT-Forensik.md ├── 14-DRM.md ├── Makefile └── variables.yaml ├── iteo ├── 02-Das-Data-Center.md ├── 03-1-Serversysteme.md ├── 03-2-Storagesysteme.md ├── 04-Netzwerk-im-RZ.md ├── 05-1-Parallele-Architekturen.md ├── 05-2-Systemsoftware.md ├── 05-3-HW-Virtualisierung.md ├── 05-4-OS-Virtualisierung.md ├── 05-6-Filesysteme.md ├── 06-1-Prozesse.md ├── 06-2-Ressourcen-Management-im-DC.md ├── 07-Grundlagen-ITIL.md ├── 08-ITIL-im-KMU.md ├── 09-Cloud-Computing.md ├── 10-1-Vertiefung-ITIL.md ├── 10-2-Vertiefung-ITIL.md ├── 10-3-Vertiefung-ITIL.md ├── 18-Vertiefung-ITIL-4.md ├── Makefile └── variables.yaml ├── mc ├── 01A-MC.md ├── 01B-MC.md ├── 02A-C.md ├── 02B-MC.md ├── 03A-C.md ├── 03B-MC.md ├── 04A-C.md ├── 04B-MC.md ├── 05A-C.md ├── 05B-MC.md ├── 06A-MC.md ├── 06B-MC.md ├── 07A-C.md ├── 07B-MC.md ├── 08B-MC.md ├── 09A-C.md ├── 09B-MC.md ├── 10A-MC.md ├── 11A-MC.md ├── 13A-MC.md ├── Makefile └── variables.yaml ├── mod ├── 01-Einfuehrung.md ├── 02-Prozess-Modellierung.md ├── 03-Interaktionsmodellierung.md ├── 04-Informationsmodellierung.md ├── 05-Zweck-und-Bedeutung-von-Modellen.md ├── 06-Sequenzdiagramme.md ├── 07-Datenmodellierung.md ├── Makefile └── variables.yaml ├── pcp ├── 01A-Einfuehrung.md ├── 01B-Imperative-Sprachen.md ├── 02A-Prolog.md ├── 02B-Prolog.md ├── 03A-Prolog.md ├── 03B-Prolog.md ├── 04A-Prolog.md ├── 04B-Prolog.md ├── 05A-Scheme.md ├── 05B-Scheme.md ├── 06A-Scheme.md ├── 06B-Scheme.md ├── 07A-Scheme.md ├── 07B-Scheme.md ├── 08A-Java.md ├── 08B-Java.md ├── 09A-Java.md ├── 09B-Java.md ├── 10A-Compiler.md ├── 10B-Compiler.md ├── 11A-Compiler.md ├── 11B-Compiler.md ├── Makefile ├── images │ ├── 02A-beweissuche.png │ ├── 11A-listeners.png │ └── 11A-visitors.png └── variables.yaml ├── pmb ├── 01-Grundlagen.md ├── 02-Projektplannung.md ├── 03-Risikomanagement.md ├── 04-Projektcontrolling.md ├── 05-Projekt-Kommunikation.md ├── 06-Business-Case.md ├── Makefile └── variables.yaml ├── pmre ├── 01-Einfuehrung.md ├── 02-Anforderungen-ermitteln.md ├── 03-Anforderungen-modellieren.md ├── 05-User-Stories.md ├── 06-Story-Mapping.md ├── 07-Pruefen-von-Anforderungen.md ├── 08A-Qualitaetskriterien.md ├── 08B-Anforderungen.md ├── 09A-Projektmethoden.md ├── 09B-Evaluation.md ├── 11-Erfolgsfaktoren.md ├── 12-Projektcontrolling.md ├── Makefile └── variables.yaml ├── sprg ├── 01-Einfuehrung.md ├── 02-Sicheres-Programmieren.md ├── 03-Sichere-Requirements.md ├── 04-Injections.md ├── 05-Sichere-Requirements.md ├── 06-XSS-und-CSRF.md ├── 07-Sichere-Requirements.md ├── 08-OWSAP.md ├── 10-Sichere-Requirements.md ├── Makefile └── variables.yaml ├── swat ├── 01-Architektur-und-Design.md ├── 02-Entwicklung.md ├── 03-Agile-Architektur.md ├── 04-Agile-Vorgehensweise.md ├── 05-Refactoring.md ├── 06-Errors-Vulnerabilities-Smells.md ├── 07-Architektur-von-Komponenten.md ├── 08-Quality-Attributes.md ├── 10-ility-Attributes.md ├── 12-Dokumentation.md ├── 13-Architektur-Trends-1.md ├── 14-Architektur-Trends-2.md ├── 15-Team-und-Rollen-eines-Architekten.md ├── Makefile └── variables.yaml └── vsk ├── 01A-KO.md ├── 01B-KO.md ├── 01C-VS.md ├── 02A-KO.md ├── 03A-EP.md ├── 03B-EP.md ├── 03C-EP.md ├── 04A-VS.md ├── 04B-KO.md ├── 05A-EP.md ├── 05B-KO.md ├── 06A-VS.md ├── 06B-EP.md ├── 07A-EP.md ├── 07B-EP.md ├── 07C-EP.md ├── 08A-VS.md ├── 09A-VS.md ├── 09B-EP.md ├── 10A-VS.md ├── 10B-EP.md ├── 11A-VS.md ├── 12A-VS.md ├── 12B-EP.md ├── 14A-KO.md ├── Makefile └── variables.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | *.pdf 3 | *.epub 4 | *.mobi 5 | *.html 6 | summaries.zip 7 | _helpers/template.css 8 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | SUBDIRS := bw cna iteo isf ad fkom pmb mod dbs vsk mc dawa ipcv appe pmre ci gdf cg pcp enapp dl4g ios aiso sprg swat 2 | 3 | .PHONY: all summaries clean rebuild $(SUBDIRS) 4 | 5 | all: buildfiles 6 | $(MAKE) -j8 summaries 7 | zip -r summaries.zip summaries/ 8 | 9 | summaries: buildfiles $(SUBDIRS) 10 | 11 | rebuild: clean all 12 | 13 | clean: 14 | rm -rf summaries summaries.zip _helpers/template.css 15 | 16 | $(SUBDIRS): buildfiles 17 | $(MAKE) -C $@ 18 | 19 | buildfiles: _helpers/template.css 20 | 21 | _helpers/template.css: 22 | curl -L https://gist.githubusercontent.com/chefe/afd3298e638eb82b7ae139ad282f3eb3/raw/62b874d98f72005d18b9b2a05d3be6815959b51b/gh-pandoc.css > _helpers/template.css 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # summaries 2 | Personal summaries for study @ hslu 3 | 4 | > You can download the latest pdf from [here][1] 5 | 6 | | 1. Sem | 2. Sem | 3. Sem | 4. Sem | 5. Sem | 6. Sem | 7 | |:----------:|:------------:|:----------:|:------------:|:--------------:|:------------:| 8 | | [BW](bw) | [ITEO](iteo) | [DBS](dbs) | [DAWA](dawa) | [CG](cg) | [AISO](aiso) | 9 | | [CNA](cna) | [ISF](isf) | [VSK](vsk) | [IPCV](ipcv) | [PCP](pcp) | [SPRG](sprg) | 10 | | | [AD](ad) | [MC](mc) | [APPE](appe) | [ENAPP](enapp) | [SWAT](swat) | 11 | | | [FKOM](fkom) | | [PMRE](pmre) | [DL4G](dl4g) | | 12 | | | [PMB](pmb) | | [CI](ci) | [IOS](ios) | | 13 | | | [MOD](pmb) | | [GDF](gdf) | | | 14 | | | [DMATH][2] | | | | | 15 | 16 | [1]: https://github.com/chefe/summaries/releases 17 | [2]: https://github.com/hslu-students/dmath 18 | -------------------------------------------------------------------------------- /_helpers/Makefile: -------------------------------------------------------------------------------- 1 | ROOT_DIR:=$(shell dirname $(abspath $(lastword $(MAKEFILE_LIST)))) 2 | BASE_NAME := $(notdir $(basename $(ROOT_DIR))) 3 | OUTPUT_FOLDER := $(ROOT_DIR)/../summaries 4 | MD_SOURCES := $(sort $(wildcard *.md)) 5 | 6 | PDF_OUTPUT := $(OUTPUT_FOLDER)/pdf/zusammenfassung-$(BASE_NAME).pdf 7 | EPUB_OUTPUT := $(OUTPUT_FOLDER)/epub/zusammenfassung-$(BASE_NAME).epub 8 | MOBI_OUTPUT := $(OUTPUT_FOLDER)/mobi/zusammenfassung-$(BASE_NAME).mobi 9 | HTML_OUTPUT := $(OUTPUT_FOLDER)/html/zusammenfassung-$(BASE_NAME).html 10 | 11 | all: pdf epub mobi html 12 | 13 | pdf: $(PDF_OUTPUT) 14 | 15 | epub: $(EPUB_OUTPUT) 16 | 17 | mobi: $(MOBI_OUTPUT) 18 | 19 | html: $(HTML_OUTPUT) 20 | 21 | %.pdf: $(MD_SOURCES) 22 | mkdir -p "$(dir $(abspath $@))" 23 | pandoc $+ -o $@ --template="../_helpers/template.tex" --top-level-division=section variables.yaml 24 | 25 | %.mobi: $(EPUB_OUTPUT) 26 | mkdir -p "$(dir $(abspath $@))" 27 | kindlegen $< -o $(notdir $(basename $@)).mobi || echo 28 | mv "$(dir $(abspath $<))$(notdir $(basename $@)).mobi" $@ 29 | 30 | %.epub: $(MD_SOURCES) 31 | mkdir -p "$(dir $(abspath $@))" 32 | pandoc $+ -o $@ --top-level-division=section --toc variables.yaml 33 | 34 | %.html: $(MD_SOURCES) 35 | mkdir -p "$(dir $(abspath $@))" 36 | pandoc $+ -o $@ --css="../_helpers/template.css" --self-contained variables.yaml 37 | 38 | clean: 39 | rm -f $(PDF_OUTPUT) $(EPUB_OUTPUT) $(MOBI_OUTPUT) $(HTML_OUTPUT) 40 | 41 | rebuild: clean all 42 | 43 | -------------------------------------------------------------------------------- /ad/02-1-Collections.md: -------------------------------------------------------------------------------- 1 | # Collections 2 | 3 | ## Was sind Datenstrukturen? 4 | Datenstrukturen werden verwendet, um Mengen von Daten bzw. Objekten effizient zu speichern und verarbeiten zu können. 5 | Unter Verarbeiten versteht man Funktionen, wie z.B. alle enthaltenen Daten/Objekte einzeln zu bearbeiten, nach bestimmten Objekten zu suchen, zu zählen, zu filtern oder nach unterschiedlichen Kriterien zu sortieren etc. 6 | 7 | ## Was sind typische Datenstrukturen? 8 | * **Array** - indexierte Reihung 9 | * **Tree** - hierarchisch geordnete Daten (Baumstruktur) 10 | * **List** - einfache Reihung 11 | * **Map** - Zuordnung zwischen Schlüssel und Wert(-paaren) 12 | * **Queue** - (Warte-)Schlange, FIFO 13 | * **Set** - Sammlung ohne Duplikate 14 | * **Stack** - Stapel- oder Kellerspeicher, FILO 15 | 16 | ## Wie unterscheiden sich die verschiedenene Datenstrukturen? 17 | * **Grösse**: Dynamisch oder statisch 18 | * **Zugriff**: Direktzugriff oder indirekt / sequenziell 19 | * **Sortierung**: Sortiert oder unsortiert, mit/ohne Ordnung 20 | * **Suche**: Beschleunigte Suche (z.B. binär oder über Hashwert) 21 | * **Geschwindigkeit**: Grundlegende Operationen wie Suchen, Einfügen, ... 22 | 23 | ## Aus welchen 3 wesentlichen Teilen besteht das Java Collection Framework? 24 | * Interfaces (`List`, `Map`, ...) 25 | * Implementationen (`LinkedList`, `ArrayList`, ...) 26 | * Algorithemen (`iterator()`, `sort()`, ...) 27 | 28 | ## Was ist wichtig für Objekte in einer Collection? 29 | * Objekte müssen als gleich erkannt werden 30 | * implementierung von equals() und hashcode() 31 | * Objekte müssen sortiert werden 32 | * implementierung von Comparable oder Comparator 33 | 34 | ## Was für Arten von Gleichheit gibt es? 35 | * Typengleichheit (gleicher Type) 36 | * Wertegleichheit (enthält die gleichen Wert) 37 | * Identität (das selbe Objekt, gleiche Objektreferenz) 38 | 39 | ## Was sind die Anforderungen an die Speicherverwaltung? 40 | * Zuverlässigkeit, keine memory leaks 41 | * schnelle Allokationen, keine lange Suche nach einem passenden Block 42 | * Freigabe soll schnell sein 43 | * mit der Zeit entstehen Lücken, welche wieder geschlossen werden sollten 44 | 45 | -------------------------------------------------------------------------------- /ad/04-1-Hashes.md: -------------------------------------------------------------------------------- 1 | # Hashes 2 | 3 | ## Wie funktionieren Hash-basierende Datenstrukturen? 4 | * Man berechnet basierend auf dem Inhalt eines Datenobjektes einen Hashwert 5 | * Hashwert zeigt direkt auf den Speicherort des Datenobjektes 6 | * sehr schneller Zugriff mit `O(1)` möglich 7 | * In einem binären Suchbaum kann immerhin mit O(log n) zugegriffen werden 8 | * nur ausgewählte Elemente zur Berechnung werdenen um Performanc zu verbesssern 9 | 10 | ## Was ist wichtig bei der Berechnung des Hashwertes? 11 | * Einhaltung des equals()- und hashCode()-Contracts 12 | * es sollte immer beide Methoden überschrieben werden 13 | 14 | ## Was bezeichnet der Begriff Sondieren? 15 | * Index für Datenelement aus Haswert berechnen 16 | * falls Stelle bereits besetzt, nach rechts bis zum nächsten freien Platz 17 | * wird rotierend durchegführt (vom Ende wieder an den Anfang springen) 18 | 19 | ## Wieso sollte man Immutable Objects verweden? 20 | * können ihren Zustnd nicht mehr verändern 21 | * verinfachen Programmierung stark 22 | * für Mutation (entfernen, verändern und wieder neu einfügen) 23 | * verhindert Probleme mit Hashes 24 | 25 | -------------------------------------------------------------------------------- /ad/04-2-Praxis-Tipps.md: -------------------------------------------------------------------------------- 1 | # Praxis Tipps 2 | 3 | ## Auf was sollte bei der Auswahl einer Klasse geachtet werden? 4 | * ob sie synchronisiert und somit thread safe sind 5 | * ist nicht immer nötig 6 | * kostet viele (Lauf-)Zeit 7 | 8 | ## Was sind die Anforderungen an eine unveränderbare Klasse? 9 | * keine Methoden welche den Zustand des Objektes verändern 10 | * Spezialisierung mit final-Keyword verhindert 11 | * Alle Attribute sind private und final 12 | 13 | ## Wie unterscheiden sich Array und Listen? 14 | * Arrays sind kovariant, Listen sind invariant 15 | * Arrays werden reified, Listen nutzen erasure 16 | 17 | 18 | -------------------------------------------------------------------------------- /ad/05-2-Synchronisation.md: -------------------------------------------------------------------------------- 1 | # Synchronisation 2 | 3 | ## Was ist wichtig beim Zugriff auf gemeinsame Ressourcen? 4 | 1. In einem kritischen Abschnitt darf sich zu jedem Zeitpunkt höchstens immer nur ein Thread befinden 5 | 2. Es dürfen keine Annahmen über die zugrunde liegende Hardware (Clock, CPU-Anzahl etc.) gemacht werden 6 | 3. Ein Thread darf andere Threads nicht blockieren, ausser er ist in einem kritischen Bereich 7 | 4. Es muss sichergestellt sein, dass ein Thread nicht unendlich lange warten muss, bis er in den kritischen Bereich eintreten kann 8 | 9 | ## Welche Zustände kann ein Thread einnehmen? 10 | new, ready, blocked, dead, running, locked 11 | 12 | ## Was ist beim Schlüsselwort synchronized zu beachten? 13 | * Alle Java-Objekte besitzen einen impliziten Lock 14 | * Den Zugriff auf den Lock erhält man durch das Schlüsselwort synchronized 15 | * Während des Wartens auf den Lock kann der Thread nicht unterbrochen werden 16 | 17 | ## Was für Monitor-Arten gibt es? 18 | * reetrant 19 | * Betritt ein Thread eine synchronisierte Methode/Abschnitt, dessen Lock er schon besitzt, kann er sofort eintreten ohne den lock-pool zu durchlaufen 20 | * Ohne diese Möglichkeit würden Rekursion nicht funktionieren! 21 | * Dies reduziert aber auch die Parallelität, weil kritische Abschnitte künstlich vergrössert werden 22 | * Ein Reentrant Monitor kann geschwindigkeitssteigernd sein, wenn viele synchronisierte Methoden hintereinander aufgerufen werden 23 | * nested 24 | * Ein Thread kann beliebig viele Locks ergreifen 25 | * führen leicht zu Verklemmungen (Deadlocks) 26 | * Um die Deadlock-Gefahr zu vermeiden, sollte man in einer synchronisierten Methode oder einem synchronisierten Block niemals die Steuerung an den Client übergeben 27 | 28 | -------------------------------------------------------------------------------- /ad/06-2-Thread-Pools.md: -------------------------------------------------------------------------------- 1 | # Threadpools 2 | 3 | ## Wieso werden Threadpools verwendet? 4 | * zahlreiche nebenläufige Aufgaben sind von kurzer Dauer 5 | * die kleinen Aufgaben treten nicht unbedingt regelmässig auf 6 | * für jede neue Aufgabe einen Thread zu erzeugen belastet unnötig das BS 7 | * eine grosse Anzahl Threads wirkt sich negativ auf die Leistung aus 8 | * in der Praxis wird deswegen meistens mit Threadspool garbeitet 9 | 10 | ## Was gibt es bei einem Thread zu beachten? 11 | * für eine nebenläufige Aussage ist immer ein Thread notwendig 12 | * es muss immer ein Runnable im Konstruktor übergeben werden 13 | * es gibt keine setter und getters 14 | * der Thread beginnt mit der Aufgabe sobald die Methode start ausgeführt wird 15 | * die start-Methode kann genau einmal ausgeführt werden 16 | 17 | ## Was ist ein Threadpool? 18 | * verwaltet eine Anzahl von Threads 19 | * soll eine Aufgabe (Runnable) ausführen 20 | * diese wird dann einem Thread zugeteilt 21 | * sobald der Thread fertig ist, wird er wieder in den Pool gestellt 22 | * der Thread übernimmt dann noch weitere wartende Aufgaben 23 | 24 | ## Welche factory-Methoden biete die Executors-Klasse an? 25 | * newCachedThreadPool() 26 | * liefert einen Pool wo bei Bedarf neue Worker Threads erzeugt werden 27 | * Unbenutzte Threads bleiben für 60 Sekunden erhalten 28 | * newFixedThreadPool(int nThreads) 29 | * liefert einen Pool mit n Threads 30 | * die Warteschlange für übergebene Aufgaben ist unbeschränkt 31 | * stirbt ein Thread, wird er durch einen neuen ersetzt 32 | * newScheduledThreadPool(int coreSize) 33 | * liefert einen ScheduledExecutorService 34 | * Aufgaben werden nach einer Verzögerung bzw. periodisch ausgeführt 35 | 36 | ## Wie lassen sich Thread für einen Pool konfigurieren? 37 | * Bei den factry-Methoden kann eine ThreadFactory übergeben werden 38 | * ThreadFactory ist ein Interface, das einen neuen Thread erzeugt 39 | 40 | ## Was sind wichtige Punkte im Umgang mit Nebenläufigkeiit? 41 | * Kann Performence steigern 42 | * langlaufende Threads lassen sicht gut mit Threads und Runnable realisieren 43 | * Konzept des Executor-Service nutzen bei kleineren Aufgaben 44 | * unabhängige Aufgaben sind in der Regel problemlos 45 | * Vorsicht bei Abhängigkeiten 46 | 47 | -------------------------------------------------------------------------------- /ad/08-2-Einfache-Sortieralgorithmen.md: -------------------------------------------------------------------------------- 1 | # Einfache Sortieralgorithmen 2 | 3 | ## Wie funktioniert das direkte Einfügen? 4 | * das Array wird in einen unsortiertern und einen sortierten Teil unterteilt 5 | * das erste Element im unsortierten Teil wird dann im sortierten Teil eingefügt 6 | * Elemente mit grossem Schlüssel werden im sortierten Teil nach rechts verschoben 7 | * die Suche nach der Einfüge-Position wird mit dem Verschieben kombiniert 8 | * Nach n-1 mal Einfügen ist das Array sortiert 9 | 10 | ## Wie funktioniert das direkte Auswählen? 11 | * das Array wird in einen unsortiertern und einen sortierten Teil unterteilt 12 | * im unsortierten Teil wird das Element mit dem kleinsten Schlüssel gesucht 13 | * dieses vertauscht man dann mit dem ersten Element des unsortierten Teils 14 | * nach n-1 Durchläufen ist das Array sortiert 15 | * Direktes Auswählen besitzt die Ordnung O(n^2) 16 | * weil immer das ganze Array durchsucht wird sind Best- und Worst-Case gleich 17 | 18 | ## Wie funktioniert das direkte Austauschen (Bubble Sort)? 19 | * das Array wird in einen unsortiertern und einen sortierten Teil unterteilt 20 | * zwei benachbarte Elemente werden ausgetauscht, falls sie nich geordnet sind 21 | * während einem Durchlauf schlägt sich der grössete Schlüssel nach recht durch 22 | * nach n+1 Durchläufen ist das Array sortiert 23 | * Bubbe Sort besitzt die Ordnung O(n^2) 24 | * im besten Fall lässt sich die Ordnung O(n) erreichen 25 | * wird in der Praxis kaum eingesetzt 26 | 27 | ## Wie funktioniert der Shellsort? 28 | * Sortieraufwand wie beim direkten Einfügen 29 | * Grobsortierung über grössere Schrittweite 30 | * Reduzierung der Schrittweite bis runter auf 1 31 | * für gewissen Schrittweiten lässt sich der Aufwand stark verkleinern 32 | * Knuth-Folge: 1, 4, 13, 40, ... (mal 3 + 1) 33 | * Hibbard-Folge: 1, 3, 7, 15, ... (mal 2 + 1) entspricht O(n 1.5 ) 34 | * Shellsort liegt zwischen O(n^2) und O(n * log n) 35 | 36 | -------------------------------------------------------------------------------- /ad/11-1-Automaten.md: -------------------------------------------------------------------------------- 1 | # Automaten 2 | 3 | ## Was ist ein Automat? 4 | * wird von aussen mit Eingaben befüllt 5 | * befindet sich in einem Zustand 6 | * Änderung des Zustand anhand des aktuellen Zustand und den Eingaben 7 | * geänderter Zustand wird Folgezustand genannt 8 | * dabei erfolgt einen Zustandsübergang (Transition) 9 | 10 | ## Was sind Anwendungen für einen Automaten? 11 | * Steuerungsautomaten (Ampelsteuerung, Billettautomat, Waschmaschine) 12 | * Lexikalische Analyse 13 | * Textsuche 14 | * Verarbeiten von Ereignisfolgen 15 | * Verhaltensmodellierung 16 | 17 | ## Was für Grunbestandteile gibt es bei einem Automaten? 18 | * Zustände Z (Startzustand, Endzustand) 19 | * Eingaben E (Aktionen, Ereignisse, Signale) 20 | * Ausgabe A (Aktionen) 21 | 22 | ## Welche grundlegenden Typen von Automaten gibt es? 23 | * Automat im Allgemeinen 24 | * `(Z, E) -> Z` 25 | * Automat bewirkt nicht explizit Ausgaben 26 | * Mealy-Automat 27 | * `(Z, E) -> Z, (Z, E) -> A` 28 | * ein Zustandsübergang bewirkt auch ein Ausgabe 29 | * Moore-Automat 30 | * `(Z, E) -> Z, Z -> A` 31 | * ein Zustand selbst ist auch mit einer Ausgabe verbunden 32 | 33 | ## Wie lässt sich ein Automat darstellen? 34 | * als Graph 35 | * als Tabelle 36 | 37 | ## Wie lassen sich Automaten umsetzen? 38 | * in Software: strukturiert, objektorientiert, State Design Pattern 39 | * in Hardware: Flip-Flops, Logikbausteine, SPS 40 | 41 | -------------------------------------------------------------------------------- /ad/11-3-Regulaere-Sprachen.md: -------------------------------------------------------------------------------- 1 | # Reguläre Sprachen und endliche Automaten 2 | 3 | ## Was ist die Motivation hinter regulären Sprachen? 4 | * anschaulich 5 | * umsetzungsnahe (Wortproblem, Mustersuche) 6 | * unterstützend durch Tools 7 | 8 | ## Was ist ein Endliche Automaten (EA)? 9 | * Präzisierung des Automaten 10 | * Zustände Z 11 | * endliche Anzahl 12 | * expliziter Startzustand 13 | * explizite Endzustände 14 | * Eingaben E 15 | * endliches Eingabealphabet 16 | * Typen 17 | * deterministischer endlicher Automat (DEA) 18 | * nichtdeterministischer endlicher Automat (NEA 19 | 20 | ## Was ist ein Deterministischer endlicher Automat (DEA)? 21 | * Beschreibung als 5-Tuple 22 | * Folgezustand ist eindeutig 23 | 24 | ## Was ist ein Nichtdeterministischer endlicher Automat (NEA)? 25 | * mehrere Folgezustände sind möglich 26 | * Folgezustände können quasi gleichzeitig eingenommen werden 27 | 28 | ## Was sind die wichtige Eigenschaften von DEA und NEA? 29 | * DEA kann in NEA überführt werden und auch umgekehrt 30 | * DEA und NEA sind gleich mächtig bzw. gleich ausdrucksstark! 31 | 32 | ## Was sind die Vor- und Nachtile von DEA und NEA? 33 | * DEA 34 | * sind einfacher und effizienter zu programmieren 35 | * erfordern für das Lösen des Wortproblems kein Backtracking 36 | * NEA 37 | * sind leichter zu konstruieren 38 | * benötigen weniger Zustände 39 | 40 | -------------------------------------------------------------------------------- /ad/13-1-Graphen.md: -------------------------------------------------------------------------------- 1 | # Graphen 2 | 3 | ## Was ist ein Graph? 4 | * abstrakte Struktur 5 | * besteht aus einer Menge von Objekte 6 | * zwischen welchen Verbindungen besteht 7 | 8 | ## Was sind bekannte Anwednungen für Graphen? 9 | * Computer und Netzwerkverbindungen 10 | * Elektronische Komponenten und Verbindungen 11 | * Neuronale Netze 12 | * Routenplan 13 | * Stammbaum 14 | * ... 15 | 16 | ## Was ist die formale Beschreibung eines Graphen? 17 | als 2-Tupel 18 | `G = (V, E)` 19 | 20 | Knotenmenge V (Knoten = Vertex) 21 | `V = {a, b, c, d, e}, |V| = 5` 22 | 23 | Kantenmenge E (Kante = Edge) 24 | `E = {(a, b), (b, a), (b, c), (a, c), (c, c), (c, d), (a, d)}, |E| = 7` 25 | 26 | ## Was ist der unterschied zwischen dicht und dünn besetzter Graph? 27 | * dicht (`|E| ~ |V|^2`) 28 | * dünn (`|E| << |V|^2`) 29 | 30 | ## Was ist ein Zyklus? 31 | Ein Pfad von Knoten x nach Knoten x 32 | 33 | ## Was ist ein Baum? 34 | * ungerichteter, zusammenhängender und zyklenfreier Graph 35 | * hat n Knoten und (n-1) Kanten 36 | 37 | ## Was ist ein aufspannender Baum? 38 | * zyklenfreier Teilgraph G' des Graphen G 39 | * umfasst alle Knoten von G 40 | * auch als "Spanning Tree" bekannt 41 | 42 | ## Was sind bekannten Graphen Algorithmen? 43 | * Breitensuche 44 | * Tiefensuche 45 | * Algorithmus von Dijkstra 46 | 47 | ## Was für Grundtypen gibt es einen Pfad zu finden? 48 | * Kürzesten Weg finden (Shortest Path) 49 | * Jeden Knoten besuchen (Travelling Salesman Problem, TSP) 50 | * Jede Kante besuchen (Chinese Postman Problem) 51 | * Alle Knoten aufspannen (Spanning Tree) 52 | 53 | ## Was für Grundtypen gibt es einen Knoten zu finden? 54 | * Grösste Clique finden, d.h. jedes Knotenpaar ist mit einer Kante verbunden 55 | * Independant Set finden, d.h. keine Knoten sind mit Kanten verbunden 56 | * Zentrum finden 57 | 58 | ## Was für 3 Arten von Graphen gibt es? 59 | * gerichtet 60 | * bewertet 61 | * ungerichtet 62 | 63 | ## Wie lässt sich ein Graph programatisch realisieren? 64 | * Baum mit Bäumen 65 | * Array mit Listen 66 | * Liste mit Listen 67 | 68 | -------------------------------------------------------------------------------- /ad/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /ad/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung AD 3 | subtitle: "Algorithmen & Datenstrukturen" 4 | modul: I.BA_AD.F17 5 | --- 6 | -------------------------------------------------------------------------------- /aiso/08-Simultane-Spiele.md: -------------------------------------------------------------------------------- 1 | # Simultane Spiele 2 | 3 | ## Was wird unter kompetitiven Optimierung verstanden? 4 | Handlung des einen Spieler haben Auswirkungen auf andere Spieler 5 | 6 | ## Welche Bestandteile gehören zu einem strategischen Spiel? 7 | * ein oder mehrere Spieler 8 | * Aktionen für jeden Spieler 9 | * Präferenzen für jeden Spieler (geordnete Aktionen eines Spielers) 10 | 11 | ## Was ist ein Action Profile? 12 | alle Kombinationen von Aktionen und Spieler 13 | 14 | ## Was ist ein Nash Equlibrium? 15 | * ist ein stabiler Zustand 16 | * keine Einzelperson will die Meinung ändern (Unilateral) 17 | * nur wenn beide Meinung ändern können 18 | 19 | ## Was ist der Unterschied zwischen dominant und dominiert? 20 | * dominante Strategie 21 | * ist immer die beste Strategie 22 | * dominierte Strategie 23 | * ist immer die schlechteste Strategie 24 | 25 | ## Was ist ein Pure Strategy Nash Equilibrium? 26 | wenn jeder Spieler die Best-Response auf die Aktionen der Gegner spielt 27 | 28 | ## Welche zwei Arten von Nash Equlibria gibt es? 29 | * Strict Nash Equilibrium (stable equilibrium) 30 | * wenn eine Person die Meinung ändern, wird es viel schlechter 31 | * Weak Nash Equilibrium (instable equilibrium) 32 | * wenn eine Person die Meinung ändern, wird es nur wenig schlechter 33 | 34 | ## Was ist eine Mixed Strategy? 35 | Verteilung der Wahrscheinlichkeiten über die möglichen Strategien 36 | 37 | ## Was ist ein Mixed Strategy Nash Equilibrium? 38 | * wenn beide Spieler eine Mixed Strategy spielen 39 | * diese eine Best-Response auf die Aktionen des Gegners ist 40 | 41 | ## Was ist der Unterschied zwischen First- und Second Price Auction? 42 | * __First Price Auction:__ 43 | * Der höchst Bietende gewinnt 44 | * Der Gewinner muss dieses Gebot bezahlen 45 | * Wenn $b_i$ nicht das Gewinner-Gebot ist, dann ist der Payoff $i = 0$ 46 | * Wenn $b_i$ das Gewinner-Gebot ist, dann ist der Payoff $i = v_i - b_i$ 47 | * __Second Price Auction:__ 48 | * Der höchst Bietende gewinnt 49 | * Der Gewinner muss das zweithöchste Gebot bezahlen 50 | * Wenn $b_i$ nicht das Gewinner-Gebot ist, dann ist der Payoff $i = 0$ 51 | * Wenn $b_i$ das Gewinner-Gebot ist und $b_j$ das zweithöchste, dann ist der Payoff $i = v_i - b_j$ 52 | 53 | -------------------------------------------------------------------------------- /aiso/09-Sequentielle-Spiele.md: -------------------------------------------------------------------------------- 1 | # Sequentielle Spiele 2 | 3 | ## Was ist der Unterschied zwischen simultanen und sequenziellen Spielen? 4 | * Simultanes Spiel 5 | * Spieler weiss nicht, was der andere Spieler spielt 6 | * Sequentielle Spiel 7 | * Spieler weiss, was der vorherige Spieler gespielt hat 8 | 9 | ## Welche Möglichkeiten gibt es bei einem sequentiellen Spiel mit zwei Spieler? 10 | * der erste Spieler kann immer gewinnen (first-mover advantage) 11 | * der zweite Spieler kann immer gewinnen (second-mover advantage) 12 | * beide Spieler können mindestens Unentschieden erreichen 13 | 14 | -------------------------------------------------------------------------------- /aiso/10-Constraint-Programming.md: -------------------------------------------------------------------------------- 1 | # Constraint Programming 1 - Modelling 2 | 3 | ## Für was steht die Abkürzungen CP und OP? 4 | * CP: Constraint Problem 5 | * OP: Constraint Optimization Problem 6 | 7 | ## Welche Bestandteile gehören zu einem Constrain Problem? 8 | * Variablen 9 | * Wertebereiche (Frames) 10 | * Bedingungen (Constraints) 11 | 12 | ## Was sind die Eigenschaften dieser Bestandteile? 13 | * jede Variable kann Werte aus ihrem Wertebereich annehmen 14 | * eine Bedingung beschreibt einen Zustand, der (nicht) erlaubt ist 15 | * eine Lösung ist eine gültige Zuweisung von Werten zu Variablen 16 | * gültig bedeutet, dass alle Bedienungen eingehalten wurden 17 | * es kann 0-n Lösungen geben 18 | 19 | ## Welche Bestandteile gehören zu einem Constrain Optimization Problem? 20 | * Constraint Problem mit objektiver Bewertungsfunktion 21 | * Lösung erfüllt alle Bedingungen und ist optimiert auf die Bewertungsfunktion 22 | 23 | ## Was bedeutet der Begriff symetrisch mit Bezug auf eine Lösung? 24 | * Lösungen sind gleichwertig, z.B. Vertauschen von zwei Zahlen 25 | * ist abhängig von den Bedingungen des Spiels 26 | 27 | ## Wie wird ein CP mit OR-Tools gelöst? 28 | ``` 29 | from ortools.constraint_solver import pywrapcp 30 | solver = pywrapcp.Solver("Grocery Store") 31 | 32 | p1 = solver.IntVar(0, 711) 33 | p2 = solver.IntVar(0, 711) 34 | p3 = solver.IntVar(0, 711) 35 | p4 = solver.IntVar(0, 711) 36 | 37 | solver.Add(p1 + p2 + p3 + p4 == 711) 38 | solver.Add(p1 * p2 * p3 * p4 == 711 * 100 * 100 * 100) 39 | 40 | # Configure search 41 | # 1. Decision variables to resolve 42 | # 2. Variable selection policy for search 43 | # 3. Value selection policy for search 44 | db = solver.Phase([p1, p2, p3, p4], solver.INT_VAR_SIMPLE, solver.INT_VALUE_SIMPLE) 45 | solver.NewSearch(db) 46 | 47 | # Find solutions 48 | while solver.NextSolution(): 49 | print("Product 1: {}".format(p1.Value())) 50 | print("Product 2: {}".format(p2.Value())) 51 | print("Product 3: {}".format(p3.Value())) 52 | print("Product 4: {}".format(p4.Value())) 53 | print() 54 | ``` 55 | 56 | ## Wie können symmetrische Lösungen verhindert werden? 57 | durch Einfügen von zusätzlichen Bedingungen, z.B.: 58 | 59 | ``` 60 | solver.Add(p1 <= p2) 61 | solver.Add(p2 <= p3) 62 | solver.Add(p3 <= p4) 63 | ``` 64 | 65 | -------------------------------------------------------------------------------- /aiso/11A-Constraint-Programming.md: -------------------------------------------------------------------------------- 1 | # Constraint-Programming 2 - Algorithms 2 | 3 | ## Welche zwei Strategien müssen für Backtrack Search definiert werden? 4 | 1. Reihenfolge, in welcher die Variablen abgearbeitet werden 5 | 2. Reihenfolge, in welcher die Werte abgearbeitet werden 6 | 7 | ## Was sind die Vor- und Nachteile von Backtrack-Search? 8 | * vollständige Suche 9 | * exponentielle Zeitkomplexität 10 | * lineare Speicherkomplexität 11 | * gut geeignet für Parallelisierung 12 | 13 | ## Was ist Forward Checking? 14 | * ungültige Lösungen eliminieren 15 | * Domänen verkleinern => Suchbaum verkleinern 16 | * vereinfachen des Baumes für Backtrack-Search 17 | * kein kompletter Algorithmus => gibt keine Lösung 18 | 19 | ## Was ist eine strongly connected component? 20 | * Alle Variablen können die gleichen Werte annehmen 21 | * Keine Variable ausserhalb darf einen Wert innerhalb haben 22 | 23 | ## Was ist Bounds Consistency? 24 | * suchen von strongly connected component anhand von Intervals 25 | * findet nicht alle strongly connected component 26 | * Aufwand: `O(n * log(n))` 27 | 28 | ## Was ist Domain Consistency? 29 | * suchen von strongly connected component anhand von allen möglichen Subsets 30 | * findet alle strongly connected component 31 | * Aufwand ist jedoch exponentiell: `O(2^n)` 32 | 33 | -------------------------------------------------------------------------------- /aiso/11B-Constraint-Programming.md: -------------------------------------------------------------------------------- 1 | # Constraint-Programming 3 - Optimization 2 | 3 | ## Was ist Graph K-Colouring? 4 | * versuchen Graph mit `k` Farben zu färben 5 | * Nachbarn haben immer Unterschiedliche Farben 6 | * Aussage: geht oder geht nicht 7 | 8 | ## Wie wird ein Constraint Problem optimiert? 9 | * Suchen einer gültigen Lösung (erfüllt alle Constraints) 10 | * Evaluieren der Lösung mit einer Bewertungsfunktion 11 | * Constraint hinzufügen, so dass nur bessere Lösungen gültig sind 12 | * solange weiter machen, bis keine bessere Lösung mehr gefunden wurde 13 | 14 | ## Was ist bei einer solchen Optimierung zu beachten? 15 | * es werden (evtl.) mehrere gültige Lösungen gefunden 16 | * nur die letzte Lösung ist optimal (falls vorhanden) 17 | 18 | ## Wie kommt man vom Constraint Problem zum Optimization Problem? 19 | * einfügen einer objective function 20 | * minimieren/maximieren der Lösung anhand einer Funktion 21 | 22 | ## Was ist ein Subset Sum Problem? 23 | * welche Elemente einer Menge ergeben in der Summe möglichst genau einen Wert 24 | 25 | ## Was ist ein Knapsack Problem? 26 | * Subset Sum mit Gewichten und Kapazität 27 | * zusätzlich haben die Objekte noch einen Wert 28 | * Maximierung des Wertes anhand der gegebenen Kapazität 29 | 30 | -------------------------------------------------------------------------------- /aiso/13-Constraint-Programming.md: -------------------------------------------------------------------------------- 1 | # Constraint-Programming 4 - Routing 2 | 3 | ## Welche zwei Arten von Routing-problemen werden unterschieden? 4 | * Node Routing 5 | * jeder Knoten muss genau einmal besucht werden 6 | * Arc Routing 7 | * jede Kante muss genau einmal besucht werden 8 | 9 | ## Welche Begriffe werden bei OR-Tools für Routing-Probleme verwendet? 10 | * __depot:__ Startpunkt und Endpunkt einer Runde 11 | * __cities:__ Punkte die abgearbeitet werden müssen 12 | * __vehicle:__ Arbeiter der eine Runde abarbeitet 13 | * __demand:__ Grösse des Auftrags an einem Punkt 14 | * __capacity:__ Kapazität eines Arbeiters 15 | * __precedence:__ Rangfolge in welcher die Punkte abgearbeitet werden müssen 16 | 17 | ## Was ist der Unterschied zwischen Euklidischer- und Manhatten-Distanz? 18 | * Manhatten: $d = x_{\Delta} + y_{\Delta}$ 19 | * Euklid: $d = \sqrt{x_{\Delta}^2 + y_{\Delta}^2}$ 20 | 21 | -------------------------------------------------------------------------------- /aiso/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /aiso/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung AISO 3 | subtitle: "Artificial Intelligence: Search & Optimization" 4 | modul: I.BA_AISO_MM.F1901 5 | --- 6 | -------------------------------------------------------------------------------- /appe/02B-Apache-Maven.md: -------------------------------------------------------------------------------- 1 | # Apache Maven 2 | 3 | ## Wofür steht die Abkürzung POM? 4 | Project Object Model 5 | 6 | ## Was sind die Eigenschaften von Apache Maven? 7 | * Deklaration des Projektes in XML 8 | * minimale Ressourcen notwendig 9 | * Integration in praktisch jeder IDE vorhanden 10 | * definiert im wesentlichen nur die POM-Struktur und die Lifecycle-Phasen 11 | * sehr flexibel und nahezu beliebig erweiterbar 12 | 13 | ## Wie heissen die Lifecycle-Phasen von Apache Maven? 14 | * __validate__ - Validiert die Projektdefinition. 15 | * __compile__ - Kompliation der Quellen. 16 | * __test__ - Ausführen der Unit-Tests. 17 | * __package__ - Packen der Distribution (JAR, EAR etc.) 18 | * __verify__ - Ausführen der Integrations-Tests. 19 | * __install__ - Deployment im lokalen Repository. 20 | * __deploy__ - Deployment im zentralen Repository. 21 | 22 | -------------------------------------------------------------------------------- /appe/02C-Dependency-Management.md: -------------------------------------------------------------------------------- 1 | # Dependency Management 2 | 3 | ## Was ist Dependency Management (DM)? 4 | * beschreibt die Organisation und die Techniken für den Umgang mit Abhängigkeiten 5 | * Abhängigkeiten können sowohl auf interne und externe Modulen bestehen 6 | * Abhängigkeiten werden typisch in binärer Form aufgelöst 7 | * deshalb kommen dafür so genannte Binär-Repositories und Packagemanager zum Einsatz 8 | 9 | ## Welche drei Attribute identifizieren bei Aache Maven ein Abhängigkeit? 10 | * GroupId: 11 | * meistens zusammengesetzt aus dem "reverse domain name" 12 | * Beispiel: ch.hslu.appe 13 | * ArtifactId: 14 | * entspricht häufig dem Namen des Projektes 15 | * Beispiel: appe-stock 16 | * Version: 17 | * empfohlen wir eine dreistellige Versionsnummer 18 | * Beispiel: 4.0.0 19 | 20 | ## Welche Dependency Scopes kennt Apache Maven? 21 | * __compile__ - Dependency wird für die Kompilation und zur Laufzeit benötigt 22 | * __test__ - Dependency wird nur für die Kompilation und Ausführung der Testfälle benötigt 23 | * __runtime__ - Dependency wird nur für Laufzeit, aber nicht für Kompilation benötigt 24 | 25 | -------------------------------------------------------------------------------- /appe/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /appe/images/01A-Kano.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/appe/images/01A-Kano.png -------------------------------------------------------------------------------- /appe/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung APPE 3 | subtitle: Applikationsentwicklung 4 | modul: I.BA_APPE_MM.F1801 5 | --- 6 | -------------------------------------------------------------------------------- /bw/05-Organisationtheorie.md: -------------------------------------------------------------------------------- 1 | # Organisationstheorien 2 | 3 | ## Wichtig 4 | * Jeder Versteht eine Organisation anders, je nach Blickwinkel 5 | * Blickwinkel (Kunde, Mitarbeiter, Manager, Staat, ...) 6 | * Niemand versteht die ganze Organisation 7 | 8 | ## klassische Organisationstheorien 9 | * Bürokratie Modell 10 | * Regeln, beherrschbar, Effizienz steigern, keine Willkür 11 | * ca. 1920 durch Max Weber 12 | * Normierung, keine Überraschungen, Effizienzgewinn 13 | * keine Flexibilität, wenig Kreativität, Innovation verhindert 14 | * Scientific-Management 15 | * Arbeitsteilung, Effizienzgewinn, Trennung Planung und Ausführung 16 | * ca. 1925 durch Frederick Taylor und Henry Ford 17 | * Zeitgewinn, Kostenreduktion, Sinnentlehrung, Spezialisierung 18 | * monoton, Fliessbandarbeit 19 | * Administrations und Managementlehre 20 | * 14 Managementprinzipien, Disziplin und Ordnung, Teamarbeit 21 | * ca. 1925 durch Henri Fayol 22 | * TODO 23 | * TODO 24 | * Human-Relations-Ansatz (Hawthorne-Experimente) 25 | * Führungsstil ist wichtig, Mensch steht im Vordergrund 26 | * TODO 27 | * glückliche Menschen Arbeiten besser, Wertschätzung 28 | * TODO 29 | 30 | ## Zusammenfassung der klassischen Theorien 31 | * Emotionen stören 32 | * Koordination durch Anleitung 33 | * Hierarchische Delegation 34 | * Effizienz durch Regeln 35 | * Spezialisierung 36 | * Kontrolle ist wichtig 37 | * Geld ist Arbeitsmotivation 38 | 39 | ## Zusammenfassung der Verhaltenswissenschaftliche Ansätze 40 | * Aufmerksamkeit der Vorgesetzten 41 | * Mitgliedschaft 42 | * Zugehörigkeit 43 | * Führungsstil 44 | * Gruppenbeziehungen 45 | 46 | ## Systemtheorie 47 | * Definition (Menge von Elementen mit Beziehung untereinander) 48 | * Merkmale 49 | * ganzheitlich / interdisziplinär 50 | * umweltorientiert 51 | * dynamisch / flexible 52 | * selbstregulierend / lernfähig 53 | * Kernkonzepte 54 | * Bewältigung von Komplexität 55 | * Vernetzung und Abhängigkeiten 56 | * Systemhierarchie 57 | * Feedback (Planung, Umsetzung, Kontrolle) 58 | * Mensch, Technik und Organisation gleichbedeutend 59 | * Arbeitsgruppe mit Zielerreichung 60 | * Entscheidungsspielräume 61 | 62 | -------------------------------------------------------------------------------- /bw/07-Aufbauorganisation-2.md: -------------------------------------------------------------------------------- 1 | # Aufbauorganisation 2 2 | 3 | ## Dualorganisation 4 | * Primärorganisation (dauerhafte Stellen) 5 | * Sekundärorganisation (hierarchieübergreifende, flexible Strukturen) 6 | 7 | ## Anforderungen an Organisationskonzepte 8 | * intern Orientierung 9 | * Leistungsprozess-Effizienz 10 | * Fürungsprozesse-Effizienz (Planung, Koordination) 11 | * HR-Effizienz (Fähigkeiten der Mitarbeiter werden genutzt) 12 | * Sachressourcen-Effizienz (finanzielle und materielle Ressourcen) 13 | * externe Orientierung 14 | * Innovationsfähigkeit 15 | * Mart- und Wettbewerbsorientierung 16 | * Flexibilität 17 | 18 | ## Formen der Primärorganisation 19 | * Funktionale Organisation 20 | * Delegiere nach unten und am Schluss eine Kontrolle 21 | * Vorteile (einfache Struktur, kontrollierbare Funktionsbereiche) 22 | * Nachteile (Koordinationsprobleme, Suboptimierungen) 23 | * Divisionale Organisation 24 | * Unterteilung nach Kunden, Produkten oder Regionen 25 | * Vorteile (Entlastung der Führung, ganzheitliche Delegation) 26 | * Nachteile (Doppelarbeiten, Zentralfunktionen erforderlich) 27 | * Matrix- oder Tensororganisation 28 | * Unterteilung zwischen Bereichen und Divisionen/Sparten 29 | * Vorteile (Kommunikationswege, Problemlösung, Personalentwicklung) 30 | * Nachteile (Kompetenzabgrenzung, Koordination, Kompromisse, Bürokratie) 31 | * Holdingorganisation 32 | * Definiert Ziele und Strategien der Tochtergesellschaften 33 | * Vorteile (Zuordnungen, steuerliche Vorteile, unternehmerisches Denken) 34 | * Nachteile (Gefahr von Widerstände, Kontrollaktivitäten, Spannungen) 35 | 36 | ## Formen der Sekundärorganisation 37 | * Produktmanagement (Produktentwicklung, Marketing, Umsatzpläne) 38 | * Kundenmanagement (Kundenbindung, Kundenakquisition, Kundenzufriedenheit) 39 | * Funktionsmanagement (Controlling) 40 | * Projektmanagement 41 | * Strategische Geschäftseinheiten (Kernnutzen, neue Geschäftsfelder) 42 | * Prozessmanagement 43 | 44 | -------------------------------------------------------------------------------- /bw/08-Ablauforganisation.md: -------------------------------------------------------------------------------- 1 | # Ablauforganisationen 2 | 3 | ## Grundprobleme 4 | * Funktionale Abschottung (Gärtchen-Denken wegen Funktionsbarrieren) 5 | * Informationsfilterung (Chef zu weit Weg wegen Hierarchiebarrieren) 6 | * Koordinationsprobleme (Prozesse widersprechen Aufbauorganisation) 7 | * Steuerungsproblee (fehlende Prozessverantwortung) 8 | 9 | ## Der Prozess 10 | * Struktur aus Aufgaben in logischer Folge 11 | * definiert Input und Output 12 | * Ziel ist es einen Wert für den Kunden zu schaffen 13 | 14 | ## Ziele der Prozessorganisation 15 | * Ziele sollten möglich wertschöpfend für den Kunden sein 16 | * Abgrenzung von andern (Innovation, Fehlerkultur, Flexibilität) 17 | 18 | ## Aktionsträger im Prozessmanagement 19 | * Prozesslenkungsauschuss (Gesamtkordinationsstelle) 20 | * Prozessmethodenberater (externer Berater) 21 | * Prozesseigner (Prozessverantwortlicher) 22 | * Prozessmanager (Führt den Prozess aus) 23 | * Prozessmitarbeiter (Ist für einen Schritt verantwortlich) 24 | 25 | ## Prozessmanagement als Sekundärorganisation 26 | * Kommt sehr häufig genau so vor 27 | * Prozessmanagment überlagert die Aufbauorganisation 28 | * Es entstehen Interessenskonflikte (wie bei Matrixorganisation) 29 | 30 | ## Prozessmanagement als Primärorganisation 31 | * Kein Silodenken (Abteilungsdenken) 32 | * Zentrale Dienste welche von allen genutzt werden 33 | * Aufteilung nach Kernprozessen (Produktion, ...) 34 | 35 | ## Darstellung von Prozessen 36 | * Aufgabe (rechteckiger Kasten mit Titel und Beschreibung) 37 | * Kette (Aufgaben in einer Abfolge, durch Pfeile angezeigt) 38 | * Und-Verzweigungen (parallele Abfolge, Aufteilung durch Sechseck) 39 | * Oder-Verzweigung (Unterscheidung anhand Kriterien, Aufteilung durch Sechseck) 40 | * Rückkoppelung (aka Schleife, durch Pfeil angezeigt) 41 | * externer Quellen (ausserhalb Untersuchungsbereich, abgerundetes Rechteck) 42 | * Konnektoren (Unterteilung der Darstellung, Kreis mit Kennzeichnung) 43 | * Zeitliche Unterbrechungen (zwei Ts mit der oberen Seite gegeneinander) 44 | * Prozess beendet (umgekehrtes T) 45 | * Prozess wird nicht weiter dargestellt (umgekehrtes T mit 2 horizontalen Linien darunter) 46 | 47 | -------------------------------------------------------------------------------- /bw/10-Personal-2.md: -------------------------------------------------------------------------------- 1 | # Personal 2 2 | 3 | ## Honorierung 4 | 5 | ### Lohnformen 6 | * Akkordlohn: Leistungslohn, erbrachte Leistung wird gemessen 7 | * Zeitlohn: Lohn nach Arbeitszeit, Leistung wird erwartet 8 | * Prämien-Zeitlohn: Grundlohn plus Lohn nach Leistung, Qualitätsprämien 9 | * Verhaltensbezogen: je nach Anstrengungen 10 | * Leistungsbezogen: individuelle oder Teamleistung 11 | * Erfolgsbezogen: Anteil am Gewinn oder an der Marktkapitalisierung 12 | 13 | ### Arbeitsplatzbewertung 14 | * Rangfolgeverfahren (anhand Anforderung und Schwierigkeit der Stelle) 15 | * Rangreihenverfahren (Reihung für jede einzelne Anforderungsart) 16 | * Lohngruppen (Kategorien von Lohngruppen anhand von Kriterien) 17 | * Stufenwertzahlen (Matrix aus Anforderungen, Gewicht und Arbeitsbewertung) 18 | 19 | ## Entwicklung 20 | * Ziele: Fähigkeiten fördern, Entwicklung des Unternehmen 21 | 22 | ### Nutzen 23 | * für Unternehmen (Talente fördern, Motivation steigern, Unabhängigkeit, Änderungsbereitschaft, Kooperationen und Kommunikation verbessern) 24 | * für Mitarbeiter (Potential erkennen, Qualifikation verbessern, Prestige, Marktwert erhöhen, Selbstverwirklichung, Karrierenchancen) 25 | 26 | ### Massnahmen zur Personalentwicklung 27 | * Aus- und Weiterbildung 28 | * E-Learning 29 | * Mentoring 30 | * Coaching 31 | 32 | ## Freistellung 33 | 34 | ### Massnahmen 35 | * Änderung des Arbeitsverhältniss (Versetzung, Arbeitsverkürzung) 36 | * Beendigung eines Arbeitsverhältnis (natürliche Abgänge, freiwilliges Ausscheiden, Entlassungen) 37 | 38 | ### Massenentlassung 39 | * 10 Personen in Betrieben mit 20-100 Beschäftigten 40 | * 10% in Betrieben mit 100-300 Beschäftigten 41 | * 30 Personen in Betrieben mit mehr als 300 Beschäftigte 42 | * Kommunale Meldepflichten 43 | 44 | ### Formen der Kündigung 45 | * Ordentlich (Begründung, Freistellung) 46 | * Ausserordentlich (fristlos aus wichtigen Gründen, Verweigern, Widrigkeiten) 47 | 48 | -------------------------------------------------------------------------------- /bw/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /bw/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung BW 3 | subtitle: Betriebswirtschaft 4 | modul: I.BA_BW.H1601 5 | --- 6 | -------------------------------------------------------------------------------- /cg/01A-Einfuehrung.md: -------------------------------------------------------------------------------- 1 | # Einführung 2 | 3 | ## Wo werden überall Computergrafik gebraucht? 4 | GUI, Visualisierungen, Filme, Werbung, 5 | Architektur, Spiele, Virtual Reality 6 | 7 | ## Wie heissen die Schritte in einer CG Pipline? 8 | 1. Objekte 9 | 2. Modelltransformation 10 | 3. 3D-Szene 11 | 4. Viewingtransformation 12 | 5. 3D-Clipping 13 | 6. Entfernen verdeckter Flächen 14 | 7. Beleuchtung 15 | 8. Perspektive 16 | 9. 2D-Szene 17 | 10. 2D-Clipping 18 | 11. Rasterung 19 | 12. Darstellung 20 | 21 | -------------------------------------------------------------------------------- /cg/01C-WebGL.md: -------------------------------------------------------------------------------- 1 | # WebGL 2 | 3 | ## Was sind die Merkmale von OpenGL? 4 | * Low Level Graphics API 5 | * Unterstützung für verschiedene Plattformen 6 | * gute Hardware Unterstützung auf allen Grafikkarten 7 | * Definierte Extensions 8 | * Programmierbare Shaders seit OpenGL 2.0 9 | * Subsetfür Embedded Systems 10 | 11 | ## Was sind die Vorteile von programmierbaren Shaders? 12 | Direkte Ausführung auf der Grafikhardware 13 | 14 | ## Was ist der Unterschied zwischen Vertex & Fragment Processing? 15 | * Vertex Processing: 16 | * Berechnet die Position eines Vertex 17 | * Vorberechnungen von weiteren Daten für Fragment Processing möglich 18 | * Fragment Processing: 19 | * Berechnet die Farbe des Pixels 20 | 21 | ## Wie sieht eine vereinfachte WebGL Pipeline aus? 22 | \begin{figure}[H] 23 | \includegraphics[width=0.6\textwidth]{images/01C-webgl-pipeline.png} 24 | \end{figure} 25 | 26 | ## Wie sieht der Datenfluss in einer WebGL Pipeline aus? 27 | \begin{figure}[H] 28 | \includegraphics[width=0.6\textwidth]{images/01C-webgl-data-flow.png} 29 | \end{figure} 30 | 31 | -------------------------------------------------------------------------------- /cg/11A-Raytracing.md: -------------------------------------------------------------------------------- 1 | # Raytracing 2 | 3 | ## Für was wird Raytracing gebraucht? 4 | * Erzeugung von photorealistischen Bildern 5 | * Berücksichtigung von Spiegelung und Transparenz 6 | * Pro Pixel wird ein Strahl gelegt und das Objekt ermittelt, das zuerst geschnitten wird 7 | * Weitere Strahlen werden verwendet um zusätzliche Effekte zu erzielen 8 | * Spiegelung, Transparenz, Schatten, Umgebungslicht 9 | 10 | ## Wie funktioniert ein einfacher Raytracing Algorithmus? 11 | ``` 12 | for alle Pixel do 13 | Ermittle Strahl durch Pixel 14 | for alle Objekte do 15 | Berechne Schnittpunkte mit Strahl 16 | if Schnittpunkt am nächsten then 17 | Speichere Schnittpunktinformation 18 | end 19 | end 20 | if Schnittpunkt gefunden then 21 | Berechne Farbe 22 | end 23 | end 24 | ``` 25 | -------------------------------------------------------------------------------- /cg/12A-Rendering.md: -------------------------------------------------------------------------------- 1 | # Rendering Equation 2 | 3 | ## Was bedeutet die Abkürzung BRDF? 4 | Bidirectional Reflectance Distribution Function 5 | 6 | ## Wie ist die Rendering Equation definiert? 7 | $L_O(x,\vec{w_r}) = L_e(x, \vec{w_r}) + L_r(x, \vec{w_r})$ 8 | 9 | ## Was ist das Ziel von Radiosity? 10 | Berücksichtigung der Farbe des reflektieren Lichtes eines Objektes 11 | 12 | ## Radiosity Konzept 13 | * Oberflächen der Objekte werden in Patches unterteilt 14 | * Ein Patch ist ein Polygon mit konstanter Licht Intensität 15 | * Die Abhängigkeiten der Patches werden durch ein System von lineraren Gleichungen modelliert 16 | * Durch Lösung der Gleichungen wird die Intensität und Farbe pro Patch berechnet 17 | 18 | ## Radiosity Gleichung 19 | $B_i A_i = E_i A_i + \rho_i \sum_{j=1}^n B_j A_j F_{ij}$ \newline 20 | 21 | $B_i$ Radiosity 22 | $A_i$ Flächeninhalt des Patch $i$ 23 | $E_i$ Emission des Patch $i$ 24 | $\rho$ Reflektion 25 | $F_{ij}$ Formfaktor 26 | 27 | ## Welche Möglichkeiten gibt es ein Gleichungssystem zu lösen? 28 | * Jacobi Iteration 29 | * Gauss Seidel Relaxation 30 | * Southwell Iteration 31 | 32 | ## Was ist das Problem bei der Berechnung der Formfaktoren? 33 | * Analytische Berechnung des Integrals geht nur in Ausnahmefällen 34 | * Sichtbarkeit muss berechnet werden 35 | * Lösung durch Approximationen und geometrische Interpretation 36 | 37 | ## Welche Möglichkeiten gibt es für die Berechung der Radiosity? 38 | * Progressive Radiosity: 39 | * Berechnung und frühe Darstellung einer approximativen Lösung 40 | * Hierarchical Radiosity: 41 | * Erhöhung der Anzahl Patches wo es notwendig ist 42 | 43 | -------------------------------------------------------------------------------- /cg/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /cg/images/01B-cie-normfarbtafel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/01B-cie-normfarbtafel.png -------------------------------------------------------------------------------- /cg/images/01B-cie-spektralwertkurven.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/01B-cie-spektralwertkurven.png -------------------------------------------------------------------------------- /cg/images/01C-webgl-data-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/01C-webgl-data-flow.png -------------------------------------------------------------------------------- /cg/images/01C-webgl-pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/01C-webgl-pipeline.png -------------------------------------------------------------------------------- /cg/images/03A-spatprodukt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/03A-spatprodukt.png -------------------------------------------------------------------------------- /cg/images/03A-vektorprodukt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/03A-vektorprodukt.png -------------------------------------------------------------------------------- /cg/images/06B-isometrische-projektion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/06B-isometrische-projektion.png -------------------------------------------------------------------------------- /cg/images/06B-kabinettsprojektion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/06B-kabinettsprojektion.png -------------------------------------------------------------------------------- /cg/images/06B-kavaliersprojektion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/06B-kavaliersprojektion.png -------------------------------------------------------------------------------- /cg/images/06B-orthographische-projektion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/06B-orthographische-projektion.png -------------------------------------------------------------------------------- /cg/images/06B-perspektivische-projektion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/06B-perspektivische-projektion.png -------------------------------------------------------------------------------- /cg/images/06B-projektionen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/06B-projektionen.png -------------------------------------------------------------------------------- /cg/images/06B-webgl-frustum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/06B-webgl-frustum.png -------------------------------------------------------------------------------- /cg/images/06B-webgl-ortho.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/06B-webgl-ortho.png -------------------------------------------------------------------------------- /cg/images/06B-webgl-perspective.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/06B-webgl-perspective.png -------------------------------------------------------------------------------- /cg/images/08A-sutherland-hodgman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/08A-sutherland-hodgman.png -------------------------------------------------------------------------------- /cg/images/08B-Schattierungen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/08B-Schattierungen.png -------------------------------------------------------------------------------- /cg/images/08B-lichtquellen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/08B-lichtquellen.png -------------------------------------------------------------------------------- /cg/images/09B-kugelkoordinaten.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/09B-kugelkoordinaten.png -------------------------------------------------------------------------------- /cg/images/09B-zylinderkoordinaten.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/cg/images/09B-zylinderkoordinaten.png -------------------------------------------------------------------------------- /cg/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung CG 3 | subtitle: Computer Graphics 4 | modul: I.BA_CG_MM.H1801 5 | --- 6 | -------------------------------------------------------------------------------- /ci/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /ci/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung CI 3 | subtitle: Cloud Infrastructure 4 | modul: I.BA_CI.F1801 5 | --- 6 | -------------------------------------------------------------------------------- /cna/1-Rechnerarchitekturen-4.md: -------------------------------------------------------------------------------- 1 | ## Was machen die Befehle ASL und RAR? 2 | * ASL = Arithmetic Shift Right (Verschieben aller Bits um eins nach links, Multiplikation mit 2) 3 | * RAR = Rotate Arithmetic Right Verschieben aller Bits um eins nach rechts, Division durch 2, Rest der Division steht im Carry) 4 | -------------------------------------------------------------------------------- /cna/1-Rechnerarchitekturen-6.md: -------------------------------------------------------------------------------- 1 | ## Was versteht man unter dem Semantic Gap? 2 | * Die Kluft zwischen verschiedenen Sprachen 3 | * natürliche Sprache: "die Zahl x um drei Erhöhen und um zwei reduzieren" 4 | * mathematische Notation: x + 3 - 2 5 | * Programmiersprache (Java): x = x + 3 - 2; 6 | * Maschinensprache `ADD &x, 3` oder `SUB &x, 2` 7 | * Hochsprachen wie Java versuchen den Semantic Gap zu schliessen. 8 | 9 | ## Wie lauten die in der Informatik gebräuchlichsten SI-Vorsätze? 10 | * kleiner als 1: 11 | * 10^-3: milli, m 12 | * 10^-6: micro, u 13 | * 10^-9: nano, n 14 | * grösser als 1: 15 | * 10^3: kilo, k 16 | * 10^6: mega, M 17 | * 10^9: giga, G 18 | * 10^12: tera, T 19 | * 10^15: peta, P 20 | * 10^18: exa, E 21 | 22 | ## Wie lauten die bekannten Einheiten für Datenübertragungsraten? 23 | * Bitrate: 1 kbit/s = 1‘000 bit/s 24 | * Byterate: 1 B/s = 8bit/s 25 | 26 | ## Was ist der Unterschied zwischen einem Kibibyte und einem Kilobyte? 27 | * 1kB = 1000Byte 28 | * 1KiB = 1024Byte 29 | 30 | -------------------------------------------------------------------------------- /cna/1-Rechnerarchitekturen-7.md: -------------------------------------------------------------------------------- 1 | ## Aus welchen Bestandteile ist einen PC zusammengesetzt? 2 | * Motherboard (Hauptplatine, CPU, RAM, BIOS, USB, ...) 3 | * Laufwerke (HD, SSD, DVD, CD, SD, Tape, ...) 4 | * Plug-in Karten (Grafikkarten, Netzwerk, TV, SCSI, Sound, ...) 5 | * Netzteil 6 | * Gehäuse 7 | 8 | ## Was sind verbreitete Gatelängen bei akteullen Chips (Stand 2016)? 9 | * 2012 ca. 22nm bei Intel Prozessoren Core i5 und i7 10 | * 2014 14nm bei Intel Core-M Prozessoren 11 | 12 | ## Was ist ein PC-Chipsatz? 13 | * Er unterstützt den Prozessor bei seinen Aufgaben. 14 | * Er realisiert die elektrischen Anschlüsse (Pins, Schnittstellen) 15 | * Er besteht aus: 16 | * North-Bridge/MCH (Memory Controller Hub): Steuert Datenfluss zwischen CPU, Speicher und South-Bridge 17 | * South-Bridge/ICH (I/O Controller Hub): Steuert Datenfluss zwischen Peripherie, PCI-Bus, Festplatten und externen Schnittstellen und der North-Bridge 18 | 19 | ## Welche RAM-Busse gibt es? 20 | * SDRAM: synchrones DRAM 21 | * DDR RAM: double data rate 22 | * DDR II RAM: vierfach Fetch 23 | * DDR III RAM: achtfach Fetch 24 | 25 | ## Welche RAM-Modul-Bauformen gibt es? 26 | * SIMM: Single Inline Memory Module (ältere RAM-Bausteine) 27 | * DIMM: Dual Inline Memory Module (modernere RAM-Bausteine für PC) 28 | * SO-DIMM: Small Outline DIMM (für Laptops) 29 | 30 | ## Was sind die Vorteile von RAID? 31 | * Redundante Abspeicherung: ermöglicht Datenrettung im Falle kaputter Festplatten 32 | * Ausfallsicherheit: das System läuft weiter im Falle einer kaputten Festplatte 33 | * Realisierung extrem grosser virtueller Laufwerke aus mehreren Festplatten 34 | * Fehlererkennung 35 | * Geschwindigkeitsverbesserungen 36 | * Austausch während dem Betrieb 37 | 38 | ## Was ist der Unterschied zwischen resistivem und einem kapazitivem Touchscreen? 39 | * resistiver Touchscreen 40 | * zwei parallele Leiterschichten 41 | * durch Fingerdruck kommen sie an einem Punkt in Berührung 42 | * kostengünstiger als kapazitive Touchscreens 43 | * mit Handschuhen bedienbar 44 | * lassen sich nicht mit dickem Glas schützen, da Oberfläche nachgeben muss 45 | * kapazitiver Touchscreen 46 | * Finger verändert das elektrische Feld 47 | * Können mehrere gleichzeitige Berührungen lokalisieren 48 | * Lassen sich durch ein dickes Deckglas schützen 49 | * Teurer als resistive Touchscreens 50 | 51 | -------------------------------------------------------------------------------- /cna/1-Rechnerarchitekturen-8.md: -------------------------------------------------------------------------------- 1 | ## Klassifikation nach Flynn 2 | * SISD (Single Instruction, Single Data) 3 | * Klassischer Einprozessor-Rechner (von Neumann oder Harvard-Architektur) 4 | * MISD (Multiple Instruction, Single Data) 5 | * redundante Systeme, Paralleles Berechnen von Alternativen (Schachcomputer) 6 | * SIMD (Single Instruction, Multiple Data) 7 | * Vektorprozessor, ein Steuerwerk, mehrere ALUs, bei Supercomputern und neuen Mikroprozessoren 8 | * MIMD (Multiple Instruction, Multiple Data) 9 | * Mehrkernprozessor, Multiprozessorsystem, Verteilte Systeme (Transputer) 10 | 11 | ## Was sind die Unterschiede zwischen Multicore, Multiprozessor und Multicomputer? 12 | * Unterscheidung über Abstand der Prozessoren 13 | * Kommunikationsbandbreite, Busbreite 14 | * Multicore 15 | * Mehrere Prozessoren in einem IC (Integrated Circuit) 16 | * Multiprozessorsystem (Mehrprozessorsystem) 17 | * Mehrere Prozessoren in einem Computer 18 | * Multicore oder mehrere ICs auf Platine 19 | * Multicomputer 20 | * Eigenständige Rechner - meist via Netzwerk 21 | 22 | ## Was bedeute die Abkürzung ASCII? 23 | American Standard Code for Information Interchange 24 | 25 | -------------------------------------------------------------------------------- /cna/2-Betriebssysteme-1.md: -------------------------------------------------------------------------------- 1 | # Kapitel Betriebsysteme 2 | 3 | ## Was macht ein Betriebssystem (BS)? 4 | Betriebssysteme realisieren eine Softwareschicht zwischen Anwendungen und Hardware, die sich mit der Verwaltung der Hardwarekomponenten beschäftigt und für die Anwendungen einfachere Schnittstellen bereitstellt (System Calls). 5 | 6 | ## Was sind die Nachteile, wenn ein Rechner ohne Betriebssystem benutzt wird? 7 | * Komplizierter zum Programmieren 8 | * man muss die Hardware kennen 9 | * Eingeschränkte Wiederverwendbarkeit und Portierbarkeit 10 | * Ressourcen müssen selber verwaltet werden 11 | 12 | ## Was sind die Vorteile, wenn ein Rechner ohne BS benutzt wird? 13 | * Schlankeres System 14 | * Vollständige Kontrolle 15 | * Bessere Performance 16 | * keine Kosten (für ein Betriebssystem) 17 | * keine Betriebssystem-Updates 18 | * keine Viren 19 | 20 | ## Welche Möglichkeiten hat das Betriebssystem um auf IO-Geräte zu reagieren? 21 | * Polling (Busy Waiting) 22 | * Interrupts 23 | * DMA (Direct Memory Access) 24 | 25 | ## Beschreiben Sie die Hauptaufgaben eines BS? 26 | * Ressourcenmanagement 27 | * Benutzerverwaltung 28 | * Prozessmanagement 29 | * IO-Management 30 | * Filesystemverwaltung 31 | * Bereitstellung von System Calls 32 | 33 | ## Welche Aufgabe erfüllt eine MMU? 34 | Die Memory Management Unit (MMU) macht das Mapping von virtuellen zu physikalischen Adressen (und umgekehrt) und bietet Speicherschutzverwaltung. 35 | 36 | ## Worin unterscheiden sich Busy-Waiting und Interrupt? 37 | Bei Busy-Waiting ist die CPU blockiert, bei einem Interrupt nicht. 38 | 39 | ## Was versteht man unter einem BIOS? 40 | Programm auf niedriger Stufe zum starten des BS 41 | 42 | ## Wozu dienen Systemaufrufe? 43 | Ausführen einer Betriebsystemfunktionalität 44 | 45 | ## Was ist eine Shell? 46 | Ein Kommandointerpreter 47 | 48 | -------------------------------------------------------------------------------- /cna/2-Betriebssysteme-2.md: -------------------------------------------------------------------------------- 1 | ## Was ist ein Prozess? 2 | Abstraktion eines laufenden Programmes 3 | 4 | ## Worauf muss man bei Mehrprozess-Betriebssystemen besonders achten? 5 | Auf die kritischen Bereiche, und dass jeder irgendwann seine Aufgabe erledigen kann 6 | 7 | ## In welchen Zuständen kann ein Prozess sein? 8 | * rechnend (running): in Ausführung auf der CPU 9 | * rechenbereit (ready): temporär suspendiert 10 | * blockiert (blocked): wartend auf ein externes Ereignis 11 | 12 | ## Was ist das Ziel der IPC? 13 | Interprocess Communication (IPC), strukturierter und konfliktfreier Ablauf von Prozessen 14 | 15 | ## Was ist eine Semaphore? 16 | Integer-Variable, auf die über 2 spezielle unteilbare (atomare) Operationen (Up und Down) zugegriffen wird. (Nicht unterbrechbar) 17 | 18 | ## Wie funktionieren die Up/Down-Operationen? 19 | * Down/P(s) 20 | * wenn Semaphore = 0, sleep 21 | * wenn Semaphore > 0, dekrement 22 | * Up/V(s) 23 | * Semaphore erhöhen 24 | * einen schlafenden Prozess aufwecken 25 | 26 | ## Was ist ein Mutex? 27 | Variable, die die beiden Zustände unlocked oder locked haben kann und mit der man wechselseitigen Ausschluss beim Zugriff auf eine gemeinsame Ressource realisieren kann. 28 | 29 | ## Welche grundsätzlich verschiedenen Scheduling-Methoden gibt es? 30 | * Nonpreemptive, solange bis er blockiert oder die CPU freigibt 31 | * Preemptive, automische suspendierung nach einer gewissen Zeit 32 | 33 | ## Was sind bekannte Scheduling-Algorithmen? 34 | * Round Robin (der Reihe nach) 35 | * FCFS (first come first serve) 36 | * SJF (shortest job first) 37 | * EDD (early due date) 38 | 39 | -------------------------------------------------------------------------------- /cna/2-Betriebssysteme-3.md: -------------------------------------------------------------------------------- 1 | ## Was ist die Aufgabe der Paging-Table? 2 | Mapping von virtuellen zu physikalischen Adressen (und umgekehrt) 3 | 4 | ## Was versteht man unter Speichermanagement? 5 | Die Verwaltung des Arbeitsspeichers (Strukturierung, virtuellen Speicher verwalten, Paging, Swapping) 6 | 7 | ## Nennen Sie drei Anforderungen an Dateisysteme. 8 | Presistent, paralleler Zugriff, Zugriffsrechte, Verwalten grosser Datenmengen 9 | 10 | ## Was ist der MBR? 11 | Im Master Boot Record (Sektor 0) der Festplatte befindet sich Code, der vom BIOS angestossen wird und der auf eine bestimmte Partition zugreift. 12 | 13 | ## Wo wird die Partitionstabelle gesperichert? 14 | Direkt nach dem MBR auf dem Sektor 0 der Festplatte 15 | 16 | ## Was ist ein i-Node? 17 | In Unix, Verwaltungsinformation des Dateisystem 18 | 19 | ## Was bedeuten Protection-Codes? 20 | Zugriffsrechte einer Datei (chmod 777) 21 | 22 | ## Was ist eine Pipe? 23 | Pseudofile, für Kommunikation zwischen Prozesse (Zwischenpuffer für Daten) 24 | 25 | ## Wie arbeiten die Systemkomponenten beim einem Client-Server System zusammen? 26 | Client schickt Anforderung, Server sendet Antwort zurück 27 | 28 | ## Was versteht man unter RPC? 29 | Remote Procedure Call (Starten eines Prozess auf einem anderen Rechner) 30 | 31 | ## Wofür steht der Name CORBA? 32 | Common Object Request Broker Architecture 33 | 34 | ## Was ist eine IDL? 35 | Interface Definition Language 36 | 37 | ## Wie heissen die Stufen einer Drei-Stufen- Architektur? 38 | Benutzeroberfläche, Anwendungsschicht, Datenspeicher 39 | 40 | -------------------------------------------------------------------------------- /cna/3-Netzwerke-05.md: -------------------------------------------------------------------------------- 1 | ## Was ist das Ziel von Internetworking? 2 | * Benutzer in verschiedenen Netzen können miteinander kommunizieren 3 | * Datenaustausch über Netzgrenzen hinweg 4 | * Optimale Architektur in Teilnetzwerken verwenden 5 | 6 | ## Womit werden Netzwerke auf verschiedenen Schichten miteinander verbunden? 7 | * Anwendungsschicht: Applikations-Gateways 8 | * Transportschicht: Transport-Gateways 9 | * Vermittlungsschicht: Router 10 | * Sicherungsschicht 11 | * Bridge: verbindet Netzwerke; weiss, welche MAC-Adresse zu welcher Seite gehören 12 | * transparente Bridge: verbindet zwei lokale Netzwerke mit gleichem Layer-2-Protokoll 13 | * übersetzende Bridge: verbindet zwei lokale Netzwerke mit unterschiedlichem Layer-2-Protokoll 14 | * Remote-Bridge (Tunnel): schliesst weit entfernte LANs über ein WAN zusammen 15 | * Switch: "intelligentes" Hub, schickt Pakete nur an Zielhost weiter 16 | * Bitübertragungsschicht 17 | * Repeater: Regeneriert das Signal auf der Leitung 18 | * Hub: Sternförmige Verkabelung der Busteilnehmer (simuliert gemeinsames Ethernetkabel) 19 | * Alle Schichten 20 | * Gateway 21 | 22 | ## Wie werden die verschiedenen Teilnetze des Internets zusammengeschaltet? 23 | durch verschiedenste Komponenten und Protokolle 24 | 25 | ## Was enhält der IPv4 Header? 26 | Verison, Type of service, Identification, TTL, Protocol Type, checksum, source, destination 27 | 28 | ## Was passiert mit grossen IP-Paketen? 29 | sie werden in kleinere Pakete aufgeteilt und beim Empfängwe wieder zusammengesetzt 30 | 31 | ## Welches sind die privaten IPv4 Bereiche? 32 | * 192.168.x.x 33 | * 10.x.x.x 34 | * 172.16.x.x–172.31.x.x 35 | 36 | ## Was ist ein Internet-Steuerprotokoll? 37 | Ein Protokoll, das parallel zu IP auf der Vermittlungsschicht angesiedelt ist. Beispiele: 38 | 39 | * ICMP: Internet Control Messag Protocol (für Roter, ping) 40 | * ARP: Address Resolution Protocol (Auflösung von MAC- zu IP-Adresse) 41 | * DHCP: Dynamic Host Configuratoin Protocol (Vergabe dynamischer IP-Adressen) 42 | 43 | -------------------------------------------------------------------------------- /cna/3-Netzwerke-08.md: -------------------------------------------------------------------------------- 1 | ## IP-Sec 2 | * Header + Data 3 | * Transportmode: Nur Daten verschlüsseln 4 | * Tunnelmodel: IPSec-Header + (Daten und Header verschlüsseln) 5 | 6 | ## Nennen Sie einige Bedrohungen der Sicherheit. 7 | * Datenverlust 8 | * Datenschutz 9 | * Datendiebstahl 10 | * Daten manipulation (Sabotage) 11 | 12 | ## Was ist DoS? 13 | Denial of Service (DoS): Angriff auf einen Host (Server) mit dem Ziel, einen oder mehrere seiner Dienste arbeitsunfähig zu machen 14 | 15 | ## Was ist MITM? 16 | Man-in-the-Middle-Attacke: Angreifer steht zwischen den beiden Kommunikationspartner. Der Angreifer hat komplette Kontrolle über den Datenverkehr zwischen zwei oder 17 | mehreren Netzwerkteilnehmern und kann die Informationen nach Belieben 18 | einsehen und sogar manipulieren. 19 | 20 | ## Nennen Sie einige Authentifizierungsverfahren. 21 | RADIUS, Kerbaros 22 | 23 | ## Nenn Sie 3 Verschlüsselungsprotokolle. 24 | HTTPS, SFTP, SSL, SSH, IPSec 25 | 26 | ## Was ist der Vorteil eines VPN? 27 | Unternets Netzwerk übers Internet mit Firewall, sicher und trozdem geschlosssen 28 | 29 | ## Nennen Sie einen prinzipiellen Nachteil der symmetrischen Verschlüsselung? 30 | Beide brauchen den selben Schlüssel 31 | 32 | ## Wie heissen bekannte symmetrische Verschlüsselungsverfahren? 33 | * Data Encryption Standard (DES) 34 | * Triple DES (3DES) 35 | * AES Advanced Encryption Standard 36 | 37 | ## Was ist der Vorteil der asymmetrischen Verschlüsselung? 38 | Private-Key muss niemals weitergegeben werden 39 | 40 | ## Welche Anforderungen erfüllt eine digitale Signatur? 41 | * Empfänger kann Sender identifizieren 42 | * Sender kann nicht leugnen 43 | * Empfänger kann nichts generieren 44 | 45 | ## Was ist ein Hash? 46 | Abgeleiteter Wert => Prüfsumme 47 | 48 | ## Wie heissen bekannte Hash-Algorithemn? 49 | * MD5 (Message Digest No. 5): 128 Bit 50 | * SHA-1 (Secure Hash Algorithm): 160 Bit 51 | 52 | ## Was ist eine Security-Policy? 53 | * Regelwerk welches den Umgang mit sicherheitsrelevanten Systemen beschreibt 54 | * zur Verfügung gestellte Dienste, deren Nutzer und Absicherungsmassnahmen 55 | * definiert sentsitive Bereiche und den Umgang 56 | * legt Verantwortungen fest 57 | 58 | ## Welche Informationen benutzt eine Firewall für ihre Entscheidungen? 59 | * IP (Source & Destunation) 60 | * Protokoll 61 | * Port 62 | 63 | -------------------------------------------------------------------------------- /cna/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /cna/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung CNA 3 | subtitle: "Computer & Network Architecture" 4 | modul: I.BA_CNA.H1601 5 | --- 6 | -------------------------------------------------------------------------------- /dawa/01B-Umgang-mit-SQL-Server.md: -------------------------------------------------------------------------------- 1 | # Umgang mit dem MS-SQL-Server 2 | 3 | ## Wie kann man sich alle Datenbanken anzeigen lassen? 4 | ``` 5 | SELECT name, database_id, create_date FROM sys.databases; 6 | ``` 7 | 8 | ## Wie kann man sich alle Schematas anzeigen lassen? 9 | ``` 10 | SELECT * FROM sys.schemas; 11 | ``` 12 | 13 | ## Wie können alle Objekte mit dazugehörenden Schema angezeigt werden? 14 | ``` 15 | SELECT name, OBJECT_NAME(object_id) AS [Object Name], 16 | SCHEMA_NAME(schema_id) AS [Schema Name], object_id FROM sys.objects 17 | ``` 18 | -------------------------------------------------------------------------------- /dawa/10-MDX.md: -------------------------------------------------------------------------------- 1 | # MDX 2 | 3 | ## Was bedeutet die Abkürzung MDX? 4 | * Multi Dimensional Expressions 5 | * wurde von Microsoft entwickelt 6 | * etablierte sich als De-facto Standard 7 | * ist eine auf SQL basierte Sprache 8 | * erlaubt Abfragen auf multidimensionale Datenbanken ausführen 9 | * die Sprache ist sehr komplex und mächtig 10 | 11 | ## Was bedeutet die Abkürzung DAX? 12 | * Data Analysis Expressions 13 | * Alternative zu MDX 14 | 15 | ## Wie ist ein MDX Select-Query aufgebaut? 16 | ``` 17 | SELECT [measures].[menge} ON 0, 18 | [mitarbeiter].[mitarbeiter].members ON 1, 19 | [Produkt].[Artikel] ON 2 FROM DW1fach 20 | ``` 21 | 22 | ## Was bedeuten die verschiedenen Klammern in MDX? 23 | * Geschweifte Klammern {} dienen dazu, Sets als solche zu kennzeichnen 24 | * in runden Klammern () werden Tupel für die WHERE-Klausesl eingeschlossen 25 | * in eckigen Klammern [] werden die Namen von Dimensions, Levels, etc. eingesclossen 26 | 27 | ## Was ist der Unterschied zwischen MEMBERS und CHILDREN? 28 | * Members - Menge aller Tupel dieser Tabelle 29 | * Children - Menge aller untergeordneten Tupel eines angegebene Elements 30 | 31 | -------------------------------------------------------------------------------- /dawa/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /dawa/images/06A-Soudex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/dawa/images/06A-Soudex.png -------------------------------------------------------------------------------- /dawa/images/06B-Koelner-Phonetik.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/dawa/images/06B-Koelner-Phonetik.png -------------------------------------------------------------------------------- /dawa/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung DAWA 3 | subtitle: Data Warehousing 4 | modul: I.BA_DAWA.F1801 5 | --- 6 | -------------------------------------------------------------------------------- /dbs/01B_DM.md: -------------------------------------------------------------------------------- 1 | # Datenmanagement 2 | 3 | ## Was sind die vier Eckpfeiler des Datenmanagements? 4 | * Datenarchitektur 5 | * Formulieren und Pflegen der unternehmensweiten Datenarchitektur 6 | * Festlegeung von Datenschutzkonzepte 7 | * Datenadministration 8 | * Verwalten von Daten und Methoden 9 | * beachten von Standardisierungsrichtlinien und internationalen Normen 10 | * Beraten von Entwickler und Endbenutzer 11 | * Datentechnik 12 | * Installieren, reorganisieren und sicherstellen von Datenbeständen 13 | * Festlegen des Verteilungskonzeptes 14 | * Katastrophenvorsorge 15 | * Datennutzung 16 | * Datenanalyse und Interpretation 17 | * Wissensgenerierung 18 | * Erstellen von Prognosen 19 | * Mustererkennung 20 | 21 | ## Was sind die 10 Aufgabe des Datenmanagements? 22 | * Data Governance: 23 | * Planung, Überwachung, Kontrolle der Datenverwaltung und -nutzung 24 | * Data Architecture Management: 25 | * Datenmodellierung als integratler Teil der Unternehmensarchitektur 26 | * Data Development: 27 | * Analyse, Design, Programmierung, Testing, Deployment und Wartung 28 | * Database Operations Management: 29 | * strukturierte, physische Datenressourcen 30 | * Data Security Management: 31 | * Privatsphäre, Vertraulichkeit, Zugriffsschutz 32 | * Reference & Master Data Management: 33 | * Steuerung von (Original-) Versionen und Replikaten 34 | * Data Warehousing & Business Intelligence Management: 35 | * Zugang zu Daten für Entscheidungsunterstützung 36 | * Document & Content Management: 37 | * Speichern, schützen, indexieren, zur Verfügungstellen von unstrukturierten Daten 38 | * Meta Data Management: 39 | * Integration, Steuerung, zur Verfügungstellung von Datenbeschreibungen 40 | * Data Quality Management: 41 | * Definieren, Überwachen und Verbessern der Datenqualität 42 | 43 | ## Welche Tätigkeiten kommen im Big Data Lifecycle Management Model vor? 44 | * Sammeln / Erheben 45 | * Filtern / Klassifizieren 46 | * Auswerten / Modellieren / Vorhersagen 47 | * Visualisieren / Austauschen 48 | 49 | -------------------------------------------------------------------------------- /dbs/02B_RS.md: -------------------------------------------------------------------------------- 1 | # Relationale Schemas 2 | 3 | ## Was sind die Anforderungen an eine Tabelle? 4 | * eindeutiger Tabellenname 5 | * Merkmalsname (eindeutig innerhalb der Tabelle) 6 | * Keine Spaltenordnung (Anzahl und Ordnung ist bedeutungslos) 7 | * Keine Zeilenordnung (Anzahl und Ordnung ist bedeutungslos) 8 | * Identifikationsschlüssel (Jedes Tupel ist eindeutig identifizierbar) 9 | 10 | ## Was sind die zwei wichtige Schlüsseleigenschaften? 11 | * Eindeutigkeit (identifiziert eindeutig einen Datensatz) 12 | * Minimalität (Kein Merkmal der Kombination kann gestrichen werden) 13 | 14 | ## Welche 3 Arten von Anomalien gibt es? 15 | * Einfügeanomalie: 16 | * Einfügen von Daten ist nicht möglich 17 | * Löschanomalie: 18 | * ungewolltes Löschen von Daten 19 | * Änderungsanomalie: 20 | * Mehrfache Änderungen notwendig bei Änderung nur eines Objekts 21 | 22 | ## Was sind die Schritte zur 3NF? 23 | * Unnormalisiert 24 | * gilt als unnormalisiert, wenn sie Aufzählungen oder Gruppen enthält 25 | * Erste Normalform (1NF) 26 | * die Wertebereiche der Merkmale müssen atomar sind 27 | * es sind nur einfache Werte und keine Aufzählunegn erlaubt 28 | * Zweite Normalform (2NF) 29 | * eine Tabelle ist in 2NF, falls die Tabelle 1NF ist 30 | * und jedes Nichtschlüsselmerkmal voll abhängig vom Schlüssel ist 31 | * Dritte Normalform (3NF) 32 | * ist in 3NF, wenn sie in 2NF ist und 33 | * kein Nichtschlüsselmerkmal von irgendeinem Schlüssel abhängig ist 34 | 35 | ## Was sind Eigenschaften von Primärschlüssel und Fremdschlüssel? 36 | * ist ein Merkmal, welches einen Datensatz eindeutig identifiziert 37 | * kann aus mehreren Attributen zusammengesetzt sein 38 | * es kann mehrere Schlüssel für eine Tabelle geben 39 | * einer der Kandidatenschlüssel wird als Primärschlüssel definiert 40 | * auch bekannt als Primary Key (PK) 41 | * eine Tabelle kann Zeilen in einer anderen Tabelle referenzieren 42 | * ein solches referenzierendes Merkmal heisst Fremdschlüssel 43 | * auch bekannt als Foreign Key (FK) 44 | -------------------------------------------------------------------------------- /dbs/05A_S3.md: -------------------------------------------------------------------------------- 1 | # SQL Spezialisierung 2 | 3 | ## Wie können daten aus dem Information Schema der datenbank abgefragt werdne? 4 | ``` 5 | SELECT * FROM information_schema.columns WHERE column_name LIKE '%nr'; 6 | ``` 7 | 8 | ## Wie lässt sich der `EXISTS` Operator anwenden? 9 | ``` 10 | SELECT p.name FROM professoren p WHERE NOT EXISTS ( 11 | SELECT * FROM vorlesungen AS v WHERE v.gelesenvon = p.persnr); 12 | ``` 13 | 14 | ## Wie wird ein switch-case in SQL umgesetzt? 15 | ``` 16 | SELECT matrnr, (CASE 17 | WHEN note < 1.5 THEN 'sehr gut' 18 | WHEN note < 2.5 THEN 'gut' 19 | WHEN note < 3.5 THEN 'befriedigend' 20 | WHEN note < 4.0 THEN 'ausreichend' 21 | ELSE 'nicht bestanden' 22 | END) FROM pruefen; 23 | ``` 24 | 25 | ## Welche Window Functions bietet PostgreSQL? 26 | * `row_number()` 27 | * `rank()` 28 | * `dense_rank()` 29 | * `percent_rank()` 30 | * `cume_dist()` 31 | * `ntile(num_buckets)` 32 | * `lag(value, offset, default)` 33 | * `lead(value, offset, default)` 34 | * `first_value(value)` 35 | * `last_value(value)` 36 | * `nth_value(value, nth)` 37 | 38 | ## Wie werden Window functions angewendet? 39 | ``` 40 | SELECT name, titel, sws, 41 | SUM(sws) OVER() w1, 42 | SUM(sws) OVER(ORDER BY name, titel) w2, 43 | SUM(sws) OVER(PARTITION BY name) w3, 44 | LEAD(titel, 1, '') OVER(ORDER BY name, titel) 45 | FROM professoren JOIN vorlesungen ON gelesenvon = persnr 46 | ORDER BY name, titel; 47 | ``` 48 | 49 | ## Wie kann mit PostgreSQL eine rekursive Funktion realisiert werden? 50 | ``` 51 | WITH RECURSIVE pfad(von, nach, laenge, folge) AS ( 52 | SELECT source, target, 1, source || ','|| target FROM edge 53 | UNION ALL 54 | SELECT p.von, e.target, p.laenge + 1, p.folge ||','|| e.target 55 | FROM edge e JOIN pfad p ON p.nach = e.source 56 | ) 57 | 58 | SELECT * FROM pfad WHERE von = '1' AND nach = '11'; 59 | ``` 60 | 61 | -------------------------------------------------------------------------------- /dbs/06A_DI.md: -------------------------------------------------------------------------------- 1 | # Datenintegrität 2 | 3 | ## Was sind Integritätsbedingungen? 4 | * Daten sind integer, wenn sie inhaltlich korrekt sind 5 | * Um die Integrität zu prüfen, gibt es Bedingungen 6 | 7 | ## Welche Arten von Integritätsbedingungen gibt es? 8 | * Semantische Integritätsbedingungen 9 | * Regeln, die definieren, wann die Daten korrekt sind 10 | * Syntaktische Integritätsbedingungen 11 | * Statische Integritätsbedingungen 12 | * müssen von jedem Zustand der DB erfüllt sein 13 | * `not null, unique, check, primary key, references` 14 | * Dynamische Integritätsbedingungen 15 | * müssen von Zustandsänderungen erfüllt werden 16 | * `cascade, set null, restrict, create trigger` 17 | 18 | ## Wie können Schlüssel bei einer Tabelle nachträglich ergänzt werden? 19 | ``` 20 | alter table verantwortung add foreign key (mnr) references mitarbeiter (mnr); 21 | alter table mitarbeiter add primary key (mnr); 22 | ``` 23 | 24 | ## Welche 3 Möglichkeiten gibt es bei Änderung des Primärschlüssels? 25 | 1. Verhindern (`on update restrict` / `on delete restrict`) 26 | 2. Kaskadieren (`on update cascade` / `on delete cascade`) 27 | 3. Nullsetzen (`on update set null` / `on delete set null`) 28 | 29 | ## Wie kann eine Integritätsbedingung statisch mit einem Check überprüft werden? 30 | ``` 31 | CREATE TABLE studenten (... , semester INTEGER CHECK semester BETWEEN 1 AND 13); 32 | CREATE TABLE professoren (... , rang CHARACTER(2) CHECK rang IN ('c3','c4'); 33 | ``` 34 | 35 | ## Wie wird mit PostgreSQL ein Trigger erstellt? 36 | ``` 37 | CREATE TRIGGER keinekuerzung 38 | BEFORE UPDATE ON mitarbeiter 39 | FOR EACH RWO BEGIN 40 | IF NEW.lohn < OLD.lohn 41 | THEN SET NEW.lohn = OLD.lohn 42 | END IF; 43 | END 44 | ``` 45 | 46 | -------------------------------------------------------------------------------- /dbs/06B_OM.md: -------------------------------------------------------------------------------- 1 | # Objekt-relationales Mapping 2 | 3 | ## Was bedeutet NF^2? 4 | * Not first normal form 5 | 6 | ## Was versteht man unter OID? 7 | * Objekt-Identitäten 8 | 9 | ## Welche zwei Realisierungsformen von OID's gibt es? 10 | * Physische OIDs 11 | * Enthalten den Speicherort des Objekts 12 | * entsprechen den den TIDs (Tupel IDentifikatoren) 13 | * Logische OIDs 14 | * Unabhängig vom Speicherort des Objekte 15 | * Indirektion über Mapping-Struktur 16 | 17 | ## Was sind die Stufen zur Objektorientierten Datenbank? 18 | * Objektorientierte Datenbank 19 | * Datenbanken, welche direkt Objekte abspeichern können 20 | * Objektrelationale Datenbanken 21 | * relationale Datenbank erweitert 22 | * objektorientierte Features (Vererbung) 23 | * Objekt-relationales Mapping 24 | * Daten werden am Schluss in einer relationel Datenbank abgebildet 25 | * Programmiersprache bietet einen objektorientierten Wrapper 26 | 27 | ## Welche zwei Typen gibt es von ORMs? 28 | * Top-Down 29 | * Defition der Klassen 30 | * Automatische Generierung der Tabellen 31 | * Bottom-Up 32 | * Definition der Tabelle 33 | * Automatische Generierung der Klasse 34 | 35 | ## Was ist der Unterschied zwischen ORM und OODB? 36 | * OODB 37 | * Objekte direkt in der DB, kein Mapper 38 | * ORM 39 | * Verwendung herkömlicher Technologie 40 | 41 | ## Was bedeutet RDBMS? 42 | * Relation Databbase Management System 43 | 44 | ## Was sind die Vorteile von objekt-orientierten Datenbanken? 45 | * Methoden 46 | * Referenzierung mit Pointer 47 | * many-to-many-Relationship 48 | * Vererbung 49 | * OID 50 | * Strukturierte Objekt 51 | 52 | -------------------------------------------------------------------------------- /dbs/07A_DS.md: -------------------------------------------------------------------------------- 1 | # Datensicherheit 2 | 3 | ## Welche 3 Kategorien von Schutzmechanismen gibt es? 4 | * Identifikation und Authentisierung 5 | * Autorisierung und Zugriffskontrolle 6 | * Auditing 7 | 8 | ## Wie wird eine Rolle mit SQL erstellt und wieder gelöscht? 9 | ``` 10 | -- Rolle erstellen 11 | CREATE ROLE myuser LOGIN ENCRYPTED PASSWORD md5('foobar'); 12 | 13 | -- Rolle löschen 14 | DROP ROLE myuser; 15 | ``` 16 | 17 | ## Wie wird eine Gruppe mit SQL erstellt? 18 | ``` 19 | CREATE ROLE read NOINHERIT; -- Gruppe 20 | ``` 21 | 22 | ## Wie wird die Role-based Access Control unterteilt? 23 | * Data Object Types 24 | * Arten von Datenobjekten 25 | * Beispiele: HW-Instanz, Datenbank, Schema, Tabelle, View, Prozedur 26 | * Privileges 27 | * Recht auf eine bestimmte Operation 28 | * `SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, ...` 29 | * Roles 30 | * Rollen mit Passwörtern erlauben authentifizierte und authorisierte Änderungen auf den DB-Server. 31 | * Users 32 | * ein Postgres-User ist eine Rolle, welche mit dem Server verbinden darf 33 | * bekannt als CONNECT-Privileg 34 | * Groups 35 | * Rolle, deren Privilegien von anderen Rollen geerbt werden kann 36 | * typischerweise ohne LOGIN 37 | 38 | ## Wie werden mit SQL Rechte an Rollen und Gruppen vergeben? 39 | ``` 40 | GRANT read TO joe; 41 | GRANT admin TO read; 42 | GRANT SELECT on s.t to read; 43 | GRANT ALL ON ALL TABLES IN SCHEMA s TO admin; 44 | ``` 45 | 46 | ## Wie können Berechtigungen wiederrufen werden? 47 | ``` 48 | REVOKE UPDATE (matrnr, vorlnr, persnr) 49 | ON pruefen FROM eickler CASCADE; 50 | ``` 51 | 52 | ## Wie kann die Granularität der Zugriffskontrolle festgelegt werden? 53 | * mit Grant kann der Schutz pro User nur bis auf Ebene Tabelle oder View umgesetzt werden 54 | * mit einer View kann die Zugriffskontrolle bis auf einzelne Zeilen und Spalten gezielt gesetzt werde 55 | 56 | ## Wie funktioniert die implizite Autorisierung von Objekten? 57 | * Schema 58 | * Relation 59 | * Tupel 60 | * Attribut 61 | 62 | ## Was sind externe Angriffs-Vektoren? 63 | * Trust security 64 | * Passwords / authentication theft 65 | * Network snooping 66 | * Network pass-through spoofing 67 | * Server / backup theft 68 | * Administrator access 69 | 70 | -------------------------------------------------------------------------------- /dbs/07B_TR.md: -------------------------------------------------------------------------------- 1 | # Transaktionsmanagement 2 | 3 | ## Was sind die Ziele des Transaktionsmanagements nach Kemper? 4 | * Recovery 5 | * Konsistenz bei Fehlern oder Systemabstürzen 6 | * Synchronisierung 7 | * Konsistenz im Mehrbenutzerbetrieb 8 | 9 | ## Was ist das ACID-Prinzip? 10 | * Definiert Eigenschaften von Transaktionen in Datenbank-Systemen 11 | 12 | ## Für was stehen die Buchstaben in ACID? 13 | * Atomar (Atomarität / Unteilbarkeit) 14 | * Folge von Aktionen gilt als Transaktion 15 | * wird ganz oder gar nicht durchgeführt 16 | * Genau zwei mögliche Ergebnisse: COMMIT oder ROLLBACK 17 | * Consistent (Konsistenz) 18 | * Korrektheit der Daten in der Datenbank 19 | * Einhaltung der Integritätsbedingungen 20 | * Konsistenz vor Beginn und nach Abschluss der Transaktion 21 | * Zwischenstufen dürfen inkonsistent sein 22 | * Isoliert 23 | * Multi-User-Betrieb ohne Seiteneffekte 24 | * Gleichzeitiglaufende 25 | * Transaktionen sind isoliert, wenn sie sich nicht gegenseitig beeinflussen 26 | * Transaktionen resultiert gleich wie wenn sie seriell ausgeführt würden 27 | * Dauerhaft 28 | * Stabiles Speichern auch bei Systemfehlern 29 | * Erhaltung der Systemzustände nach Abschluss der Transaktion 30 | 31 | ## Welche Phasen beinhaltet das Two PhaseLocking Protocol nach Kemper? 32 | * Wachstums-Phase 33 | * Garantierte Serialisierbarkeit 34 | * Schrumpfungs-Phase 35 | 36 | ## Was ist ein optimistisches Synchronisationsverfahren? 37 | * Two Phase Locking Protocol garantiert die Serialisierbarkeit 38 | * ist aber ein pessismistisches Verfahren 39 | * optimistische Synchronisierung. 40 | * die Annahme ist, dass Konflikte selten auftreten 41 | * dewegen werden keine Sperren eingesetzt 42 | * eine Transaktion wird grundsätzlich ausgeführt 43 | * vor dem Commit wird geprüft, ob Konflikte vorhanden sind 44 | 45 | -------------------------------------------------------------------------------- /dbs/08B_AO.md: -------------------------------------------------------------------------------- 1 | # Anfrageoptimierung 2 | 3 | ## Was sind die Konsequenze aus den I/O Zugriffen bei einer Datenbank? 4 | * Pages auf der Disk sind sehr langsam zu lesen 5 | * der Cache im Memory ist schnell zu lesen, hat aber nur wenig Platz 6 | * die grösse des Caches ist der Flaschenhals für die Abfragegeschwindigkeit 7 | * möglichst viele Daten frühzeitige rausfiltern 8 | 9 | ## Was sind die Grunsätze eines Abfragebaumes? 10 | * Mehrere Selektionen auf die selbe Tabelle vereinigen 11 | * Zwischenresultate möglichst klein halten (Selektion, Projektion) 12 | * Verbundsoperatoren im Wurzelknoten des Anfragebaums verwenden 13 | 14 | ## Welche zwei Join-Strategien gibt es? 15 | * Nested Join 16 | * Quadratischer Aufwand 17 | * Alle Tupel aus R1 werden mit allen Tupeln aus R2 auf Join Kompatibilität geprüft 18 | * Sort-Merge Join 19 | * Linearer Aufwand nach Sortierung 20 | * Tupel werden in Sortierreihenfolge des Joinattributs X durchlaufen 21 | 22 | ## Was ist ein B-Baum? 23 | * eine Baumstruktur ermöglicht ein schnelles Finden von Datensätzen 24 | * B-Bäume der Breite $n$ sind ausbalancierte Bäume 25 | * d.h. alle Pfade von Wurzel zu Blatt sind gleich lang 26 | * und jeder Knoten hat mindestens $n$, aber höchstens $2n$ Teilbäume 27 | 28 | ## Was muss bei Datenbank-Indexe beachtet werden? 29 | * Indexe sind optimiert für den Lesezugriff 30 | * beim Schreiben von Daten muss der Index allerdings aktualisiert werden 31 | * was die Ladezeiten erhöht 32 | * beim Schreiben von grossen Datenmengen sollte deswegen so vorgegangen werden: 33 | * Indexe löschen 34 | * Daten aktualisieren 35 | * Indexe neu erstellen 36 | * Datenmengen in die Datenbank (Bulk Lodas) die Indexe vorher zu 37 | 38 | ## Wie lässt sich eine SQL Abfrage am einfachsten optimieren? 39 | * mit dem betroffenen Zeilen, welche im Execution Plan zu sehen sind 40 | * vor dem SQL Statement das Schlüsselwort `EXPLAIN` anfügen 41 | 42 | -------------------------------------------------------------------------------- /dbs/10A_BD.md: -------------------------------------------------------------------------------- 1 | # Big Data 2 | 3 | ## Welche 3 Definitionen der V's bei Big Data gibt es? 4 | * Gartner Group: 3V 5 | * Variety 6 | * Volume 7 | * Velocity 8 | * IBM: 4V 9 | * _Gartner Group_ + Veracity 10 | * Demchenko 2013: 5V 11 | * _IBM_ + Value 12 | * Demchenko 2014: 6V 13 | * _Demchenko 2013_ + Variability 14 | 15 | ## Aus welchen vier Schritten besteht der Daten-Lebenszyklus? 16 | * Collection: 17 | * This stage gathers and stores data in its original form (i.e., raw data.) 18 | * Preparation: 19 | * This stage involves the collection of processes that convert raw data into cleansed, organized information 20 | * Analysis: 21 | * This stage involves the techniques that produce synthesized knowledge from organized information 22 | * Action: 23 | * This stage involves processes that use the synthesized knowledge to generate value for the enterprise 24 | 25 | -------------------------------------------------------------------------------- /dbs/11B_CD.md: -------------------------------------------------------------------------------- 1 | # Cloud Databases 2 | 3 | ## Was sind die Vor- und Nachteile von Cloud-Datenbanken? 4 | * Vorteile: 5 | * geringe Speicherkosten 6 | * weniger Wartungskosten 7 | * hohes Sicherheitlevel aufgrund des Anbieters 8 | * schnellere Inbetriebnahme 9 | * einfachere Skalierung 10 | * Updates werden automatisch eingespielt 11 | * Zugriff von überall 12 | * Nachteile: 13 | * monatliche Kosten 14 | * Kosten für Support 15 | * kein Einfluss was wo gespeichert wird 16 | * nicht genau auf den Anwendungszweck angepasst 17 | * Integrationen sind schwieriger 18 | * Internet-Verbindung ist zwingend nötig 19 | 20 | ## Was sind aktuell die drei grössten Anbieter von Cloud Datenbanken? 21 | * Microsoft Azure 22 | * Amazon AWS 23 | * Google Cloud 24 | 25 | -------------------------------------------------------------------------------- /dbs/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /dbs/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung DBS 3 | subtitle: Datenbanksysteme 4 | modul: I.BA_DBS.H1701 5 | --- 6 | -------------------------------------------------------------------------------- /dl4g/04-Information-Sets.md: -------------------------------------------------------------------------------- 1 | # Information Sets 2 | 3 | ## Was ist ein Information Set? 4 | * ist eine Menge von Knoten des gleichen Spielers 5 | * Spieler kennt vorherigen Zug nicht 6 | * alle Knoten müssen gleiche Optionen bieten 7 | * immer aus Sicht eines Spielers 8 | 9 | ## Was ist der Unterschied zwischen perfekter und nicht perfekter Information? 10 | * unterschiedliche Strategien werden gewählt 11 | * bei perfekter Information hat jeder Knoten exakt eine Option 12 | 13 | ## Was ist die Idee hinter Determinization? 14 | * unbekannte Karten zufällig auf die Gegner verteilen 15 | * danach anwenden der Regeln von vollständiger Information (beispielsweise mit MCTS) 16 | * ergibt dann mehrere mögliche Spielbäume 17 | * schlussendlich über alle Bäume die Option welche am meisten besucht wurde 18 | * manchmal werden Entscheidung getroffen, welche gar nie eintreten können 19 | * kann zu falschen Entscheidungen führen 20 | 21 | ## Was muss bei der Implementation von MCTS mit Information Sets beachtet werden? 22 | * Baum besteht aus Information Sets und nicht mehr aus Zuständen 23 | * Knoten entsprechen Information Sets aus Sicht des Wurzelspielers 24 | * Karten werden zufällig verteilt und ungültige Varianten werden ausgeblendet 25 | * Kanten entsprechen einer Aktion, welche in mindestens einem Zustand möglich ist 26 | * Danach funktioniert es wie ein Spiel mit perfekter Information 27 | 28 | ## Wie muss die UCB angepasst werden für Information Sets? 29 | * $N_p$ = wie oft wurde der Vorgänger Knoten gespielt und $i$ war verfügbar 30 | * dazu muss die Knotenliste ergänzt werden mit wie viel Mal jede Option verfügbar war 31 | 32 | -------------------------------------------------------------------------------- /dl4g/07-Neuronal-Networks.md: -------------------------------------------------------------------------------- 1 | # Neuronal Networks 2 | 3 | ## Was ist der Unterschied zwischen AI und Deep Learning? 4 | * Artifical Intelligent (regelbasiert / MCTS) 5 | * Machine learning (Training auf Daten mit festgelegten Features) 6 | * Deep learning (Lernen der Features aus den Daten) 7 | 8 | ## Was ist die Definition von Machie Learning? 9 | * A computer program is said to learn from experience E 10 | * with respect to some class of tasks T and performance measure P 11 | * if its performance at tasks in T, as measured by P, improves with experience E 12 | 13 | ## Was bedeuten diese Begriffe für das Beispiel Jassen? 14 | * __tasks (T)__ 15 | * Trumpf auswählen 16 | * Karte uswählen 17 | * Werte der Karten 18 | * Punkte im Spiel 19 | * __measure (P)__ 20 | * Anzahl Gewinne / Punkte 21 | * Vergleich mit Daten 22 | * __experience (E)__ 23 | * spielen 24 | * Daten lesen 25 | 26 | ## Welche zwei Task-Typen werden unterschieden? 27 | * __Regression:__ $f: \mathbb{R}^n \mapsto \mathbb{R}$ 28 | * __Classification:__ $f: \mathbb{R}^n \mapsto \{ 1, \dots k \}$ 29 | 30 | ## Aus welchen 3 Teilen besteht ein feed forward network? 31 | * Input Layer 32 | * Hidden Layer 33 | * Output Layer 34 | 35 | ## Was beinhaltet ein Knoten eines Netzwerk? 36 | * Inputs $(x_1, x_2, \dots)$ 37 | * Internen Parameter ($\Theta$) 38 | * Funktion die den Output berechnet basierend auf den Parameter 39 | 40 | ## Was ist eine Epoche? 41 | 1 Training des gesamten Datensets 42 | 43 | ## Welche Aktivierungsfunktionen gibt es? 44 | * Sigmoid für eine binäre Klassifizierung 45 | * relu für Nodes innerhalb des Netzwerk 46 | * Aktivierungsfunktion sollte nicht linear sein 47 | 48 | ## Was ist eine Kostenfunktion? 49 | * ist die Funktion welche durch das Lernen minimiert werden soll 50 | * häufig wird eine Likelihood-Funktion verwendet 51 | 52 | ## Wie sollten bei Multi-class Problemen beachtet werden? 53 | * 1-hot encoded Arrays für Labels 54 | * letzter Layer mit `softmax` Funktion (für Normierung) 55 | 56 | -------------------------------------------------------------------------------- /dl4g/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /dl4g/images/02-backward-induction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/dl4g/images/02-backward-induction.png -------------------------------------------------------------------------------- /dl4g/images/02-minimax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/dl4g/images/02-minimax.png -------------------------------------------------------------------------------- /dl4g/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung DL4G 3 | subtitle: Deep Learning for Games 4 | modul: I.BA_DL4G.H1801 5 | --- 6 | -------------------------------------------------------------------------------- /enapp/10A-Agile-Architektur.md: -------------------------------------------------------------------------------- 1 | # Agile Architektur 2 | 3 | ## Was sind die gewünschten Vorteile einer agilen Entwicklung? 4 | * kann schnell geändert werden 5 | * einfach zu verifizieren 6 | * schnelle Entwicklung 7 | * funktioniert immer 8 | 9 | ## Welche Fakoren haben Einfluss auf eine Entscheidung im agilen Modell? 10 | * Product-Backlog 11 | * Return of Investemen 12 | * Time-To-Market 13 | * Qualität 14 | * Risiken 15 | * Team 16 | 17 | ## Welche Personen haben Einfluss auf eine Entscheidung im agilen Modell? 18 | * Stakeholder 19 | * Prodct-Owner 20 | * Architect 21 | 22 | ## Was sind die Aufgabe eines Architect im agilen Modell? 23 | * Technische Leitung (Technologiekentnisse, technische Spikes) 24 | * Verständniss der Stakeholder (Big Picture, Unterstützung des PO) 25 | * Team-Coach (Koordination, Pair-Programming, Ausbildung, Support) 26 | 27 | -------------------------------------------------------------------------------- /enapp/11A-High-Availability.md: -------------------------------------------------------------------------------- 1 | # High Availability 2 | 3 | ## Für was braucht man High Availability? 4 | * Chatsystem 5 | * Kommunikation in einem CLuster 6 | * geteilter Zustand in Applikationsservern 7 | 8 | ## Was sind Aspekete welche bei High Availability beachtet werden müssen? 9 | * Netzwerkkommunikation 10 | * Erkennen von neuen Mitglieder 11 | * Fehlererkennung 12 | * Kompression 13 | * Verschlüsselung 14 | * Authentifizierung 15 | 16 | -------------------------------------------------------------------------------- /enapp/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /enapp/images/06A-jms-receive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/enapp/images/06A-jms-receive.png -------------------------------------------------------------------------------- /enapp/images/06A-jms-relationen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/enapp/images/06A-jms-relationen.png -------------------------------------------------------------------------------- /enapp/images/06A-jms-send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/enapp/images/06A-jms-send.png -------------------------------------------------------------------------------- /enapp/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung ENAPP 3 | subtitle: Enterprise Applications 4 | modul: I.BA_ENAPP_MM.H1801 5 | --- 6 | -------------------------------------------------------------------------------- /fkom/02-Protokolle.md: -------------------------------------------------------------------------------- 1 | # Protokolle 2 | 3 | ## Was ist der Zweck eines Protokolls? 4 | * Urkunde (in verschiedenene Fälle gesetzlich vorgeschrieben, hat ein Gewicht vor Gericht) 5 | * Beweismittel 6 | * Sitzungsunterlage (Grundlage für nächste Sitzung) 7 | * Information (für Abwesende oder Vorgesetzte) 8 | * Erinnerung 9 | * Dokumentation 10 | 11 | ## Was sollte ein Protokollant können? 12 | * Beiträge richtig strukturieren 13 | * leserlich und knapp schreiben 14 | * aufmerksam und konzentriert zuhören 15 | * wichtiges von unwichtigem unterscheiden 16 | * Zusammenhänge erkennen 17 | * präzise und treffend formulieren 18 | 19 | ## Welches sind die wichtigen Protokollarten gibt es? 20 | * Beschlussprotokoll / Ereignisprotokoll 21 | * kurz und bündig 22 | * informiert über das Wichtigste 23 | * Entscheidungen können nicht nachvollzogen werden 24 | * Verlaufsprotokoll 25 | * gibt Verlauf wieder 26 | * Entscheidungen können nachvollzogen werden 27 | * z.B. bei umstrittenen Diskussionen 28 | * Wortprotokoll 29 | * wortwörtliche Festhaltung für Verhandlungsverlauf 30 | 31 | ## Welche weiteren Protokollarten gibt es? 32 | * Wörtliches Protokoll 33 | * Verlaufsprotokoll 34 | * Aktennotiz 35 | * Erlebnisprotokoll 36 | * Multiple-Choice-Protokoll 37 | * Mindmap-Protokoll 38 | * Gedächnisprotokoll (Memo) 39 | 40 | ## Wie wird ein Protokoll aufgebaut? 41 | * Protokollkopf 42 | * Anlass, Ort, Datum, Zeit, Teilnehmende, Anwesende, Gäste, Leitung 43 | * Inhalt 44 | * Traktandenliste, Traktanden, Pendenzenliste, weitere Termine 45 | * Protokollschluss 46 | * Ort, Datum, Verfasser, Unterschrift, Verteiler, Beilage 47 | 48 | ## Was ist wichtig bei protokollieren? 49 | * direkte und indirekte Rede 50 | * grundsätzlich die Präsensform verwenden 51 | * möglichst klare und kurze Sätze 52 | 53 | -------------------------------------------------------------------------------- /fkom/03-Korrespondenz.md: -------------------------------------------------------------------------------- 1 | # Korrespondenz 2 | 3 | ## Was sind die Einsatzzwecke für Briefe? 4 | * Rechnung / Mahnungen 5 | * Kündigungen + Verträge (eingeschrieben) 6 | * Werbung 7 | * Gutscheine 8 | * Bestätigung / Authentifizierung 9 | * Bankauszahlungen 10 | * Offerten 11 | * Steuererklärung 12 | * Mängelrüge 13 | 14 | ## Was ist der Einsatzzweck für E-Mails? 15 | * Memos 16 | * Kundenkontakt 17 | * Protokolle 18 | * Dokumentenaustausch 19 | * Automatische Bestätigung 20 | * nicht dringliche Anfrage 21 | * Terminfindung 22 | * Newsletter 23 | * Werbung / Gutscheine 24 | 25 | ## Was sind die Merkmale eines Briefes? 26 | * Anschrift / Layout 27 | * Formeller 28 | * Physikalisch vorhanden 29 | * Beweismittel / Echtheit 30 | * Verzögerung 31 | * "Sicherer" 32 | * Kosten 33 | 34 | ## Was sind die Merkmale einer E-Mail? 35 | * Sofort zugestellt / jeder Zeit 36 | * formal abhängig von Inhalt / Empfänger 37 | * Layout frei 38 | * Absender durch E-Mail-Adresse bestimmt 39 | * Zweck Private/Geschäftlich 40 | * Sicherheit / Integrität / Verschlüsselung 41 | 42 | -------------------------------------------------------------------------------- /fkom/04_Anleitungen.md: -------------------------------------------------------------------------------- 1 | # Anleitungen 2 | 3 | # Was ist das Hauptproblem von Anleitungen? 4 | * Experten haben falsche Wahrnehmung der Laien 5 | * zuviel Fachwissen wird vorausgesetzt 6 | * folgt keiner typischen Situation 7 | * kein logisch/sequentieller Ablauf 8 | * keine oder zu wenig Illustrationen 9 | * Text korrespondiert nicht mit dem Text 10 | * nicht aussagekräftige Bilder 11 | * Übersetzungen werden vom Computer erstellt und nicht überprüft 12 | 13 | ## Was gilt allgemein als schlecht verständlich? 14 | * Text ohne Einleitung, Überleitungen 15 | * Unübliche Wörter, Fremdwörter, Fachbegriffe 16 | * Kompositas (kompakte Wörter, Wortkreationen) 17 | * Lange Attributketten 18 | * Viele Nomen statt Verben 19 | * lange und verschachtelte Sätze 20 | * Klammersätze, mit Bezugswort erst am Ende 21 | * Sätze, welche mit Nebensätze beginnen 22 | * Texte mit abstrakten Übungen 23 | 24 | ## Wie sind gute Empfehlungen bei einer Anleitung? 25 | * Handlungsanweisung verwenden (aktiv nicht passiv) 26 | * Schrittfolge kennzeichnen 27 | * In der richtigen Reihenfolge informieren 28 | * Freundlichkeit 29 | 30 | ## Was ist bei den Bilder zu beachten? 31 | * klar und von hoher Qualität 32 | * Ein Abbildung enthält nur eine Information 33 | * Texte und Bilder, welche zusammen gehörte müssen auch zusammen sein 34 | * Grafische Symbole anerkannte Normen 35 | * Eigene Zeichen oder Symbole erklären 36 | 37 | -------------------------------------------------------------------------------- /fkom/07-Verstaendlichkeit.md: -------------------------------------------------------------------------------- 1 | # Verständlichkeit 2 | 3 | ## Was sind die Merkmale der Verständlichkeit? 4 | * Einfachheit 5 | * Gliederung / Ordnung 6 | * Kürze Prägnanz 7 | * Anregende Zusätze 8 | 9 | ## Was heisst Einfachheit? 10 | * einfache Darstellung 11 | * kurze und einfache Sätze (nicht lange und verschachtelte Sätze) 12 | * geläufige Wörter 13 | * Fachwörter erklären 14 | * konkret (nicht abstrakt) 15 | * anschaulich 16 | 17 | ## Wie lässt sich die Ordnung unterteilen? 18 | * innere Ordnung 19 | * Sätze stehen in Beziehung untereinander 20 | * sinnvolle Reihenfolge der Informationen 21 | * äussere Ordnung 22 | * Aufbau des Textes 23 | * Gruppierung / Absätze 24 | 25 | ## Was heisst Gliederung / Ordnung? 26 | * gegliedert 27 | * folgerichtig 28 | * übersichtlich 29 | * gute Unterscheidung von wesentlichem und Unwesentlichem 30 | * roter Faden bleibt sichtbar 31 | 32 | ## Was heisst Kürze / Prägnanz? 33 | * kurz 34 | * knapp 35 | * gedrängt 36 | * aufs wesentliche beschränkt 37 | * auf Lehrziel konzentriert 38 | * jedes Wort ist notwendig 39 | 40 | ## Was heisst Anregende Zusätze? 41 | * anregend (nicht nüchtern) 42 | * interessant (nicht farblos) 43 | * abwechslungsreich (nicht gleichbleibend) 44 | * persönlich 45 | 46 | ## Was sind Anregende Zusätze? 47 | * Ausrufe 48 | * Wörtliche Rede 49 | * Rhetorische Fragen 50 | * Lebensnahe Beispiele 51 | * Direkte Ansprache des Lesers 52 | * Reizwörter 53 | * Witzige Formulierungen 54 | * Storytelling 55 | 56 | ## Wie ist ein optimal verständlicher Text aufgebaut? 57 | * sehr Einfach 58 | * sehr gute Gliederung 59 | * auf Kürze Prägnanz geachtet 60 | * einige anregende Zusätze 61 | 62 | ## Was muss bei der Beurteilung der Verständlichkeit eines Textes unterschieden werden? 63 | * Text für die Allgemeinheit 64 | * Text für eine besondere Gruppe 65 | 66 | -------------------------------------------------------------------------------- /fkom/08-Wissenschaftlich-Schreiben.md: -------------------------------------------------------------------------------- 1 | # Wissenschaftliche Arbeit schreiben 2 | 3 | ## Was ist ein Plagiat? 4 | * ist die Anmassung fremder geistiger Leistungen 5 | * Raub geistigen Eigentums / Gedankenraub 6 | 7 | ## Was gibt es für Plagiatsformen? 8 | * **Ghostwriter** 9 | * jemand anderes hat die Arbeit erstellt 10 | * **Vollplagiat** 11 | * fremdes Werk unter eigenem Namen einreichen 12 | * **Selbstplagiat** 13 | * dieselbe Arbeite mehrmals einreichen 14 | * **Übersetzungsplagiat** 15 | * fremdsprachige Texte übersetzten und ohne Quellen übernehmen 16 | * **Copy & Paste-Plagiate** 17 | * Textteile aus fremden Werken übernehmen ohne Quellenangabe 18 | * **Paraphrasieren** 19 | * Textteile aus fremden Werken übernehmen und leicht anpassen ohne Quellenangabe 20 | 21 | ## Wie vermeidet man Plagiate? 22 | * Zitate (dort wo es verwendet wird) 23 | * Literaturverzeichnis (am Ende der Arbeit) 24 | * Wörtliche Übernahmen (mit Anführungszeichen) 25 | * Sinngemässe Übernahme (müssen auch als Zitat gekennzeichnet werden, Fusszeile) 26 | 27 | -------------------------------------------------------------------------------- /fkom/09-Abstract.md: -------------------------------------------------------------------------------- 1 | # Abstract 2 | 3 | ## Was ist das Ziel eines Abstract? 4 | * Kondensierung der Informationen 5 | * Reduzierung auf das wichtigste 6 | 7 | ## Was sind die Vorstufen eines Abstracts? 8 | * Fazit 9 | * Teaser 10 | * Lead 11 | * Management Summary 12 | * Abstract 13 | 14 | ## Was ist der Unterschied zwischen einem Management Summary und einem Abstract? 15 | * Management Summary 16 | * Enthält Handlungsvorschlag 17 | * Abstract 18 | * neutrale Formulierungen 19 | 20 | ## Wie unterscheiden sich Lead und Teaser? 21 | * Lead (häufig bei Print-Medien) 22 | * Teaser (meistens bei Internet-Medien) 23 | 24 | ## Was enthält ein Abstract? 25 | * Deckblatt / Titelblatt 26 | * Verzeichnisse (Inhalt, Abbildungen, Tabellen) 27 | * Abstract 28 | * Einleitung 29 | * Hauptteil 30 | * Schluss 31 | * Verzeichnisse (Literatur und Quellen) 32 | * Anhang 33 | 34 | ## Wie lange ist ein Abstract meistens? 35 | ca. 100-150 Wörter 36 | 37 | ## Wieso schreibt man ein Abstract? 38 | * Gezielte Auswahl ermöglichen 39 | * Stichwortsuche ermöglichen 40 | 41 | ## Wann schreibt man eine Abstract? 42 | * beim Abschluss von wissenschaftlichen Arbeiten 43 | * wenn Artikel an Zeitschriften eingereicht werden 44 | * beim Antrag auf einen Konferenzbeitrag 45 | * wenn Forschungsgelder beantragt werden 46 | 47 | ## Was beinhaltet ein Abstract? 48 | * Thema/Zweck 49 | * Theoretischer und/oder empirische Ausgangslage 50 | * Fragestellung 51 | * Methode 52 | * Ergebnisse 53 | * Fazit und Ausblick Folgerungen 54 | 55 | ## Was ist wichtig bei einem Abstract? 56 | * Text nennen 57 | * wichtige Informationen zuerst 58 | * gleicher Sprachstil 59 | * typische Begriffe verwenden 60 | * klare und aussagekräftige Sprache 61 | 62 | ## Was sollte in einem Abstract vermieden werden? 63 | * ausführliche Verweise auf andere Arbeiten 64 | * zusätzliche Informationen 65 | * Begriffsdefinitionen 66 | * Zitate 67 | 68 | -------------------------------------------------------------------------------- /fkom/10-Schreibstil.md: -------------------------------------------------------------------------------- 1 | # Was sind die Regeln für eine wissenschaftlichen Schreibstil? 2 | * nüchtern und sachlich 3 | * Fremdwörter vermeiden 4 | * Nominalstil vermeiden 5 | * korrekte Formulierungen 6 | * wenig Adjektive verwenden 7 | * Wortzusammensetzungen vermeiden 8 | * vertändlicher Satzbau 9 | * Erzähl-Perspektive 10 | * schaulisch und knackig formulieren 11 | * Orientierung am Leser 12 | 13 | -------------------------------------------------------------------------------- /fkom/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /fkom/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung FKOM 3 | subtitle: Fachkommunikation 4 | modul: I.BA_FKOM.F17 5 | --- 6 | -------------------------------------------------------------------------------- /gdf/00-Einfuehrung.md: -------------------------------------------------------------------------------- 1 | # Einführung 2 | 3 | ## Was ist der Grundsatz der Führung? 4 | Aufgaben kann eine Führungskraft delegieren, Verantwortung aber nicht! 5 | 6 | ## Was ist der Uterschied zwischen Leadership und Management? 7 | * Leadership - Führen von Menschen 8 | * Management - Führen von Prozessen 9 | 10 | ## Welche Teile gehören zum Führen? 11 | * Person (Talent, Format) 12 | * Strategisches Können (Fachkompetenz, Methodenkompetenz, Intuition) 13 | * Operatives Können (Talent, Erfahrung, Training, Technik) 14 | 15 | -------------------------------------------------------------------------------- /gdf/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /gdf/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung GDF 3 | subtitle: Grundlagen der Führung 4 | modul: TA.BA_GDF.F1801 5 | --- 6 | -------------------------------------------------------------------------------- /ios/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /ios/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung IOS 3 | subtitle: Programmieren fürs iOS 4 | modul: I.BA_IOS.H1801 5 | --- 6 | -------------------------------------------------------------------------------- /ipcv/03A-Farbsegmentierung.md: -------------------------------------------------------------------------------- 1 | # Farbsegmentierung 2 | 3 | ## Wie kann ein Objekt erkannt werden, wenn es aus verschiedenen Farben besteht? 4 | * Farbhistogramm als Modell des Objekts 5 | * Vergleich der Histogramme 6 | 7 | ## Welche Berechnungen braucht es um Histogramme zu vergleichen? 8 | * Histogrammüberschneidung: $I(H_1, H_2) = \sum_{i \in I} min(H_1(i), H_2(i))$ 9 | * Bhattacharyya Koeffizienten: $BC(H_1, H_2) = \sum_{i \in I} \sqrt{H_1(i) H_2(i)}$ 10 | * Bhattacharyya Distanz: $D_{Bhatta}(H_1, H_2) = -ln(B_{Coeff}(H_1, H_2))$ 11 | * Hellinger Distanz: $D_{Hellinger}(H_1, H_2) = \sqrt{1 - B_{Coeff}(H_1, H_2)}$ 12 | 13 | -------------------------------------------------------------------------------- /ipcv/03B-Bildverbesserung.md: -------------------------------------------------------------------------------- 1 | # Bildverbesserung 2 | 3 | ## Wie kann ein unscharfes Bild korrigiert werden? 4 | * Unscharfe Maskierung 5 | * Wiener Filte 6 | 7 | ## Wie funktioniert die Unscharfe Maskierung? 8 | * auch bekannt als Sharpening 9 | * Verbesserung von unscharfen Bildern durch lokale Kontrasterhöhung 10 | * Spezifikation des Prozesses wie aus dem ursprünglich scharfen Bild ein unscharfes Bild wurde 11 | * Versucht diesen Prozess umzukehren 12 | 13 | ## Wie wird ein Bild unscharf? 14 | Bild verläuft anhand der Diffusionsgleichung 15 | 16 | ## Wie ist die Diffusionsgleichung definiert? 17 | $\frac{\partial f}{\partial t} = C(\nabla^2 f)$ und 18 | $\nabla^2 = \frac{\partial^2}{\partial x^2} + \frac{\partial^2}{\partial y^2}$ 19 | 20 | ## Wie lässt sich die Unscharfe Maskierung approximieren? 21 | $\frac{f_b - f_0}{\Delta t} = c \nabla^2 f_b$ also $f_0 = f_b - (c \Delta t) \nabla^2 f_b$ 22 | 23 | ## Wie berechnet man die Ableitungen diskret? 24 | * $\frac{\partial f}{\partial x} \approx \frac{1}{\Delta x} (f(x + \Delta x) - f(x))$ 25 | * $\frac{\partial f}{\partial x} \approx \frac{1}{2 \Delta x} (f(x + \Delta x) - f(x - \Delta x))$ 26 | * $\frac{\partial^2 f}{\partial x^2} \approx \frac{1}{(\Delta x)^2} (f(x + \Delta x) - 2 f(x) + f(x - \Delta x))$ 27 | 28 | ## Wie kann Rauschen in einem Bild unterdrückt werden? 29 | * Median Filter 30 | * Tiefpassfilter (Gaussian Filter, Box Filter) 31 | * Anisotrope Diffusion 32 | 33 | -------------------------------------------------------------------------------- /ipcv/05-Filter-und-Pyramiden.md: -------------------------------------------------------------------------------- 1 | # Filter und Pyramiden 2 | 3 | ## Was gilt ein Filter als separierbar? 4 | * wenn er als Faltung zwei Filtern $M_1$ und $M_2$ geschreiben werden kann 5 | * das heisst: $M = M_1 \star M_2 = M_2 \star M_1$ 6 | 7 | ## Was ist ein Beispiel für ein separierbaren Filter? 8 | der Mittelwertfilter: $M = \left( \begin{array}{rrr} 1/9 & 1/9 & 1/9 \\ 1/9 & 1/9 & 1/9 \\ 1/9 & 1/9 & 1/9\end{array} \right) = \left( \begin{array}{rrr} 1/3 & 1/3 & 1/3\end{array} \right) \star \left( \begin{array}{r} 1/3 \\ 1/3 \\ 1/3\end{array} \right)$ 9 | 10 | ## Wie ist der Gauss-Filter definiert und was ist seine Funktion? 11 | * $G_{\sigma} = \frac{1}{2\pi\sigma^2} e^{-\frac{(x^2 + y^2)}{2\sigma^2}}$ 12 | * ist ein Tiefpassfilter d.h. entfernt die hohen Frequenzen (z.B. in scharfen Kanten) 13 | * kann aber auch zum Schärfen eines Bildes verwendet werden 14 | 15 | ## Wie ist der Laplace-Filter definiert? 16 | $L = L_x + L_y = \left( \begin{array}{rrr} 0 & 0 & 0 \\ 1 & -2 & 1 \\ 0 & 0 & 0\end{array} \right) + \left( \begin{array}{rrr} 0 & 1 & 0 \\ 0 & -2 & 0 \\ 0 & 1 & 0\end{array} \right) = \left( \begin{array}{rrr} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0\end{array} \right)$ 17 | 18 | ## Was ist die Gauss- und die Laplace-Pyramide? 19 | \begin{figure}[H] 20 | \includegraphics[width=0.6\textwidth]{images/05A-Gauss-und-Laplace-Pyramide.png} 21 | \end{figure} 22 | 23 | -------------------------------------------------------------------------------- /ipcv/07-Segmentierung.md: -------------------------------------------------------------------------------- 1 | # Segmentierung 2 | 3 | ## Welche Regionen basierte Segmentierung Verfahrengibt es? 4 | * Region Growing 5 | * Split and Merge 6 | * Watershed 7 | * kMeans Clustering 8 | * Mean Shift 9 | * Graph-Cuts 10 | * Neural Networks 11 | 12 | ## Was ist das Ziel von Region Growing? 13 | * Objekte sollten anhand der Eigenschaften der Region erkannt werden 14 | * Eigenschaften können zum Beispiel die Farbe sein 15 | * aber auch Mittelwert und Abweichung der Farbe innerhalb einer Region sein 16 | 17 | ## Wie funktioniert Region Growing? 18 | * es wird ein Ausgangspunkt oder eine Ausgangsregion gewählt 19 | * und damit die Eigenschaften der Region festgelegt 20 | * benachbarte Pixel der Region werden solange hinzugefügt, wie sie die Eigenschaft erfüllen 21 | 22 | ## Wie funktioniert Split und Merge? 23 | * Inhomogene Regionen im Bild werden rekursiv aufgeteilt bis sie homogen sind (Split) 24 | * Nachbarregionen mit passenden Eigenschaften werden zusammengefügt (Merge) 25 | 26 | ## Was ist der Vorteil von Split und Merge? 27 | es ist kein Anfangspunkt notwendig 28 | 29 | ## Was ist die Idee hinter dem Watershed Algorithmus? 30 | * Interpretiere das Bild als Höhe 31 | * Fülle das Bild gleichmässig 32 | * Berechne "Watersheds" 33 | 34 | ## Wie funktioniert der K-Means Algorithmus? 35 | * finde $k$ Clusters in einem n-Dimensionalen Raum 36 | * $k$ ist dabei gegeben 37 | * dabei wird das Zentrum für jeden der $k$ Clusters gesucht 38 | * jeder Punkt gehört zu demjenigen Cluster, der das nächste Zentrum hat 39 | 40 | ## Was ist das Optimierungskriterieum bei kMeans? 41 | Summe der Abstände zwischen allen Punkten innerhalb des Clusters soll minimal sein 42 | 43 | ## Wie funktioniert Lloyds Algorithmus? 44 | * Initalisiere Cluster Zentren (z.B. zufällig) 45 | 1. Berechne die Zugehörigkeit der Punkte zu den Clustern 46 | 2. Berechne die Mittelpunkte der Cluster als neue Zentren 47 | * Iteriere bis sich keine Cluster Zugehörigkeit mehr ändert 48 | 49 | ## Was ist die Idee eines Mean Shifts? 50 | Form der Cluster sollte nicht vorgegeben werden (wie bei kMeans oder anderen Verfahren) 51 | 52 | ## Wie läuft der Mean Shift Algorithmus ab? 53 | * Suche Maxima der Verteilung von einem Punkt aus 54 | * Bestimme Clusters als Punkte die auf das gleiche Maximum konvergiere 55 | 56 | -------------------------------------------------------------------------------- /ipcv/09A-Neuronale-Netze.md: -------------------------------------------------------------------------------- 1 | # Neuronale Netze 2 | 3 | ## Welche Computer Vision Challanges gibt es? 4 | * __Classification:__ Enthält das Bild ein Objekt einer bestimmten Klasse? 5 | * __Detection:__ Wo sind die Objekte einer bestimmten Klasse im Bild zu finden? 6 | * __Segmentation:__ Zu welcher Klasse gehört ein Pixel? 7 | * __Action classification:__ Welche Aktion wird ausgeführt? 8 | * __Person layout:__ Wo sind Köpfe, Hände, Füsse, ...? 9 | 10 | ## Wie funktioniert eine Support-Vektor-Maschine? 11 | * Berechnet Features eines Bildes 12 | * funktioniert ähnlich wie Fingerabdruck 13 | * "Fingerabdruck" kann dann auf Ähnlichkeit mit anderen verglichen werden 14 | 15 | ## Aus welchen Layern besteht ein neuronales Netzwerk? 16 | * Input Layer (1) 17 | * Hidden Layer (1-n) 18 | * Output Layer (1) 19 | 20 | ## Was ist ein Convolution Layer? 21 | fasst Informationen von mehreren Verbindungen zu einer zusammen 22 | 23 | ## Wie heissen bekannte neuronale Netzwerke? 24 | * LeNet 25 | * AlexNet 26 | * GoogLeNet 27 | * VGG Net 28 | * SegNet 29 | 30 | -------------------------------------------------------------------------------- /ipcv/09B-Objekterkennung.md: -------------------------------------------------------------------------------- 1 | # Objekterkennung 2 | 3 | ## Welche zwei Arten von Klassifizierung gibt es? 4 | * __Instance Recognition:__ Wiedererkennen eines gegebenen Objekts 5 | * __Class Recognition:__ Erkennen einer gelernten Klasse von Objekten (z.B. Gesichter) 6 | 7 | ## Was benötigen die Klassifizierungalgorithemn Linear und Nearest Neighbor? 8 | * Nearest Neighbor - benötigt wird nur eine Distanzfunktion 9 | * Linear - benötigt eine lineare Funktion um die Klassen zu trennen 10 | 11 | ## Was für Klassifizierungsmethodengibt es? 12 | * Support Vector Machines (SVM) 13 | * Boosted Decision Trees 14 | * k-nearest neighbor 15 | * Bayes 16 | * Bayesian networks 17 | * Neural networks 18 | 19 | ## Was bedeute der Begriff Boosting? 20 | * Input: Trainingsdaten (positive, negative) mit Gewichten 21 | * lerne einen "schwachen" Klassifikator 22 | * Klassifiziere die Features 23 | * gewichte Fehler höher als korrekte Resultate 24 | * benutze Kombination aller Klassifikatoren für die Entscheidung 25 | 26 | ## Was ist ein Haar Feature? 27 | Filter von verschiedenen Grösse und Typ mit Filterwerten von 0 oder 1 28 | 29 | -------------------------------------------------------------------------------- /ipcv/10-Objekt-Tracking.md: -------------------------------------------------------------------------------- 1 | # Objekt Tracking 2 | 3 | ## Welche Fragen möchte man mit Objekt Tracking beantworten? 4 | * Wo ist das Objekt zu einem späteren Zeitpunkt? 5 | * Wo befand sich das Objekt über die Zeit? 6 | 7 | ## Was ist der Unterschied zwischen Detektion und Tracking? 8 | * Detektion: 9 | * Erkennung der Objekte unabhängig in jedem Frame 10 | * Tracking: 11 | * Benutzung der Dynamik der Objekte zur Voraussage, wo sich das Objekt befinden könnte 12 | 13 | ## Was braucht es um die nächste Position eines Objektes zu schätzen? 14 | * Position und Geschwindigkeit des Objektes 15 | * eine Berechnung des nächsten Zustands 16 | 17 | ## Was ist das Problem beim schätzen der nächsten Position? 18 | * Ermittlung des aktuellen Zustands 19 | * wir können im allgemeinen den kompletten Zustand des Objekts aber nicht messen 20 | 21 | ## Welche zwei Modelle werden benötigt um den Zustand zu ermitteln? 22 | * ein __System-Modell__, das besagt, wie sich der Zustand ändert 23 | * ein __Mess-Modell__, das beschreibt wie gemessene Grössen mit dem Zustand zusammenhängen 24 | 25 | ## Aus welchen drei Schritte besteht Tracking hauptsächlich? 26 | * Voraussage der nächsten Position 27 | * Messung der nächsten Position 28 | * Korrektur des Modells 29 | 30 | ## Wie funktioniert der Kalman Filter? 31 | * System und Messmodelle sind linear 32 | * Rauschen ist Gauss verteilt 33 | * berechneter Zustand wird durch Mittelwert und (Gauss) Verteilung dargestellt 34 | 35 | ## Wie funktioniert ein Partikel Filter (Sequential Monte Carlo Method)? 36 | * die Zustandsverteilung wird durch einzelne Partikel (Samples) beschrieben 37 | * die Propagation bewegt und verteilt die Partikel 38 | * die Messung gewichtet die Partikel 39 | * die neuen Samples werden proportional zu den gewichteten Partikel gezogen 40 | 41 | ## Was ist der Unterschied zwischen Kalman und Partikel Filter? 42 | * Kalman Filter für lineare Modelle mit Gauss Rauschen 43 | * Partikel Filter für nicht-lineare Modelle mit beliebigem Rauschen 44 | 45 | -------------------------------------------------------------------------------- /ipcv/11B-3D-Rekonstruktion.md: -------------------------------------------------------------------------------- 1 | # 3D Rekonstruktion 2 | 3 | ## Was sind homogene Koordinaten? 4 | * Punkte in 3D werden mit 4D Koordinaten $(x, y, z, w)$ dargestellt 5 | * Punkte in 2D werden mit 3D Koordinaten $(x, y, w)$ dargestellt 6 | * Abbildungen in 3D, 2D oder von 3D nach 2D entsprechend mit 4x4, 3x3 oder 4x3 Matrizen 7 | 8 | ## Was sind die Eigenschaften der verschiedenen Transformationen? 9 | * Euklidisch 10 | * Geraden, Strecken und Winkel bleiben erhalten 11 | * Affin 12 | * Geraden und Parallelität bleiben erhalten 13 | * Verhältnisse bleiben erhalten 14 | * Projektiv / Perspektivisch 15 | * Kollinearität bleibt erhalten 16 | 17 | ## Wie wird die Disparity Map berechnet? 18 | * für jeden Pixel im linken Bild 19 | * betrachte Pixel auf der gleichen horizontalen Linie im rechten Bild 20 | * suche Pixel der am besten "matched" 21 | 22 | ## Was ist der allgemeine Fall bei zwei Kameras? 23 | * Position der Kameras ist nicht bekannt 24 | * Kamera Kalibration ist nicht bekannt 25 | * 3D Szene ist nicht bekannt 26 | 27 | ## Was ist der Zweck der mathematische Darstellung mit der Epipolargeometrie? 28 | alle möglichen Positionen des Punkts $x$ im einen Bild liegen auf der Epipolarlinie $l$ im anderen Bild 29 | 30 | ## Wie kann die Fundamentalmatrix F gefunden werden? 31 | * finden von korrespondierenden Punkten auf beiden Bilde 32 | * F ist eine 3x3 Matrix 33 | * minimal 8 Punkte notwendig 34 | 35 | -------------------------------------------------------------------------------- /ipcv/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /ipcv/images/01A-helligkeitsveraenderung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/ipcv/images/01A-helligkeitsveraenderung.png -------------------------------------------------------------------------------- /ipcv/images/01B-kontrastveraenderung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/ipcv/images/01B-kontrastveraenderung.png -------------------------------------------------------------------------------- /ipcv/images/01C-gamma-korrektur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/ipcv/images/01C-gamma-korrektur.png -------------------------------------------------------------------------------- /ipcv/images/01D-nachbarschaft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/ipcv/images/01D-nachbarschaft.png -------------------------------------------------------------------------------- /ipcv/images/01E-connected-component-labeling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/ipcv/images/01E-connected-component-labeling.png -------------------------------------------------------------------------------- /ipcv/images/02A-CIE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/ipcv/images/02A-CIE.png -------------------------------------------------------------------------------- /ipcv/images/05A-Gauss-und-Laplace-Pyramide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/ipcv/images/05A-Gauss-und-Laplace-Pyramide.png -------------------------------------------------------------------------------- /ipcv/images/08A-GVF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/ipcv/images/08A-GVF.png -------------------------------------------------------------------------------- /ipcv/images/13A-LZW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/ipcv/images/13A-LZW.png -------------------------------------------------------------------------------- /ipcv/images/13B-Arithmetische-Kodierung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/ipcv/images/13B-Arithmetische-Kodierung.png -------------------------------------------------------------------------------- /ipcv/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung IPCV 3 | subtitle: "Image Processing & Computer Vision" 4 | modul: I.BA_IPCV.F1801 5 | --- 6 | -------------------------------------------------------------------------------- /isf/05-1-ISMS.md: -------------------------------------------------------------------------------- 1 | # Information Security Management System 2 | 3 | ## Was beschreibt ISMS? 4 | plannen, ausführen und unterhalten von Regeln, Prozesse und Systeme 5 | 6 | ## Was bedeutete information assets? 7 | * virtuelle Werte 8 | * mehr als 50% des Wertes einer Firma sind Informationen 9 | 10 | ## Was sind die Charakteristiken? 11 | * effektiv und effizient 12 | * langlebig und nachhalting 13 | * Anpassungen müssen vorgenommen werden können 14 | * in das Geschäftsjahr eingebettet 15 | * ständige Verbesserung des Sicherhitsstandards 16 | 17 | ## Was sind die Aktivitäten? 18 | * Risk Assessment 19 | * Risk Managemengt 20 | * Evaluation 21 | * Statement off Applicability (SoA) 22 | 23 | ## Was ist der Unterschied zwischen ISO 27001 und ISO 27002? 24 | * 27001 beschreibt den Standard an sich 25 | * 27002 enthält Beschreibungen und Manuals, sowie Best Practies 26 | 27 | ## Was bedeutet ISP? 28 | information security policy 29 | 30 | ## Was sind wichige Gesetzte in der Schweiz? 31 | DSG, OR, ZGB, URG, StGB, BÜPF, VÜPF, ... 32 | 33 | -------------------------------------------------------------------------------- /isf/06-Bedrohungen.md: -------------------------------------------------------------------------------- 1 | # Bedrohungen 2 | 3 | ## Woher kommen Fehler? 4 | * Konzeptionsfehler 5 | * ursprünglich kooperativer Ansatz Ende der 60er Jahre 6 | * unvorhersehbare Entwicklung, insbesondere durch Kommerzialisierung 7 | * Programmierfehler 8 | * oft ungeprüfte Eingabe(puffer) 9 | * Stack-Overflow / Manipulation des Programmzeigers 10 | * Konfigurationsfehler (z.B. auf Webserver) 11 | * Falsche Berechtigungsvergabe auf Ebene des Filesystems 12 | * Unbedachte Owner von Serverprozessen (zu hohe Privilegien) 13 | * Systemanomalien 14 | * Einnisten/Verstecken von Malware jeglicher Art 15 | 16 | ## Was für Angrifssarten gibt es? 17 | * Passive Angriffe 18 | * Lauschen 19 | * Analyse des Datenverkehrs 20 | * sehr schwierig zu entecken 21 | * Aktive Angriffe 22 | * Verändern, Ergänzen oder Löschen von Daten 23 | * Spoofing Angriffe 24 | * Degradation-of-service oder denial-of-service attack 25 | 26 | ## Was gibt es für Zeritifikatsklassen? 27 | * Class 1 Certificates (wenig Sicherheit) 28 | * Keine Überprüfung der Identität des Antragsstellers 29 | * es wird nur der im Zerifikat eingetragee Namen überprüft 30 | * werden oft vollständig über das Internet beantragt 31 | * Class 2 Certificates (mittlere Sicherheit) 32 | * Überprüfung der Identität des Antragsstellers mithilfe von Dokumenten 33 | * Für Private: Kopie von Pass oder Identitätskarte 34 | * Für Firmen: Unterschrift & Handelsregistereintrag 35 | * Class 3 Certificates (hohe Sicherheit) 36 | * Überprüfung der Identität durch persönliches Vorsprechen 37 | * Überprüfen durch Vorweisen eines amtlichen Dokuments 38 | * Weitere Prüfungen 39 | * Qualified Certificates (höchste Sicherheit) 40 | * Analog Klasse 3 41 | * Zusätzlich steht CA unter stattlicher Kontrolle 42 | 43 | -------------------------------------------------------------------------------- /isf/08-Bedrohungen-auf-Anwendungsebene.md: -------------------------------------------------------------------------------- 1 | # Bedrohung auf Anwendungsebene 2 | 3 | ## Was ist der Unterschied zwischen Bots und Reflektoren? 4 | * Bots 5 | * Aktive Komponente 6 | * Infiziert mit böswilliger Software 7 | * senden Pakete an Reflektoren mit gefälschtem Absender 8 | * Reflektoren 9 | * Antwortet auf gefälschtes Paket 10 | * Sendet Antwort an gefälschten Absender 11 | 12 | ## Wie vermeide ich den VW-Golf Effekt? 13 | * PDFs erlauben Code auszuführen 14 | * Immer zuerst überprüfen vor dem Unterschreiben 15 | 16 | ## Habe ich etwa mehrere Schlüsselringe und wie sicher sind sie? 17 | * Ja, es gibt mehrere 18 | * Public-Keyring & Private-Keyring 19 | 20 | ## Kann ich auf einem fremden Gerät eine an mich mit PGP verschlüsselte Nachricht lesen? 21 | Wenn ich den private key dabei habe schon 22 | 23 | ## Welche Elemente können im Mail-System (SMTP) nicht vertraulich sein? 24 | * Absender 25 | * Empfänger 26 | * Betreff 27 | 28 | ## Welche organisatorischen Fehler erlaubten den beschriebenen Angriff auf die Zertifizierungsstelle? 29 | * Hash-Kollision generieren 30 | * Keine fortlaufende Nummern für Zertifikate 31 | * Unsichere Hash-Verfahren 32 | * Ablauf: 33 | * Nummer generieren 34 | * Zeit-Stempel anfügen 35 | * Hash generieren 36 | * von PKI signieren 37 | * gefälschter Antrag mit gleichem Hash generieren 38 | 39 | ## Was sind Rollen der grossen Rechenleistung und des exakten Timings? 40 | * Damit Voraussagen getroffen werden können 41 | * über Zeit-Stempel und Nummern 42 | 43 | ## Was sind wichtige Begriffe, wenn es um Walowdac geht? 44 | * Spammer 45 | * Verschickt Spam Mails 46 | * Nimmt Kontakt auf mit Repeater 47 | * Repeater 48 | * gleichen sich gegenseitig ab 49 | * wechseln immer wieder den Namen (nach einem Muster) 50 | * Backend-Server 51 | * Kontroll-Server 52 | * Teilt aufgaben an Repeater mit, welcher dann weiterverbreitet 53 | 54 | -------------------------------------------------------------------------------- /isf/11-Privatsphaere-und-Anonymitaet.md: -------------------------------------------------------------------------------- 1 | # Privatsphäre und Anonymität 2 | 3 | ## Was sind die 2 Typen von Werbung im Internet? 4 | * Aktionsbasiert 5 | * Click auf Werbemittel 6 | * Hinzufügen eines Artikels in einen Warenkorb 7 | * auf kurzfristiges Verhalten ausgelegt 8 | * Interessenbasiert 9 | * Häufiger Aufenthalt im Umfeld spezifischer Themen 10 | * Überproportional viele Sichtungen einer speziellen Kategorie 11 | * auf langfristigte Interessen ausgerichtet 12 | 13 | ## Was ist die Grundidee von Cookies? 14 | * Überwindung der Zustandslosigkeit von HTTP 15 | * Sitzungsverwaltung 16 | * Speichern von individuellen Einstellungen 17 | 18 | ## Was wird alles in einem Cookie gespeichert? 19 | * Lebensdauer 20 | * Gültigkeit für Domain oder Pfad 21 | * Übermittlung nur via https 22 | * Sichtbarkeit für JavaScript 23 | 24 | ## Welche Gruppen werden beim technischen Targeting unterschieden? 25 | * nach Browser (Firefox, Safari, ...) 26 | * nach Provider (Swisscom, CableCom, ...) 27 | * nach Bandbreite, Bildschirmauflösung, Betriebssystem 28 | * nach Standort (Geo- und Regiotargeting) 29 | 30 | -------------------------------------------------------------------------------- /isf/12-Konzepte-der-IT-Forensik.md: -------------------------------------------------------------------------------- 1 | # Konzepte der IT Forensik 2 | 3 | # Wo werden überall Spuren hinterlassen? 4 | * Dateien und Metadaten 5 | * gelöschte Dateien 6 | * slack space 7 | * Backups 8 | * Logfiles 9 | * Virtueller Arbeitsspeicher 10 | * Temporäre Dateien 11 | * Browser 12 | * Papierkorb 13 | * Datenrettung 14 | * Probleme mit Verschlüsselung 15 | 16 | ## Welche Spuren hinterlassen Dateien und Metadaten? 17 | * Inhalt der Datei 18 | * Metainformationen über Dateien 19 | * Erstellungszeit, Ersteller 20 | * Letzte Modifikation, Ausdruck 21 | * Dateigrösse 22 | * effektiv und belegter Platz auf Datenträger 23 | 24 | ## Welche Spuren hinterlassen gelöschte Dateien? 25 | * Meistens wird nur Eintrag in der File Allocation Table gelöscht 26 | * Bereich 3x mit Zufallsdaten überschreiben gilt als sicher 27 | * 7x gilt als NATO Standard 28 | 29 | ## Was bedeutete slack space? 30 | * passiert wenn Block nicht voll ausgenutzt wird 31 | * Sektoren beiinhalte noch Überreste alter Daten in einem Block 32 | 33 | ## Was sind Problemen bei Datensicherung? 34 | * Sicherungsmedien sind wichtige Quelle für Spurensuche 35 | * Sicherungsmedium können mehrmals beschrieben werden 36 | * 2 Möglichkeiten zur Sicherung der Daten: 37 | * Dateiweise (Dateien einzeln lesen und schreiben) 38 | * Blockweise (Clone des Datenträgers) 39 | 40 | ## Was sind die Probleme beim Virtueller Arbeitsspeicher? 41 | * letzte Zustand bleibt beim Systemstop erhalten 42 | * kann sehr sensible Informationen enthalten 43 | * z.B. Passwörter im Arbeitsspeicher 44 | 45 | ## Welche Informationen kann man aus temporären Dateien gewinnen? 46 | * Warteschlangen für Druckaufträge 47 | * Warteschlangen von Mailservern 48 | * Lokaler Cache des Webbrowsers 49 | * ... 50 | 51 | ## Welche Spuren werden von einem Webbrowser generiert? 52 | * Browserverlauf 53 | * Cookies 54 | * Cache-Dateien 55 | * Downloadverlauf 56 | 57 | ## Was ist das Hauptproblem bei Kommunikation? 58 | Weiterleitung erfordert oft Zwischenspeicherung 59 | 60 | ## Was bedeutet Steganographie? 61 | Verstecken von Informationen in einem unaffälligen Behälter 62 | 63 | -------------------------------------------------------------------------------- /isf/14-DRM.md: -------------------------------------------------------------------------------- 1 | # Digital Rights Management 2 | 3 | ## Was sind die Hauptprobleme im Bezug auf DRM? 4 | * jede/r Computerbenutzer/in ist heute Sysadmin 5 | * Sysadmin kann volle Berechtigung auf Daten haben 6 | * Teilbereich des Systems darf nur eingeschränkt zugänglich sein 7 | * Wem kann man vertrauen? 8 | 9 | ## Was versteht man unter TPM? 10 | * Trusted Platform Module 11 | * Privater Schlüssel sollte Gerät nicht verlassen 12 | * Guter Zufallsgenerator ist wichtig 13 | 14 | ## Was sind wichige Begriffe bei TPM? 15 | * Containment 16 | * Objekt wird verschlüsselt geliefert 17 | * Der Schlüssel dazu wird nur geliefert, wenn die Bedingungen erfüllt sind 18 | * Marking 19 | * Information über die Zugriffsbeschränkung auf die Daten 20 | * wird digital signiert mit den Daten geliefert 21 | * Signatur verhindert Abänderung der Berechtigungen 22 | * Problem 23 | * Durchsetzung der Marking-Policy 24 | * Abhilfe durch TPM 25 | 26 | ## Was ist der Unterschied zwischen hartem und weichem DRM? 27 | * hartes DRM 28 | * auch DRE (Digital Rights Enforcement) 29 | * Mit technischen Massnahmen durchgesetzt (Verschlüsselung, Formate, ...) 30 | * Erfordert SW-Installationen oder sogar spezielle Hardware zur Nutzung 31 | * Missbrauch wenn immer möglich verhindern (präventiver Ansatz) 32 | * weiches DRM 33 | * Die Nachteile des DRM sollen vermindert werde 34 | * weitgehende Unabhängigkeit von SW/HW 35 | * sozialer Kopierschutz (repressiver Ansatz) 36 | 37 | ## Was sind die verschiedenen Aspekte von DRM? 38 | * Technisch 39 | * Rights specification 40 | * Encryption 41 | * Authentication 42 | * Packaging 43 | * Access Control 44 | * Sozial 45 | * Erwartungen 46 | * Wertvorstellungen 47 | * Bildung(swesen) 48 | * Business 49 | * Wertschöpfung 50 | * Neue Geschäftsmodelle 51 | * Legal 52 | * Rechtssetzung 53 | * Compliance 54 | * Ermittlung 55 | * Strafverfolgung 56 | 57 | -------------------------------------------------------------------------------- /isf/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /isf/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung ISF 3 | subtitle: Information Security Fundamentals 4 | modul: I.BA_ISF.F1701 5 | --- 6 | -------------------------------------------------------------------------------- /iteo/05-4-OS-Virtualisierung.md: -------------------------------------------------------------------------------- 1 | # OS Virtualisierung 2 | 3 | ## Was versteht man unter einem Container? 4 | * wird im Linux Container genannte 5 | * wird auf Solaris Zone genannt 6 | * Container verwenden den Kernel vom Host OS 7 | * verwendet keinen Hypervisor 8 | * braucht nur ganz wenig zusätzliche Prozessorzyklen 9 | 10 | ## Was kann die OS Virtualisierung? 11 | * Stellt eine feingranulare Kontrolle zur Verfügung 12 | * Erlaubt die Isolation von Applikationen 13 | * Transparente Migrationen von Applikationen möglich 14 | * Im Gegensatz zum Hypervisor der nur ganze OS Instanzen migriert 15 | 16 | ## Was kann die OS Virtualisierung nicht? 17 | * Keine fremden OS möglich 18 | * Zonen müssen auf dem selben Patch Level laufe 19 | * Anforderungen an SysAdmin steigern 20 | * Ressource Management muss eingeschaltete sein 21 | 22 | ## Welche OS beherrschen OS Virtualisierung? 23 | * BSD (Jails) 24 | * Solaris (Zonen) 25 | * Linux (Container, LXC) 26 | * Microsoft (Container seit Server 2016) 27 | 28 | ## Welche 3 Erweiterungen braucht Linux für die Unterstützung von Container? 29 | * Filesystemgrenzen für Prozesse (`chroot`) 30 | * Ressourcen sharing zwischen Prozess Gruppen (`cgroups`) 31 | * Namespaces (`ns`) 32 | 33 | ## Was ist Docker? 34 | * Ist keine OS virtualisierung 35 | * verwendet LXC (Linux Container) für die Virtualisierung 36 | 37 | -------------------------------------------------------------------------------- /iteo/06-1-Prozesse.md: -------------------------------------------------------------------------------- 1 | # Betriebsprozesse 2 | 3 | ## In welche 3 Gruppen werden Betriebsprozesse gegliedert? 4 | * Kernprozesse 5 | * Innovationsprozess 6 | * Vertriebsprozess (Leistungsverwertung) 7 | * Auftragsabwicklungsprozess (Leistungserstellung) 8 | * Serviceprozess 9 | * Managementprozesse 10 | * Strategieplanungsprozess 11 | * Qualitätsmanagementprozess 12 | * Controllingprozess 13 | * Unterstützungsprozesse 14 | * Personalmanagementprozess 15 | * Finanzmanagementprozess 16 | * Ressourcenmanagementprozess 17 | * IT-Managementprozess 18 | 19 | -------------------------------------------------------------------------------- /iteo/18-Vertiefung-ITIL-4.md: -------------------------------------------------------------------------------- 1 | ## was bedeutet Service Operation und Incident Management? 2 | * Service Operation 3 | * Tägliches Geschäft des Servicebetriebs 4 | * Effektive und effiziente Lieferung und Unterstützung von Services 5 | * Beinhaltet u.a. Prozesse wie Incident- und Problem-Management 6 | * Incident Management 7 | * Auswirkungen von Störungen auf die Geschäftsprozesse verringern 8 | * Servicequalität und Verfügbarkeit einhalten 9 | * Steigerung der Produktivität der Anwender 10 | 11 | ## Welche Stufe muss Incident abarbeiten? 12 | Auftritt, Identifizierung, Auffzeichnung, Kategorisierung, Priorisierung, Diagnose, Eskalation, Untersuchung, Bebebung, Abschluss 13 | 14 | ## Was sind bekannte Support Levels? 15 | * Level 0 16 | * Lokale Ansprechpartner für Benutzer 17 | * Power User helfen weiter, kein eigentlicher Incident 18 | * Level 1 19 | * Servicedesk, erste Anlaufstelle für Tickets 20 | * Arbeit nach Checklisten auf Benutzerebene, SW-Verteilung 21 | * Level 2 22 | * Supporter mit höheren Rechten, Server Administration 23 | * Arbeiten nach Checklisten, Service Restarts 24 | * Level 3 25 | * System Engineers 26 | * Höhere Ausbildung und hohe Systemrechte 27 | * Level 4 28 | * Senior System Engineers / Entwickler / Architects / Consultants 29 | * Zusammenarbeit mit Herstellern / ext. Spezialisten 30 | 31 | ## Wie werden die Tickets priorisiert? 32 | * niederig 33 | * Behindert die Arbeit einzelner Benutzer; akzeptabler Workaround verfügbar 34 | * Keine sofortige Lösung gefordert 35 | * zugewisen innerhalb 8h 36 | * gelöst innerhalb 1W 37 | * normal 38 | * Unterbricht die Arbeit einzelner Benutzer; kein Workaround verfügbar 39 | * Keine sofortige Lösung gefordert 40 | * zugewisen innerhalb 2h 41 | * gelöst innerhalb 2d 42 | * hoch 43 | * Unterbricht kritischer Prozess mit Folgen für Benutzer 44 | * Sofortige Lösung vom Kunden gefordert 45 | * zugewisen innerhalb 1h 46 | * gelöst innerhalb 24h 47 | * dringend 48 | * Unterbricht kritische Geschäftsprozesse mit grossen Folgen 49 | * Sofortige Lösung vom Kunden gefordert 50 | * zugewisen innerhalb 1h 51 | * gelöst innerhalb 8h 52 | 53 | -------------------------------------------------------------------------------- /iteo/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /iteo/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung ITEO 3 | subtitle: "IT-System Engineering & Operation" 4 | modul: I.BA_ITEO.F1701 5 | --- 6 | -------------------------------------------------------------------------------- /mc/01B-MC.md: -------------------------------------------------------------------------------- 1 | # MC-Car und Assembler 2 | 3 | ## Was muss beim Terminal für die Verbindung zu MC-Car eingestellt werden? 4 | * Baudrate auf 9600 5 | 6 | ## Wieso hat es auf dem MC-Car zwei Mikrocontroller? 7 | * 1x der wirkliche Controller 8 | * verbunden mit dem rechten USB-Anschluss 9 | * 1x Umwandlungscontroller zur Programmierung 10 | * verbunden mit dem linken USB-Anschluss 11 | 12 | ## Was sind die Unterschiede zwischen Hochsprachen und Assembler? 13 | * Hochsprachen 14 | * Portierbar 15 | * Effizienter (in der Regel) 16 | * Besser lesbar 17 | * Leichter zu warten 18 | * Vorzuziehen, wenn Rechenleistung und Speicherplatz ausreichen 19 | * Assembler 20 | * bieten mehr Funktionen 21 | * erlauben zeitkritische Anwendungen 22 | * können in Hochsprachen eingebettet werden 23 | 24 | ## Wie sieht der Weg bis zum Programm auf dem Chips aus? 25 | * Pre-Assembler 26 | * Funktionalität: Search & Replace 27 | * Benötigt: Sourcecode (*.c oder *.asm) 28 | * Erzeugt: Sourcecode (*.c oder *.asm) 29 | * Assembler/Compiler 30 | * Funktionalität: Erstellen von Objektdateien 31 | * Benötigt: Sourcecode (*.c oder *.asm) 32 | * Erzeugt: Objektfiles (*.o), Listing (*.lst) 33 | * Linker 34 | * Funktionalität: Zusammensetzen aller Dateien 35 | * Benötigt: Objektfiles (*.o), Parameterfile (*.prm) 36 | * Erzeugt: Binärdateien, Linkeroutputfile (*.map) 37 | * Debugger 38 | * Funktionalität: Zugriff auf den Chip und herunterladen des Programms 39 | * Benötigt: Binärdateien, Parameterfile (*.launch) 40 | * Erzeugt: Download (*.abs) 41 | 42 | ## Was ist der Unterschiede zwischen einer Direktive und einem Befehl? 43 | * Direktive 44 | * wird vom Pre-Assembler bearbeitet 45 | * ergibt nur indirekt Maschinene-Code 46 | * Befehl 47 | * wird von der CPU ausgeführt 48 | * ergibt nur direkt Maschinene-Code 49 | 50 | ## Welche Funktionsgruppen sind auf einem Board zu finden? 51 | * LEDs 52 | * Joystick / Taster 53 | * Sensoren (IR, Helligkeit, ...) 54 | * Aktoren (Motor, Buzzer, ...) 55 | * CPU (ein oder mehrere Chips) 56 | * I/O (USB, GPIO, ...) 57 | 58 | ## Welche Informationen sind im Parameterfile abgelegt? 59 | * welche Adressen in welchen Speicherbereich kommen 60 | * in welcher Reihenfolge die Objekte gelinkt werden müssen 61 | 62 | -------------------------------------------------------------------------------- /mc/02B-MC.md: -------------------------------------------------------------------------------- 1 | # HCS08 2 | 3 | ## Welche Register hat der HCS08? 4 | * Accumulator (A, 8Bit) 5 | * Index Register (H:X, 16Bit) 6 | * Stack Pointer (SP, 16Bit) 7 | * Program Counter (PC, 16Bit) 8 | * Condition Code Register (CCR, 8Bit) 9 | 10 | ## Welche Flags beinhaltet das CCR Register? 11 | ``` 12 | +---+---+---+---+---+---+---+---+ 13 | | V | 1 | 1 | H | I | N | Z | C | 14 | +---+---+---+---+---+---+---+---+ 15 | ``` 16 | 17 | ## Welche Flags beinhaltet das CCR Register? 18 | * V (two's complement overflow) 19 | * H (half-carry) 20 | * I (interrupt mask) 21 | * N (negative) 22 | * Z (zero) 23 | * C (carry) 24 | 25 | ## Wie ist der Speicher des HCS08 aufgebaut? 26 | * 0x0000 - 0x00Af 27 | * Direct Page Registers 28 | * 0x00B0 - 0x10AF 29 | * RAM (4096 Bytes) 30 | * 0x10B0 - 0x17FF 31 | * Flash (1872 Bytes) 32 | * 0x1800 - 0x185F 33 | * High Page Registers(96 Bytes) 34 | * 0x1860 - 0x195F 35 | * USB-RAM (256 Bytes) 36 | * 0x1960 - 0xFFFF 37 | * Flash (59088 Bytes) 38 | 39 | ## Welches sind die wichtigsten Konfigurationsregister der Ports? 40 | * Direct Page 41 | * PTAD = Port A Data Register 42 | * PTADD = Port A Data Direction Register 43 | * ... 44 | * High Page 45 | * PTAPE = Port A Pullup Enable Register 46 | * PTASE = Port A Slew Rate Control Enable Register 47 | * PTADS = Port A Drive Strength Selection Register 48 | 49 | -------------------------------------------------------------------------------- /mc/03A-C.md: -------------------------------------------------------------------------------- 1 | # Vekoren, Zeiger und Speicher 2 | 3 | ## Wie kann man mit C ein Vektor (Array) erzeugen? 4 | ``` 5 | // erzeugt einen Vektor mit fixer Grösse 6 | int values[10]; 7 | 8 | // erzeugt automatische einen genug grossen Vektor 9 | int values[] = { 23, 45, 56, 8, 9 }; 10 | ``` 11 | 12 | ## Wie ist der Datentyp String in C definiert? 13 | * gibt es nicht direkt 14 | * wird als Zeichenvektor realisiert 15 | * wird durch ein `\0` terminiert 16 | 17 | ## Was sind die am meisten verwendeten Sonderzeichen? 18 | * `\n` Zeilenumbruch 19 | * `\0` String-Ende 20 | * `\t` Tabulator 21 | * `\\` Backslash 22 | 23 | ## Welches sind die meistverwendeten String-Operationen? 24 | ``` 25 | // Anzahl Zeichen einer Zeichenkette 26 | size_t strlen(char* txt); 27 | 28 | // Zeichenkette kopieren 29 | char* strcpy(char* dest, const char* src); 30 | 31 | // Zeichenkette verketten 32 | char* strcat(char* dest, const char* str); 33 | ``` 34 | 35 | ## Wie kann mit C eine Aufzählung realisiert werden? 36 | ``` 37 | enum Boolean { FALSCH, WAHR }; 38 | ``` 39 | 40 | ## Wie kann in C ein neuer Typ definiert werden? 41 | ``` 42 | typedef unsigned long uint32_t; 43 | typedef char String[]; 44 | typedef int size_t; 45 | ``` 46 | 47 | ## Was ist die Motivation hinter? 48 | * Zeiger führen zu kompakteren, effizienteren Programmen 49 | * Programme werden verständlicher und lesbarer 50 | * gewisse Parameterübergaben sind nur mit Zeiger möglich 51 | * Zeigerarithmetik vereinfacht Programme 52 | 53 | 54 | ## Wie werden in C Pointer verwendet? 55 | ``` 56 | char c; // Definition einer char-Variabel c 57 | char* p; // Zeiger (4 Byte) auf einen char (1 Byte) 58 | p = &c; // Zuweisung Adresse von c an Zeiger 59 | *p = 45; // Inhalt wo p hinzeigt auf 45 ändern 60 | ``` 61 | 62 | ## Wie kann mit C dynamisch Speicher alloziert werden? 63 | ``` 64 | int n; 65 | scanf("%d", &n); 66 | int* pta = (int*) malloc( sizeof(int) * n); 67 | ``` 68 | 69 | ## Mit welchem Befehl kann der Speicher wieder freigegeben werden? 70 | ``` 71 | free(ip); 72 | ``` 73 | 74 | -------------------------------------------------------------------------------- /mc/04B-MC.md: -------------------------------------------------------------------------------- 1 | # Transport- & Arithmetische-Befehle 2 | 3 | ## Welche Transportbefehle gibt es? 4 | * L (Load) 5 | * Quelle: Memory 6 | * Ziel: CPU-Register 7 | * Beispiel: `LDA, LDX, LDHX, PULA, PULX` 8 | * S (Store) 9 | * Quelle: CPU-Register 10 | * Ziel: Memory 11 | * Beispiel: `STA, STX, STHX, PSHA, PSHX` 12 | * T (Transfer) 13 | * Quelle: CPU-Register 14 | * Ziel: CPU-Register 15 | * Beispiel: `TAP, TPA, TAX, TSX` 16 | * M (Move) 17 | * Quelle: Memory 18 | * Ziel: Memory 19 | * Beispiel: `MOV` 20 | 21 | ## Wie kann man mit grossen Zahlen rechnen? 22 | * Addition 23 | * LSB mit `ADD` 24 | * weitere Bits mit `ADC` (Übertrag von vorheriger Rechnung) 25 | * Subtraktion 26 | * LSB mit `SUB` 27 | * weitere Bits mit `SBC` (Übertrag von vorheriger Rechnung) 28 | * Multiplikation 29 | * Multiplikation Akkus mit dem Inhalt des Index-Registers X 30 | * 16 Bit Resultat wird in X:A (MSB in X, LSB in A) gespeichert 31 | * Division 32 | * 33 | 34 | ## Welche Condition Codes hat der HCS08? 35 | | CC | Name | Bedingung | Relevant für | 36 | |----|----------|--------------------------------|-------------------| 37 | | Z | Zero | Resultat gleich 0 | unsigned & signed | 38 | | N | Negative | Resultat grösser 0 | signed | 39 | | C | Carry | Resultat ausserhalb [0-255] | unsigned | 40 | | V | Overflow | Resultat ausserhalb [-128-127] | signed | 41 | 42 | ## Was bewirkt die Befehle TAP & TPA bei der HCS08 CPU? 43 | * TPA (Accu = CCR) 44 | * TAP (CCR = Accu) 45 | 46 | ## Woran erkennt die ALU ob signed oder unsigned gerechnet werden muss? 47 | * ALU hat keine Möglichkeit um das zu erkennen 48 | * Muss nachher von den CCR-Flags abgelesen werden 49 | 50 | -------------------------------------------------------------------------------- /mc/05A-C.md: -------------------------------------------------------------------------------- 1 | # Preprocessor, Variable und Speicherklassen 2 | 3 | ## Welche Funktionen bietet der Preprocessor? 4 | ``` 5 | // Datei-Inhalte einfügen 6 | #include "calc.h" // sucht dort wo Quelldatei steht 7 | #include // such in IDE-Pfaden nach der Datei 8 | 9 | //Namen ersetzen 10 | #define forever while(1) 11 | #undefine forever 12 | 13 | // Bedingte Anweisungen 14 | #if 15 | #ifdef 16 | #ifndef 17 | #elif 18 | #else 19 | #endif 20 | ``` 21 | 22 | ## Wie kann in C in Makro definiert werden? 23 | ``` 24 | #define MAX(A, B) ((A) > (B) ? (A) : (B)) 25 | ``` 26 | 27 | ## Wie kann Mehrfach-Inkludierung verhindert werden? 28 | ``` 29 | #ifndef HDR_H 30 | #define HDR_H 31 | 32 | // hier Funktions-Deklarationen einfügen 33 | // beispielsweise Inhalt von HDR.h 34 | // so nur einmal im Projekt vorhanden 35 | 36 | #endif 37 | ``` 38 | 39 | ## Wieso sollte man den Code in Funktionen unterteilen? 40 | * Problem-Zerlegung in eigenständige Teilprobleme 41 | * ermöglicht Modularisierung 42 | * verbessert Übersichtlichkeit 43 | * sorgt für Abkapselung, Wiederverwendung 44 | * bessere Testbarkeit 45 | * fördert Information Hiding 46 | 47 | ## Welche 3 Stufen durchläuft jede Funktion? 48 | * Funktions-Definition (Programm-Code): 49 | * Funktion ausprogrammiert 50 | * keine weitere Funktions-Definition in Funktion möglich 51 | * Funktions-Deklaration: 52 | * Beschreibung, kann mehrfach vorhanden sein 53 | * Funktions-Aufruf: 54 | * innerhalb einer (anderen) Funktion aufrufen… 55 | * mehrfach aufgerufen, rekursiv auch möglich 56 | 57 | ## Welche Speicherklassen gibt es in C? 58 | * `extern` = anderswo definiert und initialisiert 59 | * `static` = zum Verbergen von Variablen und Funktionen -- nur in dem File sichtbar 60 | * `auto` = oder keine Speicherklasse, keine spezielle Behandlung durch Compiler 61 | * `register` = Option für Compiler, Variable wenn möglich in CPU-Register behalten 62 | * `volatile` = der Compiler soll die Variable immer vom Speicher holen 63 | 64 | -------------------------------------------------------------------------------- /mc/06A-MC.md: -------------------------------------------------------------------------------- 1 | # Stack & BSR 2 | 3 | ## Wie funktioniert der Stack? 4 | * spezieller Speicherbereich im RAM 5 | * arbeitet nach dem LIFO-Prinzip (Last-In-First-Out) 6 | * Adressierung erfolgt über den Stack-Pointer 7 | * wächst von unten nach oben 8 | 9 | ## Wo zeigt der Stackpointer hin? 10 | * zeigt stets auf den nächsten freien Speicherplatz 11 | * wächst in Richtung kleinerer Adressen 12 | 13 | ## Welcher Operationen gibt es auf dem Stack? 14 | * PUSH 15 | * Daten auf den Stack legen 16 | * dekrementiert den Stack-Pointer 17 | * PULL 18 | * Daten vom Stack holen 19 | * inkrementiert den Stack-Pointer 20 | 21 | ## Wie wird der Stack in Assembler initialisiert? 22 | ``` 23 | Stacksize: EQU $40 24 | 25 | DATA: SECTION 26 | TofStack: DS Stacksize-1 ; Stack reservieren 27 | BofStack: DS 1 28 | 29 | PROGRAM: SECTION 30 | LDHX #(BofStack+1) ; Stackpointer initialisieren 31 | TXS ; SP := HX - 1 32 | 33 | PSHA ; CPU-Status retten: Akku und 34 | PSHX ; X-Register 35 | 36 | PULX ; CPU-Status wiederherstellen 37 | PULA ; Reihenfolge beachten (LIFO!) 38 | ; Stackpointer zeigt wieder auf BofStack 39 | ``` 40 | 41 | ## Welche Befehle werden für Unterprogramme in Assembler verwendet? 42 | * BSR / JSR 43 | * Push PC auf den Stack 44 | * RTS 45 | * Pull PC vom Stack 46 | 47 | ## Was sind die Vor- und Nachteile von Unterprogrammen? 48 | * Vorteile 49 | * geringerer Speicherbedarf 50 | * kleinerer Entwicklungsaufwand 51 | * kleineres Fehlerrisiko 52 | * höhere Produktivität im Team 53 | * kürzere Compile-Zeit 54 | * Bibliotheken mit Standardfunktionen 55 | * Nachteile 56 | * langsamere Programmausführung 57 | * mehr Speicher notwendig 58 | 59 | ## Welche Informationen werden auf dem Stack gespeichert? 60 | * Lokale Variablen 61 | * Rücksprungadressen 62 | * Parameterübergabe 63 | 64 | ## Welche Informationen können nicht auf dem Stack gespeichert werden? 65 | * alles vor dem `main`, da dann noch kein Stack existiert 66 | * Daten auf dem Heap 67 | 68 | ## Welche Arten der Parameterübergabe kennen Sie und wie werden diese beim HCS08 realisiert? 69 | * über globale Variablen 70 | * mit den eingebauten Register 71 | * über den Stack 72 | 73 | -------------------------------------------------------------------------------- /mc/07A-C.md: -------------------------------------------------------------------------------- 1 | # Mehrdimensionale Arrays 2 | 3 | 4 | ## Was ist die Beduetung von Zeiger auf Zeiger? 5 | ``` 6 | // Definition der Variable 7 | char** ppText; 8 | 9 | // Benutzung der Variable 10 | ppText // Zeiger auf Zeiger von Zeichen (char **) 11 | *ppText // Zeiger auf 1..n Zeichen (char *) 12 | **ppText // erstes Zeichen des Vektors (char) 13 | *(*ppText + 1) // zweites Zeichen des Vektors 14 | (*ppText)[1] // ebenfalls zwites Zeichen des Vektors 15 | ``` 16 | 17 | ## Wie kann in C ein zweidimensionales Array erstellt werden? 18 | ``` 19 | // in diesem Beispiel 2 Zeilen und 5 Spalten 20 | char a[2][5]= { 21 | { 0, 31, 28, 25, 7}, 22 | { 30, 29, 9, 37, 56} 23 | }; 24 | ``` 25 | 26 | ## Wie kann in C ein zweidimensionales Array dynamisch erzeugt werden? 27 | ``` 28 | // Zeilenvektor erstellen 29 | matrix = malloc(sizeof(int*) * rows); 30 | 31 | // Spaltenvektoren erstellen 32 | for (i = 0; i < rows; i++) { 33 | *(matrix+i) = malloc(sizeof(int) * colums); 34 | } 35 | ``` 36 | 37 | ## Wie kann ein Function-Pointer definiert werden? 38 | ``` 39 | int (*f)(int i, int j); 40 | ``` 41 | 42 | ## Was bedeutet die Abkürzung POSIX? 43 | Portable Operating System Interface, API for OS 44 | 45 | -------------------------------------------------------------------------------- /mc/07B-MC.md: -------------------------------------------------------------------------------- 1 | # Timer Channel & Logic Analyzer 2 | 3 | ## Welchen generellen Anwendungsfälle entsprechen die beiden Timer-Betriebsarten? 4 | * Output-Compare (OC) 5 | * funktioniert wie ein Wecker 6 | * Input-Capture (IC) 7 | * funktioniert wie eine Stoppuhr 8 | 9 | ## Was ist die Funktion des Value-Registers in den Timer-Betriebsarten OC und IC? 10 | * Output-Compare (OC) 11 | * Sobald der Timer den eingstellten Wert erreicht, wird eine Aktion ausgelöst 12 | * Input-Capture (IC) 13 | * Speichert die Zeit wann ein Interrupt von aussen ausgelöst worden ist 14 | 15 | ## Warum ist es vorteilhaft das Timer-Modul mit einem Modulo-Wert von 0xFFFF zu betreiben? 16 | * im Interrupts lässt sich so der Channel-Value verändern 17 | * so kann einfach einfach eine Zeit addiert werden 18 | * bei einem Overflow des Channel-Values gibt es kein Problem 19 | * da das Carry einfach abgeschnitten wird 20 | 21 | ## Wie lässt sich mit dem Timer ein Output-Compare Interrupt generieren ohne den Wert am Port-Pin zu ändern? 22 | * wenn die ELS-Bits richtig konfiguriert werden 23 | * so kann eine Aufgabe auf die Pins unterbunden werden 24 | 25 | ## Wie heissen die zwei Betriebsmodi eines Logic Analyzers und worin unterscheiden sie sich? 26 | * synchron 27 | * Clock von aussen 28 | * Synchron mit Clock von Mikrocontroller 29 | * asynchron 30 | * Interner Clock wird genutzt 31 | * Meistens höhere Abtastrate als über externen Clock 32 | 33 | -------------------------------------------------------------------------------- /mc/08B-MC.md: -------------------------------------------------------------------------------- 1 | # PWM 2 | 3 | ## Wie wird in der Timer-Betriebsart Edge-Aligned PWM Periodendauer und Duty Cycle des generierten Signals bestimmt? 4 | * mit dem Value- Register 5 | 6 | ## Warum bietet es sich beim MC-Car an, die PWM-Signale für linken und rechten Motor mit TPM2 und nicht mit TPM1 zu generieren? 7 | * weil der TPM2 nur 2 Kanäle hat 8 | 9 | ## Was muss man für die Generierung eines Signals mit 100% Duty Cycle beachten? 10 | * Modulo-Wert um eins heruntersetzten 11 | * und den Channel-Value eins höher wählen als der Modulo 12 | 13 | ## Was vertseht man unter 14 | * Fast Decay: 15 | * Motor wird gebremst 16 | * führt zu Spannungsabfall 17 | * es entsteht viel Verlustleistung 18 | * Slow Decay: 19 | * Motor wird abgeschalten, aber blockiert nicht 20 | * läuft im Leerlauf weiter 21 | * Nutzung der kinetischen Energie 22 | 23 | -------------------------------------------------------------------------------- /mc/09A-C.md: -------------------------------------------------------------------------------- 1 | # RS232 2 | 3 | ## Wie sieht das I/O Register File des HCS08 aus? 4 | ``` 5 | typedef union { 6 | byte Byte; 7 | struct { 8 | byte ADCH0 :1; // Input Channel Select Bit 0 9 | byte ADCH1 :1; // Input Channel Select Bit 1 10 | byte ADCH2 :1; // Input Channel Select Bit 2 11 | byte ADCH3 :1; // Input Channel Select Bit 3 12 | byte ADCH4 :1; // Input Channel Select Bit 4 13 | byte ADCO :1; // Continuous Conversion Enable 14 | byte AIEN :1; // Interrupt Enable 15 | byte COCO :1; // Conversion Complete Flag 16 | } Bits; 17 | struct { 18 | byte grpADCH :5; 19 | byte :1; 20 | byte :1; 21 | byte :1; 22 | } MergedBits; 23 | } ADCSC1STR; 24 | ``` 25 | 26 | ## Was sind die Aufgaben eines Betriebssystems? 27 | * Speicherverwaltung 28 | * Prozess-Verwaltung 29 | * Prozess-Synchronisation 30 | * Interprozesskommunikation 31 | * Geräte- und Dateiverwaltung 32 | * Abstraktion der Hardware 33 | * übernehmen der Ein- / Ausgaben 34 | * bereitstellen eines Dateisystem 35 | * Rechteverwaltung 36 | 37 | ## Wie heissen die meistbenutzen POSIX Funktionen und was machen sie? 38 | ``` 39 | int open(const char* filename, int flags, int perms) 40 | ``` 41 | * flags = bitwise | of any of the following: 42 | * O_RDONLY Only read operations permitted 43 | * O_WRONLY Only write operations permitted 44 | * O_RDWR Read and Write operations both permitted 45 | * O_APPEND All writes go to end of file 46 | * ... 47 | * perms required if file is created, ignored otherwise 48 | * returns -1 for error, or integer file descriptor 49 | 50 | ``` 51 | int close(int fd) 52 | ``` 53 | * returns 0 on success, or -1 if an error occurred 54 | 55 | ``` 56 | int read(int fd, void * ptr, int numbytes) 57 | ``` 58 | 59 | * ptr address in memory where data is to be stored 60 | * numbytes number of bytes to attempt to read 61 | * returns less than zero for error, 0 for end-of-file 62 | * returns number of bytes successfully read 63 | 64 | ``` 65 | int write(int fd, void * ptr, int numbytes) 66 | ``` 67 | * ptr address in memory where data already is 68 | * numbytes number of bytes to attempt to write 69 | * returns 0 or less for error 70 | * returns number of bytes successfully written 71 | 72 | -------------------------------------------------------------------------------- /mc/11A-MC.md: -------------------------------------------------------------------------------- 1 | # ADC 2 | 3 | ## Was sind die Eigenschaften eines Analog-Digital-Wandler? 4 | * Eingangsspannung wird mit Referenzspannungen verglichen 5 | * Digitalwort nähert sich beim MSB beginnend, der Eingangsspannung an 6 | * je mehr Bits das generierte Digitalwort umfasst, um so genauer wird die Näherung sein 7 | * während der Wandlung wird die Eingangsspannung konstant gehalten (Sample & Hold) 8 | 9 | ## Wie funktioniert das Prinzip der A/D-Wandlung mittels sukzessiver Approximation? 10 | * gestartet wird beim MSB, welches auf 1 gesetzt wird 11 | * Signal wird verglichen mit dem Wert 12 | * falls Signal grösser als Wert ist, Bit auf 1 behalten, sonst Bit auf 0 setzen 13 | * zum nächsten Bit gehen 14 | 15 | ## Wie viele Kanäle besitzt der A/D-Wandler im MC9S08JM60? 16 | * 12 17 | 18 | ## Wie viele Analogsignale kann der A/D-Wandler im MC9S08JM60 gleichzeitig wandeln? 19 | * immer nur 1 Signal gleichzeitig 20 | 21 | ## Mit welcher Bit-Auflösung können Analogsignale im MC9S08JM60 eingelesen werden? 22 | * 8, 10 oder 12 23 | 24 | ## Welche Kriterien sind bei einem A/D-Wandler wichtig? 25 | * Bit-Auflösung 26 | * Geschwindigkeit 27 | * Referenzspannung 28 | 29 | -------------------------------------------------------------------------------- /mc/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /mc/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung MC 3 | subtitle: Mikrocontroller 4 | modul: TA.BA_MC.H17 5 | --- 6 | -------------------------------------------------------------------------------- /mod/01-Einfuehrung.md: -------------------------------------------------------------------------------- 1 | # Einführung 2 | 3 | ## Was gehört alles zum modellieren? 4 | * Prozessmodelle: Welche Abläufe werden durch das IT- System unterstützt? 5 | * Interaktionsmodelle & Use Cases: Wie arbeitet eine Benutzer mit dem IT-System? 6 | * Funktions- und Informationsmodelle: Welche Daten und Funktionen sind notwendig? 7 | * Sequenzdiagramme: Wie soll sich ein IT-System verhalten? 8 | 9 | -------------------------------------------------------------------------------- /mod/04-Informationsmodellierung.md: -------------------------------------------------------------------------------- 1 | # Informationsmodellierung 2 | 3 | ## Welche primitiven Datentypen biete UML? 4 | * Integer 5 | * Boolean 6 | * String 7 | 8 | ## Welche Informationen lassen sich bei einem Attribut definieren? 9 | * Sichtbarkeit 10 | * Name (Adresse) 11 | * Typ (Adresse: String) 12 | * Multiplizität (Adressen: String [1..*]) 13 | * Vorgabewert (Kontostand: Integer [= 0]) 14 | * Eigenschaftswert (Kontostand: Double {Kontostand >= Kredit}) 15 | 16 | ## Welche Sichtbarkeiten gibt es? 17 | * public (Plus-Zeichen) 18 | * protected (Raute-Zeichen) 19 | * private (Minus-Zeichen) 20 | 21 | ## Wie wird ein Klassenattribut (static) gekennzeichnet? 22 | * Unterstrichenes Attribut 23 | 24 | ## Wie wird ein Konstante gekennzeichnet? 25 | * Name nur mit Grossbuchstaben 26 | 27 | ## Wie wird eine abtrakte Methode gekennzeichnet? 28 | * Kursiv geschriebener Name 29 | 30 | ## Was ist ein abgeleitetes Attribut und wie wird es dargestellt? 31 | * von anderen Attributen abgeleitet 32 | * kann dynamisch berechnet werden 33 | * Wert eines abgeleiteten Attributs darf nicht direkt geändert werden 34 | * Kennzeichnung mit Präfix "/" 35 | 36 | ## Welche Informationen lassen sich bei einer Operation definieren? 37 | * Sichtbarkeit 38 | * Name 39 | * Parameterliste 40 | * Richtung (in, out, inout) 41 | * Name 42 | * Type (Integer, ...) 43 | * Rückgabetyp (betrag () : Integer) 44 | 45 | -------------------------------------------------------------------------------- /mod/07-Datenmodellierung.md: -------------------------------------------------------------------------------- 1 | # Datenmodellierung 2 | 3 | ## Wie sieht die Begriffhierarchie von Wissen aus? 4 | 1. Wissen (Pragmatik / Vernetzung) 5 | 2. Information (Semantik / Kontext) 6 | 3. Daten (Syntax) 7 | 4. Zeichen 8 | 9 | ## Was bedeuten die Begriffe Daten, Datenbank, ...? 10 | * Daten 11 | * Angaben über Sachverhalte und Vorgänge aufgrund bekannter oder unterstellter Abmachungen in einer maschinell verarbeitbaren Form 12 | * Datenbank 13 | * selbständige, auf Dauer und für den flexiblen und sicheren Gebrauch ausgelegte Datenorganisation 14 | * Datenmodell 15 | * Formale Beschreibung des Schemas, z. B. in Form eines Diagramms oder einer Datenstruktur 16 | * Strukturierte Darstellung der Daten der Diskurswelt mit einem formalen Beschreibungsmittel 17 | * Datenmodellierung 18 | * Prozess, der sicherstellen soll, dass eine Datenbasis zu jedem Zeitpunkt ein korrektes Abbild der Diskurswelt wiedergibt 19 | 20 | ## Welche zwei Datenmodelle werden unterschieden? 21 | * Logisches Datenmodell 22 | * Brücke zwischen Realwelt und physischen Datenmodell 23 | * Realität wird abstrahiert und in einem Modell abgebildet 24 | * Fokusiert auf die Organisation 25 | * Unabhängig von Datenbanksystem 26 | * Physisches Datenmodell 27 | * für eine bestimmte Datenbank ausgelegt 28 | * enthält Aspekte zur Speicherung und Speicheroptimierung 29 | 30 | ## Was umfasst ein Entity-Relationship-Modelle? 31 | * Entity 32 | * Gegenstand, Objekt, Entität, object 33 | * individuell erkennbares und eindeutig unterscheidbares Element 34 | * reale oder gedankliche Abstraktion eines Objektes aus der Realwelt 35 | * Entity-Set 36 | * Zusammenfassung von gleichartigen Entities 37 | * stehen für Mengen von Objekten 38 | * Attribute 39 | * Eigenschaft, attribute 40 | * charakterisiert ein Gegenstand 41 | * hat einen bestimmten Wertebereich 42 | * Relationship 43 | * Beziehung 44 | * verknüpft zwei Gegenstände 45 | * Relationship-Typ 46 | * Zusammenfassung von gleichartigen Beziehungen 47 | * Verknüpfung zweier Entity-Sets 48 | 49 | ## Was für Beziehungen gibt es zwischen Entity-Typen? 50 | > 1:1, c:1, m:1, mc:1, m:m 51 | 52 | -------------------------------------------------------------------------------- /mod/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /mod/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung MOD 3 | subtitle: Modellierung Grundlagen 4 | modul: I.BA_MOD.F1701 5 | --- 6 | -------------------------------------------------------------------------------- /pcp/01B-Imperative-Sprachen.md: -------------------------------------------------------------------------------- 1 | # Imperative Sprachen 2 | 3 | ## Was bedeutet imperare? 4 | befehlen, anordnen 5 | 6 | ## Was sind Charakteristiken der imperativen Programmierung? 7 | * Programm besteht aus Sequenz von Anweisungen 8 | * Kontrollfluss ist klar vorgegeben, grundsätzlich sequentiell 9 | 10 | ## Was sind Charakteristiken der strukturierten Programmierung? 11 | * Spezialisierung des imperativen Paradigmas 12 | * verlangt Beschränkung auf drei Kontrollstrukturen: 13 | 1. Sequenzen (Hintereinander auszuführende Programmanweisungen) 14 | 2. Auswahl (Verzweigung: Bedingung) 15 | 3. Wiederholung 16 | * Konsequenz: goto darf nicht eingesetzt werden 17 | 18 | ## Was sind Charakteristiken der prozeduralen Programmierung? 19 | * Spezialisierung des imperativen Paradigmas 20 | * bietet Unterteilung von Programmen in Teilprogramme 21 | * vermeidet Code-Duplikation 22 | * Prozeduren können Argumente entgegen nehmen und Ergebnisse zurück geben 23 | * Unterscheidung in Programm-globale und Prozedur-lokale Variablen 24 | 25 | ## Was ist eine ADT? 26 | * Abstrakte Datentyp 27 | * sind mathematische Modelle für Datenstrukturen und darauf definierte Operationen 28 | * Semantik ist vorgegeben, nicht aber Implementierung 29 | 30 | ## Was sind Beispiele für ADTs? 31 | | __Name__ | __Operationen__ | 32 | |----------|---------------------------------------| 33 | | Stack | init, push, pop, top, isEmpty | 34 | | Queue | init, add, remove, isEmpty | 35 | | Matrix | addition, mulitplication, inverse, ... | 36 | 37 | ## Worin unterschieden sich ADT in C und Java? 38 | * Implementierung der Datenstruktur ist getrennt von der dazu gehörigen Funktionen 39 | * Zusammenbringen von Daten und Operationen war Hauptmotivationen für Objektorientierung 40 | 41 | ## Um welche Konzepte erweitert Java die Sprache C? 42 | * Klassen und Instanzen: `class, extends, instanceof, new, this, super` 43 | * Interfaces: `interface, implements` 44 | * Packages: `package, import` 45 | * Sichtbarkeit: `private, protected, public` 46 | * Exception-Handling: `try, catch, finally, throw` 47 | 48 | -------------------------------------------------------------------------------- /pcp/03B-Prolog.md: -------------------------------------------------------------------------------- 1 | # Prolog 4 2 | 3 | ## Was sollte über die Beweissuche bekannt sein? 4 | * Reihenfolge von Regeln kann die Effizienz von Prozeduren verschlechtern 5 | * korrekte Lösung wird meistens trotz anderer Reihenfolge der Regeln gefunden 6 | * jedoch ist die Ausführung weniger effizient 7 | * falsch Anordnung kann zu "Out of local stack" führen 8 | * mehr Backtracking notwendig, d.h. mehr Suchen im Lösungsraum notwendig 9 | 10 | ## Wie sollten Regeln und Fakten angordnet werden? 11 | * zuerst immer einfache Dinge probieren 12 | * als erste Regel die Rekursionsbasis angeben (d.h. den einfachen Fall) 13 | * danach zuerst einfach Regeln und dann die komplizierteren 14 | 15 | ## Wie funktioniert Konjunktion in Prolog? 16 | ``` 17 | grandfather(X, Y) :- % head 18 | father(X, Z), % body, goal 1 19 | parent(Z, Y). % body, goal 2 20 | ``` 21 | 22 | ## Wie funktioniert Disjunktion in Prolog? 23 | ``` 24 | rich(tom). % fact 1 25 | nice(mary). % fact 2 26 | interesting(X) :- % rule 1 27 | rich(X); % rule 1, goal 1 OR 28 | nice(X). % rule 1, goal 2 29 | ``` 30 | 31 | ## Wie kann Einfluss auf das Backtracking genommen werden? 32 | mit dem Cut-Operator (!) 33 | 34 | ## Was bewirkt der Cut? 35 | bindet in der aktuellen Regel die Wahl aller Ziele links vom Cut-Operator 36 | 37 | ## Wie kann mit dem Cut-Operator eine Maximum-Funktion geschrieben werden? 38 | ``` 39 | max(X, Y, Z) :- X >= Y, !, X = Z. 40 | max(_X, Y, Y). 41 | ``` 42 | 43 | ## Was ist der Unterschied zwischen Green Cut und Red Cut? 44 | * Green Cut 45 | * Cuts, welche die deklarative Bedeutung von einem Prädikat nicht verändern 46 | * Typische Verwendung: Optimierung von Programmen 47 | * verändern die prozedurale Bedeutung von Programmen 48 | * indem für das Resultat unnötige Pfade beim Backtracking abgeschnitten werden 49 | * Red Cut 50 | * Cuts, welche die deklarative Bedeutung von einem Prädikat verändern 51 | * Programme sind nicht vollständig deklarativ 52 | * Programme können schwer zu lesen (und verstehen) sein 53 | * können zu subtilen Programmierfehlern führen 54 | * Red Cuts sind mit Sorgfalt zu verwenden 55 | 56 | -------------------------------------------------------------------------------- /pcp/04B-Prolog.md: -------------------------------------------------------------------------------- 1 | # Prolog 6 2 | 3 | ## Wie kann mit Prolog ein Sudoku gelöst werden? 4 | ``` 5 | :- use_module(library(clpfd)). 6 | sudoku(Rows) :- 7 | append(Rows, Vs), Vs ins 1..9, % nur Zahlen von 1 bis 9 möglich 8 | maplist(all_distinct, Rows), % Zeilen paarweise verschieden 9 | transpose(Rows, Columns), 10 | maplist(all_distinct, Columns), % Spalten paarweise verschieden 11 | Rows = [A, B, C, D, E, F, G, H, I], 12 | blocks(A, B, C), blocks(D, E, F), blocks(G, H, I), 13 | maplist(label, Rows). 14 | 15 | blocks([], [], []). 16 | blocks([A, B, C|Bs1], [D, E, F|Bs2], [G, H, I|Bs3]) :- 17 | all_distinct([A, B, C, D, E, F, G, H, I]), 18 | blocks(Bs1, Bs2, Bs3). 19 | 20 | ?- Puzzle = [ 21 | [5, 3, _, _, 7, _, _, _, _], 22 | [6, _, _, 1, 9, 5, _, _, _], 23 | [_, 9, 8, _, _, _, _, 6, _], 24 | [8, _, _, _, 6, _, _, _, 3], 25 | [4, _, _, 8, _, 3, _, _, 1], 26 | [7, _, _, _, 2, _, _, _, 6], 27 | [_, 6, _, _, _, _, 2, 8, _], 28 | [_, _, _, 4, 1, 9, _, _, _], 29 | [_, _, _, _, 8, _, _, 7, 9] 30 | ], 31 | Puzzle = [A, B, C, D, E, F, G, H, I], 32 | sudoku([A, B, C, D, E, F, G, H, I]). 33 | ``` 34 | 35 | ## Wie kann mit Prolog ein GET-Request gemacht werden? 36 | ``` 37 | ?- use_module(library(http/http_client)). 38 | ?- http_get('http://wherever.ch/test.txt', Response, []). 39 | Response = 'Foo Bar'. 40 | ``` 41 | 42 | ## Wie kann mit Prolog ein POST-Request gemacht werden? 43 | ``` 44 | ?- use_module(library(http/http_client)). 45 | ?- use_module(library(http/http_json)). 46 | ?- http_post('http://localhost:16316/test',json(['data']),Response,[]). 47 | Response = 'Foo Bar'. 48 | ``` 49 | 50 | ## Wie können in Prolog beliebige Prädikate aufgerufen werden? 51 | ``` 52 | ?- call(is_bigger, horse, X). 53 | X = dog 54 | X = sheep 55 | ``` 56 | 57 | ## Wie kann ein Prädikate auf eine Listen angewendet werden? 58 | ``` 59 | ?- maplist(sqrt, [4, 9, 16], X). 60 | X = [2.0, 3.0, 4.0]. 61 | ``` 62 | 63 | -------------------------------------------------------------------------------- /pcp/05B-Scheme.md: -------------------------------------------------------------------------------- 1 | # Scheme 2 2 | 3 | ## Welche elementare Prädikate gibt es? 4 | * `#t` (wahr, true) 5 | * `#f` (falsch, false) 6 | 7 | ## Wie wird eine AND-Verknüpfung in Scheme definiert? 8 | `(and ... )` 9 | 10 | ## Wie wird eine OR-Verknüpfung in Scheme definiert? 11 | `(or ... )` 12 | 13 | ## Wie kann in Scheme auf Boolesche Gleichheit geprüft werden? 14 | `(boolean=? )` 15 | 16 | ## Welche Prädikate gibt es für das Testen auf Zahlen 17 | ``` 18 | integer? odd? zero? real? even? exact? 19 | rational? negative? inexact? complex? positive? 20 | ``` 21 | 22 | ## Welche Prädikate gibt es für das Testen auf Basistypen? 23 | ``` 24 | boolean? symbol? pair? number? vector? 25 | char? procedure? string? null? 26 | ``` 27 | 28 | ## Welche Prädikate gibt es für das Testen auf Gleichheit? 29 | ``` 30 | eq? char=? eqv? 31 | string=? equal? null=? 32 | ``` 33 | 34 | ## Wie kann eine eigene Prädikatfunktionen definiert werden? 35 | `(define (squarenumber? num) (integer? (sqrt num)))` 36 | 37 | ## Was ist ein Symbol? 38 | * ist in Scheme eine Sequenz von Zeichen 39 | * beginnt mit einem einfachen Anführungszeichen 40 | 41 | ## Wie können zwei Symbole auf Gleichheit geprüft werden? 42 | $\texttt{symbol=? 'Hallo 'ABC}$ 43 | 44 | ## Wie wird eine Fallunterscheidung (switch) in Scheme realisiert? 45 | ``` 46 | (cond 47 | ( ) 48 | ( ) 49 | ... 50 | (else )) 51 | ``` 52 | 53 | ## Wie wird eine Selektion (if) in Scheme realisiert? 54 | `(if () )` 55 | 56 | ## Wie wird in Scheme eine Struktur definiert? 57 | `(define-struct ( ... ))` 58 | 59 | ## Wie kann eine Instanz einer Struktur erstellt werden? 60 | `(make- ...)` 61 | 62 | ## Wie kann auf die Struktur eins Objektes geprüft werden? 63 | `(? )` 64 | 65 | ## Wie kann auf ein Member einer Struktur zugegriffen werden? 66 | `(- )` 67 | 68 | ## Wie kann eine Instanz einer Struktur an einen Namen gebunden werden? 69 | `(define (make- ...))` 70 | 71 | ## Wie wird in Scheme ein Kommentar gekennzeichnet? 72 | `; Comment` 73 | 74 | -------------------------------------------------------------------------------- /pcp/07A-Scheme.md: -------------------------------------------------------------------------------- 1 | # Scheme 5 2 | 3 | ## Wie können in Scheme lokale Namen definiert werden? 4 | ``` 5 | (local (...) ) 6 | ``` 7 | 8 | ## Wie kann eine lokale Funktion zum Verdoppeln einer Liste genutzt werden? 9 | ``` 10 | (define (redouble a-list) 11 | (local ( 12 | (define (f x) (* x 2)) 13 | (define (g a-numlist) (cond 14 | [(empty? a-numlist) empty] 15 | [else (cons 16 | (f (first a-numlist)) 17 | (g (rest a-numlist)) 18 | )] 19 | )) 20 | ) (g a-list)) 21 | ) 22 | ``` 23 | 24 | ## Was bedeutet Lexikalisches Scoping? 25 | dass immer die in der Schachtelungsstruktur nächste Definition benutzt wird 26 | 27 | ## Wie kann in Scheme eine lokale Variable definiert werden? 28 | ``` 29 | (let ( 30 | ( ) 31 | ... 32 | ( ) 33 | ) ) 34 | ``` 35 | 36 | ## Wie werden lokale Variablen mit let und local definiert? 37 | ``` 38 | ; Variante 1 mit local 39 | (define (f x y z) 40 | (local ( 41 | [define p (+ x y)] 42 | [define q (+ z y)] 43 | ) (+ (sqr p) (sqr q))) 44 | ) 45 | 46 | ; Variante 2 mit let 47 | (define (f x y z) 48 | (let ( 49 | [p (+ x y)] 50 | [q (+ z y)] 51 | ) (+ (sqr p) (sqr q))) 52 | ) 53 | ``` 54 | 55 | ## Was ist bei der Auswertung von `let` zu beachten? 56 | * zuerst werden alle Expressions ausgewertet 57 | * danach werden allen den Namen zugewiesen 58 | * das heisst: Variablendefinitionen müssen unbhängig voneinander sein 59 | * Problem kann umgangen werden mit `let*` 60 | 61 | ## Was ist der Unterschied zwischen `let*` und `let`? 62 | * hat dieselbe Syntax wie `let` 63 | * Auswertung erfolgt von links nach rechts 64 | * Zugriff auf vorher definierte Variablen möglich 65 | 66 | ## Was ist die Syntax für das Anwenden eines Lambda-Ausdruck? 67 | ``` 68 | ((lambda () ) ) 69 | ``` 70 | 71 | ## Wie kann eine Quadrat- und eine Maximum-Funktion mit Lambdas definiert werden? 72 | ``` 73 | (lambda (x) (* x x)) ; Quadratfunktion 74 | (lambda (x y) (if (< x y) y x)) ; Maximum 75 | ``` 76 | 77 | -------------------------------------------------------------------------------- /pcp/09A-Java.md: -------------------------------------------------------------------------------- 1 | # Java 3 2 | 3 | ## Wie können mehrerer Strings aneinander gehängt werden? 4 | ``` 5 | String message = String.join("-", "Java", "is", "cool"); 6 | // message returned is: "Java-is-cool" 7 | ``` 8 | 9 | ## Wie wird die Klasse `StringJoiner` angewendet? 10 | ``` 11 | StringJoiner sj = new StringJoiner(":", "[", "]"); 12 | sj.add("George").add("Sally").add("Fred"); 13 | String desiredString = sj.toString(); 14 | // string returned: [George:Sally:Fred] 15 | ``` 16 | 17 | ## Welche Bequemlichkeits-Funktionalität bietet das `Comparator`-Interface? 18 | * `naturalOrder` 19 | * `reversed` 20 | * `reverseOrder` 21 | * `thenComparing` 22 | * `nullsLast` 23 | * `nullsFirst` 24 | 25 | ## Wie werden CompletableFuture angewendet? 26 | ``` 27 | public void doBlockingWait(long waitingTimeMillis) { 28 | try { 29 | Thread.sleep(waitingTimeMillis); 30 | } catch (InterruptedException ie) { 31 | // nop. 32 | } 33 | } 34 | 35 | private void doCompletableFutureDemo() { 36 | final CompletableFuture f1 = CompletableFuture.supplyAsync(() -> { 37 | doBlockingWait(3000); 38 | System.out.print("1"); 39 | return "42"; 40 | }); 41 | 42 | final CompletableFuture f2 = f1.thenApplyAsync((String s) -> { 43 | doBlockingWait(3000); 44 | System.out.print("2"); 45 | return "The answer is " + s; 46 | }); 47 | 48 | f2.thenAcceptAsync((String s) -> { 49 | doBlockingWait(3000); 50 | System.out.print(s); 51 | }); 52 | 53 | System.out.println("-> Now waiting for things to happen!"); 54 | for (int i = 0; i < 20; i++) { 55 | System.out.print("."); 56 | doBlockingWait(500); 57 | } 58 | System.out.println(); 59 | System.out.println("-> Done."); 60 | } 61 | ``` 62 | 63 | -------------------------------------------------------------------------------- /pcp/09B-Java.md: -------------------------------------------------------------------------------- 1 | # Java 4 2 | 3 | ## Was ist der Unterschied zwischen collect und reduce? 4 | * `collect` ist in vielen Fällen performanter 5 | * da viel spezifischer auf Anwendungsfall 6 | * es gibt ein Sammelsurium von vordefinierten `Collectors` 7 | 8 | ## Was ist die Charakeristik einer Filter-Operation? 9 | Kreiert eine (potentiell) kleinere Liste basierend auf Benutzer-definierten Kriterien 10 | 11 | ## Was ist die Charakeristik einer Map-Operation? 12 | Transformiert eine Liste in eine neue Liste, indem sie eine Funktion auf jedes Element anwendet 13 | 14 | ## Was ist die Charakeristik einer Fold/Reduce-Operation? 15 | Reduziert eine Liste auf einen Wert, indem sie unter Verwendung von einem Akkumulator eine Funktion nach und nach auf alle Elemente anwenden 16 | 17 | -------------------------------------------------------------------------------- /pcp/11B-Compiler.md: -------------------------------------------------------------------------------- 1 | # Compiler Bau 2 2 | 3 | ## Welche Schritte sind für die Integration in ein Java-Programm erforderlich? 4 | 1. aus Quellcode die lexikalische Analyse erstellen 5 | 2. aus der lexikalischen Analyse den Parser erstellen 6 | 3. der Parser erstellt den abstrakten Syntaxbaum 7 | 4. den abstrakten Syntaxbaum durchlaufen 8 | 5. Auswertungen vornehmen 9 | 10 | ``` 11 | // erzeugen eines CharStream – String lesen aus args[0] 12 | CharStream input = CharStreams.fromString(args[0]); 13 | // aus dem CharStream wird ein Lexer erzeugt 14 | AdamRieseLexer lexer = new AdamRieseLexer(input); 15 | // aus dem Lexer wird Token-Puffer erzeugt 16 | CommonTokenStream tokens = 17 | new CommonTokenStream(lexer); 18 | // aus dem Token-Puffer wird ein Parser erzeugt 19 | AdamRieseParser parser = new AdamRieseParser(tokens); 20 | // Beginn des parsens mit der Startregel - stmt 21 | ParseTree tree = parser.stmt(); 22 | // Ausgabe des Syntaxbaumes im LISP-Stil 23 | System.out.println(tree.toStringTree(parser)); 24 | ``` 25 | 26 | ## Wie kann eine Grammatik mit Labels verbessert werden? 27 | ``` 28 | // Definition der Grammatik AdamRiese 29 | grammar AdamRieseLabeled; 30 | 31 | // Parser-Regeln 32 | stmt : expr '=' ; 33 | 34 | expr : term # TermOnly 35 | | term ADD expr # AddOp 36 | ; 37 | 38 | term : factor # FactorOnly 39 | | factor MUL term # MulOp 40 | ; 41 | 42 | factor : number # NumberOnly 43 | | '(' expr ')' # Parens 44 | ; 45 | 46 | number : DIGIT* DIGIT ; 47 | 48 | // Lexer-Regeln 49 | ADD : '+' ; 50 | MUL : '*' ; 51 | ``` 52 | 53 | __Ergibt das von ANTLR generiertes Listener-Interface:__ 54 | ``` 55 | public interface AdamRieseLabeledVisitor extendsParseTreeVisitor { 56 | T visitStmt(AdamRieseLabeledParser.StmtContext ctx); 57 | T visitTermOnly(AdamRieseLabeledParser.TermOnlyContext ctx); 58 | T visitAddOp(AdamRieseLabeledParser.AddOpContext ctx); 59 | T visitFactorOnly(AdamRieseLabeledParser.FactorOnlyContext ctx); 60 | T visitMulOp(AdamRieseLabeledParser.MulOpContext ctx); 61 | T visitNumberOnly(AdamRieseLabeledParser.NumberOnlyContext ctx); 62 | T visitParens(AdamRieseLabeledParser.ParensContext ctx); 63 | T visitNumber(AdamRieseLabeledParser.NumberContext ctx); 64 | } 65 | ``` 66 | 67 | -------------------------------------------------------------------------------- /pcp/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /pcp/images/02A-beweissuche.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/pcp/images/02A-beweissuche.png -------------------------------------------------------------------------------- /pcp/images/11A-listeners.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/pcp/images/11A-listeners.png -------------------------------------------------------------------------------- /pcp/images/11A-visitors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chefe/summaries/78326163610731bbedad97e2d2d3b26ceb2068e2/pcp/images/11A-visitors.png -------------------------------------------------------------------------------- /pcp/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung PCP 3 | subtitle: "Programming Concepts & Paradigms" 4 | modul: I.BA_PCP.H1801 5 | --- 6 | -------------------------------------------------------------------------------- /pmb/04-Projektcontrolling.md: -------------------------------------------------------------------------------- 1 | # Projektcontrolling 2 | 3 | ## Was bedeutet Projektcontrolling? 4 | umfasst alle Aktivitäten um projektbezogene Abweichnungen 5 | zwischen dem Plan- und dem Ist-Zustand aufzudecken 6 | 7 | ## Welche Fragen müssen ständig überprüft werden beim Projektcontrolling? 8 | * Ist das Projekt in der Zeit? 9 | * Kann das Budget eingehalten werden? 10 | * Sind die nächsten Meilensteine erreichbar? 11 | * Werden Risiken frühzeitig erkannt? 12 | * Sind alle Ressourcen voll ausgelastet? 13 | * Wie gross die die Abweichungen der Schätzungen? 14 | 15 | ## Was ist die Grundlage für das Projektcontrolling? 16 | * Projektziele 17 | * Projektplan 18 | * Projektresultate / Teilresultate 19 | * Arbeitspakete 20 | 21 | ## Was ist der Unterschied zwischen relativem und absolutem Fertigstellungsgrad? 22 | * absoluter Fertigstellungsgrad 23 | * es werden nur Arbeitspaketen gezählt, die bereits vollständig abgeschlossen sind 24 | * Voraussetzung: Arbeitspakete müssen hinreichend klein sein 25 | * relativer Fertigstellungsgrad 26 | * prozentualer Anteil der Aufgabenerfüllung 27 | * Problem: fast-schon-fertig Syndrom 28 | 29 | ## Was bedeutet die Abkürzung RAS? 30 | * Restaufwand-Schätzung 31 | * So viel Aufwand werden wir absehbar noch verbrauchen 32 | 33 | ## Was gehört zu den Hauptaufgaben des Projektcontrolling? 34 | * Grund der Abweichungen evaluieren 35 | * Gegensteuern durch geeignete Massnahmen 36 | * Erfolgskontrolle der eingeleiteten Massnahmen 37 | * Anpassen der Ziele 38 | 39 | ## Welche Aufgaben gehören zum Projektcontrolling Regelkreis? 40 | * Zielsetzung 41 | * Planung 42 | * Datenerfassung 43 | * SOLL-IST-Vergleich 44 | * Abweichungsanalyse 45 | * Massnahmen definieren 46 | * Erfolgskontrolle 47 | 48 | ## Welche Hilfmittel stehen in einem agilen Projekt für das Projektcontrolling zur Verfügung? 49 | * Daily Standup / Daily Scrum 50 | * Scrum Board / Kanban-Board 51 | * Burndown Chart 52 | * definition of done in User Story 53 | * Sprint Review 54 | * Sprint Retrospektive 55 | * Sprint-Planung 56 | 57 | -------------------------------------------------------------------------------- /pmb/06-Business-Case.md: -------------------------------------------------------------------------------- 1 | # Business Case 2 | 3 | ## Was bedeutete TCO? 4 | * Total Cost of Ownership 5 | * beinhaltet Entwicklung, Wartung und Rückbau 6 | * => hat es sich am Schluss gelohnt 7 | 8 | ## Was ist ein Business Case (BC)? 9 | * Entscheidungsvorlage für Vorhaben 10 | * besteht aus 11 | * Sachliche (qualitative) Begründung 12 | * Wirtschaftliche (quantitative) Begründung 13 | * dieht zur Priorisierung eines Projektes (Projektportfolio) 14 | * Gegenüberstellung von Kosten und Nutzen 15 | 16 | ## Wie wird ein BC gegliedert? 17 | 1. Einführung und Überblick (Thematik und Zielsetzung) 18 | 2. Nutzenargumentation in Prosa, Umfang und Abgrenzung 19 | 3. Optional: Risiko- und Sensitivitätsanalyse 20 | 4. Annahmen und Methoden (Wichtigste Annahmen, Finanzkennzahlen, Kostenmodell) 21 | 5. Betriebswirtschaftliche Auswirkungen (Cash-Flow-Berechnung, Ergebnisanalyse) 22 | 6. Fazit und Zusammenfassung 23 | 24 | ## Was sind die Kriterien für eine Projektevaluation? 25 | * Erfolgs-Chancen 26 | * Potential 27 | * Alleinstellungsmerkmal 28 | * Übereinstimmung mit Firmenphilosophie / Strategie 29 | * Innovationsgrad 30 | * Nachfrage und Angebot auf dem Markt 31 | * Entwicklungsdauer, Entwicklungskosten, ... 32 | * Risikofaktoren 33 | * erwartete Rendite / Gewinn 34 | * ROI (Return of Investment) 35 | 36 | ## Was sind die Nutz- und Kostenarten von Software-Lösungen? 37 | * Nutzarten 38 | * Effizenzsteigerung / Zeit 39 | * Veringerung von Personalkosten / Geld 40 | * Fehlerverminderung 41 | * Gewinn 42 | * Fame / Anerkennung 43 | * Kostenarten 44 | * (Weiter-) Entwicklung 45 | * Wartung 46 | * Support 47 | * Schulungen 48 | * Betrieb (inkl. Hardware) 49 | * Rückbau 50 | * Infrastruktur 51 | * Lizenzen 52 | 53 | ## Was ist die Kapitalwertmethode? 54 | * Methode zur Wertbestimmung einer Investition 55 | * investiertes Kapital wird dem heutigen Wert aller Ausgaben und Erträge gegenübergestellt 56 | 57 | -------------------------------------------------------------------------------- /pmb/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /pmb/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung PMB 3 | subtitle: Project Management Basics 4 | modul: I.BA_PMB.F17 5 | --- 6 | -------------------------------------------------------------------------------- /pmre/06-Story-Mapping.md: -------------------------------------------------------------------------------- 1 | # User Story Mapping 2 | 3 | ## Was ermöglich Story Mapping? 4 | * Möglichkeit Entscheidungen über Verfeinerung und Anordnung zu treffen 5 | * effektives Plannen von Releases mit Kundennutzen 6 | * hilft zu verstehen was als nächstes ansteht 7 | * hilft die Funktionalität des Systems zu verstehen 8 | * hilft Lücken im Backlog zu identifizieren 9 | 10 | ## Welche Schritte helfen beim definieren von Akzeptanzkriterien? 11 | 1. Schlüsselwörter identifizieren 12 | 2. Schlüsselwörter in den Fragekatalog einsetzen 13 | 3. Antworten finde, prüfen und diskutieren 14 | 4. Akzeptanzkriterien definieren 15 | 5. Testfälle spezifizieren 16 | 17 | -------------------------------------------------------------------------------- /pmre/11-Erfolgsfaktoren.md: -------------------------------------------------------------------------------- 1 | # Erfolgsfaktoren 2 | 3 | ## Was sind Schlüsselfaktoren für den Projekterfolg? 4 | * Eindeutige Aufgabenverteilung 5 | * Kompetente Mitarbeiter 6 | * Realistische Erwartungen 7 | * Top-Management Unterstützung 8 | * Hohe Anwenderbeteiligung 9 | * Eindeutige Aufgabenanalyse 10 | * Saubere Plannung und Organisation 11 | * Kleinere Meilensteine 12 | * Messbare Zielvereinbarung 13 | * Zielorientiertes Projektteam 14 | 15 | -------------------------------------------------------------------------------- /pmre/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /pmre/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung PMRE 3 | subtitle: "Projektmanagement & Requirements Engineering" 4 | modul: I.BA_PMRE.F1801 5 | --- 6 | -------------------------------------------------------------------------------- /sprg/04-Injections.md: -------------------------------------------------------------------------------- 1 | # Injections 2 | 3 | ## Was ist OWASP? 4 | * Open Web Application Security Project 5 | * beschreibt häufige Probleme und Lösungen dafür 6 | * veröffentlichen regelmässig Top-10-Listen 7 | * Webapplikationen sind eines der grössten Probleme 8 | 9 | ## Was sind die Top-10 Angriffe gemäss OWASP? 10 | * Injection 11 | * Broken Authentication 12 | * Sensitive Data Exposure 13 | * XML External Entities 14 | * Broken Access Control 15 | * Security Misconfiguration 16 | * Cross-Site Scripting (XSS) 17 | * Insecure Deserialization 18 | * Using Components with Known Vulnerabilities 19 | * Insufficient Logging & Monitoring 20 | 21 | ## Was sind die häufigsten Injection-Typen? 22 | * SQL Query 23 | * OS command 24 | * LDAP query 25 | * XML / XSLT / DSL 26 | * HTML / JavaScript (XSS) 27 | 28 | ## Welche Typen von Injections gibt es? 29 | * In-Band Injection 30 | * Resultat direkt in der Antwort 31 | * Out-of-Band Injection 32 | * Resultat erst später über einen anderen Channel 33 | * beispielsweise in einem EMail 34 | * Blind injection 35 | * keine Antwort kommt zurück 36 | * durch beobachten des Verhalten Rückschlüsse ziehen 37 | * z.B. durch Verknüpfen von And-Statements und Sleep 38 | * 2nd order 39 | * einfügen von Schadcode für ein anderes System 40 | * z.B. script-Tag in Log-Files schreiben 41 | * welche dann später in einem Browser angeschaut wird 42 | 43 | ## Was sind die häufigsten Gründe, wieso eine Injection möglich ist? 44 | * Ignorieren von Best Practies 45 | * falsch konfigurierte Systeme 46 | * Berechtigungen, Sleep-Funktion 47 | * lockerer Umgang mit Benutzereingaben 48 | * Validierung, Bereinigung oder Encoding 49 | * direktes Einfügen in Queries oder OS-Commands 50 | 51 | -------------------------------------------------------------------------------- /sprg/06-XSS-und-CSRF.md: -------------------------------------------------------------------------------- 1 | # XSS und CSRF 2 | 3 | ## Aus welchen Informationen setzt sich ein HTTP-Request zusammen? 4 | * Protokoll (z.B. `https`) 5 | * Adresse (inkl. Port, z.B. `10.3.4.5:8080`) 6 | * Pfad (z.B. `index.php`) 7 | * Query-Parameters (z.B. `foo=bar&baz=baz`) 8 | * Methode (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS) 9 | * Headers (cookie, agent, content-type, ...) 10 | * Body (html, css, js, json, ...) 11 | 12 | ## Was ist CSRF? 13 | * Cross Site Request Forgery 14 | * Daten von einer manipulierten Seite an den Server schicken 15 | * funktioniert, weil Cookies automatisch mitgeschickt werden 16 | 17 | ## Wie kann CSRF verhindert werden? 18 | * `samesite`-Attribut auf Cookies verwenden 19 | * versteckten CSRF-Token für Formulare verwenden 20 | * Token wird automatisch generiert und bei Anfrage überprüft 21 | 22 | ## Was ist XSS? 23 | * Cross Site Scripting 24 | * Code in die Seite eines Nutzers einfügen z.B. mit JS 25 | * erlaubt das stehlen der User-Session 26 | * ermöglicht JS-Keylogger 27 | * ermöglicht es Dateien herunterzuladen 28 | 29 | ## Welche Arten von XSS gibt es? 30 | * Reflected XSS 31 | * gefährliches JS hat Einfluss auf Response 32 | * Persisten Or Stored XSS 33 | * gefährliches JS wird aus dem Speicher gelesen 34 | * wird später im Browser ausgeführt 35 | * Source-Based XSS 36 | * gefährliches JS wird auf dem Server eingefügt 37 | * DOM-Based XSS 38 | * JS wird durch DOM-Manipulation auf dem Client eingefügt 39 | 40 | ## Wie können XSS-Attacken erschwert werden? 41 | * Validieren, encodieren und bereinigen von Eingaben 42 | * Ausgabe escapen (durch Framework) 43 | * Content-Security-Policy 44 | 45 | -------------------------------------------------------------------------------- /sprg/10-Sichere-Requirements.md: -------------------------------------------------------------------------------- 1 | # Sichere Requirements 2 | 3 | ## Was ist ein Attack Tree? 4 | * Baum von Attacken, um ein Ziel zu erreichen 5 | * Kennzeichnung von UND / ODER Beziehung zwischen Knoten 6 | * bei UND werden die Kosten aller Kinder summiert 7 | * bei ODER werden die Kosten des billigsten Kindes verwendet 8 | 9 | ## Was sind die Eigenschaften eines Knoten in einem Attack Tree? 10 | * möglich / unmöglich 11 | * Kosten (Ressourcen / Zeit) für die Attacke 12 | * Kosten (Ressourcen / Zeit) für die Verteidigung 13 | * Wahrscheinlichkeit für einen erfolgreichen Angriff 14 | * Wahrscheinlichkeit, dass der Angreifer diese Attacke auswählt 15 | 16 | ## Wieso erstellt man einen Attack Tree? 17 | Um anhand der Knoten Gegenmassnahmen zu definieren 18 | 19 | ## Welche vier Komponenten gehören zu einem Use-Case Diagramm? 20 | * Aktoren 21 | * Systeme (mit Systemgrenzen) 22 | * Anwendungsfälle 23 | * Beziehungen zwischen den Elementen 24 | 25 | ## Was ist der Unterschied zwischen Use-Case und User-Story? 26 | * Use Case 27 | * sind grösser und beinhalten mehr Kontext-Informationen 28 | * werden gebraucht um die Funktionalität zu definieren und zu dokumentieren 29 | * Use Story 30 | * im Rahmen von Scrum sehr verbreitet 31 | * "As a `` I want `` so that ``" 32 | * werden zerkleinert, bis sie implementiert werden können 33 | * werden detailierter beschrieben als Use-Cases 34 | 35 | ## Was ist ein MUC? 36 | * misuse-case 37 | * beschreibt einen Anwendungsfall der nicht eintreffen sollte 38 | 39 | ## Wie wird ein Misuse-Case beschrieben? 40 | * Misuse case name 41 | * Misuser profile 42 | * Description 43 | * Basic path 44 | * Alternative paths 45 | * Triggers 46 | * Assumptions 47 | * Mitigation 48 | 49 | -------------------------------------------------------------------------------- /sprg/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /sprg/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung SPRG 3 | subtitle: Sicheres Programmieren 4 | modul: I.BA_SPRG_MM.F1902 5 | --- 6 | -------------------------------------------------------------------------------- /swat/01-Architektur-und-Design.md: -------------------------------------------------------------------------------- 1 | # Architektur und Design 2 | 3 | ## Was ist eine Architektur? 4 | * Source-Code ist Abbildung von Software-Architektur 5 | * die Architektur verändert sich mit jedem Tag 6 | * muss jeden Tag gepflegt werden 7 | 8 | ## Wer ist ein Software Architekt? 9 | * jeder Entwickler ist zu einem gewissen Grad ein Architekt 10 | * muss im Code arbeiten (kann das System verändern) 11 | 12 | ## Was sind agilen Prinzipien? 13 | * Kunde glücklich machen und regelmässig Software ausliefern 14 | * täglicher Austausch während dem Projekt 15 | * Vertrauen in motivierte Mitarbeiter 16 | * funktionierende Software als zentraler Massstab 17 | * regelmässige technische Verbesserungen und gutes Design 18 | * Einfachheit (je weniger Arbeit desto besser) 19 | * das beste Design entsteht aus selbst organisierenden Teams 20 | 21 | ## Was muss bei Architektur unterschieden werden? 22 | * Architektur machen (Prozess) 23 | * Architektur haben (Resultat) 24 | 25 | ## Welche guten Design-Prinzipen gibt es? 26 | * KISS -- Keep It Simple Stupid 27 | * DRY -- Don't Repeat Yourself 28 | * YAGNI -- You Aren't Gonna Need It 29 | * SOLID 30 | 31 | ## Welche Prinzipien gehören zu SOLID? 32 | * __S__ -- Single Responsibility Principle 33 | * __O__ -- Open Close Principle 34 | * __L__ -- Liskov Substitution Principle 35 | * __I__ -- Interface Segregation Principle 36 | * __D__ -- Dependency Inversion Principle 37 | 38 | ## Welche Dinge sollte man als Entwickler vermeiden? 39 | * Spaghetti-Code 40 | * grosse Klassen / grosse Methoden 41 | * keine automatisierten Tests 42 | * kein automatisiertes Build-System 43 | * Singleton 44 | * Nullwerte zurückgeben 45 | * DTO (data transfer objects) 46 | 47 | -------------------------------------------------------------------------------- /swat/03-Agile-Architektur.md: -------------------------------------------------------------------------------- 1 | # Agile Architektur 2 | 3 | ## Was sind Agile Architekturprinzipien? 4 | * Design entwickelt sich weiter 5 | * Architekur ist immer eine Zusammenarbeit 6 | * je grösser das System, desto länger die Vorbereitung 7 | * immer die einfachste funktionierende Architekur benutzen 8 | * bei Zweifel einen kleinen Prototyp (Code oder Papier) machen 9 | * Software kompilieren, Testen und Ausführen 10 | * es gibt kein Monopol auf Ideen 11 | * Entscheidungen zur rechten Zeit treffen 12 | * evolutionäres Design 13 | 14 | ## Was sind die Auswirkungen einer agilen Architektur? 15 | * funktionierende Software ist wichtiger als umfassende Dokumentation 16 | * Änderungen annehmen, anstelle einem starken Plan folgen 17 | * persönlicher Austausch ist wichtiger als Tools und Prozesse 18 | * die beste Architektur entwickelt sich mit der Zeit 19 | * häufig reflektieren und anpassen 20 | * gute technische Kenntnisse 21 | * das einfach vorziehen 22 | 23 | ## Was sind die Aufgaben eines Architekten? 24 | * technische Führung 25 | * muss sich gut mit der Technologie auskennen 26 | * braucht Erfahrung 27 | * muss Code schreiben 28 | * Stakeholder verstehen 29 | * muss das Big-Picture im Kopf haben 30 | * muss mit den Stakeholder sprechen 31 | * PO unterstützen 32 | * Team-Coaching 33 | * Koordination im Team 34 | * Pair-Programming 35 | * Mitarbeiter ausbilden 36 | 37 | -------------------------------------------------------------------------------- /swat/04-Agile-Vorgehensweise.md: -------------------------------------------------------------------------------- 1 | # Agile Vorgehensweise 2 | 3 | ## Was ist die Rolle eines Architekt in der agilen Welt? 4 | * Coach, Mentor, Lehrer 5 | * Technologie-Experte 6 | * Domänen-Experte 7 | * Vermittler zwischen Stakeholder 8 | 9 | ## Was sind agilen Design Prinzipien? 10 | * einfaches Design 11 | * Architektur entwickelt sich 12 | * einfache Architektur funktioniert 13 | * Hexagonales Vorgehen 14 | * einfaches Refactoring 15 | 16 | ## Was sind agile Architektur Techniken? 17 | * Continuous integration, delivery and deployment 18 | * Agilität impliziert Automatisierung 19 | * golden trunk -- Einfluss von Git 20 | * Potentially shippable product (feature toggle, no Undone work) 21 | * Clean architecture, clean code, clean coder 22 | 23 | ## Was definiert Scrum? 24 | * sagt nicht über technische Aspekte aus 25 | * fördert Releaseplanung, Vision, Roadmap 26 | * Outcome over Output 27 | * fördern von eXtreme Programming Techniken 28 | * lernen im Team durch kontinuierliche Entwicklung 29 | * Scrum Alliance arbeitet mit LESS 30 | 31 | ## Welche Praktiken fördert XP? 32 | * Pair Programming 33 | * Test Driven Development 34 | * Continuous Integration 35 | * Refactoring 36 | * Coding Standards 37 | * Collective Code Ownership 38 | * Simple Design 39 | * System Metaphor 40 | 41 | -------------------------------------------------------------------------------- /swat/05-Refactoring.md: -------------------------------------------------------------------------------- 1 | # Refactoring 2 | 3 | ## Was ist Refactoring? 4 | * Umstrukturieren des Code, ohne Verhalten zu ändern 5 | * Verhalten der Software darf keinesfalls verändert werden 6 | * durch kleine, nachvollziehbar Änderungen das System verbessern 7 | * kontinuierliches Verbessern und Überarbeiten der Software 8 | 9 | ## Was ist das Ziel eines Refactoring? 10 | Code sollte einfacher/wartbarer werden als vorher 11 | 12 | ## Wer und was sollte überarbeitet werden? 13 | * _Wer_: jeder Entwickler 14 | * _Wann_: ständig 15 | * _Was_: neuer und frisch geänderter Code 16 | 17 | ## Was sind häufige Irrglauben über Refactoring? 18 | * es muss für ein Refactoring gefragt werden 19 | * es braucht ein Backlog-Item für Refactoring 20 | 21 | ## Was sind einfache Refactorings? 22 | * Code formatieren gemäss Coding-Guidelines (automatisch durch Tool) 23 | * Umbenennung von Methoden und Variablen 24 | * Import-Statements korrigieren 25 | * kommentierter Code löschen 26 | * TODO, FIXME Kommentare löschen 27 | * leeren Methoden finden und löschen 28 | * leeren Catch-Blöcke finden 29 | 30 | ## Wieso ist eine gewisse Code-Abdeckung notwendig? 31 | * dient als Sicherheitsnetz beim Refactoring 32 | * mindestens 60% Abdeckung ist eine Voraussetzung 33 | * setzt TDD und ATDD voraus 34 | 35 | ## Was sind Beispiele für Refactorings in Java? 36 | * keine öffentlichen Felder 37 | * keine Parameter als lokale Variablen benutzten 38 | * niemals null zurückgeben 39 | * Klassen und Exceptions der Standardbibliothek verwenden 40 | * Private Methoden für komplexe Bedingungen 41 | * Schleifen durch Streams ersetzen 42 | * Bedingungen mit Filter ersetzten 43 | * Nicht-veränderbare Klassen vorziehen 44 | 45 | ## Welche Länge sollte ein Feature bzw. eine Story haben? 46 | * __Feature:__ nicht länger als 2 Monate 47 | * __Story:__ nicht länger als 1 Woche 48 | 49 | -------------------------------------------------------------------------------- /swat/06-Errors-Vulnerabilities-Smells.md: -------------------------------------------------------------------------------- 1 | # Errors, Vulnerabilities, Smells 2 | 3 | ## Welche Fehler können statische Checks finden? 4 | * __Bugs:__ es kommt sehr wahrscheinlich zu einem Fehler 5 | * __Errors:__ es kann zu einem Fehler kommt 6 | * __Vulnerabilities:__ es kann gehackt werden 7 | * __Smells:__ es kostet für die Wartung, subtile Unschönheit 8 | 9 | ## Welche Tools helfen beim Finden von Bugs in Java Code? 10 | * Jacoco -- Java Code Coverage 11 | * SpotBugs -- statische Analyse für Bugs 12 | * SonarLint / SonarQube -- Qualitätsanalyse 13 | * Checkstyle -- statische Analyse für Code-Style 14 | * PMD -- statische Code Analyse 15 | 16 | ## Wie heissen die wichtigsten Kategorien von OWASP? 17 | * Injection 18 | * Broken Authentication 19 | * Sensitive Data Exposure 20 | * XML External Entities XEE 21 | * Broken Access Control 22 | * Security Misconfiguration 23 | * Cross Site Scripting XSS 24 | * Insecure Deserialization 25 | * Using Components with known vulnerabilities 26 | * Insufficient Logging and Monitoring 27 | 28 | ## Was sind die Vorteile von Tools für das Refactoring? 29 | * benutzen um den Code zu verbessern 30 | * sind schnell, billig und brauchen keinen Experten 31 | * können nur Probleme finde, aber sagen nicht das es funktioniert 32 | 33 | ## Was sind die Ziele von Clean Code? 34 | * Keine Compiler-Fehler 35 | * Keine Compiler-Warnings 36 | * Keine Errors, Vulnerabilities oder Smells 37 | * Code Coverage sollte höher als 60% sein 38 | * für jeden Bug zuerst einen Test schreiben, der ihn reproduziert 39 | 40 | ## Welche zwei Möglichkeiten gibt es für ein Coding-Dojo? 41 | * Kata 42 | * gleiche Übung wiederholen 43 | * versuchen immer schneller und besser zu werden 44 | * Randori 45 | * eine Aufgabe wird im Team gelöst 46 | * Driver + Navigaitor, Team unterstützt 47 | 48 | ## Was muss bei den Tests und den Checks beachtet werden? 49 | * müssen bei jedem Commit getriggert werden 50 | * müssen automatisch mit CI/CD ausgeführt werden 51 | * wenn nicht erfüllt, muss der Build gesperrt werden 52 | 53 | -------------------------------------------------------------------------------- /swat/07-Architektur-von-Komponenten.md: -------------------------------------------------------------------------------- 1 | # Architektur von Komponeneten 2 | 3 | ## Was ist das Ziel von Software Architektur? 4 | Kostenoptimierung, aber nicht kurzfristig sparen, 5 | sondern langfristig gute Qualität liefern 6 | 7 | ## Für was steht die Abkürzung NIH? 8 | Not Invented Here 9 | 10 | ## Für was steht die Abkürzung RAD? 11 | Rapid application developement 12 | 13 | ## Welche Design Patterns gibt es gemäss der Gang of Four? 14 | * __Creational__ 15 | * Abstract Factory, Builder, Factory Method, Prototype, Singleton 16 | * __Structural__ 17 | * Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy 18 | * __Behavioral__ 19 | * Chain of Responsability, Command, Interpreter, Iterator, Mediator 20 | * Memento, Observer, State, Strategy, Template Method, Visitor 21 | 22 | ## Welche Objekte gibt es bei einem Domain Driven Design? 23 | * __Entities__ -- Objekte haben eine Identität (z.B. Person, Firma) 24 | * __Value Objects__ -- Objekte ohne Identität (z.B. Adresse, Telefonnummer) 25 | * __Aggregates__ -- Kombinieren Entities und Value Objects 26 | * __Repositories__ -- Speichern Entities und Value Objects 27 | * __Factories__ -- Erstellen Entities und Value Objects 28 | * __Services__ -- Geschäftsoperationen die nicht zu einem Objekt gehören 29 | 30 | ## Was ist der Unterschied zwischen Event und Command? 31 | * __Event__ -- Etwas hat sich im System verändert (z.B. `OrderPlaced`) 32 | * __Command__ -- Objekt wird zu Command-Handler geschickt (z.B. `PlaceOrder`) 33 | 34 | -------------------------------------------------------------------------------- /swat/08-Quality-Attributes.md: -------------------------------------------------------------------------------- 1 | # Quality Abttributes 2 | 3 | ## Was bedeuten die Begriffe attitude und aptitude? 4 | * __attitude:__ wie man ein Problem angeht (Vorgehen) 5 | * __aptitude:__ was man kann (Fähigkeiten/Begabung) 6 | 7 | ## Welche Charakeristiken hat ein agiles Vorgehen? 8 | * Änderungen sollten einfach sein 9 | * Probleme fixen die entdeckt werden (Feedback-Cycle) 10 | * nicht über die Zukunft spekulieren 11 | * es gibt immer Dinge, die nicht funktionieren 12 | * immer mit kleinen Team arbeiten 13 | 14 | ## Wie sollten Stories formuliert werden? 15 | * As [role] I can [function] so that [rationale] 16 | * beschreiben der Stories gemäss INVEST 17 | * sollten Akzeptanz-Kriterien beinhalten 18 | 19 | ## Was bezeichnet die Abkürzung ATDD? 20 | Acceptance Test Driven Development 21 | 22 | ## Was sind Bereiche in denen oft über Architektur diskutiert wird? 23 | * Persistenz 24 | * Verbindung zwischen UI und Daten 25 | * Kommunikation zwischen Teilen des Systems 26 | * Skalierung (mehrere Threads, Prozesse, Maschinen) 27 | * Sicherheit (Authentifizierung, Autorisierung) 28 | * Journaling (Nachvollziehbarkeit) 29 | * Reporting 30 | * Daten migrieren (importieren / exportieren) 31 | * Releasbarkeit 32 | * Rückwärtskompatibilität 33 | * Antwortzeiten 34 | * Daten archivieren 35 | 36 | ## Welche Quality Attributes sollten beachtet werden? 37 | * Loose Coupling 38 | * High Cohesion 39 | * Design for Change 40 | * Separation of Concerns 41 | * Information Hiding 42 | * Abstraction 43 | * Modularity 44 | * Traceability 45 | * Self documenting 46 | * Incremental design 47 | 48 | ## Was sind die Ziele von Architektur? 49 | * Komplexität reduzieren 50 | * Änderbarkeit verbessern 51 | * parallele Entwicklung ermöglichen 52 | 53 | ## Wie können diese Ziele erreicht werden? 54 | * Spikes 55 | * eigene Erfahrung oder Experten fragen 56 | * Wissen aus bestehendem Code 57 | * Kopieren, Anpassen, Verändern, Verbessern von Code 58 | * Refactoring 59 | * Kollektives Wissen nutzen 60 | 61 | -------------------------------------------------------------------------------- /swat/12-Dokumentation.md: -------------------------------------------------------------------------------- 1 | # Dokumentation 2 | 3 | ## Welche allgemein gültigen Regeln gelten beim Dokumentieren? 4 | * der Code ist die Dokumentation 5 | * Dokumentation und Code zu Synchronisieren ist aufwändig 6 | * Dokumentation gehört in eine Versionsverwaltung 7 | * mehr Dokumentation = mehr Fehler 8 | * keiner liest ein Manual 9 | 10 | ## Welche Eigenschaften sollte eine Architektur-Dokumentation erfüllen? 11 | * ist kommunikativ gegenüber dem Leser 12 | * erklärt das System 13 | * verzichtet auf zu viele verschiedenen Notation 14 | * beschreibt die Einschränkungen des Systems 15 | * teilt kritische Informationen mit 16 | * stellt Einfachheit über Raffinesse 17 | 18 | ## Was ist bei der Dokumentation eines Domain Driven Design wichtig? 19 | * sinvoll sind kleine Modelle mit Erklärungen, Event-Diagramme 20 | * Nachvollziehbarkeit zwischen Code, Akzeptanz-Test und Anforderungen 21 | 22 | ## Was ist ein ADR? 23 | * Architectural Design Record 24 | * Dokumentierte Architektur-Entscheidungen mit Kontext und Beschreibung 25 | * umfasst eine History aller Architektur-Entscheidungen 26 | 27 | ## Was und wie sollte dokumentiert werden? 28 | * stabile Konzepte dokumentieren 29 | * Dokumentation einfach halten, aber nicht zu einfach 30 | * möglichst wenig Überlappungen zwischen Dokumentation 31 | * Informationen öffentlich anzeigen 32 | 33 | ## Was sind die Gedanken hinter Akzeptanz-Tests? 34 | * Jede Story und jede Anforderung sollte ein Akzeptanz-Kriterium haben 35 | * diese Kriterien werden durch Akzeptanz-Tests überprüft 36 | * ein Akzeptanz-Test ist eine ausführbare Spezifikation und immer aktuell 37 | * Nachvollziebarkeit muss gegeben sein 38 | 39 | ## Wie sollte mit Konfigurationen umgegangen werden? 40 | * sollte gleich behandelt werden wie Code 41 | * muss in einer Versionsverwaltung abgelegt werden 42 | * Nachvollziebarkeit muss gegeben sein 43 | 44 | -------------------------------------------------------------------------------- /swat/13-Architektur-Trends-1.md: -------------------------------------------------------------------------------- 1 | # Architektur Trends 1 2 | 3 | ## Gehören Architektur und Technologie zusammen? 4 | * Architektur ist von der gewählten Technologie abhängig 5 | * nicht alle Aspekte von Architektur haben mit Technologie zu tun 6 | 7 | ## Was sind aktuelle Architektur Trends? 8 | * Domain Driven Development 9 | * Hexagonal or Onion Architecture 10 | * Micro Service Architecture 11 | 12 | ## Was ist bei Domain Driven Development zu beachten? 13 | * Bounded Domains identifizieren 14 | * Definition eines Shared Kernel 15 | * klare Trennung über Interfaces 16 | 17 | ## Was hilft bei der funktionalen Programmierung? 18 | * verwenden von immutable Objects 19 | * Entities sollten eine unveränderliche Identität haben 20 | * Value Objects sollte unveränderlich sein 21 | 22 | ## Welche Denkfehler unterlaufen häufig bei der Verwendung von Micro-Services? 23 | * das Netzwerk ist zuverlässig 24 | * die Latenz ist gleich null 25 | * die Bandbreite ist unendlich gross 26 | * das Netzwerk ist sicher 27 | * die Topologie ändert sich nicht 28 | * es gibt nur einen Administrator 29 | * Datenverbindungen kostet nicht 30 | * das Netzwerk ist homogen 31 | 32 | ## Was bezeichnet die Abkürzung ELK? 33 | * Elasticsearch Logstash Kibana 34 | * erlaubt das Sammeln und Auswerten von grossen Log-Mengen 35 | 36 | ## Wie sollte bei einem neuen Projekt vorgegangen werden? 37 | * zuerst das Business-Problem verstehen, dann Architektur festlegen 38 | * je wiederverwendbarer, desto weniger nützlich 39 | * kommerzielle Produkte vermeiden, wenn man agil sein möchte 40 | * lieber duplizieren, als die Kopplung zu erhöhen 41 | * mit einem Monolith beginnen, weil einfacher und weniger komplex 42 | 43 | -------------------------------------------------------------------------------- /swat/14-Architektur-Trends-2.md: -------------------------------------------------------------------------------- 1 | # Architektur Trends 2 2 | 3 | ## Je kleiner das Stück, umso ... 4 | * besser wird die Architektur 5 | * schwieriger wird das Debugging, Logging und Monitoring 6 | 7 | ## Was sind weitere Architektur-Trends? 8 | * Lambda Funktionen 9 | * reaktive Systeme 10 | * GraphQL 11 | * API-Mesh 12 | * Event Sourcing 13 | 14 | ## Welche Punkte müssen bei diesen Trends speziell beachtet werden? 15 | Security, Monitoring, Logging, Auditing 16 | 17 | -------------------------------------------------------------------------------- /swat/15-Team-und-Rollen-eines-Architekten.md: -------------------------------------------------------------------------------- 1 | # Team und Rollen eines Architeken 2 | 3 | ## Welche Werte werden durch Scrum gefördert? 4 | Courage, Respect, Commitment, Focus, Openness 5 | 6 | ## Was sind die verschiedenen Rollen eines Architekten? 7 | * Agile-Lean Practitioner (agile Praktiken und Vorgehen vorleben) 8 | * Teaching (Wissen, Fähigkeiten und Perspektiven anderen näher bringen) 9 | * Mentoring (Wissen, Fähigkeiten, ... einer spezifischen Person weiter bringen) 10 | * Technical Mastery (technische Kenntnisse über Softwarentwicklung) 11 | * Business Mastery (Kenntnisse über das Geschäft und dessen Umfeld) 12 | * Transformation Mastery (Kenntnisse über die Organisation und Änderungen) 13 | * Facilitation (durch den Prozess führen und bei Entscheidungen helfen) 14 | * Professional Coaching (Personen persönlich und beruflich weiterbringen) 15 | 16 | ## Was sind die häufigsten Fehler bei der Softwareentwicklung? 17 | * den Anforderungen glauben 18 | * Funktionalität über Qualität stellen 19 | * glauben alles alleine machen zu können 20 | * keinen Backup-Plan haben 21 | * zu wenig auf Sicherheit achten 22 | * voreingenommene Technologie-Entscheidungen 23 | 24 | ## Welche Möglichkeiten gibt es ein Geschäft zu führen? 25 | * __Control__ -- Company oriented, Reality oriented 26 | * __Competence__ -- Company oriented, Possibilty oriented 27 | * __Collaboration__ -- People oriented, Reality oriented 28 | * __Cultivation__ -- People oriented, Possibilty oriented 29 | 30 | ## Welche Punkte werden im Manifesto for Agile HR Development genannt? 31 | * Collaborative networks over hierarchical structures 32 | * Transparency over secrecy 33 | * Adaptability over prescriptiveness 34 | * Inspiration and engagement over management and retention 35 | * Intrinsic motivation over extrinsic rewards 36 | * Ambition over obligation 37 | * Customer Centric instead of Plan Centric 38 | * Small Teams instead of Departments 39 | * Network Connections instead of Hierarchical Organizations 40 | 41 | -------------------------------------------------------------------------------- /swat/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /swat/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung SWAT 3 | subtitle: "Software Architecture & Techniques" 4 | modul: I.BA_SWAT_MM.F1901 5 | --- 6 | -------------------------------------------------------------------------------- /vsk/03B-EP.md: -------------------------------------------------------------------------------- 1 | # Buildautomatisation 2 | 3 | ## Was sind die Vor- un Nachteile von Build-Scripts? 4 | * Vorteile: 5 | * automatisierter Ablauf, keine Interaktion mehr 6 | * reproduzierbare Ergebnisse 7 | * lange Builds können z.B. über Nacht laufen 8 | * unabhängig von Entwicklungsumgebung 9 | * Nachteile: 10 | * eher sturer, unflexibler Ablauf 11 | * Abhängigkeit von Shell und Plattform 12 | * aufwändige Wartung und Erweiterung 13 | 14 | * eigenständiges, spezialisiertes Werkzeug 15 | * optimiert für die typischen Build-Aufgaben 16 | * Aufruf von Kompiler, Packer, Tests, Deploying 17 | * vereinfachter Umgang mit Ressourcen 18 | * Abhängigkeiten zwischen Dateien überprüfen und steuern 19 | * logische Abfolge und Abhängigkeiten zwischen Aufgaben 20 | * Plattformübergreifend lauffähig 21 | 22 | ## Wie heissen bekannte Build Werkzeuge für Java? 23 | * Ant -- altes und bewährtes Werkzeug, Java mit XML 24 | * Maven -- populäres, etabliertes Werkzeug, Java mit XML 25 | * Buildr -- junges Werkzeug, Ruby-Script 26 | * Gradle -- populäres, junges Werkzeug, Groovy-Script mit DSL 27 | * Bazel -- Buildwerkzeug von Google, Java mit Python-like Scripts 28 | 29 | ## Wa sind diw wichtigsten Phasen im "lifecycle" von Apache Maven? 30 | * validate -- Validiert die Projektdefinition 31 | * compile -- Kompliation der Quellen 32 | * test -- Ausführen der Unit-Tests 33 | * package -- Packen der Distribution (JAR) 34 | * verify -- Ausführen der Integrations-Tests 35 | * install -- Deployment im lokalen Repository 36 | * deploy -- Deployment im zentralen Repository 37 | 38 | -------------------------------------------------------------------------------- /vsk/03C-EP.md: -------------------------------------------------------------------------------- 1 | # Dependency Management 2 | 3 | ## Wie heissen einige populäre Systeme für Dependency Management? 4 | * NuGet -- Package Manager für .NET-Plattform 5 | * apt -- Advanced Packaging Tool, Packetverwaltung für Linux 6 | * yum -- Yellowdog Updater, Packetverwaltung Linux 7 | * npm -- Node Package Manager für JavaScript 8 | * gem -- Packetmanager für Ruby 9 | 10 | ## Welche drei Attribute identifizieren bei Maven ein Abhängigkeit? 11 | * GroupId: 12 | * meistens zusammengesetzt aus dem "reverse domain name" 13 | * Beispiel: ch.hslu.vsk 14 | * ArtifactId: 15 | * entspricht häufig dem Namen des Projektes 16 | * Beispiel: stringpersistor-api 17 | * Version: 18 | * empfohlen wir eine dreistellige Versionsnummer 19 | * Beispiel: 4.0.0 20 | 21 | -------------------------------------------------------------------------------- /vsk/04B-KO.md: -------------------------------------------------------------------------------- 1 | # Modularisierung 2 | 3 | ## Was ist der Zusammenhang zwischen Kopplung und Kohäsion? 4 | * Kopplung (Coupling): 5 | * Ausmass der Kommunikation zwischen Modulen 6 | * beschreibt Unabhängigkeit der einzelnen Module 7 | * Ziel: Minimiere die Kopplung! 8 | * Kohäsion (Cohesion): 9 | * Ausmass der Kommunikation innerhalb eines Moduls 10 | * beschreibt interner Zusammenhalt innerhalb eines Moduls 11 | * Ziel: Maximiere die Kohäsion! 12 | 13 | ## Welche Arten von Modulen gibt es? 14 | * Bibliotheken 15 | * Sammlung von oft benötigte und thematisch zusammengehören Funktionen 16 | * abstrakte Datentypen 17 | * implementiert einen Datentyp und stellt Operationen zur Verfügung 18 | * Modellierung physischer Systeme 19 | * insbesondere in technischen Anwendungen der Informatik 20 | * Modellierung logisch-konzeptionelle Systeme 21 | * Systeme modellieren und für andere Komponenten nutzbar machen 22 | 23 | ## Was sind die wichtige Kriterien für einen modularen Entwurf? 24 | * Zerlegbarkeit 25 | * Teilprobleme sind unabhängig voneinander entwerfbar 26 | * Kombinierbarkeit 27 | * Module sind unabhängig voneinander (wieder-)verwendbar 28 | * Verständlichkeit 29 | * Module sind unabhängig voneinander zu verstehen 30 | * Stetigkeit 31 | * kleine Änderungen der Spezifikation führen nur zu kleinen Code-Änderungen 32 | 33 | ## Was sind die Prinzipien des modularen Entwurf? 34 | * lose Kopplung 35 | * schmale Schnittstellen, nur das wirklich benötigte austauschen 36 | * starke Kohäsion 37 | * hoher Zusammenhalt innerhalb eines Moduls 38 | * Information Hiding 39 | * Modul ist nach aussen nur über seine Schnittstelle bekannt 40 | * wenige Schnittstellen 41 | * zentrale Struktur, minimale Anzahl Schnittstellen (Aufrufe, Daten) 42 | * explizite Schnittstellen 43 | * Aufrufe und gemeinsam genutzte Daten sind im Code ersichtlich 44 | 45 | -------------------------------------------------------------------------------- /vsk/06A-VS.md: -------------------------------------------------------------------------------- 1 | # Message Passing 2 | 3 | ## Was sind die Kriterien für ein gutes Kommuniktaions-Design? 4 | * asynchron / synchron 5 | * verlässlich / nicht verlässlich 6 | * Reihenfolge garantiert oder nicht 7 | 8 | ## Welche Sende- und Empfangsarten sind dabei möglich? 9 | * one-to-one (unicast) 10 | * one-to-many (multicast or broadcast) 11 | * many-to-one (client–server) 12 | * many-to-many (all-to-all) 13 | 14 | ## Welche Kommunikationsarten gibt es? 15 | * Persistente Kommunikation 16 | * Nachricht wird solange gespeichert bis Empfänger bereit ist 17 | * Beispiel: E-Mail 18 | * Transiente Kommunikation 19 | * Nachricht wird gespeichert, solange Sender und Empfänger laufen 20 | * Beispiel: Router, Socket 21 | * Asynchrone Kommunikation: 22 | * Sender wird unmittelbar nach der Übertragung fortgesetzt 23 | * Beispiel: E-Mail, Diskussionsforum 24 | * Synchrone Kommunikation: 25 | * Sender wird blockiert bis die Nachricht übermittelt wurde 26 | * Beispiel: Telefonie, Instant Messaging, Internet-Videokonferenz 27 | 28 | ## Was sind die Unterschiede zwischen fixen und adaptiven Protokollen? 29 | * fixe Protokolle 30 | * die Menge der möglichen Kennungen (IDs) sind vor der Kommunikation bekannt 31 | * die möglichen Argumente (Anzahl und Typ) sind vor der Kommunikation bekannt 32 | * es gibt keine Änderungen während der Kommunikation 33 | * adaptive Protokolle 34 | * können während der Laufzeit ändern 35 | * Anzahl Arguement kann sich ändern 36 | * Argumenttypen können sich ändern 37 | * der Nachrichtentyp kann ändern 38 | 39 | -------------------------------------------------------------------------------- /vsk/07B-EP.md: -------------------------------------------------------------------------------- 1 | # Test Doubles 2 | 3 | ## Welche Arten von Test Doubles gibt es? 4 | * Dummy 5 | * sehr primitive und häufig leere Ersatz-Implementation 6 | * dient zur funktionslosen Entkopplung von unerwünschten Abhängigkeiten 7 | * Stub 8 | * einfache Implementation 9 | * liefert mit möglichst geringem Aufwand sinnvolle, vordefinierte Werte 10 | * Spy 11 | * Alternative Implementation 12 | * liefert dynamische Werte zurück 13 | * merkt sich die Aufrufe der Methoden 14 | * aufgezeichneten Ereignisse können für die Verifikation benutzt werden 15 | * Mock 16 | * Spezialisierung des Spy 17 | * liefert dynamische Werte zurück 18 | * kann die korrekte Interaktion selber verifizieren 19 | * werden typisch mit Hilfe von speziellen Mock-Frameworks erstellt 20 | * werden meistens für jeden Testafll einzeln erstellt 21 | * Verhalten wird dynamisch programmatisch konfiguriert 22 | * Fake 23 | * Alternative Implementation 24 | * kann die Komponente mit vernünftigem Aufwand vollständig ersetzen 25 | * ermöglicht die vollständige Entkopplung von einer Abhängigkeit 26 | * Aufwand für Erstellung muss in vernünftigem Verhältnis zum Nutzen sein 27 | 28 | ## Wann setzt man welchen Test Double ein? 29 | * Dummy und Stub: 30 | * einfache Ersatzimplementationen um eine bessere Testisolation erreichen 31 | * mit geringem Aufwand eine höhere Selektivität und Stabilität 32 | * Spy und Mock: 33 | * Universalwaffen für Behavior-Testing mit Hilfe von Mocking-Frameworks 34 | * diese können auch zur Realisierung von Stubs und Dummys genutzt werden 35 | * Fake: 36 | * eher aufwändige Implementation 37 | * Aufwand muss sich lohnen 38 | 39 | -------------------------------------------------------------------------------- /vsk/09A-VS.md: -------------------------------------------------------------------------------- 1 | # Remote Methode Invocation 2 | 3 | ## Wie funktioniert RMi prinzipell? 4 | * in einem Remote-Interface werden eine oder mehrere Methoden definiert 5 | * welche als Dienste zur Verfügung stehen sollen 6 | * eine Server-Klasse implementiert das Interface 7 | * davon können mehrere Instanzen erzeugt werden 8 | * diese Instanzen werden als Remote-Objekte bezeichnet 9 | * die Remote-Objekte werden bei einem Namens-Service registriert 10 | * und können von potentiellen Clients abgefragt werden 11 | * die Clients beschaffen mit Hilfe des Namens-Service die Remote-Referenzen 12 | * auf den Referenzen können dann die gewünschten Dienste aufgerufen werden 13 | 14 | ## Wie wird in Java ein RMI-Interface implementiert? 15 | ``` 16 | public interface RemoteFibonacci extends Remote { 17 | public BigInteger calc(int value) throws RemoteException; 18 | } 19 | ``` 20 | 21 | ## Wie wird in Java ein RMI-Interface-Implementation geschrieben? 22 | ``` 23 | public class FibonacciImpl extends UnicastRemoteObject implements RemoteFibonacci { 24 | @Override 25 | public BigInteger calc(int value) throws RemoteException { 26 | return FibonacciCalculator.getFibonacci( 27 | new BigInteger(Integer.toString(value))); 28 | } 29 | } 30 | ``` 31 | 32 | ## Wie wird in Java ein RMI-Server implementiert? 33 | ``` 34 | public class FibonacciServer { 35 | public static void main(String[] args) { 36 | try { 37 | final FibonacciImpl fibo = new FibonacciImpl(); 38 | LocateRegistry.createRegistry(Registry.REGISTRY_PORT).rebind("Fibo", fibo); 39 | } catch (RemoteException e) { 40 | System.out.println("Failed to start rmi server"); 41 | } 42 | } 43 | } 44 | ``` 45 | 46 | ## Wie wird in Java ein RMI-Client implementiert? 47 | ``` 48 | public class FibonacciClient { 49 | public static void main(final String[] args) { 50 | try { 51 | final int value = 123; 52 | final String url = "rmi://localhost:1099/Fibo"; 53 | final RemoteFibonacci fibo = (RemoteFibonacci)Naming.lookup(url); 54 | BigInteger result = fibo.calc(value); 55 | } catch (NotBoundException | MalformedURLException | RemoteException e) { 56 | System.out.println("Failed to calculate fibonacci"); 57 | } 58 | } 59 | } 60 | ``` 61 | 62 | -------------------------------------------------------------------------------- /vsk/10B-EP.md: -------------------------------------------------------------------------------- 1 | # Konfigurationsmanagement 2 | 3 | ## Wieso braucht man ein Konfigurationsmanagement? 4 | * In einem System sind XXX laufend Änderungen unterworfen 5 | * Software 6 | * Einstellungen 7 | * Hardware 8 | * Firmware 9 | * Dokumentation 10 | * nötig sobald ein System aus mehreren Teilen besteht 11 | * weil nicht alle Versionen korrekt miteinander funktionieren 12 | 13 | ## Was bedeutet SCM? 14 | * Software Configuration Management 15 | 16 | ## Um was geht es im Konfigurationsmanagement? 17 | * das Identifizieren der Konfiguration eines Systems 18 | * zu verschiedenen, definierten Zeitpunkten 19 | 20 | ## Was ist das Ziel des Konfigurationsmanagement? 21 | * Änderungen an der Konfiguration kontrolliert durchzuführen und 22 | * die Integrität und Rückverfolgbarkeit sicherzustellen 23 | 24 | ## Was beinhaltet ein Software Configuration Item? 25 | * Code 26 | * Pläne 27 | * Spezifikationen 28 | * Code-Blibliotheken 29 | * Daten 30 | * Dokumentation für die Installation, Wartung und Betrieb 31 | 32 | ## Was bedeuten die folgenden SCM Begriffe? 33 | * Version 34 | * eine Version ist ein spezifisches, identifizierbares Artefakt auf einem bestimmten Entwicklungsstand 35 | * Revision 36 | * Eine Revision ist eine neue Version eines Artefaktes mit dem Zweck eine ältere abzulösen 37 | * Baseline 38 | * Eine Baseline ist ein Satz von Revisionen, d.h. ein Snapshot der Konfiguration 39 | * Release 40 | * Ein Release ist eine getestete und freigegebene Baseline 41 | 42 | ## Wieso braucht man ein Konfigurationsmanagement? 43 | * weil nicht alle Versionen aller Teile eines Systems korrekt miteinander funktionieren 44 | * Identifizieren der Konfiguration eines Systems zu verschiedenen Zeitpunkten 45 | * Änderungen an Konfigurationen kontrolliert durchführen 46 | 47 | -------------------------------------------------------------------------------- /vsk/11A-VS.md: -------------------------------------------------------------------------------- 1 | # Verteilung - Data Grid 2 | 3 | ## Was kann Hazelcast? 4 | * Applikationen skalieren 5 | * Daten über Cluster verteilen 6 | * Daten partitionieren 7 | * Nachrichten senden und empfangen 8 | * Lasten verteilen 9 | * parallele Tasks verarbeiten 10 | 11 | ## Wie kann mit Hazelcast auf einer verteilten Map gearbeitet werden? 12 | ``` 13 | HazelcastInstance client = Hazelcast.newHazelcastInstance(); 14 | Map map = client.getMap("mymap"); 15 | map.put(1, "value"); 16 | String result = map.get(1); 17 | ``` 18 | 19 | ## Wie werden Daten auf verschiedene Partitionen verteilt? 20 | ``` 21 | partitionId = hash(keyData) % PARTITION_COUNT 22 | ``` 23 | 24 | -------------------------------------------------------------------------------- /vsk/12A-VS.md: -------------------------------------------------------------------------------- 1 | # Security Managern 2 | 3 | ## Auf welche Ressourcen ist der Zugriff von Code aus dem Netz eingeschränkt? 4 | * der lesende und schreibende Zugriff auf Dateien des lokalen Computers 5 | * das Öffnen von TCP/IP-Verbindungen zu einem anderen als dem Host 6 | * das Akzeptieren von TCP/IP-Verbindungen auf privilegierten Portnummern 7 | * das Lesen benutzerbezogener System-Properties 8 | * das Ausführen externer Programme 9 | * das Laden von System-Libraries 10 | 11 | -------------------------------------------------------------------------------- /vsk/14A-KO.md: -------------------------------------------------------------------------------- 1 | # Clean Code 2 | 3 | ## Was sind die Anforderungen an gute Funktion? 4 | * klein sein und nur eine Aufgabe erfüllen 5 | * nur eine Abstraktionsebene enthalten 6 | * geringe Einrücktiefe und möglichst kein switch enthalten 7 | * einen guten Namen haben 8 | * möglichst wenig (keine!) Funktionsargumente haben 9 | * keine Flag-Argumente verwenden 10 | * Output-Argumente vermeiden 11 | * Anweisungen und Abfragen trennen 12 | * keine Nebeneffekte aufweisen 13 | * mit Exceptions (statt Fehlercodes) arbeiten 14 | 15 | ## Was bedeutet die Abkürzung FIRST bei Tests? 16 | * Fast 17 | * Tests sollen schnell sein, damit man sie jederzeit und regelmässig ausführt 18 | * Independent 19 | * Tests sollen voneinander unabhängig sein, 20 | * damit sie in beliebiger Reihenfolge und einzeln ausgeführt werden können 21 | * Repeatable 22 | * Tests sollten in jeder Umgebung lauffähig sein 23 | * Self-Validating 24 | * zeigen mit einem einfachen boolschen Resultat ob sie ok sind oder nicht 25 | * Timely 26 | * Tests sollten rechtzeitig geschrieben werden 27 | 28 | ## Wie gehen die Unit-Test Heuristiken von Uncle Bob? 29 | * T1: Unzureichende Tests 30 | * T2: Coverage-Werkzeug verwenden 31 | * T3: Triviale Tests nicht überspringen 32 | * T4: Ignorierte Tests zeigen Mehrdeutigkeit auf 33 | * T5: Grenzbedingungen testen 34 | * T6: Bei Fehlern die Nachbarschaft gründliche testen 35 | * T7: Muster des Scheiterns zur Diagnose nutzen 36 | * T8: Hinweise durch Coverage Patterns beachten 37 | * T9: Tests sollen schnell sein 38 | 39 | -------------------------------------------------------------------------------- /vsk/Makefile: -------------------------------------------------------------------------------- 1 | ../_helpers/Makefile -------------------------------------------------------------------------------- /vsk/variables.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Zusammenfassung VSK 3 | subtitle: "Verteilte Systeme & Komponenten" 4 | modul: I.BA_VSK.H1701 5 | --- 6 | --------------------------------------------------------------------------------