Mark Ausborn, 2002

Literatur:

Rechenberg, Pomberger: Informatik-Handbuch, Carl Hanser Verlag, 1997

 

Im Bereich der Praktischen Informatik sind alle Kapitel, die die Programmierung (Software) betreffen, angesiedelt. Zur Praktischen Informatik gehören Algorithmen, Datenstrukturen, Programmiersprachen, verschiedene Programmierungstechniken, Betriebssysteme, Softwaretechnik und anderes.

Algorithmen, Datenstrukturen und Programmiersprachen bilden die Säulen der Praktischen Informatik.

 

Zu den Algorithmen hat sich der Autor auf typische Teile beschränkt, die hiermit vermittelt werden sollen.

 

In einem weiteren Kapitel konzentriert er sich auf imperative Programmiersprachen. Dieser Programmablauf wird durch Anweisungen, insbesondere Zuweisungen beschrieben. Diese Sprachen bilden den Hauptzweig der Programmierung, da alle Versuche,das Programmieren auf eine abstraktere, maschinenfernere Stufe zu heben bis heute mit imperativen Sprachen keine vergleichbare Bedeutung erlangt haben.

 

In Programmierungstechniken (Denkmodelle) behandelt der Autor die imperativen Programmierungstechniken, nämlich die prozedurorientierte und die objektorientierte Programmierung, danach die deklarativen - das sind die funktionale und logische Programmierung. Hierbei deckt der Autor funktionale und logische Programmiersprachen mit ab. Durch die Behandlung der parallelen und visuellen Programmierung  wird die Reihe der Programmierungs-techniken  vervollständigt.

 

Nächster Bereich ist das System Software und Übersetzer, die den Unterbau der Praktischen Informatik bilden.

 

Softwaretechnik und Mensch-Maschine-Kommunikation bilden die letzten Schwerpunkte. Hier stehen Fragen zur Konstruktion großer Programmsysteme. Dieses ist das Arbeitsgebiet der Softwareingenieure, Informatiker, Theoretiker und Praktiker.

 

Der Umfang dieses Bereiches spiegelt die Vielfalt wider und die neue Problematik, da Software von vielen für viele geschrieben wird und eine lange Lebensdauer haben soll.

 

1             Algorithmen und Datenstrukturen

                Komplementäre Sichten - Was und Wie

                * Die Sicht des Benutzers: Daten und Operationen

                * Programmieren als Brücke vom Postulierten zum Gegebenen

                * Die Sicht des Programmierers: Datenstrukturen und Algorithmen

                * Verständnis für Grundbegriffe und algorithmisches Denken

 

                Die Vielfalt möglicher Datenstrukturen

 

                Einfache Datenstrukturen und Zugriffsalgorithmen

                * Der Stapel: Datentyp und Implementierung

                * Der Stapel als Hochseil für Algorithmenakrobatik

                * Die Warteschlange, als zirkulärer Puffer implementiert

                * Suchen im Wörterbuch

 

                Rechenmodelle und Komplexität

                * Speicher mit Direktzugriff, * Probleminstanzen, Problemklassen und Asymptotik

                * Untere Schranken, * Problemreduktion

 

                Typen und Datenstrukturen

                * Implizite Datenstrukturen, Adressberechnung, * Die Vorrangschlange, als Heap implementiert

                * Hashing, * Verkettete Listen

 

                Das Zusammenspiel von Algorithmus und Datenstruktur

                * Heapsort: Datenstruktur führt zum Algorithmus, * Plane-sweep, Warteschlange, Wörterbuch

 

2             Programmiersprachen

                Methodische Grundlagen

                * Abstrakte Datentypen,   * Grundlegende abstrakte Datentypen, * Programmierparadigmen

 

                Elemente von Programmiersprachen

*Syntax, Semantik und Pragmatik, * Syntaktische Eigenschaften, 

*Grundsymbole - Struktureller Aufbau von Programmen, * Semantische Eigenschaften

 

                Bindungen

                * Lebensdauer und Bindungen, * Statische Bindung und Blockstruktur

 

                Datentypen und Ausdrücke

                * Grundtypen, * Zusammengesetzte Typen, * Variablen in imperativen Sprachen, Zeigertypen

                * Vereinigungstypen und polymorphe Typen, * Typäquivalenz, * Ausdrücke

 

                Sequentielle Ablaufsteuerung

