pervasive logo
Softwareentwicklung 1
Course Softwareentwicklung 1
Type VO, UE
Lecturer Ferscha (VO)
Dhungana (UE G1, UE G6)
Scheidl (UE G2)
Riener (UE G4, UE G7)
Course-Id 340.131 (VO)
340.029 (UE G1)
340.030 (UE G2)
340.016 (UE G4)
340.043 (UE G6)
340.032 (UE G7)
Hours/week 2
Zielgruppe Hörer der Studienrichtung Informatik und Wirtschaftsinformatik im ersten Semester
Ziele Diese erste und grundlegende Einführung vermittelt in weitgehend syntax-unabhängiger Weise moderne Methoden der Programmierung, bzw. soll unterstützt durch praktische Übungen eine Basiskompetenz zur eigenständigen Softwareentwicklung entwickeln. Im Vordergrund der Veranstaltung steht daher nicht eine bestimmte Programmiersprache, sondern die Behandlung allgemein einsetzbarer Konzepte und Methoden der Programmentwicklung.

In den Übungen soll der Stoff der Vorlesung vertieft werden.
Weiters soll anhand realistischer Beispiele der Umgang mit modernen Entwicklungsumgebungen geübt und erlernt werden.
Inhalt Nach einem Vorwort über Problemlösungsmethoden in der Informatik und der Festlegung der Begriffe Maschine, Algorithmus, Sprache, Grammatik und Programm werden Grundelemente der imperativen, teilweise der objektorientierten Programmierung eingeführt. Ausgehend von den Basiskonzepten wie Variablen, Datentypen, Anweisungen und Kontrollstrukturen werden auch grundlegende Programmiertechniken, nützliche Datenstrukturen und spezielle Konzepte wie Ereignisbehandlung und Multithreading vermittelt. Dabei wird – unter exemplarischer Verwendung der Programmiersprache JAVA – entlang der folgenden inhaltlichen Gliederung vorgegangen:
 

Begriffsfestlegungen: 

  • Problemlösungsstrategien
  • Maschinen, Daten und Befehle
  • Algorithmusbegriff
  • Formale Sprachen, Ausdrücke, Grammatiken
  • Programmiersprachen und Übersetzer

Syntaxkonstrukte:

  • Primitive Datentypen und Literale
  • Variablen, Namen, Deklaration, Initialisierung
  • Operatoren (arithmetische, Vergleichs-, Zuweisungs-, logische, bitweise, unäre)
  • Operatorprioritäten, Typumwandlung
  • Anweisungen, Sichtbarkeit und Anweisungsfolgen
  • Arrays und Zeichenketten
  • Kontrollstrukturen

Grundkonzepte zur Programmierung:

  • Objekte, Klassen, Attribute, Methoden
  • Referenzen auf Objekte, Konstruktoren
  • Programmierung mit Objekten
  • Prozeduren und Parameter
  • Ein- Ausgabe, Files
  • Interfaces
  • Erweiterungen von Klassen (Überladung, Vererbung)

Ausgewählte Spezielle Programmierkonzepte:

  • Dynamische Datenstrukturen (Beispiel Listen)
  • Überblick Dynamische Datenstrukturen (Graphen, Queues, Stapel, Mengen)
  • Selbstbezug und Beschreibungsmittel
  • Rekursive Algorithmen (lineare und nichtlineare, Beispiel Mergesort)
  • Rekursive Datenstrukturen (Beispiel Bäume)
  • Ereignisse und Ereignisbehandlung
  • Ausnahmen
  • Threads

Organisation der Programmierung:

  • Programmierkonventionen (Code Conventions)
  • Dateiorganisation, Gliederung, Kommentare
  • Strukturierungskonzepte für umfangreiche Programme
  • Dokumentation
  • Pakete
  • Tools und Entwicklungsumgebungen
Vorkenntnisse keine
Übungsmodus Es werden insgesamt 10 Übungen ausgegeben.
Jede Übung besteht aus zwei gleich schweren Beispielen welche jeweils mit max. 12 Punkten bewertet werden.
Pro Übung werden beide Beispiele beurteilt.
Die ausgearbeiteten Übungen sind jeweils in der Woche nach der Ausgabe bis Mittwoch 12:00 im entsprechenden Postkasten (Physikgebäude 1.Stock) bzw. elektronisch abzugeben.
Von den 10 Übungen müssen mindestens 8 abgegeben werden.
Werden mehr als 8 Übungen abgegeben, werden die besten 8 Übungen gewertet.
Aus diesen 8 Übungen wird der Punktedurchschnitt berechnet, der zu 50% die Übungsnote bestimmt. Die restlichen 50% der Übungsnote werden durch zwei Übungstests ermittelt. Der 1. Test findet in der Semestermitte (Ende November), der 2. am Semesterende (Ende Jänner). statt. Ab 3 abgegebenen Übungen wird ein Schein ausgestellt.
Beide Tests und die Übungen müssen jeweils positiv (mind. 50%) sein, um eine positive Übungsnote zu erreichen.
Unterlagen gesammelte Vorlesungsvorlagen
Primärliteratur H. Mössenböck: Sprechen Sie Java? Eine Einführung in das systematische Programmieren.

dpunkt-Verlag, Heidelberg, 2001.

Umfassende Einführung in Programmierkonzepte anhand der Programmiersprache Java.


K. Echtle, M. Goedicke: Lehrbuch der Programmierung mit Java.
dpunkt-Verlag, Heidelberg, 2000.

Eine in sich geschlossene Darstellung vieler im Rahmen dieser Veranstaltung relevanter Themenstellungen.


E.-W. Dietrich: Java 2 Von den Grundlagen bis zu Threads und Netzen.
Oldenbourg, München, 2001.


E.-E. Doberkat, S. Dißmann: Einführung in die objektorientierte Programmierung mit Java.
Oldenbourg, München, 2002.

Sekundärliteratur J. Magee, J. Kramer: CONCURRENCY State Models and Java Programs.
Wiley, New York, 1999.

Eine systematische, zustandsbasierte Behandlung der Konzepte nebenläufiger Verarbeitung einschließlich Synchronisation und Kommunikation, unterstützt durch Anschauungsbeispiele in Java.


P. Rechenberg: Was ist Informatik?
3. Auflage, Carl Hanser, München, 2000.

Einführung in alle Teilbereiche der Informatik für "Studenten aller Fachrichtungen und andere gebildete Informatik-Laien" (aus dem Vorwort). Sollte an den ersten drei Tagen eines Informatikstudiums gelesen werden.


A. V. Aho, J. D. Ullman:
Foundations of Computer Science. Computer Science Press, New York, 1995.

Ein frühes Standardwerk für die Informatik Grundausbildung.


K. Arnold, J. Gosling, D. Holmes:
The Java Programming Language. Addison Wesley, 3. Aufl. Reading Mass, 2000.

Das Referenzwerk zur Programmiersprache Java nunmehr in der 3. Auflage. Einführendes Buch, auch ohne Vorkenntnisse gut lesbar, Schwerpunkt auf Konzepten der Objektorientierung, aktuellste Auflage noch nicht in Deutsch erhältlich 


D. Flanagan:
Java in a Nutshell. 2. Auflage, O´Reilly, 1999.

Als "Lesebuch" ungeeignet, aber sehr gutes Nachschlagewerk.


H. M. Deitel, P. J. Deitel:
JAVA How to Program. Prentice Hall, New Jersey, 1997.

Systematisch an der Java Syntax orientiertes Programmierhandbuch unterstützt durch viele Code-Beispiele.

Leistungsnachweis schriftliche Prüfung zu den jeweils vorgesehenen Terminen