Softwareentwicklung 1

339.160 Weninger Mo 08:30-10:00 Raum HS 2 Beginn: 05.10.2026, wöchentlich

Die Vorlesung findet in Präsenz statt. Der Übungsunterricht setzt voraus, dass zuvor am selben Tag die Vorlesung besucht wurde.

Für Studienanfänger*innen, die noch nie programmiert haben und daher mehr Fragen zum Vorlesungsstoff bzw. zu den Übungen haben, gibt es ein freiwilliges Tutorium: Softwareentwicklung 1, für das man sich über Kusss anmelden kann. Das Tutorium findet jeden Donnerstag von 17:15 bis 18:45 statt. Man kann dort ausführliche Fragen stellen und bekommt weitere Beispiele erklärt. Wer genügend oft am Tutorium teilnimmt, erhält 2 ECTS, die in den Freien Lehrveranstaltungen verwendet werden können. Wer teilnehmen möchte, möge sich bitte rasch anmelden.

Für Studierende von Mechatronik, Maschinenbau und ELIT wird am Mi. 16.12. 17:15-18:45 ein verpflichtender Zoom-Crashkurs in "Python" angeboten. Die dort vermittelten Kenntnisse ergänzen den Stoff von Softwareentwicklung 1 und sind für die angegebenen Studien essentiell.
- Folien und andere Unterlagen zum Crashkurs.
- Zoom-Link (Passwort wird in Moodle bekannt gegeben)


Ziele

Diese Vorlesung ist eine Einführung in die Programmierung. Sie behandelt grundlegende Konzepte der imperativen und objektorientierten Programmierung, schult das algorithmische Denken, erläutert Programmentwicklungstechniken und geht auch auf Fragen des Programmierstils und der Dokumentation ein. Als Programmiersprache wird Java verwendet. Die gelehrten Konzepte lassen sich aber auch leicht auf andere Sprachen wie C, Pascal oder Python übertragen.

Inhalt

  1. Grundlagen
    Grundbegriffe, Algorithmen und Ablaufdiagramme, Programmiersprachen
  2. Einfache Programme
    Programmstruktur und -ausführung, Grundlagen, Zahlentypen, Kommentare und Namen, Arithmetische Ausdrücke, Ein/Ausgabe, Fehlerquellen
  3. Verzweigungen
    Datentyp boolean, (Zusammengesetzte) Vergleiche, if-Anweisung, switch-Anweisung, Bedingte Ausdrücke
  4. Schleifen
    while-Schleife, do-while-Schleife, for-Schleife, Abbruch von Schleifen, Endlosschleifen
  5. Eindimensionale Arrays
    Grundlagen, Beispiele, Referenzsemantik, foreach-Schleife
  6. Zeichen
    Grundlagen, Beispiel
  7. Strings
    String, StringBuilder, Beispiele
  8. Zweidimensionale Arrays
    Grundlagen, Beispiele
  9. Methoden
    Methoden und Parameter, Funktionen, Lokalität, Sichtbarkeit, Lebensdauer von Variablen, Überladen von Methoden, Beispiele
  10. Klassen (Objektorientierung I)
    Klassen und Objekte, Beispiele, Klassen und Arrays, Methoden, Konstruktoren, Beispiele
  11. Vererbung (Objektorientierung II)
    Vererbung, Dynamische Bindung, Klasse Object, Abstrakte Klassen, Interfaces, Sichtbarkeiten, Getter + Setter
  12. OOP Schüsselwörter (Objektorientierung III)
    static, final
  13. Pakete
    Idee, Export und Import, Pakete und Verzeichnisse, Sichtbarkeitsattribute, Beispielpakete aus der Java-Bibliothek
  14. Enumerationen
    Motivation, Einfache Enumerationstypen, Enumerationstypen als Klassen
  15. Rekursion
    Prinzip, Beispiel: GGT, Beispiel: Binäres Suchen, Beispiel: Türme von Hanoi
  16. Dynamische Datenstrukturen
    Objekte und Referenzen, Unsortierte Liste, Sortierte Liste, Bäume
  17. Ausnahmebehandlung
    Prinzip, Try-Anweisung, Arten von Ausnahmen, Implementierung von Ausnahmen, Suche nach passender Catch-Klausel, Spezifikation von Ausnahmen im Methodenkopf, Beispiel
  18. Dokumentationskommentare
  19. Schrittweise Verfeinerung
    Prinzip, Beispiel: Wortzählung, Beispiel: Stichwortverzeichnis
  20. Grammatiken
    Grundbegriffe, EBNF, Reguläre Ausdrücke
  21. Programmierstil
    Namensgebung, Strukturierung, Lesbarkeit, Kommentierung, Performance, Beispiele

