Bachelor, Vollzeit, Berufsbegleitend
- Campus Hagenberg
- E-Mail se@fh-hagenberg.at
- Telefon +43 5 0804 22000
- Infoblatt downloaden Anfrage stellen
Studienplan berufsbegleitend
Module
Formale Grundlagen
| 1. | 2. | 3. | 4. | 5. | 6. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Logische und formale Grundlagen der Informatik |
5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Logische und formale Grundlagen der InformatikDie Studierenden verstehen ausgesuchte Inhalte der Mathematik und kennen die Sprache und Methode der Mathematik. Damit sind die Studierenden in der Lage, technische Problemstellungen strukturiert zu analysieren und mit mathematischen Problemlösungsansätzen umzugehen. Logische und formale Grundlagen der Informatik
Aussagenlogik, Prädikatenlogik, Mengenlehre, Relationen (Äquivalenz¬relationen und Ordnungsrelationen), Funktionen, Induktionsbeweise Logische und formale Grundlagen der Informatik
In der Übung synchron zur Vorlesung praktische Behandlung der Lehrinhalte aus den Bereichen Aussagenlogik, Prädikatenlogik, Mengenlehre, Relationen und Funktionen. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Mathematik |
3.5 | 3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MathematikDie Studierenden können Methoden der diskreten Mathematik und Wahrscheinlichkeitsrechnung auf Problemstellungen der Informatik und des Software Engineering anwenden. Sie können die wichtigsten Problemkategorien identifizieren, darauf Lösungsmethoden korrekt anwenden, und die Ergebnisse dieser Methoden im Kontext der gegebenen Aufgabenstellungen richtig interpretieren. Sie erkennen weiters, dass deterministische Formeln (Methoden der Mathematik) auch dazu verwendet werden können, stochastische Phänomene zu modellieren und probabilistische Aussagen über Ereignisse machen zu können. Mathematik 1 - Algebra
Lineare Algebra: Vektorräume, Basen, Koordinaten, lineare Funktionen, Matrizen, Rang, Determinanten, lineare Gleichungssysteme, Gauß'sches Eliminationsverfahren; Geometrie: Skalarprodukt, Orthogonalität, Projektionen, Orthonormalbasen, Anwendungen in Approximationen. Mathematik 1 - Algebra
In der Übung synchron zur Vorlesung praktische Umsetzung der Lehrinhalte Mathematik 2 - Statistik
Wahrscheinlichkeitsräume, Kombinatorik, bedingte Wahrscheinlichkeit und Satz von Bayes, ein- und mehr-dimensionale Zufallsvariable, Unabhängigkeit und Korrelationen. Wichtige diskrete und stetige Wahrscheinlichkeitsver-teilungen, zentraler Grenzwertsatz, Grundbegriffe der beschreibenden Statistik, Parameterschätzung, Konfidenzintervalle, Einführung in die Testtheorie. Mathematik 2 - Statistik
In der Übung synchron zur Vorlesung praktische Umsetzung der Lehrinhalte aus Bereich: Wahrscheinlichkeitsräume, Kombinatorik, bedingte Wahrscheinlichkeit und Satz von Bayes, ein- und mehr- dimensionale Zufallsvariable, Unabhängigkeit und Korrelationen. Wichtige diskrete und stetige Wahrscheinlichkeitsver-teilungen, zentraler Grenzwertsatz, Grundbegriffe der beschreibenden Statistik, Parameterschätzung, Konfidenzintervalle, Einführung in die Testtheorie. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Technische Fächer
| 1. | 2. | 3. | 4. | 5. | 6. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Einführung in die Programmierung |
10 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Einführung in die ProgrammierungDie Studierenden besitzen detaillierte Kenntnisse über das imperative (prozedurale) Programmierparadigma, kennen die wichtigsten Konstrukte (Variablen, Datentypen, Anweisungen, Ausdrücke, Prozeduren und Funktionen) und deren Ausprägung in einer konkreten Programmiersprache und können diese zur Lösung einfacher Aufgaben anwenden. Die Studierenden kennen die wichtigsten Operationen auf statischen und dynamischen Datenstrukturen. Sie kennen die wichtigsten elementaren Algorithmen, insbesondere für das Suchen und das Sortieren sowie das Konzept der Rekursion. Die Studierenden können Algorithmen spezifizieren, entwerfen, implementieren und deren Komplexität hinsichtlich Struktur, Speicherbedarf und Laufzeit analysieren. Einführung in die Programmierung, Algorithmen und Datenstrukturen
Einführung in die imperative (prozedurale) Programmierung: Grundbegriffe der Syntax und der Semantik von imperativen Programmiersprachen, Vari-able und skalare Datentypen, einfache Anweisungen (Zuweisung, binäre Verzweigung, Schleifen), Ausdrücke, Entwicklungszyklus (Editieren, Über-setzen, Testen und Debuggen) mit einer einfachen Entwicklungsumgebung, einfache Ein/Ausgabe, Prozeduren und Funktionen mit Parametern (Formal- und Aktualparameter, Parameter-übergabemechanismen), strukturierte Datentypen (ein- und mehrdimensionale Felder und Verbunde), Blockstruktur: Gültigkeitsbereiche von Bezeichnern und Lebensdauern von Variablen, Programmierstil. Modulkonzept und Richtlinien zur Modularisierung, Datenkapselung, abstrakte Datenstrukturen (ADS) und abstrakte Datentypen (ADT). Standardoperationen auf statischen Datenstrukturen (Felder), Erzeugung und Verwaltung von dynamischen Datenstrukturen (einfach- und doppelt verkettete Listen und verschiedene Arten von Bäumen) sowie Standardoperationen darauf. Elementare Algorithmen für das Suchen (sequenzielle und binäre Suche) auf Feldern, verketteten Listen und binären (Such-)Bäumen. Konzept der Rekursion, rekursive Algorithmen und ihr Ablauf, Transformation von rekursiven in iterative Algorithmen und umgekehrt. Sortieralgorithmen (Auswahl- und Einfügesortieren, Shell-Sortieren, Austauschsortieren und Quicksort), deren Anwendung und Analyse. Spezifizieren und entwerfen von Algorithmen nach funktionalen Gesichtspunkten (Methode der schrittweisen Verfeinerung). Struktur-, Speicher- und Laufzeitkomplexität von Algorithmen sowie Analyse von Algorithmen hinsichtlich dieser Komplexitätsarten. Einführung in die Programmierung, Algorithmen und Datenstrukturen
Übungen vertiefen den Stoff der Vorlesung durch praktische Beispiele. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Objektorientierte Programmierung |
10 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objektorientierte ProgrammierungDie Studierenden besitzen detaillierte Kenntnisse des Paradigmas der objektorientierten Programmierung (OOP). Sie kennen die Ausprägung der dafür notwendigen Sprachkonstrukte in einer einfachen objektorientierten Programmiersprache und können diese zur Lösung noch relativ einfacher Aufgabenstellungen anwenden. Die Studierenden kennen die wichtigsten fortgeschrittenen Algorithmen, insbesondere für die Hashing-basierte Suche und die Heap-Datenstruktur. Sie kennen das Konzept des datenorientierten Softwareentwurfs mittels attributierter Grammatiken, beherrschen damit auch die Grundlagen des Compilerbaus. Objektorientierte Programmierung
Darstellung der Entwicklung ausgehend von den Pro-blemen der „konventionellen“ Programmierung, objektorientiertes Denkmodell, Objektbegriff, Klassifi-kation objektorientierter Programmiersprachen (prototyp- u. klassenbasierte), Klassenbegriff, Konzept der Reali-sierung von Klassen (von abstrakten Datenstrukturen über abstrakte Datentypen hin zu Klassen und Objekten), verschiedene Arten der Vererbung, statische und dynamische Objekte, Polymorphismus, statische und dynamische Bindung, Methodenaufruf und Methoden-suche; abstrakte Klassen und Schnittstellen. Beispiele einfacher Klassenbibliotheken (etwa für heterogene Objektsammlungen). Fortgeschrittene Suchverfahren (Hashing-basierte Suche): Idee, Hash-Funktionen, Hash-Tabellen, Kollisionen und Strategien zur Behandlung, Analyse. Heap-Datenstruktur: Idee, Algorithmen für Einfügen, Suchen und Löschen, Heapsort-Verfahren. Datenorientierter Programmentwurf: Grammatiken zur Beschreibung der Syntax von Eingabedaten und Grobstruktur von Übersetzungsprogrammen. Lexikalische Analyse. Syntaxanalyse im rekursiven Abstieg, attributierte Grammatiken und deren Implementierung durch Semantikanschluss. Objektorientierte Programmierung
Übungen vertiefen den Stoff der Vorlesung durch praktische Beispiele. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Softwareentwicklung mit klassischen und modernen Sprachen |
10 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Softwareentwicklung mit klassischen und modernen SprachenDie Studierenden besitzen detaillierte Kenntnisse über die Mög- lichkeiten und verfügen über Fertigkeiten in der hybriden (imperative u./o. objektorientierte u./o. generische) Programmierung mittels C++. Sie kennen und beherrschen die am weitesten verbreiteten Entwicklungswerkzeuge dafür. Die Studierenden besitzen detaillierte Kenntnisse über die Konzepte, die Bestandteile und die Möglichkeiten der Verwendung der Standardbibliotheken klassischer Programmiersprachen wie C++. Sie sind auch in der Lage, neue Bibliotheken von Grund auf zu entwerfen und bestehende zu erweitern. Die Studierenden können mit der modernden Softwareentwicklungs- Plattform Java objektorientiert Software entwickeln. Sie sind im Umgang mit mehreren, modernen, Entwicklungswerkzeugen und mit integrierter Entwicklungs- umgebung geübt. Die Studierenden kennen Muster (patterns) für die Analyse, den Entwurf und die Implementierung sowie als Beschreibungsmittel für die Architektur von (z. B. mehrschichtigen) Softwaresystemen auf unterschiedlichen Abstraktionsebenen. Softwareentwicklung mit C++
Theorie und Praxis generischer und objektorientierter Programmierung mit C++ unter Verwendung von Schablonen (Templates), Ausnahmen (Exceptions), dem Konzept "Ressourcenbelegung ist Initialisierung" (resource acquisition is initialization, RAII), sowie der C++ Stand-ardbibliothek (STL) und Smart-Pointern, Interoperabilität zwischen C/C++ und anderen Sprachen z.B. mittels Java Native Interface (JNI) oder anderen Foreign Function Interfaces (FFI) unter Einsatz gängiger Werkzeuge zur Entwicklung wie Visual Studio, Visual Studio Code und Build-Werkzeugen wie Make, CMake oder Ninja. Softwareentwicklung mit C++
Die Übungen vertiefen die Vorlesung, indem konkrete Beispiele mit den verschiedenen Technologien umgesetzt werden. Softwareentwicklung mit Java
Programmierung mit der Java-Plattform: Konzepte (insbesondere virtuelle Maschine und Java-Bytecode), Behälter und Algorithmen, Serialisierung und IO, Parallelität mittels mehrere Ausführungsfäden (threads), verteilte Anwendungen mittels remote method invocation (RMI), Grafische Benutzeroberflächen für Anwendungen mittels Java FX und Zugriff auf relationale Datenbanken mittels Java database connectivity (JDBC). Konzept und Hierarchie von Mustern (patterns) in der Softwareentwicklung (top-down): Architektur- und Entwurfsmuster sowie Ausdrucksweisen (idioms). Grundlagen für gutes objektorientiertes Design (Beispiele wichtiger Prinzipen wie des Liskov'schen Substitutions-prinzips). Entwurfsmusterkatalog von Gamma et al. mit Erzeugungs-, Struktur- und Verhaltensmustern: Überblick über alle Muster und Behandlung der wichtigsten davon anhand von Java-Beispielen. Begriff Architektur in der Software, Entwurf und Beschreibung von Architekturen, Architekturen als Schichten-Modelle (mehrschichtige Architekturen, z. B. mit Präsentations-, Anwendungs- und Persistenzschicht), Architekturmus-ter. Softwareentwicklung mit Java
Die Übungen vertiefen die Vorlesung, indem konkrete Beispiele mit den verschiedenen Technologien umgesetzt werden. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Einführung in die Informatik und Rechnerarchitektur |
5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Einführung in die Informatik und RechnerarchitekturDie Studierenden kennen die logischen und technischen Grundlagen der Informatik, beginnend bei Zahlendarstellungen, Kodierungsverfahren, Schaltalgebra, Rechnerkomponenten bis zu den Grundlagen der Rech-nerarchitektur. Die Studierenden verstehen den Aufbau und die prinzipielle Funktionsweise einfacher CPUs und kennen die Zusammenhänge zwischen Struktur, zeitlichen Abläufen und der Programmierbarkeit in Maschinensprache. Die Studierenden haben somit ein fundiertes Verständnis für Aufbau, Struktur und Funktionsweise der Rechner. Einführung in die Informatik und Rechnerarchitektur
Zahlensysteme und Zeichencodes, Schaltalgebra, kombinatorische Schaltungen, Aufbau einer exemplarischen ALU, sequentielle Schaltungen, endliche Automaten, Speicherzelle, Register und Hauptspeicher, Busse und Datenpfade, Aufbau einer mikroprogrammierten CPU, Einführung in die Mikroprogrammierung, Einführung in Assembler, Grundlagen der Rechnerarchitekturen, CISC/RISC, Supeskalare Architekturen, Pipelining. Einführung in die Informatik und Rechnerarchitektur
In der Übung synchron zur Vorlesung praktische Behandlung der Lehrinhalte mit Hilfe von Simulatoren für Schaltungen und CPU Entwurf. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Daten Engineering 2: Datenmodellierung und Datenbankentwurf |
5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Daten Engineering 2: Datenmodellierung und DatenbankentwurfDie Studierenden besitzen Kenntnisse über Konzepte, Methoden und Sprachen des Datenbankentwurfs. Der Schwerpunkt liegt in der konzeptuellen und logischen Datenbankmodellierung. Sie kennen die Grundlagen der Modellierung (Modellbegriff, Phasen der Modellierung etc.) sowie der Modellierungstechniken und -methoden im Überblick (Datenmodellierung, Funktionsmodellierung, Prozessmodellierung, objektorientierte Modellierung) und können diese anwenden. Sie kennen die Grundlagen von relationalen Datenbanksystemen und sind in der Lage, den Entwurfsprozess mit konkreten Datenbankmodellen durchzuführen und einen konkreten Datenbankentwurf zu implementieren. Sie kennen die Architektur von Datenbanksystemen und Gründe für ihren Einsatz. Sie kennen die Grundlagen von Abfragesprachen (Relationenalgebra, Relationenkalkül, SQL), um interaktiv und aus Anwendungen Daten zu definieren, abzufragen und zu manipulieren. Datenmodellierung und Datenbankdesign
Einführung und Vorteile des Einsatzes von Datenbanksystemen, Grundlegende Konzepte (Datenmodell, Schema, Instanzen) und Komponenten von Datenbanksystemen, Architekturen von Datenbanksystemen und Datenunabhängigkeit, Grundlagen Modellierung (Modellbegriff, Techniken und Methoden), Datenbankmodelle, Entity-Relationship-Modell und UML, Relationenmodell und relationale Anfragemodelle (Relationenalgebra, Anfrage- und Tupelkalkül), Phasen des Datenbankentwurfs (kon-zeptueller, logischer, physischer Entwurf), relationaler Datenbankentwurf (funktionale Abhängigkeiten, Normalformen, Transformationseigenschaften), Grundlagen Datenbankdefinition, Datenbankanfragen und -manipulation mit interaktiven Abfragesprachen (SQL), Sichten, physische Datenorganisation, Zugriffsschutz in Datenbanksystemen. Datenmodellierung und Datenbankdesign
In der Übung synchron zur Vorlesung praktische Behandlung der Lehrinhalte. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Daten Engineering 2: Datenbanksysteme |
5 | 2.5 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Daten Engineering 2: DatenbanksystemeDie Studierenden besitzen detaillierte Kenntnisse über erweiterte SQL-Konzepte (rekursive Anfragen, OLAP-Operationen, prozedurale SQL-Erweiterungen, Sichten, Trigger etc.) und können diese praktisch in der Anwendungsentwicklung einsetzen. Sie kennen die Konzepte, Verfahren und Techniken der Mehrbenutzerkontrolle und Transaktionssteuerung und können diese in Datenbanksystemen praktisch anwenden. Sie kennen Optimierungsprinzipien und -mechanismen (Anfrageoptimierung, algebraische Optimierung etc.) sowie die Grundlagen der Datenorganisation und Zugriffsstrukturen. Sie kennen objektrelationale Datenbankkonzepte und können diese exemplarisch an einem ausgewählten Datenbanksystem praktisch anwenden und die Umsetzung beurteilen. Sie verfügen über grundlegende Kenntnisse über Data Warehousing bzw. mehrdimensionaler Datenmodellierung sowie OLAP sowie über alternative Datenbanktechnologien (bspw. NoSQL, In-Memory). Die Studierenden kennen die Grundlagen semistrukturierter Datenmodelle und können die Möglichkeiten und Grenzen der Anwendungsbereiche einschätzen. Sie besitzen detaillierte theoretische und praktische Kenntnisse über die Schemabeschreibungssprache XML. Sie kennen die mit XML verbundenen Technologien und können diese für die Definition, Anfrage, Verarbeitung und Speicherung von XML-Dokumenten praktisch einsetzen. Sie können moderne Speicherungsalternativen von XML-Dokumenten in relationalen (inklusive Integration mit SQL) und nativen Datenbanksystemen bewerten und praktisch an ausgewählten Systemen anwenden. Sie kennen alternative technologische Ansätze wie JSON. Datenbanksysteme
Erweiterte Entwurfsmodelle (Spezialisierung, Generalisierung, Aggregation, Komposition, mengenwertige und strukturierte Attribute etc.) und de-ren Abbildung auf das relationale Modell. Erweiterte Konzepte von SQL: SQL-Datendefinition (Tabellen, Integritätsbedingungen, referentielle Aktionen, Domänenkonzept, generierte/virtuelle Spalten, Schemaevo-lution und -modifikation, Grundlagen Data Dictionary etc.) SQL-Anfragen (skalare Funktionen, dreiwertige Logik, Bereichsselektion, Ungewissheitsselektion, Verbundarten, Unterabfragen, Korrelierte Abfragen, Prädikate für den Zugriff auf Mengen, Quantoren und Mengenvergleiche, Mengenoperationen, Aggregatfunktionen, Gruppierungen, Benannte Anfragen und Rekursion, Sequenzgeneratoren, OLAP-Operationen) SQL-Datenmanipulation (Merge, komplexe Datenmanipulation mit Unterabfragen, Datenmanipulation und Integritätsbedingungen) SQL-Views (materialsiert vs. virtuell, Sichtarten, Probleme bei der Transformation von Anfragen / Änderungen) SQL-Autorisierungskonzepte (Arten von Rechten, Vergabe und Rücknahme, Anlegen von Benutzern und Rollen) Prozedurale SQL-Erweiterungen und Verhaltensimplementierung (Einführung Anwendungsentwicklung, Stored Procedures/Functions, Pakete/Module, Cursor-Konzept, Ausnahmebehandlung). Integritätssicherung durch Trigger (Grundprinzipien, Trigger-Arten, aktives Verhalten). Objektrelationale Modelle (Grundlagen, objektrelationale Konzepte in SQL, Methoden in SQL, objektrelationale Datenbanksysteme). Mehrbenutzerkontrolle und Transaktionsmodelle (Konsistenzprobleme, Transaktionseigenschaften, Serialisierbarkeitstheorie, Fehlersicherheit, Transaktionsverwaltung, pessimistische und optimistische Verfahren, Hierarchisches Sperren und 2-Phasensperrprotokoll, Transaktionssteuerung in SQL). Wiederherstellung und Datensicherung (Protokollierungsarten, Recovery-Strategien). Dateiorganisation und Zugriffsstrukturen (Speichertechniken, Indexierte Dateien, Baumverfahren, Hashverfahren, Cluster-Bildung, Umsetzung in SQL). Optimierung (methodische Vorgangsweise, logische Optimierung, physische Optimierung mit Index und Cluster, Analyse von Ausführungsplänen) Grundlagen Data Warehousing und OLAP (Grundkonzepte, Multidim. Datenmodell, Snowflake- und Star-Schema, OLAP-Operationen in SQL. Konzepte und Daten- und Konsistenzmodelle von ausgewählten alternativen Datenbanksystemen (bspw. NoSQL, InMemory etc.). Datenbanksysteme
In der Übung synchron zur Vorlesung praktische Behandlung der Lehrinhalte. Semistrukturierte Datenmodelle und XML
Grundlagen und Merkmale semistrukturierter Datenmodelle. Grundlagen und Merkmale von Auszeichnungssprachen: XML-Grundlagen Schemadefinition: DTDs, XMLSchema. Anfrage- bzw. Transformationssprachen: XPath, XSLT, XQuery. Verarbeitung: XML-APIs (SAX, DOM, StAX etc.), Grundlagen zu XML Data Binding. Speicherung: Abbildung von XML auf relationale Datenbanken, Abbildung von Datenbanken auf XML, Fokus auf SQL/XML:2011-14. Alternative semistrukturierte Datenmodelle: JavaScript Object Notation (JSON), JSON-Verarbeitung, Abbildung JSON auf Datenbanken (Oracle, NoSQL), Interoperabilität JSON und XML. Semistrukturierte Datenmodelle und XML
In der Übung synchron zur Vorlesung praktische Behandlung der Lehrinhalte. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Betriebssysteme und Werkzeuge |
2.5 | 2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Betriebssysteme und WerkzeugeDie Studierenden kennen die technischen Grundlagen von Betriebssystemen, deren Komponenten und die grundlegenden Verfahren zur effektiven Verwaltung der vorhandenen Hardware. Die Studierenden erwerben grundlegende Kenntnisse im Umgang mit der Kommandozeile unter Linux. Sie können moderne Werkzeuge zur Unterstützung von Softwareentwicklungsprojekten verwenden und einsetzen. Werkzeuge im Software Engineering
Einführung in Linux: Verwendung der Kommandozeile sowie ausgewählte Befehle und Kommandos. Navigation im Dateisystem, Manipulation von Dateisystemobjekten, insbesondere Textdateien. Linux-Berechtigungskonzept (Benutzerverwaltung und Berechtigungen). Varianten der Software-Installation mit Paketmanagern (z.B. apt). Grundlagen und Anwendung moderner Werkzeuge zur Unterstützung von Software-Entwicklungsprojekten: Dezentrale Versionsverwaltungssysteme (z.B. Git) und Werkzeuge für die Erstellung und Ausführung von Containern (z.B. Docker). Betriebssysteme
Einführung in die grundlegenden Konzepte von Multitasking-Betriebssystemen: Booten/Bootloader, Interrupts (Arten von Interrupts, Ablauf), Prozess Management (Context Switch, Prozesszustände, Scheduling, Prozesskontext), Memory Management (Ziele, Aufbau eines Prozessspeichers, Speicher-adressierung, virtueller Adressraum, Page Table, Aus-wahlstrategien Paging), Dateisysteme und Aufbau und Architektur des E/A-Systems. Betriebssysteme
In den Übungen werden die Inhalte vertieft, die aus dem ersten Semester bekannt sind. Einführung in Reguläre Ausdrücke und deren Anwendung für das Suchen und Manipulieren von Text. Verwendung von Regulären Ausdrücken auf der Kommandozeile (z.B. Befehle wie grep und sed). Einführung in die Shell-Programmierung in der Bash-Konsole: Syntax, Variablen, Operatoren, Ablaufsteuerung mit Schleifen und Verzweigungen. Implementierung von Shell-Scripts für Automatisierungs- und Dateimanipulationsaufgaben. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Computernetzwerke |
3.5 | 2.5 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ComputernetzwerkeDie Studierenden verfügen über Kenntnisse über alle Ebenen technischer Netze. Sie kennen die funktionale Gliederung von Kommunikationsaufgaben in Schichten und deren Zusammen-wirken. Weiters kennen sie technische Ausprägungen von Protokollen sowie deren Eignung für konkrete Anwendungsbereiche. Sie können netzwerk-spezifische Fragestellungen gemäß dem Schichtenmodell einordnen und konkrete Lösungen ausarbeiten sowie bestehende Lösungen bewerten. Sie kennen aktuelle technische Ausprägungen mit den dazugehörigen Protokollen zu allen Schichten und wissen auch über Sicherheitsaspekte bei Netzwerken Bescheid. Weiters haben die Absolvent*innen Kenntnisse über Programmierschnittstellen für netzwerkbasierte Software. Die Studierenden verfügen über grundlegende Kenntnisse der Softwareentwicklung für eingebettete Systeme. Sie können Programme für Mikrocontroller entwickeln, welche Peripherie ansteuern und damit Ein- und Ausgaben durchführen können. Computernetzwerke
Einführung, Schichtenmodelle, Übertragungsmedien, Rahmen und Prüfsummen, Topologien, Ethernet, Switches, TCP/IP: Protokolle (ARP, IPv4, IPv6, ICMP, UDP, TCP), DNS und VLANs. Netzwerk-Sicherheit (ausgewählte Attacken und Verteidigungsstrategien), Firewalls. Computernetzwerke
In der Übung synchron zur Vorlesung praktische Behandlung der Lehrinhalte. Hardwarenahe Programmierung
Socket-Programmierung: Architektur von Client/Server-Programmen, verbindungslose und verbindungs-orientierte Kommunikation, Architekturen für Server (Concurrent u. Iterativ), Multi-Protokoll-Server, APIs., Programmieren von Client/Server-Anwendungen in C. Hardwarenahe Programmierung: Einführung in die Mikrocontrollerprogrammierung in C, Einführung in die STM32/ARM Cortex-Architektur, Strukturierung eingebetteter Programme (Main Loop und Scheduling von Aufgaben), Verarbeitung von Eingabe und Ausgabe, Kommunikation mit Peripherie (Polling vs. Interrupts), Verwendung und Verarbeitung von Timer-Ereignissen, Design Patterns und Best Practices für hardwarenahe Programmierung. Hardwarenahe Programmierung
In der Übung synchron zur Vorlesung praktische Behandlung der Lehrinhalte. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Komponentenorientierte Softwareentwicklung |
6 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Komponentenorientierte SoftwareentwicklungDie Studierenden kennen die wesentlichen Grundlagen komponentenorientierter Softwareentwicklung und können diese auf modernen Entwicklungsplattformen, insbesondere auf der .NET-Plattform (hier liegt der technologische Schwerpunkt dieses Moduls) anwenden. Auf konzeptioneller Ebene werden den Studierenden die wesentlichen Kenntnisse zum Entwurf und zur Implementierung mehrschichtiger Anwendungen vermittelt. Anhand eines größeren, zusammenhängenden Übungsprojekts wird die praktische Umsetzung dieser Konzepte trainiert und vertieft. Komponentenorientierte Softwareentwicklung
Einführung in die Konzepte der komponentenorientierten Softwareentwicklung, Grundkonzepte der .NET Tech-nologie, Fortgeschrittene Konzepte von C# (Erwei-terungsmethoden, LINQ, async/await), Delegates, Datenbankzugriff mit ADO.NET, Entwicklung von Rich-Clients (Windows Presentation Foundation, Universal Windows Platform, WinUI 3, MAUI) und Web-Anwen-dungen (ASP.NET Core, Blazor), Architektur mehr-schichtiger .NET-Anwendungen, Web-Services (RESTful Web Services, OpenAPI, ASP.NET Core, SignalR). Komponentenorientierte Softwareentwicklung
Die Übungen vertiefen die Vorlesung, indem konkrete Beispiele mit den verschiedenen Technologien umgesetzt werden. Ergänzend werden wesentliche Grundkonzepte der Software-Architektur (Mehrschicht-Architektur, DAO-Muster etc.) vermittelt. Während des Semesters muss eine umfangreichere Projektaufgabe ausgearbeitet werden. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Softwareentwicklung mit Enterprise-Technologien |
6 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Softwareentwicklung mit Enterprise-TechnologienDie Studierenden kennen wesentliche Konzepte und Werkzeuge zur Realisierung von Enterprise-Anwendungen. Der Ausbildungsschwer- punkt liegt in der Vermittlung von theoretischen und praktischen Kenntnissen im Entwurf und in der Implementierung komplexer, mehrschichtiger Anwendungen. Sie kennen Werkzeuge und Frameworks, welche wesentliche Bereiche der Anwendungsent- wicklung unterstützen (O/R-Mapping-Frameworks, leichtgewichtige Container-Frameworks). Softwareentwicklung mit Enterprise-Technologien
Grundlagen von Java-basierten Komponententechno-logien (JavaBeans, Java Platform Module System), grundlegende Konzepte des O/R-Mappings und deren Anwendung und Java (Hibernate, JPA) und .NET (EntityFramework). Entwicklung mehrschichtiger Anwendungen mit Spring (Datenzugriff mit JDBC, JPA, Spring Data; Geschäftslogik: Transaktionsdefinition mithilfe von AOP; Entwicklung von REST APIs mit Spring Web MVC, Entwicklung und Betrieb von Web-Anwendungen mit Spring Boot), Behand-lung alternativer Architekturmuster wie CQS. Softwareentwicklung mit Enterprise-Technologien
Grundlagen von Java-basierten Komponententechno-logien (JavaBeans, Java Platform Module System), grundlegende Konzepte des O/R-Mappings und deren Anwendung und Java (Hibernate, JPA) und .NET (EntityFramework). Entwicklung mehrschichtiger Anwendungen mit Spring (Datenzugriff mit JDBC, JPA, Spring Data; Geschäftslogik: Transaktionsdefinition mithilfe von AOP; Entwicklung von REST APIs mit Spring Web MVC, Entwicklung und Betrieb von Web-Anwendungen mit Spring Boot), Behandlung alternativer Architekturmuster wie CQS. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Grundlagen der Computergrafik und Bildverarbeitung |
4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Grundlagen der Computergrafik und BildverarbeitungDie Studierenden kennen die mathematischen Grundlagen der Computergrafik, wissen über die Repräsentationsmöglichkeiten digitaler Bilder und kennen die elementaren Algorithmen und Methoden zur digitalen Bildverarbeitung. Grundlagen der Computergrafik und Bildverarbeitung
Einführung in die Computergrafik: Farbmodelle und Farberkennung, Modellierung, Transformationen, Projektionen, Ausschneiden und Entfernen, Beleuchtung und Schattierung, Strahlenverfolgung (ray tracing), Rasterung, dynamische Szenen und Animationen, Szenegrafen. Grundlagen der Bildverarbeitung: Digitale Bilder, Farbräume, Abtasttheorem; Resampling, Interpolation; Kompression; Bildverbesserung: Glättungsfilter, Kantendetektion, Intensitätstransformation; Segmentierung: intensitätsbasierte Verfahren, Optimal Threshold, Region Growing, Morphologische Operatoren. Grundlagen der Computergrafik und Bildverarbeitung
Einführung in die Computergrafik: Farbmodelle und Farberkennung, Modellierung, Transformationen, Projektionen, Ausschneiden und Entfernen, Beleuchtung und Schattierung, Strahlenverfolgung (ray tracing), Rasterung, dynamische Szenen und Animationen, Szenegrafen. Grundlagen der Bildverarbeitung: Digitale Bilder, Farbräume, Abtasttheorem; Resampling, Interpolation; Kompression; Bildverbesserung: Glättungsfilter, Kantendetektion, Intensitätstransformation; Segmentierung: intensitätsbasierte Verfahren, Optimal Threshold, Region Growing, Morphologische Operatoren. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Web-Programmierung und -Architekturen |
3.5 | 4 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Web-Programmierung und -ArchitekturenDie Studierenden besitzen grundlegende Kenntnisse, Fähigkeiten und Fertigkeiten für den Entwurf und die Entwicklung von Web-Seiten und Web-basierten Anwendungen, mit Fokus auf deren Benutzerschnittstellen. Sie sind in der Lage, gleichermaßen auf die Konzeption (Architektur- und Design-Aspekte) als auch auf die technische Umsetzung (Engineering-Aspekt) von Web-An-wendungen einzugehen. Die Studierenden kennen die wichtigsten Konzepte von modernen Web-Anwendungen sowie deren Architekturen. Darüber hinaus sind sie in der Lage performante Web-Anwendungen zu entwickeln und eine adäquate Sicherheit zu gewährleisten. Web-Design und -Programmierung
Konzept von Auszeichnungssprachen und deren Interpretation; Hypertext Markup Language (HTML), insbesondere Gliederung, Tabellen, Formulare und Grafiken; Cascading Style Sheets (CSS), Styling, Selektoren, Moderne Layout-Techniken, Responsive Design; Clientseitige Web-Programmierung mittels JavaScript, ausgewählten APIs und Browsertechnologien; Objektorientierung und Module, Einführung in Client - Server Kommunikation mittels REST Umgang mit entsprechenden Werkzeugen, wie Web-Entwicklungsumgebungen, Debuggern und Browser-Developer Tools. Web-Design und -Programmierung
Konzept von Auszeichnungssprachen und deren Interpretation; Hypertext Markup Language (HTML), insbesondere Gliederung, Tabellen, Formulare und Grafiken; Cascading Style Sheets (CSS), Styling, Selektoren, Moderne Layout-Techniken, Responsive Design; Clientseitige Web-Programmierung mittels JavaScript, ausgewählten APIs und Browsertechnologien; Objektorientierung und Module, Einführung in Client - Server Kommunikation mittels REST Umgang mit entsprechenden Werkzeugen, wie Web-Entwicklungsumgebungen, Debuggern und Browser-Developer Tools. Web-Architekturen und Frameworks
HTTP-Protokoll und Web Sockets, Single Page Applications (SPAs) mit Angular, TypeScript, Authentifizierung in Web-Anwendungen mit OAuth und OpenID Connect, Progressive Web Applications (PWAs), Single Page Applications (SPAs) mit React, Transport Layer Security (TLS) / Secure Socket Layer (SSL), Web-Sicherheit auf der Basis von Open Web Application Security Project (OWASP). Web-Architekturen und Frameworks
In der Übung synchron zur Vorlesung praktische Behandlung der Lehrinhalte, wobei besonders darauf geachtet wird, dass anhand einer größeren Software-Architektur die diskutierten Konzepte selbständig umgesetzt werden. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Verteilte und parallele Softwaresysteme |
2.5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Verteilte und parallele SoftwaresystemeDie Studierenden kennen die grundlegenden Begriffe, Modelle und Konzepte paralleler Algorithmen, Programme und Systeme. Sie wissen, welche zusätzlichen Aspekte bei der Entwicklung neben- läufiger bzw. paralleler Programme im Gegensatz zu sequenziellen Programmen berücksichtigt werden müssen und können verschiedene Konzepte und Strategien zur Aufteilung, parallelen Verarbeitung und Synchronisation anwenden. Sie kennen außerdem die wesentlichen Klassen und APIs zur Entwicklung paralleler Programme für .NET und können selbständig parallele Algorithmen entwickeln. Verteilte und parallele Softwaresysteme
Einführung in die Entwicklung paralleler und verteilter Programme (Motivation, Anwendungsgebiete, grund-legende Begriffe), Theoretische Grundlagen (Speedup, Effizienz, Amdahls Gesetz, Gustafsons Gesetz), Überblick über parallele Hardwarearchitekturen (Flynns Taxonomy, Pipelining, Shared Memory Systeme, Distributed Memory Systeme), Herausforderungen beim Erstellen neben-läufiger bzw. paralleler Programme (Deadlocks, Livelocks, Race Conditions, Overhead), Synchronisationsmechanismen und -konzepte (Locking, Mutex, Semaphoren, Barrieren, etc.), Muster für die Ent-wicklung paralleler Algorithmen und Applikationen, Ent-wicklung nebenläufiger bzw. paralleler Applikationen für .NET (Threads, Tasks, Concurrent Collections, asynchrone Programmierung), Ausblick auf weitere Programmier-modelle für parallele und verteilte Systeme (OpenMP, MPI, etc.) Verteilte und parallele Softwaresysteme
Übungen vertiefen den Stoff der Vorlesung durch praktische Beispiele. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Integrative Fächer und praktische Projekte
| 1. | 2. | 3. | 4. | 5. | 6. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Softwareprojekt-Engineering |
3 | 3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Softwareprojekt-EngineeringDie Studierenden können in Teams gebrauchstaugliche Software im Rahmen von Projekten ingenieurmäßig erstellen und Qualitäts- sicherung betreiben. Wichtig sind dabei weniger individuelle Fähigkeiten in Spezialbereichen als das Integrieren der Fähigkeiten mehrerer Personen zu einer produktorientierten, agilen Problemlösung im Team. Die Studierenden können informative Präsentationen (vor allem) über technische Inhalte erstellen und diese selbstsicher vor Publikum halten. Die Studierenden können sich in ein Team einfügen, typische Probleme, die bei Teamarbeit auftreten können, erkennen und zu ihrer Lösung beitragen. Softwareprojekt-Engineering 1: Teamorientierte Softwareentwicklung
Begriffswelt in Softwareprojekten, Produkt- und Projektentwicklungszyklus, ingenieurmäßige Projektentwicklung, Aufbauorganisation (software-entwicklungsspezifische Organisationsformen), Ablauforganisation (Vorgehensmethoden, Software- und Projektlebenszyklus), Teamführung und Motivation, Konfigurationsmanagement, Qualitätssicherung, Dokumentation von Softwareprojekten, Unterschiede zwischen traditioneller und agiler Vorgehensweise. Softwareprojekt-Engineering 1: Teamorientierte Softwareentwicklung
Begriffswelt in Softwareprojekten, Produkt- und Projektentwicklungszyklus, ingenieurmäßige Projektentwicklung, Aufbauorganisation (software-entwicklungsspezifische Organisationsformen), Ablauforganisation (Vorgehensmethoden, Software- und Projektlebenszyklus), Teamführung und Motivation, Konfigurationsmanagement, Qualitätssicherung, Dokumentation von Softwareprojekten, Unterschiede zwischen traditioneller und agiler Vorgehensweise. Softwareprojekt-Engineering 2: Skalierbare Prozessmodelle
Klassischer sowie moderner Projektablauf und dessen Skalierbarkeit, moderne Modelle und Methoden der Softwareprojekt-Entwicklung, Anforderungsanalyse, Motivation und Details agiler Vorgehensweisen, Projektplanung, Risikomanagement, projektseitige Unterstützung bei der Realisierung (Design, Implementierung, Testen), Produkteinführung, Betrieb, Wartung und Pflege Softwareprojekt-Engineering 2: Skalierbare Prozessmodelle
Klassischer sowie moderner Projektablauf und dessen Skalierbarkeit, moderne Modelle und Methoden der Softwareprojekt-Entwicklung, Anforderungsanalyse, Motivation und Details agiler Vorgehensweisen, Projektplanung, Risikomanagement, projektseitige Unterstützung bei der Realisierung (Design, Implementierung, Testen), Produkteinführung, Betrieb, Wartung und Pflege |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Softwareentwicklungsprozesse |
6 | 2.5 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SoftwareentwicklungsprozesseAufbauend auf dem im Modul SPE erarbeiteten Grundverständnis für ingenieursmäßige Softwareentwicklung kennen die Studierenden weiterführende Konzepte, Werkzeuge und Prozesse für Softwareent- wicklungsprojekte. Die in den Lehrveranstaltungen dieses Moduls vermittelten Kompetenzen sind im Detail: TCD3: Die Studierenden können Modultests für Anwendungen implementieren, die Ausführung der Tests in CI/CD Pipelines automatisieren und Software test-getrieben entwickeln. UML3: Die Studierenden kennen die UML, können Software objektorientiert modellieren und unterschiedliche Aspekte von Softwaresystemen in UML beschreiben. UEN3: Die Studierenden verstehen Usability und User Experience als wesentliche Qualitätsmerkmale für interaktive Software, können einen nutzerzentrierten Entwicklungsprozess durchführen und Methoden zur Evaluierung und Verbesserung der Benutzbarkeit von Software anwenden. KIS4: Die Studierenden haben ein Grundverständnis für unterschiedliche Verfahren der künstlichen Intelligenz, kennen ihre Einsatzmöglich- keiten aber auch Gefahren im Software Engineering und können gängige KI-Werkzeuge (z.B. Codegeneratoren) in der Praxis anwenden. Softwareentwicklung mit UML
Modellbegriff und Modellierungsbegriff, Grundlagen objektorientierte Analyse und Entwurf, UML-Grundlagen (Historie, Spracharchitektur, Metamodell etc.), objektorientierte Analyse und Modellierung anhand von UML (Klassendiagramm, Anwendungsfalldiagramm, Zustandsdiagramm, Sequenzdiagramm, Aktivitäts-diagramm, Verteilungsdiagramm), weiterführende Themen (Anwendungsfallbeschreibung, CRC, etc.). Im Rahmen einer durchgehenden Fallstudie werden in Teams von ca. drei Studierenden ausgewählte UML-Diagrammarten im Kontext einer modernen iterativ-inkrementellen ("agilen") Vorgehensweise angewendet und weiter-führende Entwurfsthemen (bspw. Design Patterns) diskutiert. Die zu entwickelnden UML Dia-gramme sollen einen durchgängigen Entwurf von Softwaresystemen ermöglichen. Testautomatisierung und Continuous Delivery
Grundlagen für das Testen von Software (Testarten, Modultests/Integrationstests/Systemtests, Testpyramide). Prinzipien und Muster zum Schreiben von Modultests und testbarer Software, Test Driven Development. Unit-Test- und Mocking-Frameworks. Testautomatisierung, Maßzahlen und Reporting. Grundlagen zu Continuous Integration/Delivery/Deployment. Build-Automatisierung und CI/CD-Pipelines. Testautomatisierung und Continuous Delivery
Grundlagen für das Testen von Software (Testarten, Modultests/Integrationstests/Systemtests, Testpyramide). Prinzipien und Muster zum Schreiben von Modultests und testbarer Software, Test Driven Development. Unit-Test- und Mocking-Frameworks. Testautomatisierung, Maßzahlen und Reporting. Grundlagen zu Continuous Integration/Delivery/Deployment. Build-Automatisierung und CI/CD-Pipelines. Usability Engineering
Usability und User Experience, Qualitätskriterien interaktiver Systeme und Methoden zur Evaluierung derselben; nutzerzentrierter Entwicklungsprozess, Methoden der User Research, Prototyping Methoden, Evaluationsmethoden (Usability Evaluierung, Expertenbasierte Evaluierung), Theorien und Konzepte benutzerzentrierter und aufgabengerechter System- und Interface-Gestaltung, Planung und Konzeption interaktiver Systeme unter Berücksichtigung verschiedener Kontexte, Designprinzipien & Design Patterns. Normen (insbes. ISO 9126, ISO 9241), Standards und Guidelines, Umsetzung eines praktischen Projektes anhand des nutzerzentrierten Design Prozesses Usability Engineering
Usability und User Experience, Qualitätskriterien interaktiver Systeme und Methoden zur Evaluierung derselben; nutzerzentrierter Entwicklungsprozess, Methoden der User Research, Prototyping Methoden, Evaluationsmethoden (Usability Evaluierung, Expertenbasierte Evaluierung), Theorien und Konzepte benutzerzentrierter und aufgabengerechter System- und Interface-Gestaltung, Planung und Konzeption interaktiver Systeme unter Berücksichtigung verschiedener Kontexte, Designprinzipien & Design Patterns. Normen (insbes. ISO 9126, ISO 9241), Standards und Guidelines, Umset-zung eines praktischen Projektes anhand des nutzerzentrierten Design Prozesses KI-Methoden im Software Engineering
Vermittlung der Grundlagen von KI- und ML-Techno-logien zur Unterstützung des Software Entwicklungs-prozesses, wie Generative KI, LLMs und dafür notwendige Fähigkeiten wie Prompt Engineering. Dabei erden die Rollen und der Einsatz von KI-Methoden in allen Phasen der Softwareentwicklung wie Aufgaben der Anforderungsanalyse, Code-Generierung, Fehler-erkennung und Softwaretests und Dokumentation beleuchtet und auch deren Herausforderungen, Risiken und damit verbundene ethische Aspekte (Datenschutz, Sicherheit, Transparenz) thematisiert. Vertiefung im Rahmen von praktischen Beispielen durch Einsatz von gängigen KI-gestützten Programmierwerk-zeugen (z.B. Github Copilot, OpenAI ChatGPT) zur Unterstützung der Programmentwicklung in Python-Umgebungen. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Software Studienprojekt |
4 | 4 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Software StudienprojektDie Studierenden können das in SPE, SPR und den weiteren Modulen erlernte theoretische Wissen in Kooperationsprojekten mit realen Auftraggebern umsetzen und vertiefen dadurch das Verständnis und vor allem den Anwendungsbezug des erlernten Wissens. Dazu realisieren die Studierenden im 4. und 5. Semester in Teams ein umfangreiches Softwareprojekt (mit einem Gesamtaufwand von ca. einem Personenjahr) mit einem realen Auf-traggeber. Software-Studienprojekt 1
Realisierung des ersten Teils eines umfangreichen Projekts mit realem Auftraggeber (aus Industrie/Wirtschaft oder Forschung) im Team, Durchlaufen definierter Projekt-phasen, Üben der Vorgehensmethoden und -modelle sowie der Erstellung aller relevanten Projekt(prozess)do-kumente und Produktdokumente. Software-Studienprojekt 2
Realisierung des zweiten Teils eines Projekts mit realem Auftraggeber (aus der Industrie/Wirtschaft oder For-schung) im Team, Durchlaufen definierter Projektphasen, Üben der Vorgehensmethoden und -modelle sowie der Erstellung aller relevanten Projek(prozess)dokumente und Produktdokumente. Mit dem Ziel des Abschlusses des Full-Cycle-Projekts. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Bachelorarbeit und -seminar, Wissenschaftliches Arbeiten |
9 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bachelorarbeit und -seminar, Wissenschaftliches ArbeitenDie Studierenden sind in der Lage, eine eigenständige, größere Arbeit mit wissenschaftlich-technisch korrekter Vorgehensweise zu verfassen, können über ihr Thema auf einem Niveau referieren, das einer vorgegebenen Zuhörerschaft angemessen ist, und können die für eine Lösungsfindung relevanten Inhalte und Sachverhalte in schriftlicher Form in einer Bachelorarbeit zusammenfassen. Bachelorarbeit
Die Studierenden verfassen fachlich ergänzend zu den Lehrveranstaltungen des Studiums (je nach gewähltem Thema) und mit Unterstützung durch die beiden anderen Lehrveranstaltungen in diesem Modul (Wissenschaftliches Arbeiten und Bachelorarbeitsseminar) ihre Bachelorarbeit. Die Studierenden werden bei der Erstellung der Bachelorarbeit individuell von einem/einer Lehrenden betreut. Bachelorarbeitsseminar
Das Bachelorseminar dient der Vorbereitung der Erstellung der schriftlichen Bachelorarbeit. Die Studierenden kennen Anforderungen an wissenschaftliches Arbeiten, ins-besondere Anforderungen an die Schriftform. Sie stellen ihre Arbeitsfortschritte begleitend zur Erstellung ihrer Arbeit im Bachelorseminar vor und stellen sich einer Diskussion mit ihren Kommilitoninnen. Es erfolgt somit eine gemeinsame Reflexion in der Gruppe, Klärung von Problemen und Schwierigkeiten, Klärung von theoretischen-inhaltlichen, methodischen und formalen Fragen. Dadurch, dass die Studierenden zweimal über ihre Bachelorarbeit vortragen und Feedback dazu bekommen, bereiten sie sich auch schon auf die Bachelorprüfung nach Ende des 6. Semesters vor. Wissenschaftliches Arbeiten
Lehrziel: Die Studierenden werden in die Lage versetzt, eine erste Abschlussarbeit in einem technischen Studium zu verfassen. Wesentliche Lehrinhalte: • Der Begriff “Wissenschaft” über die Zeit • Unterschiede zwischen hypothesengetriebenem und ingenieurswissen-schaftlichem Arbeiten • Recherche, wissenschaftliche Datenbanken • Richtiges Zitieren • Generischer Aufbau von Bachelorarbeiten • Richtiges Formulieren auf Wort-, Satz sowie Absatzebene. • Einführung in LaTeX, Literaturverwaltung mit (Bib)LaTeX. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Berufspraktikum, -seminar und Bachelorprüfung |
23.5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Berufspraktikum, -seminar und BachelorprüfungDie Studierenden können das erlernte, theoretische Wissen in ihrem Praktikum bei einem realen Unternehmen umsetzen und vertiefen dadurch das Verständnis und vor allem den Anwendungsbezug des erlernten Wissens. Der Berufspraktikumsbericht dient im Wesentlichen zur Doku- mentation des Berufspraktikums und fördert drüber hinaus die Schreibkompetenz. Bachelorprüfung
Berufspraktikum
Die Studierenden arbeiten vollzeitlich in einem Team in einem Unternehmen für mind. 12 Wochen (also mind. 60 Arbeitstage) an einem Softwareprojekt mit. Die Stu-dierenden werden dabei nicht nur von einem/einer Mitarbeiter*in des Unternehmens betreut, sondern auch von einem/einer Lehrenden des Studiengangs. Die Dokumentation des Berufspraktikums erfolgt im Rahmen des Berufs-praktikumsseminars (s.u.) in Form einer Seminararbeit. Diese wird von dem/der selben Lehrenden betreut und beurteilt wie das Berufspraktikum. Berufspraktikumsseminar
Begleitend zum Berufspraktikum erfolgt die Doku-mentation des Berufspraktikums in Form einer Seminar-arbeit. Diese wird von dem/der selben Lehrenden betreut wie das Berufspraktikum. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wahlfächer und Vertiefungen
| 1. | 2. | 3. | 4. | 5. | 6. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Wahlfach |
2.5 | 2.5 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
WahlfachDie Wahlfächer im 5. und 6. Semester ermöglichen eine individuelle Auswahl und Schwerpunktsetzung je nach Interesse der Studierenden. Die angebotenen Wahlfächer werden nach Bedarf an aktuelle Themen und Trends in der Softwareentwicklung angepasst. Je nach Auswahl der Wahlfächer kennen die Studierenden wichtige Konzepte der modernen Softwareentwicklung für unterschiedliche Umgebungen und Plattformen und können dieses anwenden. Wahlfach 1
Wahlfach: Mobile Computing - Einführung in „Mobile Rechen-Systeme“, Entwicklung mobiler Systeme mit .NET Compact Framework und Java Micro Edition, Context-Aware Sys-tems/Location-Based Services, Geographic Positioning System (GPS), Geographic Information Systems (GIS), Radio Frequency Identification (RFID) Die praktische Behandlung der Lehrinhalte erfolgt verschränkt mit der Vermittlung der theoretischen Konzepte, wobei besonders darauf geachtet wird, dass anhand diverser Aufgabenstellungen wichtige Konzepte und Architekturen mobiler Systeme (im Speziellen aber Kontext-Sensitiver Systeme) soft-ware-technisch umgesetzt werden. Wahlfach: Open Source Softwareentwicklung - Ver-mittlung der Grundidee von Open Source, Definitionen, Abgrenzungen und Umfeld von "Open Source", Recht-liche Aspekte bei der (kommerziellen) Softwareentwicklung mit Open Source Software, Open Source Softwareent-wicklung: Wesen, Prozess, Abgrenzung zu anderen Methoden, Open Source Strategien im Unternehmen Ergänzend zu den theoretischen bzw. konzeptionellen Inhalten wird anhand der Entwicklung einer kleinen Anwendung gezeigt, welche Aufgaben mit OpenSource Software verteilt über den gesamten Entwicklungszyklus erledigt werden können. Dabei werden Tools wie z. B. Eclipse (+Plugins), JU-nit, Ant, Git, Struts, Hibernate, Jakarta Commons, Log4J, Apache, Tomcat, watij bugzilla, LaTeX, Coverage behandelt. Wahlfach: Android-Programmierung - Anwendungsentwicklung unter Verwendung des mobilen Betriebssystems Android. Neben den grundlegenden Anwendungsbausteinen (Activity, Service, Receiver, …) konzentriert sich die LVA auf die verschiedenen zur Ver-fügung stehenden APIs. Insbesondere werden Themen wie UI-Gestaltung, Persistenz, Kommunikation, Ortung, Sensorik und Web-Technologien theoretisch und praktisch behandelt. Die Möglichkeiten der Softwareentwicklung für Android werden anhand der Entwicklung kleinerer Lösungen für Aufgabenstellungen und im Zuge eines Abschlussprojekts auch praktisch behandelt und vertieft. Wahlfach: iOS-Programmierung mit Swift - Anwendungsentwicklung unter Verwendung des mobilen Betriebssystems iOS mit der Programmiersprache Swift. Der Fokus liegt nach einer Erläuterung der historischen Entwicklung auf der Darstellung der neuen Sprachkonstrukte von Swift: • mächtige Aufzählungen, • Typsystem (Wert- und Referenzdatentypen), • Optionen, • Protokolle, • Erweiterungen, • generische Programmierung, • Speicherverwaltung und • funktionales Programmieren welche die Grundlage für die Entwicklung von Anwendungen auf den Apple-Plattformen bilden. Die Programmierschnittstellen der Plattform (APIs) wer-den danach angeschnitten. Die Möglichkeiten der Softwareentwicklung für iOS werden anhand der Entwicklung kleinerer Lösungen für Aufgabenstellungen und im Zuge eines Abschlussprojekts auch praktisch behandelt und vertieft. Wahlfach: Python-Programmierung - Python als universelle, dynamisch typisierte Scriptsprache. Besonderheiten der Syntax und Semantik (insbesondere hinsichtlich der dynamischen Typisierung). Python-Entwicklungsumgebungen (wie Spyder und PyCharm). Verwendung der wichtigsten Elemente der Python-Standardbibliothek. Beispiele typischer Anwendungen von Python für die Auswertung von Daten und deren Visualisierung mit Python-Bibliotheken (z. B. NumPy und MatPlot-Lib) sowie einfache KI-Anwendungen (z.B. mit scikit-learn). Wahlfach: Entwicklung grafischer Anwendungen mit Unity - Diese Lehrveranstaltung konzentriert sich auf die Entwicklung grafischer An-wendungen mit der Unity Engine. Bei Unity erfolgt die Softwareentwicklung durch eine Verknüpfung des Unity Editors mit C#-Skripten. Die Lehrveranstaltung behandelt die Organisation von Unity-Projekten, Grundlagen des Unity-Editors, Handhabung von Eingabe und Ausgabe, grafische Benutzungsschnittstellen, grafische Effekte, Simulation, und Deployment auf verschiedene Endgeräte (Desktop, Mobile, AR, VR). Sinn und Zweck der Lehrveranstaltung ist es, den Studierenden die Anwendungsentwicklung mit Game Engines näher zu bringen und damit die Grund-lagen für die Erstellung moderner grafischer Anwendungen in verschiedensten Anwendungsgebieten zu legen. Wahlfach: Meta-Programmierung - Die Lehrveranstaltung behandelt die Implementierung von Programmen, die andere Programme erzeugen (Codegeneratoren) oder verändern (Codetransformatoren) können. Im Detail umfasst die Lehrveranstaltung folgende Themen: statische Meta-Programmierung zur Übersetzungszeit mit C++ (Template Meta-Programmierung), Codegenerierung mit Template Engines, API-basierte Codegeneratoren, .NET Compiler Platform, aspektorientierte Programmierung mit AspectJ in Java, Meta-Programmierung in interpretierten Sprachen (z.B. Ruby) Wahlfach: Blockchains - Einführung zu Blockchains und Distributed Ledger Technologien: Grundlagen (am Beispiel Bitcoin): Kryptographie, Datenstrukturen, Konsensverfahren, Mining Ethereum und Smart Contracts Permissioned Blockchains Technologien und Werkzeuge Entwicklung von dezentralen Applikationen (DApps) Anwendungsfälle: Tokens, Supply Chain, DeFi, etc. Android-Programmierung
Anwendungsentwicklung unter Verwendung des mobilen Betriebssystems Android. Neben den grundlegenden Anwendungsbausteinen (Activity, Service, Receiver, …) konzentriert sich die LVA auf die verschiedenen zur Ver-fügung stehenden APIs. Insbesondere werden Themen wie UI-Gestaltung, Persistenz, Kommunikation, Ortung, Sensorik und Web-Technologien theoretisch und praktisch behandelt. Die Möglichkeiten der Softwareentwicklung für Android werden anhand der Entwicklung kleinerer Lösungen für Aufgabenstellungen und im Zuge eines Abschlussprojekts auch praktisch behandelt und vertieft. Blockchains
Einführung zu Blockchains und Distributed Ledger Technologien: Grundlagen (am Beispiel Bitcoin): Kryptographie, Datenstrukturen, Konsensverfahren, Mining Ethereum und Smart Contracts Permissioned Blockchains Technologien und Werkzeuge Entwicklung von dezentralen Applikationen (DApps) Anwendungsfälle: Tokens, Supply Chain, DeFi, etc. Entwicklung grafischer Anwendungen mit Unity
Diese Lehrveranstaltung konzentriert sich auf die Ent-wicklung grafischer Anwendungen mit der Unity Engine. Bei Unity erfolgt die Softwareentwicklung durch eine Verknüpfung des Unity Editors mit C#-Skripten. Die Lehrveranstaltung behandelt die Organisation von Unity-Projekten, Grundlagen des Unity-Editors, Handha-bung von Eingabe und Ausgabe, grafische Benutzungs-schnittstellen, grafische Effekte, Simulation, und Deployment auf verschiedene Endgeräte (Desktop, Mobile, AR, VR). Sinn und Zweck der Lehrveranstaltung ist es, den Studierenden die Anwendungsentwicklung mit Game Engines näher zu bringen und damit die Grundlagen für die Erstellung moderner grafischer Anwendungen in verschiedensten Anwendungsgebieten zu legen. iOS-Programmierung mit Swift
Anwendungsentwicklung unter Verwendung des mobilen Betriebssystems iOS mit der Programmiersprache Swift. Der Fokus liegt nach einer Erläuterung der historischen Entwicklung auf der Darstellung der neuen Sprachkon-strukte von Swift: • mächtige Aufzählungen, • Typsystem (Wert- und Referenzdatentypen), • Optionen, • Protokolle, • Erweiterungen, • generische Programmierung, • Speicherverwaltung und • funktionales Programmieren welche die Grundlage für die Entwicklung von An-wendungen auf den Apple-Plattformen bilden. Die Pro-grammierschnittstellen der Plattform (APIs) werden danach angeschnitten. Die Möglichkeiten der Softwareentwicklung für iOS werden anhand der Entwicklung kleinerer Lösungen für Aufgabenstellungen und im Zuge eines Abschluss-projekts auch praktisch behandelt und vertieft. Meta-Programmierung
Die Lehrveranstaltung behandelt die Implementierung von Programmen, die andere Programme erzeugen (Codegeneratoren) oder verändern (Codetransformatoren) können. Im Detail umfasst die Lehrveranstaltung folgende Themen: statische Meta-Programmierung zur Über-setzungszeit mit C++ (Template Meta-Programmierung), Codegenerierung mit Template Engines, API-basierte Codegeneratoren, .NET Compiler Platform, aspektorientierte Programmierung mit AspectJ in Java, Meta-Programmierung in interpretierten Sprachen (z.B. Ruby) Mobile Computing
Einführung in „Mobile Rechen-Systeme“, Entwicklung mobiler Systeme mit .NET Compact Framework und Java Micro Edition, Context-Aware Systems/Location-Based Services, Geographic Positioning System (GPS), Geo-graphic Information Systems (GIS), Radio Frequency Identification (RFID) Die praktische Behandlung der Lehrinhalte erfolgt verschränkt mit der Vermittlung der theoretischen Konzepte, wobei besonders darauf geachtet wird, dass anhand diverser Aufgabenstellungen wichtige Konzepte und Architekturen mobiler Systeme (im Speziellen aber Kontext-Sensitiver Systeme) softwaretechnisch umgesetzt werden. Open Source Softwareentwicklung
Vermittlung der Grundidee von Open Source, Definitionen, Abgrenzungen und Umfeld von "Open Source", Rechtliche Aspekte bei der (kommerziellen) Softwareentwicklung mit Open Source Software, Open Source Softwareentwicklung: Wesen, Prozess, Abgrenzung zu anderen Methoden, Open Source Strategien im Unternehmen Ergänzend zu den theoretischen bzw. konzeptionellen Inhalten wird anhand der Entwicklung einer kleinen Anwendung gezeigt, welche Aufgaben mit OpenSource Software verteilt über den gesamten Entwicklungszyklus erledigt werden können. Dabei werden Tools wie z. B. Eclipse (+Plugins), JU-nit, Ant, Git, Struts, Hibernate, Jakarta Commons, Log4J, Apache, Tomcat, watij bugzilla, LaTeX, Coverage behandelt. Python-Programmierung
Python als universelle, dynamisch typisierte Scriptsprache. Besonderheiten der Syntax und Semantik (insbesondere hinsichtlich der dy-namischen Typisierung). Python-Entwicklungsumgebungen (wie Spyder und PyCharm). Verwendung der wichtigsten Elemente der Python-Standardbibliothek. Beispiele typischer Anwendungen von Python für die Auswertung von Daten und deren Visualisierung mit Python-Bibliotheken (z. B. NumPy und MatPlot-Lib) sowie einfache KI-Anwendungen (z.B. mit scikit-learn). Wahlfach 2
Wahlfach: Mobile Computing - Einführung in „Mobile Rechen-Systeme“, Entwicklung mobiler Systeme mit .NET Compact Framework und Java Micro Edition, Context-Aware Sys-tems/Location-Based Services, Geographic Positioning System (GPS), Geographic Information Systems (GIS), Radio Frequency Identification (RFID) Die praktische Behandlung der Lehrinhalte erfolgt verschränkt mit der Vermittlung der theoretischen Konzepte, wobei besonders darauf geachtet wird, dass anhand diverser Aufgabenstellungen wichtige Konzepte und Architekturen mobiler Systeme (im Speziellen aber Kontext-Sensitiver Systeme) soft-ware-technisch umgesetzt werden. Wahlfach: Open Source Softwareentwicklung - Ver-mittlung der Grundidee von Open Source, Definitionen, Abgrenzungen und Umfeld von "Open Source", Recht-liche Aspekte bei der (kommerziellen) Softwareentwicklung mit Open Source Software, Open Source Softwareent-wicklung: Wesen, Prozess, Abgrenzung zu anderen Methoden, Open Source Strategien im Unternehmen Ergänzend zu den theoretischen bzw. konzeptionellen Inhalten wird anhand der Entwicklung einer kleinen Anwendung gezeigt, welche Aufgaben mit OpenSource Software verteilt über den gesamten Entwicklungszyklus erledigt werden können. Dabei werden Tools wie z. B. Eclipse (+Plugins), JU-nit, Ant, Git, Struts, Hibernate, Jakarta Commons, Log4J, Apache, Tomcat, watij bugzilla, LaTeX, Coverage behandelt. Wahlfach: Android-Programmierung - Anwendungsentwicklung unter Verwendung des mobilen Betriebssystems Android. Neben den grundlegenden Anwendungsbausteinen (Activity, Service, Receiver, …) konzentriert sich die LVA auf die verschiedenen zur Ver-fügung stehenden APIs. Insbesondere werden Themen wie UI-Gestaltung, Persistenz, Kommunikation, Ortung, Sensorik und Web-Technologien theoretisch und praktisch behandelt. Die Möglichkeiten der Softwareentwicklung für Android werden anhand der Entwicklung kleinerer Lösungen für Aufgabenstellungen und im Zuge eines Abschlussprojekts auch praktisch behandelt und vertieft. Wahlfach: iOS-Programmierung mit Swift - Anwendungsentwicklung unter Verwendung des mobilen Betriebssystems iOS mit der Programmiersprache Swift. Der Fokus liegt nach einer Erläuterung der historischen Entwicklung auf der Darstellung der neuen Sprachkonstrukte von Swift: • mächtige Aufzählungen, • Typsystem (Wert- und Referenzdatentypen), • Optionen, • Protokolle, • Erweiterungen, • generische Programmierung, • Speicherverwaltung und • funktionales Programmieren welche die Grundlage für die Entwicklung von Anwendungen auf den Apple-Plattformen bilden. Die Programmierschnittstellen der Plattform (APIs) wer-den danach angeschnitten. Die Möglichkeiten der Softwareentwicklung für iOS werden anhand der Entwicklung kleinerer Lösungen für Aufgabenstellungen und im Zuge eines Abschlussprojekts auch praktisch behandelt und vertieft. Wahlfach: Python-Programmierung - Python als universelle, dynamisch typisierte Scriptsprache. Besonderheiten der Syntax und Semantik (insbesondere hinsichtlich der dynamischen Typisierung). Python-Entwicklungsumgebungen (wie Spyder und PyCharm). Verwendung der wichtigsten Elemente der Python-Standardbibliothek. Beispiele typischer Anwendungen von Python für die Auswertung von Daten und deren Visualisierung mit Python-Bibliotheken (z. B. NumPy und MatPlot-Lib) sowie einfache KI-Anwendungen (z.B. mit scikit-learn). Wahlfach: Entwicklung grafischer Anwendungen mit Unity - Diese Lehrveranstaltung konzentriert sich auf die Entwicklung grafischer An-wendungen mit der Unity Engine. Bei Unity erfolgt die Softwareentwicklung durch eine Verknüpfung des Unity Editors mit C#-Skripten. Die Lehrveranstaltung behandelt die Organisation von Unity-Projekten, Grundlagen des Unity-Editors, Handhabung von Eingabe und Ausgabe, grafische Benutzungsschnittstellen, grafische Effekte, Simulation, und Deployment auf verschiedene Endgeräte (Desktop, Mobile, AR, VR). Sinn und Zweck der Lehrveranstaltung ist es, den Studierenden die Anwendungsentwicklung mit Game Engines näher zu bringen und damit die Grund-lagen für die Erstellung moderner grafischer Anwendungen in verschiedensten Anwendungsgebieten zu legen. Wahlfach: Meta-Programmierung - Die Lehrveranstaltung behandelt die Implementierung von Programmen, die andere Programme erzeugen (Codegeneratoren) oder verändern (Codetransformatoren) können. Im Detail umfasst die Lehrveranstaltung folgende Themen: statische Meta-Programmierung zur Übersetzungszeit mit C++ (Template Meta-Programmierung), Codegenerierung mit Template Engines, API-basierte Codegeneratoren, .NET Compiler Platform, aspektorientierte Programmierung mit AspectJ in Java, Meta-Programmierung in interpretierten Sprachen (z.B. Ruby) Wahlfach: Blockchains - Einführung zu Blockchains und Distributed Ledger Technologien: Grundlagen (am Beispiel Bitcoin): Kryptographie, Datenstrukturen, Konsensverfahren, Mining Ethereum und Smart Contracts Permissioned Blockchains Technologien und Werkzeuge Entwicklung von dezentralen Applikationen (DApps) Anwendungsfälle: Tokens, Supply Chain, DeFi, etc. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wahlpflichtige Vertiefung 1: Web Engineering - WEB
| 1. | 2. | 3. | 4. | 5. | 6. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Vertiefung: Scripting und Web Application Testing |
5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Vertiefung: Scripting und Web Application TestingDie Studierenden kennen unterschiedliche Aspekte des Testens von Web-Anwendungen (z.B. UI, Security, Performance Testing). Sie können Test für Web-Anwendungen mit gängigen Werkzeugen beschreiben (z.B. Selenium, Cypress, Playwright) und automatisiert ausführen. Die Studierenden haben Kenntnisse über Scripting-Technologien sowie deren Anwendung in Web-basierten Systemen. Sie haben einen Überblick über aktuelle Script-Sprachen und können Web-Anwendungen mit PHP realisieren. Scripting
Nach der Wiederholung der Grundlagen von HTTP und Client/Server-Architekturen werden die Möglichkeiten zur Erzeugung von dynamischen Inhalten und die Reali-sierung von zustandsbehafteten Web-Anwendungen (z. B. mit View State und Sessions) behandelt. Dann werden die wesentlichen Kon-zepte von Scriptsprachen (z. B. Inter-pretation und dynamische Typisierung) erläutert bevor mit PHP ein Beispiel einer Scriptsprache im Detail behandelt wird. Zusätzlich werden verschiedene Möglichkeiten des Datenbankanschlusses (z. B. an MySQL) besprochen. Die vermittelten Konzepte werden begleitend nach dem Auf-setzen eines Servers und der Untersuchung von Request und Response für die Lösung eines Übungsprojekts (z. B. Bookshop) eingesetzt. Web-Application Testing
Nach einer kurzen Motivation und Wiederholung der Testpyramide und der unterschiedlichen Teststrategien behandelt diese Lehrveranstaltung die Im-plementierung und automatische Ausführung von Systemtests für Web-An-wendungen. Zu Beginn werden Methoden und Best Practices zur Konzeption und Ablei-tung von Testfällen besprochen, im Anschluss erfolgt ein Überblick über ak-tuelle Werkzeuge zur Implementierung von Systemtests (z.B. Selenium, Cypress, Playwright) sowie die Integration dieser Tests in CI/CD Pipelines zur automatischen Ausführung. Neben Tests zur Überprüfung der funktiona-len Korrektheit werden auch Methoden zur automatischen Durchführung von Leistungs- und Lasttests sowie von Sicherheitstests besprochen. Den Abschluss bildet ein Ausblick in den Bereich des Application Monitoring, um die Korrektheit und Leistungsfähigkeit einer Applikation auch während des Betriebs überwachen zu können. Neben den theoretischen und konzeptionellen Inhalten werden die jeweiligen Methoden und Werkzeuge zum Testen von Web-Applikationen im Rahmen von praktischen Übungsaufgaben erlernt und eingesetzt. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Vertiefung: Virtualisierungstechnologien und angewandte Mathematik für das Web |
5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Vertiefung: Virtualisierungstechnologien und angewandte Mathematik für das WebDie Studierenden kennen ausgesuchte Inhalte der angewandten Mathematik mit Bezug zum Web und zu Web-Anwendungen, vor allem Graphen und Algorithmen darauf (im Sinne von: das Web als großer Graph). Sie haben die Fähigkeit, Methoden der Graphen-theorie auf Problemstellungen der Informatik und des Software Engineering anzuwenden. Die Studierenden besitzen Kenntnisse der Konzepte von Virtualisierungsansätzen und Containertechnologien Sie kennen die wichtigsten Vertreter davon (vor allem docker) und können diese auswählen, installieren, administrieren und verwenden. Angewandte Mathematik für das Web
•Grundbegriffe der Graphentheorie inkl. Beispiele spe- zieller Graphentypen, Unterstrukturen, Gewichtung, Adjazenzmatrizen, Wege, Pfade, Euler, Hamilton, Iso- morphismus etc. •Elementare Graphenalgorithmen (Dijkstra, A*, Kruskal) inkl. Beispiele und Begründung •Weitere Anwendungen der Graphentheorie •Modellierung des WWW (Google Page Rank...) •P vs. NP mit Beispielen (SAT, Graphenfärbung) und Grundbegriffe der theoretischen Informatik •Berechenbarkeit Angewandte Mathematik für das Web
•Grundbegriffe der Graphentheorie inkl. Beispiele spe- zieller Graphentypen, Unterstrukturen, Gewichtung, Adjazenzmatrizen, Wege, Pfade, Euler, Hamilton, Iso- morphismus etc. •Elementare Graphenalgorithmen (Dijkstra, A*, Kruskal) inkl. Beispiele und Begründung •Weitere Anwendungen der Graphentheorie •Modellierung des WWW (Google Page Rank...) •P vs. NP mit Beispielen (SAT, Graphenfärbung) und Grundbegriffe der theoretischen Informatik •Berechenbarkeit Virtualisierungstechnologien
Einführung und Motivation: • Gegenüberstellung von Virtualisierung und Containern • Begriffe Hypervisor, Paravirtualisierung, Container • Motivation für den Einsatz von Containern mit Hilfe der Begriffe Micro Services, DevOps, Continuous Delivery/Deployment Docker als Container-Implementierung: • Docker-Überblick • Architektur (Engine, Client, Images Container, Registry, API) • Docker command workflow für Images und Container • Technologische Grundlagen (Linux cgroups, namespaces, union file system) • Daten in Containern (Named volumes, Host mounted volumes) • Container Networking (Container <-> Host, Container <-> Container), Software Defined Networks • Automatisiertes Erstellen von Images sowie die Ein- bindung in ein Continuous Integration/Delivery System (Dockerfile) • Docker für Windows/Docker für Mac, docker-machine • Container Orchestrierung mit docker-compose • Clustering mit docker-swarm (Überblick) • Orchestrierung mit docker-swarm und Kubernetes (Überblick) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Vertiefung: Moderne App-Frameworks |
4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Vertiefung: Moderne App-FrameworksDie Studierenden kennen ausgesuchte, aktuelle Frameworks, Bibliotheken und Werkzeuge der App- und Web-Entwicklung für unterschiedliche Plattformen und können diese einsetzen. Moderne App-Frameworks
Behandlung jeweils aktueller Themen aus dem Gebiet der App- und Web-Entwicklung für unterschiedliche Platt-formen (z.B. aktuelle JavaScript-Bibliotheken für grafische Benutzeroberflächen, neue Programmiersprachen, neue Frameworks und/oder Architekturen für Apps und Web-Anwendungen). |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Organisation und Management Fächer
| 1. | 2. | 3. | 4. | 5. | 6. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Betriebswirtschaftslehre |
3 | 2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BetriebswirtschaftslehreDie Studierenden kennen die Grundlagen wirtschaftlicher Zusammenhänge und Strukturen. Die Studierenden verfügen damit über ein Denkgerüst, in das sie nachfolgende Inhalte insbesondere an der Schnittstelle zwischen Informatik und Wirtschaft in der ökonomischen Dimension sicher einordnen können. Vor allem verstehen sie die grundlegenden Bedeutungsinhalte wirtschaftlicher Kenngrößen gerade im Dienstleistungsunternehmen sicher und dauerhaft einordnen und einschätzen zu können. Betriebswirtschaftslehre und Rechnungswesen 1
Betriebswirtschaftslehre: Volkswirtschaftliche Grundlagen; Stakeholder und Shareholder, Unternehmerische Ziele und Leistungsbereiche (F&E; Beschaffung, Produktion, Absatz); Unternehmensrechtliche Grundlagen. Rechnungswesen: Rolle des Rechnungswesens im Unternehmen; Ziele und Aufgaben der Doppelten Finanzbuchhaltung, Grundlegende Systematik, einfache Buchungsfälle; Abschlussarbeiten, Grundlagen der Bilan-zierung; Bilanzanalyse; Fallbeispiele aus IT-Unternehmen; Einnahmen-Ausgaben-Rechnung (StartUp-Szenario). Betriebswirtschaftslehre und Rechnungswesen 2
Betriebswirtschaftslehre: Unternehmensführung; Strategisches/Operatives Management; Methoden und Techniken der Unternehmensführung; Finanzierung und Investition, Verfahren der Investitionsrechnung, vom Business Plan zum Business Model Canvas. Rechnungswesen: Ziele und Aufgaben der Kostenrechnung; Systeme der Kostenrechnung; Kostenarten, -stellen und -trägerrechnung; Kalkulation; Deckungsbeitragsrechnung, Plankostenrechnung, Abweichungsanalysen, Fallbeispiele aus IT-Unternehmen. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Geschäftsprozessmanagement und IT-Recht |
2 | 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Geschäftsprozessmanagement und IT-RechtDie Studierenden sind in der Lage, Geschäftsprozesse strategisch zu verorten und diese in einer Gesamtsicht darzustellen (Process Map). Sie können Geschäftsprozesse identifizieren, abgrenzen nach verschiedenen Kriterien analysieren sowie mit praxiserprobten Methoden und Werkzeugen modellieren, um daraufhin deren Performance zu messen, zu simulieren und zielorientiert zu verbessern. Sie sind in der Lage, mit Hilfe von Process-Mining Ver-besserungspotentiale und versteckte Probleme in Geschäftsprozessen offenzulegen und kennen die Einsatzmöglichkeiten von Robotic Process Automation. Im Kontext der rechtlichen Dimension im Zusammenhang mit Software als Vertragsgegenstand, des Entstehungsprozesses von Software kennen die Studierenden die wichtigsten Grundlagen aus den jeweiligen Teilgebieten des IT-Rechts. Geschäftsprozessmanagement
Defizite funktionsorientierter Ablauf- und Aufbauorgani-sation in einem Unternehmen, Bedeutung und Be-gründung einer prozessorientierten, integrierten Sichtweise, ausgewählte typische Geschäftsprozesse als konkreter Betrachtungshintergrund, Identifizierung und Definition von Geschäftsprozessen; Modellierung, Analyse von Geschäftsprozessen mit Process-Mining-Methoden und -Werkzeugen; Simulation von Geschäftsprozessen. Erhebungs- und Visualisierungsmethoden (EPK, BPMN 2.0); Implementierung von Ge-schäftsprozessen mit Hilfe von Prozessmanagement-Systemen bzw. RPA (Robotic Process Automation). IT-Recht
Einführung in die Grundbegriffe, Verträge, ABGB, Software als Rechtsobjekt, Software als Sache, Eigen-tum/Besitz/Innehabung, Eigentum als Sachenrecht, Typenzwang, geistiges Eigentum, Software, Urheberrecht bzw. Verwertungsrechte, Softwareverträge, Über-tragung/Werknutzungsrechte, Entwicklersicht, Software-schutz, Anwendersicht, andere Variationen des Software-schutzes, Patent, Gebrauchsmuster, Wettbewerbsrecht, berufsrechtliche Voraussetzungen, Vertragsarten für Softwareerstellung/Überlassung, Softwarefehler, Gewährleistung, Garantie, Haftung, Produkthaftung |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Studienfördernde Fächer
| 1. | 2. | 3. | 4. | 5. | 6. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Sozialkompetenz und Nachhaltigkeit |
1.5 | 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sozialkompetenz und NachhaltigkeitPräsentationstechniken: Die Student*innen sind in der Lage, individuelle, kreative Präsentationen strukturiert vorzubereiten. Sie verstehen es Wissensvermittlung durch unterschiedliche, abwechslungsreiche Elemente zu gestalten, um die Aufmerksamkeit des Publikums, durch mehrere Wahrnehmungskanäle, zu steigern. Mit Hilfe von umfangreichem und detailliertem Feedback, gewinnen diese an Sicherheit und können deshalb ihr persönliches Auftreten verbessern und Lampenfieber verringern. Dadurch passieren weniger Fehler und die Überzeugungsfähigkeit wird gesteigert. Teambuilding und Konfliktmanagement: Studierende erwerben umfassende Kompetenzen, um in agilen Arbeitsbereichen erfolgreich zu handeln. Sie kennen agile Werte und können diese in Teams lebbar machen. Sie verstehen die Bedeutung von Führung auf Augenhöhe, können Vertrauen aufbauen sowie Eigeninitiative und Selbstorganisation fördern. Zudem reflektieren sie ihr eigenes Ver-halten im Team, erkennen ihre Rolle und arbeiten iterativ an gemeinsamen Zielen. Die Lehrveranstaltung zeigt, wie Herausforderungen in virtuellen und interkulturellen Teams erfolgreich gemeistert werden können. Studierende entwickeln Strategien, um Konflikte in Projektteams zu bewältigen, lernen Konfliktphasen zu analysieren und verstehen den Wert von Win-Win-Lösungen. Sie lernen Konfliktbewältigungsstrategien kennen und diese anzuwenden. Nachhaltigkeit in der IT: Studierende entwickeln ein tiefes Verständnis für die komplexen Herausforderungen und Chancen einer nachhaltigen Entwicklung. Sie lernen, wie Klimawandel und planetare Grenzen mit globalen Initiativen wie dem Green Deal, den SDGs und ESG-Prinzipien verknüpft sind. Sie erfahren grundlegende Fakten zum Thema Nachhaltigkeitsreporting, Green Claims Directive und CO2-Kompensationen. Zudem verstehen sie die Bedeutung von Green IT und lernen, wie digitale Technologien nachhaltig eingesetzt werden können, um Ressourcen effizient zu nutzen, den Energieverbrauch zu senken und zur Gestaltung einer klimafreundlichen Wirtschaft beizutragen. Zudem erfahren sie, wie Menschen zum Handeln motiviert werden können. Teambuilding und Präsentation
Präsentationstechniken: Erstellung von individuellen, kreativen und strukturierten Präsentationen zu Megatrendthemen, Wissensver-mittlung durch Edutainment, Selbstbewusstes, au-thentisches Auftreten, Rhetorik, Einbinden von Publikum, Freies Sprechen, Visualisierungsregeln, Spontanreden und Improvisieren, Storytelling, Selbstpräsentation, Elevator Pitch, Umfangreiches und detailliertes Feedback Videoanalyse und Selbstreflexion Teambuilding und Konfliktmanagement: Agile Teams, Aufbau von Vertrauen, Selbstorganisation und Eigenverantwor-tung, offene Fehlerkultur, Zusammenarbeit auf Augenhöhe, Probleme in Projektteams, gruppenpsychologische Phänomene, Prozessanalyse, Rollen im Team, Zusammenarbeit in selbstorganisierten Teams, Teamphasen und passende Führung, Konfliktdefinition, Arten von Konflikten, Eskalationsstufen, apokalyptische Reiter, gewaltfreie Kommunikation, Konfliktanalyse, persönlicher Umgang mit Konflikten, Konfliktlösungstrategien, Win-Win-Situationen erzeugen, das Harvard-Konzept, Konfliktmoderation Nachhaltigkeit in der IT
Nachhaltigkeit: Grundlagen und Definition der Nachhaltigkeit (Brundlandt, etc.) Ökologische Herausforderungen und Lösungsansätze (Klimawandel und seine Folgen, planetare Belastungsgrenzen, notwenige Anpassungsstrategien) Globale Nachhaltigkeitsziele und politische Rahmenbedingungen (SDGs, Green Deal, Pariser Klimaabkommen, Agenda 2030) Nachhaltigkeit in der Wirtschaft und Regulatorik (CSRD/ Scopes, ESG, GCD, CSDDD etc.) Nachhaltige Technologien und wirtschaftliche Instrumente (Green IT, Co2 Kompensation) Werteorientierte Transformation und nachhaltige Kommunikation (Gemeinwohlökonomie, Purpose Driven Organisations, Klimakommunikation, Gamechanger) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Kontakt
E-MailE se@fh-hagenberg.at
TelefonT +43 5 0804 22000
Quick Links
Ich helfe dir bei der Studienwahl.