Studieninhalt

Der berufsbegleitende MAS Master of Advanced Studies Software Engineering vermittelt Ihnen modernes Technologiewissen und umfangreiche Methodenkompetenzen. Die Dozierenden aus Hochschule und Wirtschaft sichern Ihnen Hands-on experiences: Sie lernen, indem Sie selbst anwenden und profitieren von einem nachhaltigen Lernerlebnis.

Beim Lernen sind uns Konzepte wichtiger als konkrete Technologien. Doch Konzepte können Sie nur anhand konkreter Technologien erlernen – deshalb arbeiten Sie im MAS Software Engineering mit aktuellen Technologien. Wir setzen Java und Java-Technologien als Schulsprache ein.

Wie Ihr Studium strukturiert ist

Der Weiterbildungsmaster MAS Software Engineering besteht aus 3 Zertifikatskursen «Certificate of Advanced Studies» (CAS) und der Master Thesis. Insgesamt umfasst Ihr Studium 60 Kreditpunkte (15 pro Semester), die Sie durch Präsenzunterricht (inklusive Teamarbeiten und Übungen), Selbststudium und Ihrer Master Thesis erarbeiten.

Die 3 Zertifikatskurse können Sie auch einzeln besuchen, ohne den gesamten MAS zu absolvieren.

Alle 3 Semester beinhalten zu einem wesentlichen Teil praktische Übungen und Teamarbeiten. Für die Übungen benötigen Sie ein eigenes Notebook. Während der unten angegebene Dauer finden auch Ferien statt.

Dauer: Etwa 25 Wochen
10 Lektionen pro Woche (dienstags und donnerstags 17:15 Uhr bis 21:50 Uhr) und Selbststudium Kurszertifikat Certificate of Advanced Studies (CAS) mit 15 ECTS

Unix Betriebssysteme
  • Einführung: Entstehung, Derivate, Normierung
  • UNIX-Philosophie und Architektur
    (Kern und GUI-Aufsätze)
  • Unix Shell und Shell Scripts, Unix Programmierung
  • Parallelverarbeitung und Interprozess-Kommunikation, Prozesszustände, Scheduling
  • POSIX Threads, Interprozesskommunikation (IPC): Unix Signale, Unix Pipes
Programmieren in C++
  • Datentypen, Operatoren, Anweisungen, Kontrollstrukturen
  • Blöcke, Funktionen, Klassen, friend Klassen, Templates, Namespaces
  • Vererbung, Virtuelle Funktionen, Mehrfachvererbung
  • Dynamische Speicherverwaltung
  • Schnittstelle zu C, Runtime-Type-Information RTTI
  • Exception Handling, Input- und Output in C++
  • ANSI/ISO C++ und Klassenbibliotheken
Web Engineering 1
  • Grundlagen HTML
  • Grundlagen CSS
  • Grundlagen JavaScript/EcmaScript 6
  • DOM und jQuery
  • Web App ohne Serververbindung
Software-Prozesse
  • Software-Vorgehensmodelle
  • Wasserfall- und V-Modell
  • Iterative Modelle (Unified Process)
  • Agile Prozesse (Scrum, XP)
  • Kombination von Prozessen („balanced approach“)
Windows Betriebssysteme
  • Einführung: Entstehung, Versionen und Architektur
  • Windows Registry und Services
  • Zugriffsrechte
  • Prozesse, Threads und Scheduling, Interprozesskommunikation
  • Windows Graphical User Interface
  • Dateisysteme: FAT, NTFS und Festplattenpartitionierung
Einführung in Requirements Engineering
  • Übersicht Requirements Engineering Methoden
  • Use Cases für Funktionale Anforderungen
  • Qualitätsmodell für Nichtfunktionale Anforderungen
  • Requirements Management: Verwalten, Priorisieren, Changemanagement
  • Quellen und Erhebungstechniken für Requirements
Programmieren Java
  • Datentypen, Operatoren, Anweisungen und Kontrollstrukturen
  • Programmstruktur (Blöcke, Methoden, Klassen, innere Klassen, Anwendung von Generics, Packages)
  • Schnittstellen, Vererbung und Polymorphismus,
  • Exception Handling
  • Ein- /Ausgabe und Streams
  • Architektur der Java Virtual Machine
Objektorientierte Modellierung
  • Vertiefung Objektorientierte Analyse und Design
  • Domainmodellierung mit UML
  • Entwurf von Klassen
  • Modellierung mit UML Zustands-, Use Case- und Sequenzdiagrammen
Projektarbeit Objektorientierte Software-Entwicklung
  • Objektorientierte Analyse, Objektorientiertes Design und Objektorientierte Programmierung eines Warenautomaten in Java
  • Arbeit wird in kleinen Teams ausgeführt
Grundlagen Betriebssysteme
  • Programmausführung und Hardware
  • Systemprogrammierung
  • Prozesse, Threads und Interprozesskommunikation
  • Ein- /Ausgabe
