Einführung in die Informatik I
Prof. Dr. Andy Schürr
email: Andy.Schuerr@unibw-muenchen.de
Institut für Softwaretechnologie
Fakultät für Informatik
Universität der Bundeswehr München
D-85577 Neubiberg
- Java und Haskell träumen von Ada? - Vorlesung im Herbsttrimester an der Universität der Bundeswehr München
Ziele und Inhalte der Vorlesung
Ziel der Vorlesung ist es, dem Zuhörer einen Überblick über die Informatik mit Schwerpunkt "Praktische Informatik" zu geben. Im Vordergrund steht dabei das Erlernen verschiedener Programmiersprachen(-paradigmen) und der zugrundelegenden Konzepte des sogenannten "Programmierens-im-Kleinen". Als Programmierparadigmen werden in erster Linie die funktionale Programmierung sowie die imperative Programmierung am Beispiel der Programmiersprachen Haskell und Ada behandelt. Am Ende der Lehrveranstaltung sollten die Zuhörer in der Lage sein, kleine Programme systematisch in verschiedenen Programmiersprachen zu entwickeln; zudem sollten sie ein Verständnis für die zugrundeliegenden (mathematischen) Konzepte erworben haben.
Die Vorlesung liefert damit unter anderem die Voraussetzungen für folgende Lehrveranstaltungen:
- Einführung in die Informatik IIa/b: vertieft das Thema "Datenstrukturen & Algorithmen und führt die Grundlagen zur Programmanalyse und -verifikation ein
- Einführung in die Informatik IIIa/IIIb: behandelt objektorientierte und maschinennahe Programmierung sowie Grundlagen des "Programmierens-im-Großen"
- Software Engineering I: vertieft die Konzepte des "Programmierens-im-Großen" zur Entwicklung großer Softwaresysteme
Ergänzt wird die Vorlesung unter anderem durch folgende Lehrveranstaltungen (und darauf aufbauende Veranstaltungen):
- Diskrete Mathematik: hier werden die mathematischen Grundlagen für die Lehrveranstaltungen Informatik I und Informatik II eingeführt.
- Rechnerarchitektur: hier wird der Aufbau und die Funktionsweise von Rechnern behandelt.
Inhalte
- Kapitel 1 gibt einen knappen Überblick über das Gebiet und die Geschichte der Informatik. Im Vordergrund stehen dabei die Einteilung in die Teilgebiete Angewandte Informatik, Praktische Informatik, Technische Informatik und Theoretische Informatik sowie die Bezüge zu anderen Disziplinen.
- Kapitel 2 thematisiert die Begriffe Spezifikation, Algorithmus, Programm und erörtert die Formulierung von Algorithmen mit imperativen bzw. funktionalen Konzepten der Programmierung. Zudem werden die verschiedenen Aktivitäten bei der Entwicklung von Programmen (Analyse, Design, Programmieren, Testen, ... ) sowie die dazu benötigten Werkzeuge (Editor, Interpreter, Compiler, ... ) angesprochen.
- Kapitel 3 führt einige im folgenden benötigte Grundbegriffe (Menge, Relation, Funktion, Sorte, Signatur, Typ, ... ) ein und befasst sich sowohl mit vordefinierten Datentypen der Programmiersprache Haskell sowie mit der Definition einfacher neuer (abstrakter) Datentypen.
- Kapitel 4 widmet sich der funktionalen Programmierung aus praktischer Sicht. Hier werden Funktionen (höherer Ordnung) mit Sichtbarkeits- und Gültigkeitsbereichen sowie der Umgang mit Listen und verschiedenen Arten der Rekursion behandelt.
- Kapitel 5 befasst sich mit der Syntax- und Semantikdefinition von Programmiersprachen. Zur Definition der Syntax von Programmiersprachen werden kontextfreie Grammatiken (EBNF, Syntaxdiagramme) vorgestellt. Für die Definition der Semantik von funktionalen Programmiersprachen wird der Lambda-Kalkül eingeführt. Darüber hinaus wird das Terminierungsproblem (Halteproblem) von Programmen als Einstieg in die Berechenbarkeitstheorie behandelt.
- Kapitel 6 führt mit der imperativen Programmierung am Beispiel Ada ein neues Programmierparadigma ein. Für die Syntaxdefinition von Ada werden EBNFs eingesetzt, die neuen Konzepte "Variablen, Prozeduren, Zuweisungen, ... " werden beispielhaft erläutert. Ebenfalls vorgestellt werden die Subtypen, Felder und Verbunde zur Konstruktion neuer Typen.
- Kapitel 7 schließlich beendet die Vorlesung mit einem Überblick über weitere Programmiersprachen und -paradigmen. Anhand eines Beispieles werden die Grundkonzepte der der funktionalen und der imperativen Programmierung noch einmal miteinander verglichen und die Grundkonzepte der Logikprogrammierung, der objektorientierten Programmierung und der regelbasierten Programmierung kurz skizziert.
Folien zur Vorlesung
Alle (bereits existierenden) Folien der Vorlesung sind in der folgenden Datei
- INF1.pdf : pdf-Fassung (Stand 13.03. 2002)
- INF1.pdf.gz : mit gzip komprimierte pdf-Fassung
- INF1.pdf.zip : mit zip komprimierte pdf-Fassung
im pdf-Format abgespeichert. Sie benötigen zur Darstellung den Acrobat-Reader als Zusatzprogramm zum Web-Browser. Den neusten Acrobat-Reader für die verschiedenen Rechner gibt es kostenlos bei Adobe (Achtung: beim Drucken mit Acrobat-Reader bitte die Druckoption "Paper = A4" im Print Setup einstellen).
Zudem können die Folien auch zu den einzelnen Kapiteln als PostScript-Folien (2 Folien bzw. 4 Folien auf einer Seite) heruntergeladen werden, die mit dem Programm zip komprimiert hier zur Verfügung stehen:
Titelblatt und Gliederung der Vorlesung
[ INF1-0.2.ps.zip , INF1-0.4.ps.zip ]
- Informatik - was ist das?
- [ INF1-1.2.ps.zip , INF1-1.4.ps.zip ]
- Grundlagen der Programmentwicklung
- [ INF1-2.2.ps.zip , INF1-2.4.ps.zip ; Vorsicht 5 MB ]
- Einfache Datentypen und Rechenstrukturen
- [ INF1-3.2.ps.zip , INF1-3.4.ps.zip ]
- Grundlagen der funktionalen Programmierung
- [ INF1-4.2.ps.zip , INF1-4.4.ps.zip ]
- Syntax und Semantik von Programmiersprachen
- [ INF1-5.2.ps.zip , INF1-5.4.ps.zip ]
- Grundlagen der imperativen Programmierung
- [ INF1-6.2.ps.zip , INF1-6.4.ps.zip]
- Weitere Programmiersprachen und -paradigmen
Achtung:
Die Folien wurden mit dem Textverarbeitungssystem Framemaker (von Adobe) erstellt und enthalten - zur Zeit in grau dargestellte - ausblendbare Textpassagen (Lückentexte), die in der Vorlesung interaktiv erarbeitet wurden.
Übungsbetrieb
... ist auf folgender Seite zu finden ...