Termine

Datum Thema
Mo 05.10. 1. Grundlagen
Mo 12.10. 2. Einfache Programme
Mo 19.10. 3. Verzweigungen, 4. Schleifen
Mo 26.10. Nationalfeiertag
Mo 02.11. Allerseelen
Mo 09.11. 5. 1D-Arrays, 6. Zeichen, 7. Strings
Mo 16.11. 8. 2D-Arrays, 9. Methoden
Mo 23.11. 10. Klassen / Objektorientierung I
Mo 30.11. 11. Vererbung / Objektorientierung II
Mo 07.12. 12. Kennwörter / Objektorientierung III, 13. Pakete, 14. Enumeration, 15. Rekursion
Mi 14.12. 16. Dynamische Datenstrukturen
Mo 21.12. Weihnachtsferien
Mo 28.12. Weihnachtsferien
Mo 04.01. Weihnachtsferien
Mo 11.01. 17. Ausnahmen, 18. Dokumentationskommentare
Mo 18.01. 19. Schrittweise Verfeinerung
Mo 25.01. 20. Grammatiken, 21. Programmierstil
Mo 01.02. (VL-Klausur)

Downloads

Die Folien dieser Vorlesung können von der Moodle-Seite dieser Lehrveranstaltung heruntergeladen werden.
Die Vorlesung wird aufgezeichnet, aber es wird dringend geraten, die Vorlesung zu besuchen, da hier der aktuelle Stoff vorgetragen wird und auch Fragen gestellt werden können.

Self Assessments

Programmieren lernt man so wie Klavierspielen nur durch üben. Natürlich gibt es dazu die Übungs-Lehrveranstaltung, aber es ist definitiv hilfreich, wenn man noch ein wenig darüber hinaus übt und sein Wissen und Können überprüft. Zu diesem Zweck wurden die folgenden "Self Assessments" entwickelt: kleine Fragen und Beispiele mit Musterlösungen zu allen Kapiteln der Vorlesung. Sie können die Self Assessments herunterladen und selbständig durcharbeiten.
Download: hier
Die Aufgaben bestehen aus Fragen, mit denen Sie kontrollieren können, ob Sie den Stoff der Vorlesung verstanden haben, sowie aus kleinen Programmierbeispielen (mit Musterlösungen), etwa in der Größe, wie sie dann auch in der Klausur am Semesterende vorkommen. Wenn Sie die Aufgaben also durchgespielt haben, sind Sie bestens auf die Klausur vorbereitet. Außerdem regen die Aufgaben zu Fragen an, die Sie dann gezielt in der Vorlesungs- oder Übungsstunde stellen können.
Viel Spaß mit den Aufgaben!

Literatur

  • Hanspeter Mössenböck: Sprechen Sie Java? 5. Auflage, dpunkt-Verlag, 2014.
    Das Buch wurde für diese Vorlesung geschrieben und deckt ihren Inhalt vollständig ab. Wer den Stoff der Vorlesung nochmals nachlesen möchte, ist mit diesem Buch gut bedient. Es enthält auch zahlreiche Beispiele mit Musterlösungen.
  • Reinhard Schiedermeier: Programmieren mit Java. Pearson, 2010.
    Reinhard Schiedermeier: Programmieren mit Java II. Pearson, 2013.

    Diese beiden Bücher sind ebenfalls eine sehr gute Einführung in alle Aspekte von Java. Sie sind etwas umfangreicher als das Buch von Mössenböck und decken auch einige Aspekte ab, die über eine Einführung hinausgehen und daher in der Vorlesung nicht behandelt werden.
  • Ken Arnold, James Gosling: The Java Programming Language. Pearson, 2005.
    Dieses Buch ist das Standard-Buch über die Sprache Java. Es wurde von den Java-Designern selbst geschrieben. Allerdings geht es weit über den Umfang dieser Einführungsvorlesung hinaus. Es stellt z.B. Java gleich als objektorientierte Sprache vor und geht überhaupt nicht auf Konzepte der allgemeinen Programmierung ein.

Weiterführende Online-Quellen