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