The courses of this module teach the students fundamental programming and algorithmic skills. The students should be enabled to analyze small problems, find solutions to these problems, and develope them in the Java programming language.
With weekly exercises the students deepen the practical contents of the lecture on the computer.
They use an integrated Java development environment to create, test and modify programs.
In the following exercises the students program simple calculations with Java using variables, expressions and control structures.
This also includes graphical data processing tasks.
Later, the students develop object-oriented programs on the computer. In the end, they solve recursive problems and implement solution strategies with the help of backtracking.
Selected exercises with solutions, slides in PDF format, Java programs and their documentation as Javadoc. Supplementary Java exercises with solutions to deepen the programming skills.
Lecture participation. Solving simple exercises in the lecture with teacher support.
With weekly exercises the students deepen the practical contents of the lecture on the computer.
They use an integrated Java development environment to create, test, and modify programs. In the following exercises the students program simple calculations with Java using variables, expressions and control structures. This also includes graphical data tasks. Later, the students develop object-oriented programs on the computer. In the end, they solve recursive problems and implement solution strategies with the help of backtracking.
Practical assignment in a computer laboratory.
The course introduces the theory of formal languages and focusses on regular and context-free languages.
The course first consolidates the basics of propositional logic, set theory, the O-calculus and elementary proof techniques. Then the classical areas of theoretical computer science such as finite automata and their minimisation, regular expressions, the Chomsky hierarchy, the pumping lemma for regular and context-free languages as well as associated decision algorithms are covered. Push down automata, normal forms and closure properties are also discussed.
The aim is to develop an understanding of the basic computational power of classical computer models with limited memory capacity.
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.