Current Courses
Software Engineering Fundamentals
Guided by the two fundamental principles that software engineering is an empirical discipline, where decisions are based on evidence, experimentation, and continuous feedback; and that software engineering is about developing and evolving software over time, this course introduces the fundamental principles and practices of professional software engineering. Students apply these principles through practical exercises in software design, clean code, testing, version control, and collaborative development, with an emphasis on quality, maintainability, and continuous improvement.
.NET Framework and C#
This course covers the core .NET architecture and runtime model (CLR), with an in-depth introduction to the C# programming language. It looks behind the scenes at the garbage collector, Intermediate Language, LINQ, lambda expressions and extension methods.
Software Testing and Quality Management
Building on Software Construction, this course teaches advanced methods for building high-quality software and controlling and ensuring software quality with modern tools. Topics include distributed version control and workflows, acceptance testing, GUI testing, database testing, review techniques, quality assurance planning, technical debt, dependency management and traceability in software projects.
Former Courses
Software Construction
This undergraduate course covers methods and tools for effective software development in the small. Topics include version control with Git, build automation, continuous integration, refactoring, unit testing, mock testing, metrics and simple code analysis — the technical competences and tools needed for agile development.
.NET Enterprise Application Development
This course builds on .NET Framework and C# and covers technologies and frameworks for .NET enterprise applications: GUI development with WPF; web development with ASP.NET, MVVM, MVC and Silverlight; and database and service development with ADO.NET, Entity Framework, WCF and WF.
Software Engineering and Architectures (Graduate)
This course in the MSE Master’s programme covers advanced topics in software engineering and software architecture. I taught it with colleagues from Lucerne and Winterthur, covering software evolution, software analysis and visualisation.
[Software Development Process]https://sgi.pages.fhnw.ch/moduluebersicht/2026hs/sepC/drehbuch.html) (2018)
A practical introduction to modern software development processes and project management, including agile development and the Scrum City Game, a Scrum simulation game. At that time, we played the game using paper, scissors, glue and coloured pencils – it was great fun.
Mobile Application Development (2008)
Dieser Kurs gibt eine fundierte praktische Einführung in die Entwicklung von mobilen Softwareanwendungen. Sie lernen die neuesten Plattformen, Methoden und Technologien zur Entwicklung portabler mobiler Softwareanwendungen für Handys kennen und anwenden.
Introduction into .NET (2008)
An introduction to .NET technology, covering the core base class library, architecture and frameworks such as WinForms, ADO.NET, ASP.NET and Web Services.
Web Services Architecture (2007)
Web Services haben sich als ein sehr effektiver und interoperabler Integrationsstandard etabliert und zahlreiche kommerzielle Anwendungen wurden bereits mit Web Services realisiert. In diesem Modul lernt der Student die wichtigsten Web Services Begriffe und Konzepte kennen. Anhand konkreter Programmieraufgaben wird er diese Lerninhalte anwenden und vertiefen.
Object-oriented Analysis and Design (2003–2005)
An introduction to object-oriented analysis and design based on Craig Larman’s book Applying UML and Patterns.
Software Engineering (1999–2003)
For several years I taught a thorough introduction to software engineering. During this course I also collected material, links and document templates for students.