Back to Informatik

Theoretische Informatik

6 ECTS
Semester 2

Automata Theory

Overview

Study of abstract machines and computation

Learning Objectives

  • Understand finite automata
  • Master regular expressions
  • Work with pushdown automata
  • Analyze Turing machines
  • Apply formal language theory

Practical Applications

Compiler Design

Lexical analysis and parsing

Example: Building a simple compiler

Pattern Matching

Text processing algorithms

Example: Implementing regex engine

Protocol Verification

System verification

Example: Verifying network protocols

Practice Problems

  • Design finite automata
  • Convert NFAs to DFAs
  • Create regular expressions
  • Implement pushdown automata

Computability Theory

Overview

Understanding what can and cannot be computed

Learning Objectives

  • Study decidability concepts
  • Analyze computational complexity
  • Understand P vs NP
  • Master reduction techniques
  • Work with NP-completeness

Practical Applications

Algorithm Design

Complexity analysis

Example: Optimizing algorithmic solutions

Cryptography

Security proofs

Example: Analyzing encryption schemes

Optimization

NP-hard problems

Example: Solving traveling salesman

Practice Problems

  • Prove NP-completeness
  • Design reduction proofs
  • Analyze algorithm complexity
  • Solve decidability problems

Formal Languages

Overview

Study of mathematically defined languages

Learning Objectives

  • Master Chomsky hierarchy
  • Understand context-free grammars
  • Work with parsing techniques
  • Apply pumping lemmas
  • Analyze language properties

Practical Applications

Compiler Construction

Grammar implementation

Example: Building a parser generator

Natural Language Processing

Language modeling

Example: Implementing context-free parsers

Protocol Design

Formal specifications

Example: Defining communication protocols

Practice Problems

  • Design context-free grammars
  • Apply pumping lemma proofs
  • Create language parsers
  • Analyze grammar properties