Modul Verteilte Systeme 1 und Theoretische Informatik 2, Informatik (Bachelor) (SPO 5)

Englische Sprache
Kompakte Schrift

Farbschema

Modulübersicht

Verteilte Systeme 1 und Theoretische Informatik 2

INFB230

Prof. Dr. Heiko Körner

/

2. Semester

Theoretische Informatik 1, Informatik 1

keine

Die Studierenden erlernen die theoretischen Grundlagen bzgl. der Berechenbarkeit und Komplexität diverser Probleme. Dazu werden die Grenzen moderner Computer anhand bestimmter unentscheidbarer Aufgaben aufgezeigt. Diese stellen sich als algorithmisch unlösbar heraus, ganz gleich, wie leistungsfähig die zugrundeliegenden Ressourcen (Prozessoren, Speicher, ...) auch sein mögen. Weitere vorgestellte Probleme sind zwar prinzipiell lösbar, erfordern aber inakzeptabel viel Laufzeit.

Die Studierenden erwerben auch Wissen über Techniken und Konzepte verteilter Systeme am Beispiel von Web Anwendungen. Insbesondere erlangen sie Fähigkeiten, die allgemeine Architektur des Internets und des Web zu erklären, Anforderungen einer Web-Anwendung zu analysieren, eine interaktive Web-Anwendung mit HTML, CSS und clientseitigem JavaScript zu erstellen, Sicherheitsprobleme in einer Web-Anwendung zu identifizieren und serverseitigen Code für Anwendungsdienste mit Authentifizierung, Cookies und Sessions zu entwickeln.

 

Klausur 120 Min. (benotet)
Lehrveranstaltung Theoretische Informatik 2

INFB231.b

Vorlesung

Prof. Dr. Heiko Körner

deutsch

2/2

60 Stunden gesamt, davon 30 Stunden Kontaktstudium.

Modulprüfung

Kern dieser Vorlesung ist die Vermittlung der Grenzen von heutigen Computern, die selbst bei unendlich viel vorhandenem Speicherplatz auftreten. Themen sind vor allem die Berechen- und Unentscheidbarkeit diverser Probleme. Ebenso wird eine Einführung in die Theorie hartnäckiger Probleme gegeben.

Die Lehrveranstaltung umfasst unter anderen die folgenden Gebiete der theoretischen Informatik: Elementare Berechnungsmodelle wie Turingmaschinen und WHILE-Programme, die Church-Turing-These, Unentscheidbarkeit, die Theorie der NP-Vollständigkeit und Zero-Knowledge-Beweise.

Für diese Lehrveranstaltung sind elementare Vorkenntnisse zur theoretischen Informatik notwendig (regulären Sprachen, endliche Automaten, O-Kalkül, usw.). Diese Kenntnisse können z.B. in der Vorlesung Theoretische Informatik I erworben werden.

  • Tafelanschrieb
  • Skript
  • Zu allen Übungsaufgaben werden Musterlösungen angeboten.
  • D. W. Hoffmann: Theoretische Informatik, 3. Auflage. Hanser, 2015.
  • M. Sipser: Introduction to the Theory of Computation, 3rd edition. Cengage Learning, Inc., 2012.

Die Lehrveranstaltung findet als reine Vorlesung statt. Zahlreiche Übungsaufgaben vertiefen die vermittelten Gebiete und werden in evtl. zusätzlich angebotenen Tutorien diskutiert.

Lehrveranstaltung Verteilte Systeme 1

INFB231.a

Vorlesung

Prof. Dr. Christian Zirpins

deutsch

3/2

90 Stunden gesamt, davon 30 Stunden Kontaktstudium.

Modulprüfung

Die Vorlesung bietet eine praktische Einführung in die Konzepte und Paradigmen verteilter Systeme am Beispiel von Web Technologien und der Anwendungsentwicklung im Web. Dies beinhaltet zunächst eine Vorstellung des World Wide Web mit Basisprotokollen wie HTTP und weiteren Standards im Kontext des Internets. Es folgt eine Einführung in den Entwurf und die Konstruktion von Web Anwendungen. Dazu gehört zum einen die Frontend-Entwicklung mit HTML5, CSS3 und clientseitigem JavaScript und zum anderen die Backend-Entwicklung mit serverseitigem JavaScript auf der Node.js Plattform. Zur Interaktion zwischen Frontend und Backend werden moderne REST/HTTP und AJAX Techniken behandelt. Zudem werden auch Mechanismen zur Personalisierung mit Cookies und Sessions sowie zur Authentifizierung von Nutzern vorgestellt. Schließlich erfolgt eine eingehende Diskussion von Sicherheitsaspekten.

In dieser Vorlesung erwerben die Studierenden praktische Fähigkeiten in der Entwicklung und Bereitstellung von Webanwendungen, die auf einem Verständnis verteilter Systeme und Webtechnologien basieren. Sie lernen den kompetenten Einsatz von HTML5, CSS3 und JavaScript für die Frontend-Entwicklung, sowie die serverseitige Entwicklung mit Node.js und verbessern so ihre Fähigkeit, dynamische Full-Stack-Webanwendungen zu erstellen. Darüber hinaus erwerben die Studierenden Kenntnisse in der Implementierung moderner REST/HTTP- und AJAX-Techniken für eine effiziente Frontend-Backend-Kommunikation sowie in der Anwendung von Cookies, Sessions und Authentifizierungsstrategien zur Personalisierung und zur Gewährleistung der Anwendungssicherheit. Diese umfassenden Fähigkeiten bereiten die Studierenden auf eine breite Palette von Aufgaben in der Webentwicklung und im Anwendungsdesign vor und rüsten sie mit den notwendigen Werkzeugen aus, um aktuelle und zukünftige Herausforderungen in diesem Bereich zu bewältigen.

  • Semmy Purewal, "Learning Web App Development", O’Reilly, 1. Auflage, 2014
  • David Gourley, Brian Totty, "HTTP: The Definite Guide", O’Reilly, 2002
  • Mark Pilgrim, "HTML5 Up and Running", O’Reilly, 2010 (Online: http://diveintohtml5.info)
  • Marijn Haverbeke, "Eloquent JavaScrip", No Starch Press, 2014 (Online: http://eloquentjavascript.net)
  • Oliver Ochs, "JavaScript für Enterprise-Entwickler, Professionell programmieren im Browser und auf dem Server", dpunkt, 2012
  • Peter Gasston, "The Book of CSS3 - A Developer’s Guide to the Future of Web Design", 2nd Edition, No Starch Press, 2014
  • Andy Budd, Emil Björklund, "CSS Mastery", Third Edition, Apress, 2016 (Online verfügbar im Hochschulnetz)
  • Ethan Brown, "Web development with Node and Express", O’Reilly, 2014
  • Robert Prediger, Ralph Winzinger, "Node.js : Professionell hochperformante Software entwickeln", Hanser, 2015 (Online verfügbar im Hochschulnetz)
  • Weitere Literatur wird in der Vorlesung bekanntgegeben.

Als Vorbereitung auf einzelne Vorlesungseinheiten wird das Selbststudium grundlegender Inhalte mittels der Begleitliteratur vorausgesetzt (relevante Kapitel werden in der Veranstaltung angekündigt). Weitere eigenständige Arbeitsanteile betreffen die Nachbereitung der Vorlesungsinhalte und die Klausurvorbereitung.