Teambuildingsabend
  • Teambildung und Teamdesign
  • Teamdiagnose und Teamentwicklung
Einführung Objektorientierte Software-Entwicklung
  • Grundbegriffe: Klassen, Vererbung, Polymorphismus
  • Einführung in UML
  • Objektorientierte Analyse (OOA) und Objektorientiertes Design (OOD) mit UML
  • Umsetzung des Objektorientierten Designs in Programmiersprache Java
Algorithmen und Datenstrukturen
  • Rekursion
  • Sortierung: Selection-, Insertion-, Merge-, Quick-Sort
  • Collections: Vector, ArrayList, Stack, Queue, Linked List, Hashtable, Map und Dictionary, Bäume, Graphen
  • Analyse von Algorithmen: O-Notation, Arithmetische Progression

Dauer ca. 25 Wochen
10 Lektionen pro Woche (dienstags und donnerstags 17.15 bis 21.50 Uhr) und Selbststudium
Kurszertifikat Certificate of Advanced Studies (CAS) mit 15 ECTS

Agile Software Development
  • Grundkonzepte, Agile Manifesto
  • Agile Prozesse: XP, Crystal Clear, Adaptive Software, Development (ASD), Feature Driven Development (FDD), Scrum
  • Agile Unified Process
  • Vergleich und Einordnung Agiler Prozesse
Kommunikation in verteilten Systemen
  • Grundlagen: Basisarchitekturen, Interprozesskommunikation, Service-Architekturen
  • Middleware: Synchrone Kommunikation (RMI, CORBA, REST, Webservices), Asynchrone Kommunikation (JMS)
  • Enterprise Service Bus
Project Automation
  • Verständnis der Grundprinzipien der Projektautomatisierung
  • Sicherstellung der Qualität durch Automatisierung und Continuous Integration
  • Einsatz moderner Werkzeuge zur Automatisierung von Build-, Release- und Deploymentprozessen und deren Anwendung im Projektalltag
  • Kennenlernen von Continuous Deployment und Betriebsszenarien auf Basis von Containerization-Technologien wie Docker 
Web Engineering 2
  • HTML5 inkl. Formulare, Tabellen
  • Ajax
  • CSS3: Selektoren, Eigenschaften, Box-Modell
  • JavaScript: ES5, ES6
  • DOM-API
  • Architektur von Single-Page Anwendungen
.NET Core und C#
  • .NET Grundlagen: Architektur, Laufzeitumgebung CLR, MSIL, Assemblies, Typensystem CTS
  • C# Grundlagen: Namespaces, zentrale Klassen (Objekt, Array, String), Enums
  • Klassen und Structs: Methoden, Properties, Indexers, Konstruktoren, Operatoren
  • Vererbung: Methoden und Vererbung, Abstrakte Klassen, Interfaces
  • Delegates & Events: Multicast-Delegates, Hands-on Beispiele, Events, Anonyme Methoden
  • Generics: Type Constraints, Nullable Types, Generische Delegates
  • Language Integrated Queries LINQ: Lambda-Ausdrücke, Extension Methods, Initializers, Anonymous Types, Query Expressions
  • Protocol Buffers
  • gRPC mit .NET und C# 
Datenbanken Grundlagen
  • Grundlagen Datenbanken
  • Datenmodellierung, Relationales Datenmodell, Normalisierung
  • SQL als DDL und DML
  • Transaktionen
Software-Architektur
  • Grundprinzipien guter Applikationsarchitekturen
  • Rolle des Architekten
  • Architekturtypen: Schichten, Pipes und Filters, Interaktive und Verteilte Systeme
  • Sichten auf Architekturen
  • Architektur-Patterns
Objektorientiertes Design (OOD)
  • Entwurf von Klassen mittels CRC-Karten nach Responsibility Driven Design (RDD) und Modellierung von Softwaresystemen nach Domain Driven Design (DDD)
  • Grundlegende und fortgeschrittene Design Patterns
  • Code Smells/Refactoring
  • Test Driven Development (TDD) Workshop
Parallele Programmierung
  • Multi-Thread-Programmierung
  • Monitor-Synchronisation und andere Synchronisationsprimitiven
  • Nebenläufigkeitsfehler erkennen und vermeiden
  • Effiziente Parallelisierung mit Thread Pools
  • Asynchrone Programmierung im Allgemeinen und im GUI
  • Java Memory Model und atomaren Instruktionen
Programmieren Java advanced
  • Enumerationen
  • Generics und Vererbung
  • Annotations
  • Java-Reflection API
  • Erweiterungen Java8
  • Lambdas
  • Soft-, Weak- und Phantom-Referenzen
  • Garbage-Collection  und Schwache Referenzen (Strong-, Weak-, Soft- und Phantom-Referenzen)
  • Java Native Interface (JNI)
  • Aspekt-Orientierte Prog. (AOP) mit AspectJ
  • Design-by-Contract mit Assertions und JML
  • Java Plattform Modul System JPMS
  • Java-Internationalization, Logging-Framework

