Qualitativ hochwertigen, verständlichen und gut wartbarer Programmcode zu erzeugen, ist von zentraler Bedeutung bei der Umsetzung von Softwareprojekten. In diesem Modul werden die Grundlagen der objektorientierten Programmierung vermittelt, um qualitativ hochwertigen, verständlichen und gut wartbaren Programmcode im Umfang von einigen Klassen entwickeln und testen zu können.

Software-Projekte sind in praktisch jeder grösseren Firma anzutreffen. In diesem Modul wird das Fachwissen aus anderen Modulen angewandt und mit ersten Erfahrungen eines Projekts im Team angereichert. Dies beinhaltet auch Teamarbeit, Projekterfahrung, Selbstreflexion und Codeverwaltung.

Modulthema

Webtechnologien spielen heute in der Informatik eine zentrale Rolle. Viele IT-Systeme verwenden Web-Interfaces als plattformübergreifende Benutzerschnittstellen, wobei von einfachen Web-Frontends bis zu komplexen Single Page Applications ein ganzes Spektrum von Möglichkeiten zur Verfügung steht. Auch Mobil- und native Desktopapplikationen werden in Form von hybriden Applikationen häufig auf der Basis von Webtechnologien umgesetzt. Im Zentrum dieser Entwicklung steht die Programmiersprache JavaScript, die in den letzten Jahren komplett überarbeitet und umfassend erweitert wurde. Neben den Basistechnologien HTML und CSS ist das Beherrschen von JavaScript damit ein Schwerpunkt dieses Kurses.

Ziele

  • Die Studierenden haben fundierte Kenntnisse über die Programmiersprache JavaScript und sind in der Lage, mit Hilfe von JavaScript client- und serverseitige Webapplikationen aufzubauen.
  • Sie verstehen die Grundlagen der Webarchitektur bestehend aus Sprachen zur Auszeichnung und Darstellung von Dokumenten, sowie zum Umgang mit dem DOM (Document Object Model) und zur asynchronen Client-Server Kommunikation (Ajax).
  • Sie verstehen den Aufbau eines Web-Frameworks für die Entwicklung client-seitiger Single Page Applications und können ein solches Framework nutzen, um eigene Applikationen zu entwickeln.


Kursziel

Sie verstehen die wichtigsten Programmierparadigmen wie objektorientierte, logische und funktionale Programmierung. Sie wissen, wie diese Paradigmen in einigen ausgewählten Programmiersprachen eingesetzt werden und sind in der Lage, in diesen Sprachen einfache Programme zu schreiben.

Teilziele

  • Sie haben einen Überblick über die Geschichte höherer Programmiersprachen und verstehen, wie Compiler arbeiten und was Laufzeitumgebungen leisten.
  • Sie verstehen das objektorientierte Paradigma und lernen Smalltalk als dynamische, objektorientierte Programmiersprache mit dynamischem Typenkonzept inklusive Entwicklungsumgebung kennen.
  • Sie verstehen logische Programmierung und lernen Prolog als Vertreter dieses Paradigmas kennen.
  • Sie lernen das Konzept der Module kennen und in welchem Bezug dieses zum objektorientierten Paradigma steht. Zusätzlich lernen sie den Umgang mit Coroutines und ihren Bezug zu Threads.
  • Sie haben einen Überblick über die funktionale Programmierung und kennen deren wesentliche Konzepte. Dabei lernen sie Lisp kennen. (Lisp ist eigentlich eine Multiparadigmensprache mit Wurzeln in der funktionalen Programmierung. Lisp ist als eine der ältesten Programmiersprachen nach wie vor Vorbild für viele moderne Programmierkonzepte.)
  • Sie kennen eine moderne Scriptsprache wie Python, die verschiedene Programmierparadigmen unterstützt. Im diesem Zusammenhang verstehen sie die Unterschiede zwischen statischem und dynamischem Typenkonzept und die jeweiligen Vor- und Nachteile.