|
Lecturer:
|
Florian Matthes |
|
Duration: |
3 hours per week lectures, 1 hour per week lab classes |
|
ECTS Credits: |
4,5 Credits |
|
Periodicity:
|
Every summer semester |
|
Certificate:
|
Written exam at the end of the semester |
| Goals |
This two-semester course provides an overview of the models and methods that are used for the formal description and the systematic construction of modern computing systems. Equal emphasis is put on software and on hardware techniques, which are both presented from an engineering perspective.
| Prerequisites |
| Position in the Curriculum |
| Contents |
1. Introduction: Models and abstractions in computer scienc
2. Atomic data types and digital data representation
3. Data structures and data types
3.1 Basic concpets of the programming language Java
3.2 Software: Predefined and user-defined data types (typing, simple types and reference types)
4. Stateless digital systems
4.1 Hardware: Combinatory circuits (construction, adder, carry-bypass circuits, multiplexer, ...)
4.2 Software: Functional programming techniques
- Block.structures
- Function abstraction and application
- Recursion over natural numbers, linear data structures and tree structures
- Higher-order functions and iterators
5. Sequential stateful digital systems
5.1 Model: Automata and Grammars
- Motivation and examples
- Chomsky Hierarchy
- System description via languages: grammar, syntax tree, production system
- System description via automata (DFA, NFA, PDA)
5.2 Hardware: Synchronous sequential circuits (flip-flops, register, counter, memory)
5.3 Software: Imperative programming techniques
- Assignment, side-effect, aliasing
- Control structures, invariants, variants
- Arrays and matricesn
- Exception handling
5.4 Software: Object-oriented programming techniques
- Emcapsulation and data abstraction
- Late binding
- Inheritance
- Abstract classes and interfaces
6. Fundamentals of computer architectures
| Recommended Literature |
| Additional Literature |
| f.matthes, 7-dec-1998 |