Programmierübungen
Ada95
Geplante Gliederung der Kompaktveranstaltung (1V,1Ü)
Ada 95, Teil 1
3.4. bis 11.4.2003, ganztägig, Neubau Informatik
1. Programmierübungen
Neben der Grundvorlesung Einführung in die Informatik I und II, in der die Konzepte der Programmierung sowie Datenstrukturen und Algorithmen vermittelt werden, müssen die Studierenen gute Programmierkenntnisse erwerben. Hierbei handelt es sich nicht um ein reines Praktikum, in dem Standardstoff in immer gleicher Form gelehrt wird, noch geht es nur um das Bedienen von Geräten oder rein handwerkliche Können; vielmehr müssen Handwerkliches und Erfahrung erworben und zugleich zu den Konzepten und zu typischen Beispielen, die im weiteren Verlauf des Studiums benötigt werden, in Beziehung gesetzt werden. Daher werden die Aufgaben in der Regel von Jahr zu Jahr unterschiedlich sein.
2. Warum Ada95?
(a) Informatik bedarf einer gewissen Größenordnung, Erst die erhöhte Komplexität (also eine gewisse anfängliche Undurchschaubarkeit) erzwingt Methoden und Techniken, die nicht nebenbei in Anwendungen oder im alltäglichen Umgang mit dem Rechner erworben werden können. Diese Methoden müssen konkret eingeübt werden und dürfen nicht Trockenkurs bleiben. Eine der wenigen Sprachen, die die Konzepte der Grundvorlesung ünterstützt und widerspiegelt ist Ada95.
(b) Es muss sowohl das Programmieren im Kleinen als auch im Großen vermittelt werden. Genau hierfür ist Ada95 konzipiert. Die Studierenden lernen dadurch beide Seiten der Praxis kennen.
(c) Es sollte eine Programmiersprache gewählt werden, die möglichst allen Anfänger(inne)n nicht geläufig ist, aber doch eine breite Anwendung und einen höheren Verbreitungsgrad besitzt. Ada95 erfüllt dieses Kriterium.
(d) Besonders anspruchsvolle und typische Anwendungen liegen in den Bereichen "Eingebettete Systeme", "Realzeitsysteme" und "Softwarewartung". Im Gegensatz zu gängigen Sprachen ist Ada95 hierfür besonders gut geeignet und bietet daher den Studierenden frühzeitig einen guten Einblick in große Einastzgebiet der Software.
(e) Ada95 bietet zugleich die Möglichkeit, auf das Maschinenprogramm und die Eigenheiten von Hardwarekomponenten und Geräten Einfluss zu nehmen und Steuerungen selbst zu programmieren, statt sie dem Betriebssystem oder dem Laufzeitsystem zu überlassen.
Nachteilig an Ada ist vor allem für Erstsemester, dass es keine "Anfängersprache" ist. Es gibt jedoch einen Kern, der zum Programmieren im Kleinen zählt und mit "Datenstrukturen, Ablaufstrukturen, Unterprogramme, Datentypen, Generizität und Moduln" umrissen werden kann. Diese Inhalte werden im Teil 1 behandelt.
Ada haftet ein "militärischer Geruch" an, weil das DoD der USA diese Sprache gefördert hat. Doch das ist Vergangenheit. Aus heutiger Sicht ist Ada eine der am besten verstandenen Sprachen, weil sie stets von vielen Wissenschaftler(inne)n während ihrer Entwicklung begleitet wurde und alle ihre Vor- und Nachteile international diskutiert wurden (dies kann man von fast keiner anderen Programmiersprache behaupten, die meist in Firmen oder im Verborgenen entstanden und an die man sich, eventuell knurrend, gewöhnt hat).
3. Inhaltliche Ziele der Veranstaltung
In dieser Veranstaltung sollen Prinzipien der Informatik und ihre Umsetzung in konkrete Programme vermittelt werden. Dies betrifft:
- Darstellung der Syntax mit einer EBNF
- Elementare Datentypen
- Elementare Kontrollstrukturen
- Programmaufbau (und Idee der Prozeduren, Moduln, Bibliotheken)
-
Datenstrukturen und zugehörige Kontrollstrukturen
(speziell: Blockstrukturen und dynamische Datenstrukturen)
- Datentypkonzept, Typisierung
- Prozeduren und Funktionen
- Generizität (= abgeschwächte Polymorphie),
- Moduln / Pakete, Import, Export
- Vererbung bei Datentypen und Moduln.
Anhand der Programme müssen zugleich Vor- und Nachteile von äquivalenten (Lösungs-) Algorithmen und erste Methoden des Testens diskutiert werden.
4. Ablauf der Veranstaltung
Elementare Typen und Kontrollstrukturen (Do. und Fr., 3. und 4.4.03):
3.4., 08:30: Vorlesung über EBNF, einfache Programme, Bezeichner, Literale, Deklarationen, Ein-/Ausgabe, Boolean, Integer, if, while, for, until.
3.4., 10:15: Bearbeitung von Übungsaufgaben, allein oder in Gruppen in den Seminarräumen der Informatik.
3.4., 13:00: Vorlesung über Float, Character, Unterbereiche, Typanpassung, case, exit, Sprung.
3.4., 14:45:: Bearbeitung weiterer Übungsaufgaben. Falls die Rechner angeschlossen sind, auch arbeiten mit dem Rechner.
4.4., 08:30: Vorlesung über Konstanten, Variablen, Blöcke, Sichtbarkeit, Aufzählungstypen, Unterbereiche und Felder.
4.4., 10:15: Übungen mit Vortrag der Teilnehmer(innen), Diskussionen
4.4., 13:00: Bearbeitung neuer Übungsaufgaben, Implementierungshinweise, Umgang mit Compiler usw..
Dieser erste Abschnitt müsste inhaltlich aus den Übungen zur Grundvorlesung allen bekannt sein. Um systematisch in den Stoff geführt zu werden, wird jedem empfohlen, hieran teilzunehmen.
Datentrukturen (Mo. und Di., 7. und 8.4.03):
7.4., 08:30: Vorlesung über Feldgrenzen, Records, Zeiger, Listen.
7.4., 10:15: Bearbeitung von Übungsaufgaben. Abgabe 12 Uhr.
7.4., 13:00: Übungen mit Vortrag der Teilnehmer(innen), Diskussionen.
7.4., 14:45: Bearbeitung weiterer Übungsaufgaben, Arbeiten am Rechner.
8.4., 08:30: Vorlesung über dynamische Datenstrukturen, Generizität.
8.4., 10:15: Bearbeitung von Übungsaufgaben. Abgabe 12 Uhr.
8.4., 13:00: Übungen mit Vortrag, Präsentation einiger Programme.
8.4., 14:45: Bearbeitung weiterer Übungsaufgaben, Arbeiten am Rechner.
Prozeduren und Pakete (Mi. und Do., 9. und 10.4.03):
9.4., 08:30: Vorlesung über Funktionen und Prozeduren.
9.4., 10:15: Bearbeitung von Übungsaufgaben. Abgabe 12 Uhr
9.4., 13:00: Übungen mit Vortrag.
9.4., 14:45: Bearbeitung weiterer Übungsaufgaben, Arbeiten am Rechner.
10.4., 08:30: Vorlesung über Pakete, Spezifikations- und Implementierungsteil
10.4., 10:15: Bearbeitung von Übungsaufgaben, Abgabe 12 Uhr.
10.4., 13:00: Übungen mit Vortrag.
10.4., 14:45: Bearbeitung weiterer Übungsaufgaben, Arbeiten am Rechner.
10.4., 16:30: Übungen: Präsentation einiger Programme.
Abrundung (Fr. 11.4.03).
11.4., 08:30: Vorlesung über Ausnahmebehandlung und Vererbung.
11.4., 10:15: Bearbeitung von Übungsaufgaben.
11.4., 12:30: Weitere Bearbeitung von Übungsaufgaben, Abgabe 14.15 Uhr.
11.4., 14:30: Übungen mit Vortrag der Teilnehmer(innen), Diskussionen.
11.4., 16:00: Ende der Veranstaltung.
5. Aufwand und Prüfung
Wir erwarten von Ihnen kontinuierliche Mitarbeit. Der studentische Aufwand für diese Lehrveranstaltung beträgt rund 60 Zeitstunden.
Anschließend können Sie der Veranstaltung "Programmierübungen II" im SS 03 folgen.
Ihre Leistung wird bewertet. Sie lösen 7 Übungsblätter und erhalten hierfür Punkte. Das Schema orientiert sich am Schema der "Programmierübungen I".
Personen, die an dieser Veranstaltung nicht teilnehmen können, können sich den Stoff anderweitig erarbeiten. Für sie wird eine mündliche (oder bei großer Nachfrage schriftliche) Prüfung in der ersten Vorlesungswoche angeboten.
Die Note über die Programmierübungen setzt sich aus Ihrer Leistung in den beiden Programmierübungen zusammen. Um zu bestehen, müssen beide Teile am Ende mindestens mit "ausreichend" bewertet sein.
6. Literatur
Barnes, J.G.P., "Programming in Ada 95", 2. Auflage, Addison-Wesley 1998
Feldman, M.B. und Koffman, E.B., "Ada 95 - Problem Solving and Program Design", 2. Auflage, Addison-Wesley 1997 (3. Auflage Textbook Binding, 1999)
Nagl, M., "Softwaretechnik mit Ada 95. Entwicklung großer Systeme.", Vieweg-Verlag, Wiesbaden 1999
Die Inhalte der Veranstaltung werden von den Kapiteln 5 bis 11 und 15 bis 17 des Barnes-Buchs sowie von den Seiten 80 bis 279 des Nagl-Buchs überdeckt.
Die Syntax von Ada95 finden Sie komplett im Internet. Dort gibt es zugleich ganze Ada95-Bücher, allerdings nur auf Englisch.
Die Übungsblätter werden rechtzeitig (vermutlich 2 Wochen vor Beginn) im Netz bereitgestellt.
Die Grundvorlesung "Einführung in die Informatik I" steht zweimal im Netz: einmal über die Homepage Prof. Lagally (WS 01/02) und einmal über die von Prof. Claus (WS 02/03).