Design von Softwarearchitekturen
Definition:
Gestaltung und Organisation der grundlegenden Struktur von Software-Systemen
Details:
- Verbessert Wartbarkeit, Erweiterbarkeit und Skalierbarkeit von Software
- Nutzung von Entwurfsmustern und Architekturstilen
- Berücksichtigung funktionaler und nicht-funktionaler Anforderungen
- Mögliche Architekturstile: Schichten, Microservices, Ereignisgesteuert, Client-Server
- Wichtige Konzepte: Modularität, Abstraktion, Wiederverwendung, lose Kopplung
- Werkzeuge: UML-Diagramme, Architekturbeschreibungs-Sprachen (ADLs)
Implementierung von Algorithmen und Datenstrukturen
Definition:
Implementierung von Algorithmen und Datenstrukturen bezieht sich auf das Entwerfen, Kodieren und Testen von Algorithmen und den dazugehörigen Datenstrukturen zur effizienten Lösung von Problemen.
Details:
- Wahl der passenden Datenstrukturen ist entscheidend für die Effizienz eines Algorithmus.
- Komplexitätsanalyse: Zeit- und Speicherbedarf mit Big-O-Notation.
- Grundlegende Datenstrukturen: Arrays, Listen, Stapel (Stacks), Schlange (Queues), Bäume (Trees), Graphen (Graphs), Hash-Tabellen.
- Wichtige Algorithmen: Sortieren (z.B. QuickSort, MergeSort), Suchen (z.B. Binäre Suche), Graph-Algorithmen (z.B. Dijkstra, Tiefensuche).
- Rekursions- und Iterationsstrategien verstehen und anwenden.
- Parallele und verteilte Algorithmen für Performance-Verbesserungen.
- Einbindung von Bibliotheken und vorgefertigten Implementierungen (z.B. STL in C++ oder Collections in Java).
Maschinelles Lernen und Deep Learning
Definition:
Maschinelles Lernen: Daten-getriebene Techniken um Modelle zu erstellen die aus Erfahrungen lernen. Deep Learning: Spezialisierung des ML, verwendet tiefe neuronale Netze.
Details:
- ML Modelle: Supervised, Unsupervised, Reinforcement Learning
- Supervised: \textit{Trainingsdaten} mit Labels verwenden
- Unsupervised: Muster in Daten ohne eindeutige Labels erkennen
- Reinforcement: Lernen durch Belohnung/Bestrafung
- Deep Learning: Verwendung von \textbf{mehrschichtigen neuronalen Netzen}
- Wichtige Architekturen: CNNs (\textit{Convolutional Neural Networks}), RNNs (\textit{Recurrent Neural Networks})
- Optimierungsverfahren: Gradient Descent
- Aktivierungsfunktionen: z.B. \textit{ReLU}, \textit{Sigmoid}
- Verlustfunktionen: z.B. \textit{Cross-Entropy}, \textit{MSE (Mean Squared Error)}
- Regularisierung: Vermeidung von Overfitting, z.B. \textit{Dropout}, \textit{L2-Norm}
- Evaluation: z.B. \textit{Accuracy}, \textit{Precision}, \textit{Recall}
Transaktionsmanagement
Definition:
Verwaltung von Datenbanktransaktionen zur Gewährleistung von Konsistenz, Isolation, Dauerhaftigkeit und Atomarität (ACID-Prinzipien).
Details:
- ACID-Prinzipien: Atomarität (alle oder keine Operationen ausführen), Konsistenz (keine Verletzung von Integritätsbedingungen), Isolation (Transaktionen beeinflussen sich nicht gegenseitig), Dauerhaftigkeit (Änderungen bleiben gespeichert).
- Wichtige Konzepte: Sperren, Rollback, Commit.
- Serialisierbarkeit: Gewährleistet, dass parallele Transaktionen dasselbe Ergebnis liefern wie sequentielle.
- Concurrency Control: Vermeidung von Konflikten durch gleichzeitige Transaktionen.
- Wiederherstellung: Mechanismen zur Erholung von Fehlern (z.B. Protokollierung).
- Zwei-Phasen-Sperrprotokoll (2PL): Gewährleistung der Serialisierbarkeit durch strikt getrennte Sperr- und Freigabephasen.
Experimentelles Design und Durchführung
Definition:
Entwicklung und Planung von Experimenten zur Untersuchung einer Hypothese und Umsetzung dieser Untersuchungen in die Praxis.
Details:
- Definition der Forschungsfrage
- Festlegung der Variablen: Unabhängige (manipulierte) und abhängige (gemessene) Variablen
- Kontrolle der Störvariablen
- Auswahl der Stichprobe
- Festlegung des Experimentatyps: z.B. Laborversuch, Feldversuch
- Durchführung des Experiments: genaue Dokumentation der Abläufe
- Erhebung und Analyse der Daten
- Interpretation der Ergebnisse
Erstellen und Gestalten von Präsentationsmaterialien
Definition:
Erstellung und Design von Präsentationsmaterialien für die Masterarbeit in Informatik an der TU München.
Details:
- Wähle ein einheitliches Design (Farben, Schriftarten, Layout).
- Verwende klare und prägnante Texte.
- Nutze Grafiken und Diagramme zur Veranschaulichung komplexer Sachverhalte.
- Beachte die Zielgruppe und den Kontext der Präsentation.
- Vermeide überladene Folien, Fokussiere auf das Wesentliche.
- Neben Texten und Bildern, Multimedialer Einsatz (z.B. Videos) möglich.
- Tools: PowerPoint, LaTeX (\texttt{beamer}), Canva.
Schreiben wissenschaftlicher Arbeiten
Definition:
Wissenschaftliche Arbeiten methodisch und strukturiert verfassen, um Forschungsfragen klar darzustellen und zu beantworten.
Details:
- Einleitung: Ziel und Struktur der Arbeit darstellen.
- Theoretischer Hintergrund: Relevante Theorie und Literatur zusammenfassen.
- Methodik: Forschungsansatz und Vorgehensweise beschreiben.
- Ergebnisse: Forschungsbefunde objektiv präsentieren.
- Diskussion: Ergebnisse interpretieren und einordnen.
- Fazit: Kernpunkte zusammenfassen, Ausblick geben.
- Quellenangaben: Korrektes Zitieren aller verwendeten Quellen (z.B. nach APA, IEEE).
Optimierung von Datenbankanfragen
Definition:
Reduzierung der Ausführungszeit von Datenbankanfragen durch effiziente Nutzung von Ressourcen.
Details:
- Indexierung: Nutze Indizes, um Abfragen zu beschleunigen.
- Joins: Verwende effiziente Join-Strategien (Nested Loop, Hash Join, etc.).
- Query-Pläne: Analysiere und optimiere den Abfrageplan des Datenbank-Management-Systems (DBMS).
- Materialisierte Ansichten: Cache häufig angefragte Daten.
- Denormalisierung: Trade-off zwischen Speicherplatz und Anfragegeschwindigkeit.
- Partitionierung: Teile Tabellen für schnelleren Zugang in Partitionen auf.
- Transaktionsisolation: Wähle geeignete Isolationsebene zur Vermeidung von Deadlocks.