Dauer ca. 25 Wochen
10 Lektionen pro Woche (dienstags und donnerstags 17:15 bis 21:50 Uhr) und Selbststudium
Kurszertifikat Certificate of Advanced Studies (CAS) mit 15 ECTS

Software Engineering für Mobile Plattformen
  • Einführung in das Software Engineering für Android
  • Übersicht über die grundlegenden Challanges bei der Entwicklung für Mobile Plattformen
  • Entwickeln einer App für Android
Internet of Things Grundlagen
  • Hardwarenahe Programmierung
  • SE Methoden im IoT Umfeld
  • Internet Anbindung, Data/Event Hub
  • Arduino-Entwicklung
Qualitätsmanagement
  • Risikomanagement
  • Messbare Merkmale von Software
  • Reviewtechniken
  • Qualitätsmanagementsysteme (ISO 9001 und 90003)
  • Qualitätssicherungsmassnahmen
  • Prozessbewertung und -verbesserung (CMMI)
  • Prozessmetriken
Datenbanken advanced
  • DB-Security
  • Stored Procedures and Triggers
  • DB-Programmierung (JDBC, OR-Mapper JPA)
Architekturen verteilter Systeme
  • Herkunft und Basisarchitekturen
  • Grundlagen und Vorgehen
  • Bekannte Architektur-Strukturen und –Plattformen (SOA)
  • Service Architekturen
  • Anatomie verteilter Systeme, OMA, SOA, EDA Architekturen
  • Design, Implementation und Integration: Modularisierung, Schnittstellen-Design, Design eines Services
Requirements Engineering advanced
  • Requirements Engineering Prozess
  • Qualitätsmodell für Anwendungssysteme
  • Essenzielle objektorientierte Analyse der funktionalen Anforderungen
  • Systemdesign der funktionalen und nicht-funktionalen Anforderungen
Web Engineering 3
  • Typescript
  • React als Frontend-Framework
  • Responsive Web Design
Software Testing
  • Checking und Testing
  • Exploratory Testing und Session Based Test Management
  • Quality Models und Test Strategie
  • Embedded Testing in agilen Projekten
  • Domain Testing und Test Case Design
  • Unit Testing, Mocking und TDD
  • Regressionstests und Systemtest Automatisierung
Rechtliche Aspekte
  • Überblick über das Immaterialgüterrecht
  • Software: Schutz und Überlassung (Übertragung und Lizenzierung)
  • Domain-Streitigkeiten
  • E-Commerce: Rechtliche, insbesondere Datenschutz und persönlichkeitsrechtliche Aspekte im Zusammenhang mit einer Internetplattform
Application Security
  • Information Security Management, Sicherheitsmassnahmen (präventiv, korrektiv)
  • Kryptologie Grundlagen (Verschlüsselung, Signatur, Zertifikate, Authentisierung)
  • Schwachstellen (Injections, Fehlkonfigurationen, Schutz sensibler Daten)
  • Best Practices (Datenbanken, Webanwendungen, Software Development, Authentisierung und Autorisierung)
Funktionale Programmierung
  • Einführung des funktionalen Programmierparadigmas
  • Referenzielle Transparenz
  • Funktionen als "first-class citizens"
  • Funktionen höherer Ordnung
  • Algebraische Datentypen
  • "Pattern matching"
  • Rekursion
  • Typen und Typinferenz
Cloud Computing
  • Grundlegende Eigenschaften: Self Service, Pay-per-Use, Elastizität, Resource Pooling, CAP-Theorem
  • Cloud Deployment Types (z. B. Private Cloud, Public Cloud)
  • Service Models: SaaS, PaaS, SaaS
  • Service Level Agreements (Security, Billing) und rechtliche Rahmenbedingungen
  • Cloud Architecture Patterns für Processing, Storage, Communication und Application Architecutre
  • Technische Umsetzung der Patterns in aktuellen Cloud Offerings
Interaction Design
  • User-Centered Design 
  • Goal-Driven Design
  • Personas, Szenarien
  • User Interface Prototypen
  • Usability Tests

Zum Abschluss des MAS Software Engineering erarbeiten Sie im 4. Semester die Masterarbeit. Sie bringen einen Antrag mit Ihrem Themenvorschlag bei der Studienleitung ein. Die Masterarbeiten werden als Gruppenarbeit realisiert. Sie wählen aus Ihren Dozierenden einen Coach, der Sie bei der Erarbeitung der Master Thesis betreut. Ihr Coach unterstützt Sie bei der selbstständigen Durchführung Ihrer Arbeit. Von der Studienleitung sind Meilensteine vorgegeben sowie eine Schlusspräsentation.