Module Distributed Systems 1 and Theoretical Computer Science 2, Bachelor Course Computer Science (ER 5)
Module summary

Distributed Systems 1 and Theoretical Computer Science 2


Prof. Dr. Heiko Körner

5 ECTS points / 4 Contact hours

2nd Semester

Theoretical Computer Science 1, Computer Science 1


The students learn the theoretical foundations of computability and complexity theory. Certain undecidable problems are shown to be unsolvable with modern computers despite of their today's powerful hardware. Other intractable problems prove to be theoretically solvable, but with an unacceptable amount of computational time.

Students also learn to identify as well as classify goals and problems of distributed systems. They sketch generic architectures, processes, communication as well as naming techniques and apply them to Web applications and services. Students distinguish software technologies for Web-based systems and evaluate their use cases.

Written Exam 120 Min. (graded)
Course Distributed Systems 1



Prof. Dr. Christian Zirpins



Module exam

The course provides a practical introduction to the concepts and paradigms of distributed systems using the example of web technologies and application development on the web. This initially involves an introduction of the world wide web with basic protocols such as HTTP and other standards in the context of the Internet. After that an introduction to the design and construction of web applications is provided. This includes firstly the frontend development with HTML5, CSS3 as well as client-side JavaScript and secondly the backend development with server-side JavaScript on the Node.js platform. Interactions between frontend and backend follow modern REST/HTTP and AJAX techniques. In addition, mechanisms for personalization with cookies and sessions as well as to authenticate users are presented. The course closes with a detailed discussion of web application security.

  • 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:
  • Marijn Haverbeke, "Eloquent JavaScrip", No Starch Press, 2014 (Online:
  • 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)
  • Additional literature will be announced during the lecture

In preparation for individual lecture units, the self-study of basic content is required by means of the accompanying literature (relevant chapters will be announced in the event). Further independent work concerns the follow-up of the lecture contents and the exam preparation.

Course Theoretical Computer Science 2



Prof. Dr. Heiko Körner



Module exam

The course deals with the computational limits of modern computer systems, showing the undecidability and intractability of important problems.

Several computational conceps like Turing machines and WHILE-programs are presented. Other topics include the Church-Turing thesis, the theory of NP-completeness and zero-knowledge-proofs.

For this course some basics concerning theoretical computer science are required (regular languages, finite automata, O-calculus, etc.). This knowledge can be purchased in the lecture Theoretical Computer Science I.


The substance of the lecture will be discussed at the blackboard. Lecture notes containing the complete material are also available. Furthermore, there are sample solutions to all exercises.

Literature: D. W. Hoffmann: Theoretische Informatik, 3. Auflage. Hanser, 2015.

M. Sipser: Introduction to the Theory of Computation, 3rd edition. Cengage Learning, Inc., 2012.

This course will take place as a pure lecture. Numerous exercises deepen selected areas and will be discussed in tutorials.