*Zuweisungen, bedingte Anweisungen und Schleifen,  Zuweisungen - Bedingte Anweisungen –

  Fallunterscheidung - Schleifen

                * Prozeduren und Funktionen,  Parameterübergabemechanismen, * Ausnahmen

 

                Modularität und Objektorientierung

                * Module, * Klassen und Objekte, * Vererbung, * Generizität

               

                Parallelität

 

3             Prozedurorientierte Programmierung

                Grundlegende Begriffe

               

                Entwurfs- und Zerlegungstechniken

                * Topdown-Entwicklung - Bottomup-Entwicklung - Zerlegungsarten

 

                Prozedurorientierte Zerlegung nach dem Prinzip der schrittweisen Verfeinerung

 

                Modulbildung - Strukturierung im Großen

                * Modulkonstrukt - Abstrakte Datenstrukturen - Abstrakte Datentypen

 

                Konstruktionen zur Ablaufsteuerung - Strukturierte Programmierung

                * D-Diagramme

 

4             Objektorientierte Programmierung

                Eigenschaften

 

                Begriffe der objektorientierten Programmierung

                * Objekte,* Nachrichten,   * Klassen, * Methoden

 

                Vererbung

                * Ableitung von Klassen,                 * Überschreiben von Methoden

                * Unterschiede zwischen Basis- und abgeleiteter Klasse, * Ist-Beziehungen

 

                Polymorphie

                * Definition und Zuweisungsregeln, * Polymorphie in untypisierten Sprachen

                * Referenzsemantik, * Objekterzeugung

                * Semantik von Referenzzuweisungen

 

                Dynamische Bindung

                * Dynamische Bindung durch Methodensuche, * Dynamische Bindung mit Methodentabellen

                * Zusammenspiel von Vererbung, Polymorphie und dynamischer Bindung

 

                Abstrakte Klassen

                * Faktorisierung,                 * Konkretisierung, * Benutzung abstrakter Klassen

 

                Klassenhierarchien

                * Hierarchie abstrakter Klassen, * Wurzelklasse, * Mehrfache Vererbung

 

                Objektorientierte Programmiersprachen

 

                Klassenbibliotheken

                * Bausteinbibliotheken,     * Strukturierung von Klassenbibliotheken, * Rahmenprogramme

 

                Objektorientierter Entwurf

               

5             Funktionale Programmierung

                Funktionale Programmiersprachen             

                * Zusammenhang mit Parallelismus und Nebenläufigkeit

 

                Grundzüge des funktionalen Programmierens

                * Datentypen, * Funktionen, * Bezug zu abstrakten Datentypen

                * Polymorphie, * Funktionen höherer Ordnung, * Listen, * Listenfunktionen höherer Ordnung

 

6             Logische Programmierung

                Grundlagen

*Einführung, * Definite logische Programme Syntax – Semantik,

* Resolution:  Resolutionsprinzip - Unifikation - SLD-Resolution - SLD-Ableitungen - Korrektheit

                   und Vollständigkeit der SLD-Resolution

                * Negation

                   Negation als Fehlschlag - Inferenzregel Negation als Fehlschlag - Vervollständigung

                   eines Programms - Normale Programme - SLDNF-Resolution - Erweiterte Programme

                * Prolog

                   Sequentielle Ablaufsteuerung - Schnitt - Systemprädikate

 

                Programmiertechniken

                * Listen, * Metaprogrammierung,    Plain Vanilla

                * Alternative Beweisstrategien:    Begrenzte Tiefensuche - Flexible Selektionsregel

                * Partielle Auswertung

 

                Anwendungen

                * Deduktive Datenbanken,   Deduktive Datenbanken als Erweiterung relationaler Datenbanken -

                   Aktualisierung von Datenbanken und Integrität

                * Regelbasiertes Programmieren,    Produktionsregeln - Vorwärts- und Rückwärtsverkettung

                * Computerlinguistik, * Softwaretechnik

 

7             Parallele Programmierung

                Grundkonzepte

                * Sequentialität,   * Nebenläufigkeit, *Parallelismus, * Synchronisation, * Kommunikation

                * Fehlersituationen

 

8             Visuelle Programmierung

                Einführung

 

                Begriffe

 

                Konzepte für VP-Systeme

                * Steuerflußorientierte VP-Systeme,    Anweisungssequenzen - Komponentennetze - Transitionsnetze

                * Funktionsorientierte VP-Systeme, * Datenflußorientierte VP-Systeme, * Objektorientierte VP-Systeme

                * Constraintorientierte VP-Systeme, * Regelorientierte VP-Systeme, * Beispielorientierte VP-Systeme

                * Formularorientierte VP-Systeme, * Multiparadigmenorientierte VP-Systeme