In this lecture the students learn object-oriented concepts via the programming languges Python and Java. You are welcome without any background knowledge in programming. In the last week a programming project will be conducted.
Topics:
- Introduction in imperative programming with Python (data type, operator, expression, variable, assignment, branching, loops, procedures, recursion, input and output, error handling)
- Basic algorithms (sorting, geometry) and types of algorithms (divide and conquer, backtracking)
- Runtime analysis of small programs and proofs of correctness with the Hoare-Calculus
- Modelling the concept of computability as a register machine
- Object-oriented programming concepts (classes, objects, references, methods, inheritance, polymorph type systems, abstract classes, interfaces, template classes, encapsulation)
- Simple data structures (simple and double linked lists, heap) and their implementation, abstract data types (stack, queue)
- Object-oriented modelling techniques and basic design patterns (iterator, observer pattern, model-view-controller etc.)
- Application of programming skills in a project