Informatik 1

86 flashcardsby sg
Study these flashcardsFree · spaced repetition · iPhone, Android, Mac & web

All cards

1
2. Was ist ein Algorithmus?
Ist eine eindeutige Handlungsvorschrift um Probleme zu lösen. Diese bestehen aus endlich vielen Einzelschritten.
2
4 Core Concepts
1. Ein-/ Ausgabe
2. Algorithmus
3. Programm
4. Berechnungsprozess
3
Low Level Language -> High level Language
1. Machine Language (0101)
2. Assembly language
3. C/C++, Fortran
4. Matlab, Python, Perl
5. Wolfram Alpha
4
Functional Languages
Programm ist aufgeteilt in Funktions definitionen. -eine Art von deklarativer Sprache
( Scala, F#, Clojure, Lisp)
5
Procedural Languages
Ein Programm welches in sequenzen von Schritten geschrieben ist, dass im Schluss ein Ergebnis ausgibt. (Cobol, Fortran, C)
6
OOP (Object Oriented Programming)
Ein Programm wird in Objekte aufgeteilt, diese haben Methoden, Eigenschaften(Variablen). Die Methoden bearbeiten die Eigenschaften.(Python, Java, C#, C++)
7
Logic/Declarative Language
Used to create programs, that enable the Computer to reason logically. Specification of the Task instead of the algorithmic model.("Was statt Wie")
8
Aufbau IDE=Integrated Development Enviroment
1. Editor
2. Compiler
3. Linker
4. Debugger
5. Version Control
X. und vieles mehr
9
Compiler
übersetzt den Quellcode in die Maschinensprache
( g++ -c test.cpp), überprüft den Quellcode auf Syntax Fehler
10
Linker (Linking Loader)
Führt mehrere Objektdateien zusammen um eine ausführbare datei zu erstellen. Dadurch kann man Code wiederverwenden.
11
Debugger
beim Suchen von Symantik-/Syntaxfehlern im Quellcode, man kann sich genau ansehen was in einer bestimmten Stelle vom Programm passiert.
12
Version Control GIT
um die Versionskontrolle vom Programm über die Entwicklungszeit vom Programm zu kontrollieren, man kann somit zu jeder Releaseversion vom Programm zurück springen
13
Editor
ein Texteditor in welchem man das Programm schreibt
14
Informatik (Information und Automatik)
Wissenschaft von der systematischen Verarbeitung von Informationen/Daten besonders der automatischen Verarbeitung mit Hilfe von Digitalrechnern (Computern)
15
1. Punkt Core Concept
1. Input/Output
16
3. Punkt Core Concept
3. Program
Das aufschreiben eines Algorithmuses in einer geeigneten Programmiersprache
17
4. Punkt Core Concept
4. Process
Ausführen eines Programmes an einem bestimmten Ort zu einer bestimmten Zeit
18
Theoretische Informatik
Erforscht und entwickelt Konzepte zur Darstellung von Geräten und Prozessen als formal logische Systeme,
damit ist sie die Grundlegende für die Programmierung.

Die theoretische Informatik befasst sich insbesondere mit der Geschwindigkeit und dem Speicherverbrauch solcher Algorithmen.
19
Praktische Informatik
Entwickelt grundlegende Lösungskonzepte für die wichtigsten Anwendungsbereiche der Informatik.

Sie beschäftigt sich besonders mit der Entwicklung von Computerprogrammen mit Hilfe spezieller Programmiersprachen und deren Nutzung in großen Softwaresystemen.
20
Technischen Informatik
EVA-Prinzip:
1. Dateneingabe (Eingabe)
2. Datenverarbeitung (Verarbeitung)
3. Datenausgabe (Ausgabe)

Die Entwicklung der hierfür erforderlichen Hardware ist der Kernbereich der Technischen Informatik.
21
Angewandte Informatik
Untersucht inwieweit Abläufe durch den Einsatz von Computern automatisiert werden können.

Verfahren der Simulation und Computergrafik, der Bild und Sprachverarbeitung sowie der Modellierung schaffen konkrete Anwendungsmöglichkeiten für die Automatisierung.

22
Informatik und Gesellschaft
  • umfasst Soziologie, Philosophie, Jura, und Politologie
  • ermöglicht eine umfassende Technikfolgeabschätzung für Computeranwendungen in der modernen Gesellschaft.
  • Datenschutz
  • Open Source und ihr Verhältnis zum Urheberrecht
  • Softwarepatente
23
Unterschied zwischen Information und Daten
Daten repräsentieren Information

Information kann aus den Daten abstraktiert werden

Beispiel Schachfiguren
Information --> Daten
------------------------------
Weißes Pferd --> 0100
weißer Turm --> 0101
schwarzes Pferd --> 1100
schwarzes Turm --> 1101
24
Deklaration von Variablen
typ NameVariable = Wert;

Beispiel
int Variable = 100;
oder
int Variable {100}; manche Compiler überprüfen auf Fehler

​
25
Zahlen Repräsentation Ganzzahlen
  • 1B boolean: true oder false
  • 1B char: -128...127 / 0...255
  • 1B byte: -128 ... 127
  • 2B short: -32768...32767
  • 4B int: -2^31...(2^31)-1
  • 8B long: -2^63...(2^63)-1
26
IEEE Format Gleitkomma/Fließkommazahlen double/float
  • double:
    besteht aus 8 Bytes=64Bit:
    - 52 bits für die Mantisse
    - 11Bits für die den Exponent
    - 1 Bit als Vorzeichen Bit

  • float:
    besteht aus 4 Bytes=32Bit:
    - 23 bits für die Mantisse
    - 8 Bits für die den Exponent
    - 1 Bit als Vorzeichen Bit
27
Fließkommazahlen Datentypen
  • 4B float +-3.4028...*10^38
  • 8B double +-1.797...*10^308
28
Typenumwandlung

1 static_cast<datentyp>(Var)
2 (datentyp) Var
3 datentyp(Var)

bei Impliziter oder expliziter Typenumwandlung kann es zu:
$\bullet \text{ Genauigkeitsverlust}$
$\bullet \text{ Überschreitung des Grenzbereiches}$
$\bullet \text{ Verlust des Nachkommateils bei der Umwandlung z.B. double in int}$
$\bullet \text{ Vorzeichenverlust negative Zahl wird unsigned Datentyp umgewandelt}$
29
1 Wort
16Bit
30
Doppelwort
32Bit
31
Implizite Umwandlung
implizite Typenumwandlung werden vom Compiler automatisch vorgenommen
32
explizite Typenunwandlung
Programmierer schreibt in den Code die Typenumwandlung
33
Hornerschema
um eine Zahl in ein anderes Zahlensystem umzuwandeln
34
Zahlensysteme ausrechnen
$\sum_{i=0}^{n-1}z_i*B^i$

$z_i$ = Wertigkeit an der Position der Stelle

Beispiel:

$0110_B \rightarrow \quad 0*2^3+1*2^2+1*2^1+0*2^0=6_D
35
Verzweigungen
Eine if-Anweisung wird verwendet, um einen Codeblock auszuführen, wenn eine bestimmte Bedingung erfüllt is


if(booleanExpression)
{
//Executes when booleanExpression holds true
}
else if(booleanExpression2)
{
//Executes when booleanExpression2 holds true
}
else
{
//Executes when neither booleanExpression nor booleanExpression2 are true
}


Eine switch-Anweisung ermöglicht den Vergleich eines Ausdrucks mit verschiedenen möglichen Werten und führt entsprechende Codeblöcke aus.



switch(variable) {
case valueOne:
//statements
break;
case valueTwo:
//statements
break;
default: //optional
//statements
}
36
Schleifen
Eine for-Schleife wird verwendet, um eine bestimmte Anzahl von Iterationen durchzuführen. Sie besteht aus drei Teilen: Initialisierung, Bedingung und Inkrementierung.


for(Initialisierung; Bedingung; Inkrementierung)
{
//statements
}


Eine while-Schleife wird verwendet, um eine Iteration so lange auszuführen, wie eine bestimmte Bedingung erfüllt ist.


while(Bedingung)
{
//statements
}


Eine do-while-Schleife funktioniert ähnlich wie eine while-Schleife, jedoch wird der Schleifenkörper mindestens einmal ausgeführt, da die Bedingung am Ende der Schleife überprüft wird.


do
{
//statements
}while(Bedingung);

37
Aus was besteht ein Computer (systeme)?
  • Zentraleinheit(Rechner)
    1. CPU Central Processing Unit
  • 2. RAM Random Access Memory
  • 3. ROM Read Only Memory
  • 4.Busse und Schnittstellen
  • 5. Chipsatz(Schaltkreise"Mainboard")
  • 6. Einheiten auf Mainboard (Grafik,Netzwerk,...)
  • 7. Erweiterungen und Massenspeicher
  • 8. Peripherie
    1. Eingabegeräte
    2. Ausgabegeräte
38
Architektur eines Mainboards
39
Neumann Architektur
1. Rechenwerk ALU
2. Steuerwerk CU
3. Ein-/Ausgabewerk I/O
4. Speicherwerk Memory

1,2,3,4 sind über das Bussystem miteinander verbunden
40
Harvard-Architektur
1. Rechenwerk ALU
2. Steuerwerk CU
3. Ein-/Ausgabewerk I/O
4. Speicherwerk Daten
5. Speicherwerk Programm
6. Bussystem Daten
7. Bussystem Programm


1,3,4 sind über 6 miteinander verbunden
Auftrennung Datenbearbeitung

2,5 sind über 7 miteinander verbunden
Auftrennung Programmausführung
41
Prozessor CPU Aufbau
1. CU (Steuerwerk):
$\quad \text{Auführung des Programmcodes}$
$\quad \text{Instruction Decode: Dekodierung der Maschinenbefehle in Steuerbefehle oder Mikro-Instruktionen}$
2. ALU (Rechenwerk):
$\quad \text{zuständig für Mathematische und Logische Operationen}$
3. Registersatz:
$\quad \text{Speicherplätze innerhalb des Kerns. Die ALU rechnet mit den Werten in den Arbeitsregistern}$
4. Bussysteme:
$\quad \text{Datenbus: Austausch von Daten mit dem RAM}$
$\quad \text{Adressbus: Speicheradressen} $
$\quad \text{Steuerbus Koordinierung des Zugriffs auf Speicher und Peripherie (Steuerbus)}$

​
42
CPU/Prozessor (Central Processing Unit)
Verantwortlich für die Ausführung der Programme und die Steuerung und Verwaltung der Hardware
43
Fetch->Decode->Execute
1. Fetch
Befehlszählerregister des Steuerwerks enthält die Adresse des nächsten Befehls

2.Decode
den Befehl decoden um die benötigte Schaltung zu aktivieren

3.Execute
Das Decodete wird Ausgeführt

danach wird wieder in Fetch gesprungen und der Zählerregister um eins erhöht.
44
Schnittstelle zwischen Hardware und Software
Hochsprache
⬇️
Assemblersprache
⬇️
Maschinencode
⬇️
Instruction Set Architecture ISA
⬇️
Microarchitektur
⬇️
Gatter und Register

​
45
CISC (Complex instruction Set Computer)
$\bullet \textsf{ großer Satz von Maschinenbefehlen, welche teilweise direkt komplexe Operationen ermöglichen}$
$\bullet \textsf{ Schlechtere optimierung für Pipelining Optimierungen }$
$\bullet \textsf{ Komplexität in Hardware}$
$\bullet \textsf{ Schwierig zu Programmieren}$
$\bullet \textsf{ Befehle können theoretisch variabel lang sein}$
$\bullet \textsf{ Befehle müssen erst dekodiert werden.}$
$\bullet \textsf{ Befehle werden vom Mikroprogramm interpretiert und in Elementaranweisungen }$
$\textsf{ zerlegt (Microcode), der dann ausgeführt wird.}$
$\bullet \textsf{ Steuerung durch Mikroprogramm in ROM}$
46
RISC (Reduced Instruction Set Computer)
$\bullet \textsf{Beschränkung auf die hauptsächlich notwendigen atomaren Befehle}$
$\bullet \textsf{Anweisungen haben eine feste Länge}$
$\bullet \textsf{Keine Microcodedekodierung notwendig}$
$\bullet \textsf{Gute Eignung für Pipelining Optimierung}$
$\bullet \textsf{Ausführung erfolgt direkt in Hardware}$
$\bullet \textsf{Komplexität in Software}$

​
47
Berechnungszeit eines Programmes
RISC:
$\frac{time}{program} = \frac{time}{cycle}*\frac{cycles}{Instructions}$

CISC:

$\frac{time}{program} = \frac{time}{cycle}*\frac{Instructions}{program}$
48
Adversarial Attack
angriff auf die Ki, bei welcher die KI mit fehlerhaften werten injiziert wird
49
stuxnet
Computerwurm, welcher 974 uran zentrifugen in Iran zerstört hat
50
Virus
hat eine Wirtsdatei an welche sie sich anheftet
beim ausführen der Datei wird der Computer infiziert
in den meisten Fällen führt es zu Datenverlust
51
Computerwurm
Malware, die sich selbstständig über Netze (Internet) verbreitet. Ein ..... nutzt sehr oft Sicherheitslücken zum Eindringen in ein System.
52
Trojaner
Diese Malware ist in einem scheinbar nützlichen Programm versteckt und kann z. B. Passwörter auslesen oder auf Daten im Netzwerk zugreifen und diese an den Auftraggeber der Malware übermitteln.
53
wie viele Bit hat 1 Byte
8 Bit
54
supervised learning
man nennt den Parameter auf was man das model tranieren will und gibt eine sehr hohe Menge an Daten diesem.
55
unsupervised learning
man lässt ein Model ähnlichkeiten in dem Datensatz erkennen und kann es somit für andere Eingangdaten verwenden
56
reinforcement learning
Im Vorfeld keine Daten erforderlich.
Stattdessen erfolgt die Bildung der Datenbasis durch ausführliche Trial-and-Error-Abläufe innerhalb eines eigens angelegten Simulations-Szenarios. Während der Trainingsdurchläufe werden alle erforderlichen Daten generiert und markiert.
57
Cyber-physical threats examples
• Aurora-generator test
• Stuxnet attack on Iran centrifuges
• Energy blackouts in Ukraine
58
AI in der cyber security
• new target:
adversarial attacks
• offers new tools for defense/offensive:
• automatic threat detection
• automatic control unit testing
59
Cybersecurity for CarIT
• Attack surface increases with
▪ OTA
▪ AI methods being vulnerable to adversarial attacks
• Ransom attacks increasingly more
▪ numerous
▪ lucrative
▪ sophisticated (Advanced Persistent Threats, Advanced Persistent Teenagers)
60
call by value
Beim funktionsaufruf wird eine Kopie der Variable der funktion übergeben.

Es wird nur der Wert der Kopie geändert und nicht der original variablen.
bsp:
.
funktion(variable);
.
61
Call-by-Reference
direkter Zugriff auf den Wert der Variable.
Keine Kopie.

.
funktion(&variable);
.
62
adresse vom pointer
std::cout<<&pointer<<std::endl;
63
wert der adresse auf welcher der pointer zeigt
int *pointer=null_ptr;
std::cout<<*pointer<<std::endl;
//dereferenzieren genannt
64
adresse auf welche der pointer zeigt
int *pointer=null_ptr;
std::cout<<pointer<<std::endl;
65
nächsten wert ab einer adresse mithilfe eines pointer auslesen
int n{ 1000 };
int* ptr = &n;
std::cout << *(ptr + 1)<<std::endl;
66
random number generator mit mt19937
#include <random>
#include <ctime>
int main(int argc, char **argv)
{
std::mt19937 zufallszahlgenerator(time(nullptr));
std::cout<<zufallszahlgenerator();
return 0;
}
67
Image occlusion: name the hidden labels
68
Image occlusion: name the hidden labels
69
Image occlusion: name the hidden labels
70
Image occlusion: name the hidden labels
71
Image occlusion: name the hidden labels
72
Image occlusion: name the hidden labels
73
Image occlusion: name the hidden labels
74
Image occlusion: name the hidden labels
75
Image occlusion: name the hidden labels
76
Image occlusion: name the hidden labels
77
Image occlusion: name the hidden labels
78
Image occlusion: name the hidden labels
79
Image occlusion: name the hidden labels
80
Image occlusion: name the hidden labels
81
Image occlusion: name the hidden labels
82
Image occlusion: name the hidden labels
83
Image occlusion: name the hidden labels
84
Image occlusion: name the hidden labels
85
Image occlusion: name the hidden labels
86
Image occlusion: name the hidden labels
Study all 86 cards for free