Neuronale Netze und Deep Learning
Definition:
Neuronale Netze sind computergestützte Modelle, die die Struktur und Funktionsweise des menschlichen Gehirns nachahmen, um Muster zu erkennen und Entscheidungen zu treffen. Deep Learning ist ein Teilbereich des maschinellen Lernens, der auf mehrschichtigen neuronalen Netzen basiert.
Details:
- Neuronale Netze bestehen aus Neuronen (Knoten) und Kanten (Verbindungen).
- Mehrschichtige Perzeptrons (MLP) sind grundlegende Netzarchitekturen.
- Aktivierungsfunktionen wie ReLU, Sigmoid und Tanh werden genutzt.
- Backpropagation dient dem Training durch Fehlerkorrektur mittels Gradientenabstieg.
- Deep Learning fokussiert auf tiefe Netzwerke mit vielen Schichten.
- Häufig genutzte Netztypen: CNNs für Bildverarbeitung, RNNs für sequenzielle Daten.
- Erfolgreich in Bereichen wie Sprachverarbeitung, Bildklassifikation und Spielen.
- Optimierungsverfahren: Adam, SGD (Stochastic Gradient Descent).
- Loss-Funktion: misst Fehler, z.B. Kreuzentropie für Klassifikation.
Algorithmen für Klassifikation und Regression
Definition:
Algorithmen zur Vorhersage von Kategorien (Klassifikation) oder kontinuierlichen Werten (Regression) basierend auf Eingangsdaten.
Details:
- Klassifikation: Zuordnung von Datenpunkten zu vordefinierten Klassen (z.B. Entscheidungsbäume, Support Vektor Maschinen, k-Nächste Nachbarn)
- Regression: Vorhersage kontinuierlicher Werte (z.B. Lineare Regression, Polynomialregression)
- Unterstützende Maßnahmen: Kreuzvalidierung, Hyperparameter-Tuning, Feature-Skalierung
- Evaluierung: Genauigkeit, F1-Score für Klassifikation, MSE (Mean Squared Error) für Regression
- Python-Bibliotheken: scikit-learn, TensorFlow, PyTorch
Transaktionsmanagement in Datenbanken
Definition:
Verwaltung der Ausführung von Transaktionen in Datenbanken, um deren ACID-Eigenschaften zu gewährleisten.
Details:
- ACID-Eigenschaften: Atomicity, Consistency, Isolation, Durability
- Transaktions-Logs zur Wiederherstellung
- Concurrency-Control-Methoden: Sperren (Locks), Zeitstempelbasierte Protokolle
- Sperrarten: Shared Lock (S), Exclusive Lock (X)
- Zwei-Phasen-Sperrprotokoll (2PL): Garantiert Isolation
- Deadlocks: Erkennung und Vermeidung
- Anomalien: Lost Update, Dirty Read, Non-Repeatable Read, Phantom Read
Anwendung von Scrum in der agilen Entwicklung
Definition:
Scrum als Rahmenwerk zur Unterstützung der agilen Softwareentwicklung.
Details:
- Iterative und inkrementelle Entwicklung
- Rollen: Product Owner, Scrum Master, Entwicklerteam
- Artefakte: Product Backlog, Sprint Backlog, Inkrement
- Ereignisse: Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospektive
- Transparenz, Überprüfung und Anpassung als zentrale Prinzipien
Serverseitige Programmierung mit Node.js
Definition:
Node.js ist eine JavaScript-Laufzeitumgebung, die serverseitige Programmierung ermöglicht.
Details:
- Asynchrones, ereignisgesteuertes Modell
- Nutze npm für Paketmanagement
- Frameworks wie Express.js erleichtern die Entwicklung
- CommonJS-Modulsystem
- Promise-basierte Syntax für asynchrone Operationen
- RESTful APIs leicht implementierbar
- Hohe Performance durch nicht-blockierende I/O-Operationen
Netzwerksicherheitsprotokolle und -verschlüsselung
Definition:
Netzwerksicherheitsprotokolle und -verschlüsselung: Methoden und Techniken zur Sicherung der Datenübertragung in Netzwerken.
Details:
- Symmetrische vs. asymmetrische Verschlüsselung
- Schlüsselaustauschverfahren: Diffie-Hellman, RSA
- Wichtige Protokolle: HTTPS, SSL/TLS, IPsec
- Integritätssicherung: HMAC, SHA
- Begriff der End-to-End-Verschlüsselung
- VPNs zur sicheren Netzwerkverbindung
Indexierung und Abfrageoptimierung in SQL
Definition:
Indexierung verbessert die Abfrageleistung durch schnelleren Zugriff auf Daten; Abfrageoptimierung verbessert die Effizienz von SQL-Abfragen.
Details:
- Indizes: Datenstrukturen, die den Suchvorgang beschleunigen
- Wichtige Index-Typen: B-Baum, Hash
- Index-Strategien: Clustered vs. Non-Clustered
- Abfrageoptimierung: Query-Planung und -Ausführung
- Verwendung von Exekutionsplänen zur Performance-Überwachung
- Grundlegende SQL-Befehle zur Analyse: EXPLAIN, ANALYZE
Automatisierte Tests und Teststrategien im Software Engineering
Definition:
Automatisierte Tests: Prozeduren zur automatischen Überprüfung von Software auf Korrektheit. Teststrategien: Planung und Organisation der Testaktivitäten zur Gewährleistung der Softwarequalität.
Details:
- Testarten: Unit-Tests, Integrationstests, Systemtests, Abnahmetests
- Testabdeckung (\textit{coverage}): Erfasst den Prozentsatz des Codes, der durch Tests abgedeckt ist
- Continuous Integration (CI): Fortlaufende Integration und Testen von Code-Änderungen
- Test-Frameworks: JUnit, TestNG, pytest
- Testpyramide: Veranschaulicht die Verteilung der verschiedenen Testarten
- Fehlerklassifikationen: Funktionale vs. nicht-funktionale Tests, Regressionstests