Softwareentwicklung 1

339.160 Mössenböck Mo 08:30 - 10:00 HS 1 Beginn: 05.10.2020

Auf Grund von Covid-19 dürfen wir den Hörsaal 1 leider nur mit 115 Personen belegen. Die Vorlesung "Softwareentwicklung 1" wird allerdings auch über Zoom übertragen ( https://jku.zoom.us/j/92013419348?pwd=aXNHeEtOeWdWcG40STV1M2lwbmxaUT09) und außerdem auf dieser Webseite zum Download zur Verfügung gestellt.

Wir möchten den Erstsemestrigen (bzw. in Kunststofftechnik den Drittsemestrigen) die Möglichkeit geben, wenigstens jede zweite Woche im Hörsaal 1 anwesend zu sein. Alle Studierenden mit Matrikelnummer k120xxxxx und k519xxxxx (bzw. Kunststofftechniker mit Matrikelnummer k119xxxxx) können daher jede zweite Woche physisch an der Vorlesung teilnehmen (abwechselnd die Nachnamen beginnend mit A-L und in der darauffolgenden Woche jene mit M-Z; siehe Terminplan weiter unter). In den Wochen, in denen Sie nicht physisch teilnehmen können, können Sie die Vorlesung online über den oben angegebenen Zoom-Link verfolgen bzw. die Vorlesung als Download ansehen.

Studierende, die sich bereits in einem höheren Semester befinden, bitten wir um Verständnis, dass Sie lediglich online teilnehmen bzw. das Vorlesungsvideo als Download ansehen können. Bitte kommen Sie als Höhersemestrige daher nicht in der Hörsaal 1, da wir nicht mehr als 115 Personen im Hörsaal zulassen können.

Beim Betreten und Verlassen des Hörsaals sowie generell in Gebäuden der JKU ist unbedingt ein Mund-Nasenschutz zu tragen, den Sie erst abnehmen dürfen, wenn Sie Ihren Sitzplatz erreicht haben. Die verfügbaren Sitzplätze im Hörsaal 1 sind markiert. Zwischen den Sitzplätzen sind jeweils 3 Sitzplätze freizuhalten.


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, Ablaufdiagramme, Struktogramme, Grammatiken
  2. Einfache Programme
    Grundsymbole von Java, Deklarationen und Zahlentypen, Kommentare, Zuweisungen, Arithmetische Ausdrücke, Ein/Ausgabe, Grundstruktur von Java-Programmen
  3. Verzweigungen
    If-Anweisung und Vergleiche, Zusammengesetzte Vergleiche, Datentyp boolean, Switch-Anweisung, Bedingte Ausdrücke
  4. Schleifen
    While-Schleife, Do-While-Schleife, For-Schleife, Abbruch von Schleifen, Vergleich der Schleifenarten
  5. Arrays
    Eindimensionale Arrays, Foreach-Schleife, Mehrdimensionale Arrays, Beispiele
  6. Zeichen
    Datentyp char, Beispiel
  7. Strings
    Datentyp String, Beispiele
  8. Methoden
    Methoden und Parameter, Funktionen, Lokalität, Sichtbarkeit, Lebensdauer von Variablen, Überladen von Methoden, Beispiele
  9. Rekursion
    Prinzip, Beispiele: GGT, Binäres Suchen, Türme von Hanoi
  10. Klassen
    Klassen und Objekte, Beispiele, Klassen und Arrays
  11. Objektorientierung
    Methoden, Konstruktoren, static, Beispiele für Klassen, Vererbung, Dynamische Bindung, Klasse Object, final, Abstrakte Klassen, Interfaces, Anonyme Klassen
  12. Dynamische Datenstrukturen
    Objekte und Referenzen, Unsortierte Liste, Sortierte Liste, Bäume
  13. Pakete
    Idee, Export und Import, Pakete und Verzeichnisse, Sichtbarkeitsattribute, Beispielpakete aus der Java-Bibliothek
  14. Ausnahmebehandlung
    Prinzip, Try-Anweisung, Arten von Ausnahmen, Implementierung von Ausnahmen, Suche nach passender Catch-Klausel, Spezifikation von Ausnahmen im Methodenkopf
  15. Enumerationen
    Motivation, Einfache Enumerationen, Enumerationstypen als Klassen
  16. Dokumentationskommentare
  17. Schrittweise Verfeinerung
    Prinzip, Beispiele: Wortzählung, Stichwortverzeichnis
  18. Threads
    Grundlagen, Klasse Thread, Interface Runnable, Weitere Thread-Operationen, Synchronisation von Threads, Deadlocks
  19. Programmierstil
    Namensgebung, Strukturierung, Lesbarkeit, Kommentierung, Effizienz

Termine

Datum Thema Namen Downloads
Mo 05.10.GrundlagenA - Lvideo
Mo 12.10.Einfache ProgrammeM - Zvideo
Mo 19.10.Verzweigungen, SchleifenA - Lvideo
Mo 09.11.Arrays, Zeichen, StringsM - Zvideo
Mo 16.11.Methoden, RekursionA - Lvideo
Mo 23.11.Klassen, Objektorientierung IM - Zvideo
Mo 30.11.Objektorientierung IIA - Lvideo
Mo 07.12.Dynamische DatenstrukturenM - Zvideo
Mo 14.12.Pakete, AusnahmenA - Lvideo
Mo 11.01.Enumerationen, javadoc, Schrittweise VerfeinerungM - Zvideo
Mo 18.01.ThreadsA - Lvideo
Mo 25.01.Programmierstil, FragestundeM - Zvideo
Mo 01.02. Klausur (wahrscheinlich online)

Downloads

Die Folien dieser Vorlesung sowie die Self Assessments können von der Kusss-Seite dieser Lehrveranstaltung heruntergeladen werden, die Vorlesungsvideos aus der obenstehenden Tabelle.

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 haben wir eine Anzahl von "Self Assessments" entwickelt: kleine Fragen und Beispiele mit Musterlösungen zu allen Kapiteln der Vorlesung. Sie können die Self Assessments von der Kusss-Seite der Vorlesung runterladen und selbständig durchspielen.

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.

Die Klausur wird großteils aus diesen Self-Assessments zusammengestellt. 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 Self Assessments!

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