Hans-Joachim Böckenhauer: Catalogue data in Autumn Semester 2019

Name Dr. Hans-Joachim Böckenhauer
Consultation hoursBy appointment
Address
Professur Algorithmen und Didaktik
ETH Zürich, CAB F 11
Universitätstrasse 6
8092 Zürich
SWITZERLAND
Telephone+41 44 632 81 83
Fax+41 44 632 13 90
E-mailhjb@inf.ethz.ch
URLhttp://www.ite.ethz.ch/people/hjb/
DepartmentComputer Science
RelationshipLecturer

NumberTitleECTSHoursLecturers
252-0057-00LTheoretical Computer Science Information 7 credits4V + 2UJ. Hromkovic, H.‑J. Böckenhauer
AbstractConcepts to cope with: a) what can be accomplished in a fully automated fashion (algorithmically solvable) b) How to measure the inherent difficulty of tasks (problems) c) What is randomness and how can it be useful? d) What is nondeterminism and what role does it play in CS? e) How to represent infinite objects by finite automata and grammars?
Learning objectiveLearning the basic concepts of computer science along their historical development
ContentThis lecture gives an introduction to theoretical computer science, presenting the basic concepts and methods of computer science in its historical context. We present computer science as an interdisciplinary science which, on the one hand, investigates the border between the possible and the impossible and the quantitative laws of information processing, and, on the other hand, designs, analyzes, verifies, and implements computer systems.

The main topics of the lecture are:

- alphabets, words, languages, measuring the information content of words, representation of algorithmic tasks
- finite automata, regular and context-free grammars
- Turing machines and computability
- complexity theory and NP-completeness
- design of algorithms for hard problems
Lecture notesThe lecture is covered in detail by the textbook "Theoretical Computer Science".
LiteratureBasic literature:

1. J. Hromkovic: Theoretische Informatik. 5th edition, Springer Vieweg 2014.

2. J. Hromkovic: Theoretical Computer Science. Springer 2004.

Further reading:

3. M. Sipser: Introduction to the Theory of Computation, PWS Publ. Comp.1997
4. J.E. Hopcroft, R. Motwani, J.D. Ullman: Introduction to Automata Theory, Languages, and Computation (3rd Edition), Addison-Wesley 2006.
5. I. Wegener: Theoretische Informatik. Teubner.

More exercises and examples in:

6. A. Asteroth, Ch. Baier: Theoretische Informatik
Prerequisites / NoticeDuring the semester, two non-obligatory test exams will be offered.
252-0866-00LDigital Medicine I: Introduction to Programming Information Restricted registration - show details
Only for Human Medicine BSc
2 credits2GH.‑J. Böckenhauer, D. Komm
AbstractThis lecture gives an introduction to programming in Python and an overview of basic problem solving strategies and design principles for efficient algorithms and data structures.
Learning objectiveTo learn basic principles of programming in Python and to apply them for implementing algorithmic approaches for solving simple computational problems.
ContentThis lecture has two goals. On the one hand, an introduction to programming is given, using Python as a sample language. This introduction includes the basic programming principles such as truth values, variables, data types, conditional statements, loops, and functions.

On the other hand, basic data structures (like stacks, queues, or search trees) and important concepts of algorithm design are presented and implemented in Python to efficiently solve basic algorithmic tasks on these data structures.

The main focus lies on general-purpose design techniques for efficient algorithms, such as the greedy method, dynamic programming, or the divide and conquer strategy. These techniques are demonstrated with many examples from practice.
Lecture notesAll learning materials will be provided during the course.