close

Software Development 1 (2018WS)

Course Software Development 1
Type VO, UE
Lecturer Ferscha (VO)
Jungwirth, Gruenberger (UE G1, UE G2)
Haslgrübler, Gruenberger, Jungwirth (UE G3)
Haslgrübler, Jungwirth (UE G4)
Trendafilov (UE G5, UE G6)
Course-Id 340.131 (VO)
340.016 (UE G1)
340.029 (UE G2)
340.030 (UE G3)
340.031 (UE G4)
340.032 (UE G5)
340.043 (UE G6)
Hours/week 2
News
Nachklausur SWE1
Liebe Studierende!

Die Nachklausur zu SWE1 findet am Montag, dem 1. April 2019, von 10:15-11:45 im HS9 statt.
Bitte beachten Sie, dass bei dieser Klausur keine Punkte der Übungstests 1 und 2 wiederverwendet werden können und alle Beispiele zu lösen sind.

Die Klausur ist gleichzeitig eine Möglichkeit die Übung positiv abzuschließen, sollten Sie dort nicht 50% der Testpunkte erreicht haben.

Die Musterlösung der Klausur vom 28.1 wurde übrigens am darauffolgenden Tag online gestellt und ist auf unserer Webseite unter Lehre / Klausuren zu finden.
Klausureinsicht Softwareentwicklung 1
Der Termin für die Einsicht der Klausur in Softwareentwicklung 1 ist folgender: Dienstag, 5. März 2019, 09:00 - 10:00 Uhr am Institut für Pervasive Computing, Raum S3 614.
Hörsaaleinteilung Klausur 28.01 Softwareentwicklung 1

Guten Morgen!


Die Einteilung für die Klausur SWE1 heute um 15:30-17:00 Uhr ist wie folgt:

* Studierende mit einem Nachnamen beginnend mit A-R: HS 1

* Studierende mit einem Nachnamen beginnend mit S: HS 4

* Studierende mit einem Nachnamen beginnend mit T-Z: HS 5


Bis später und viel Erfolg, Florian Jungwirth & Team

Verlängerung der Abgabefrist
Die Abgabefrist der 8. Hausübung ist bis zum 9.1 erweitert worden. Eng.: The deadline for the 8th assignment has been extended to the 9.1
Hörsaaleinteilung 2.Übungstest Softwareentwicklung 1

Monday, December 10, 2018, 12:00


Exercise GroupsRoom
G1, G2, G3 HS1
G4, G5, G6 HS16
Hörsaaleinteilung 1.Übungstest Softwareentwicklung 1

Monday, November 12, 2018, 12:45


Exercise GroupsRoom
G1, G2, G3, G4 (Wednesday Groups)HS1
G5, G6 (Thursday Groups)HS16
Absage der Übungen

Liebe Studierende! Um thematisch der Vorlesung nicht vorzugreifen, entfallen diese Woche die Übungen in Softwareentwicklung 1. Die nächsten Übungseinheiten finden nächsten Mittwoch / Donnerstag wie geplant statt. Beste Grüße, Florian Jungwirth


English Version:

Dear students, this week's exercises in software development 1 are canceled, to not be thematically ahead of the lecture. Next week we will continue as planned. Best regards, Florian Jungwirth

Zielgruppe Hörer der Studienrichtungen Bakkalaureatsstudium und Masterstudium Informatik (seit 2002/03), Informatik (K880), Wirtschaftsinformatik (K175), Lehramt Informatik, Informationselektronik (K289)
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 die Behandlung allgemein einsetzbarer Konzepte und Methoden der Programmentwicklung, veranschaulicht anhand von Java Beispielen.

In den Übungen soll der Stoff der Vorlesung vertieft werden.
Weiters soll anhand realistischer Beispiele der Umgang mit der modernen Programmiersprache JAVA 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

Inhalt nach Vorlesungseinheiten Die hier angegebene Strukturierung spiegelt ungefähr die Organisation der Vorlesung über das Semester, jedenfalls aber die ausgegebenen Foliensätze, wieder:

    00 Introduction
    01 Terms & Definitions; Programming concepts
    02 Control structures and array basics
    03 Multi-dimensional arrays (index transformation, sparse/dense matrices)
    04 Objects I: concepts, reference to objects, dynamic memory allocation
    05 Objects II: instantiation, constructors, „this" operator; cross-ref. C++
    06 Objects III: inheritance, packages
    07 Objects IV: „cool stuff" (reflections), exception handling
    08 I/O (file handling, open/close, streams, reader)
    09 Strings, string processing
    10 Recursion
    11 Abstract data types (Stacks, Lists, Queues)
    12 Binary Trees (Pre/Post/In-order traversal, examples)
    13 Graphs and sets
    14 Multithreading

Vorkenntnisse

Keine.

Allerdings legen wir es Programmieranfängern nahe, sich für den "Vorbereitungskurs Praktische Programmierkenntnisse" anzumelden, siehe Vorbereitungskurse TN

Übungsmodus Es werden insgesamt 10 Übungen ausgegeben, von denen mindestens 8 auszuarbeiten und abzugeben sind (Übungen werden erst ab mindestens 6 erreichten Punkten als abgegeben gewertet). Werden mehr als 8 Übungen abgegeben, werden die besten 8 Übungen gewertet. Ab 3 abgegebenen Übungen wird in jedem Fall ein Schein ausgestellt. 
Jede Übung besteht in der Regel aus zwei gleichschweren Beispielen und ist in Summe 24 Punkte wert. Alle Übungsbeispiele werden von den Tutoren korrigiert und bewertet.

Die ausgearbeiteten Übungen sind im Regelfall jeweils in der Woche nach der Ausgabe bis Mittwoch 12:00 elektronisch abzugeben.


Aus den besten 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, der 2. am Semesterende statt. Beide Tests sowie der Übungsteil müssen positiv (mind. 50% der Punkte) sein, um eine positive Übungsnote zu erreichen. Detailliertere Informationen in der 1. Übungsstunde.


Stil- und Abgaberichtlinien
Programmierrichtlinien und Regeln für Punkteabzüge

Unterlagen gesammelte Vorlesungsvorlagen, Übungsfolien
Primärliteratur H. Mössenböck: Sprechen Sie Java? Eine Einführung in das systematische Programmieren.

4. überarbeitete und erweiterte Auflage (mit Java 7), dpunkt-Verlag, Heidelberg, 2011, ISBN 978-3-89864-595-9 (Euro 29,90)

Umfassende Einführung in Programmierkonzepte anhand der Programmiersprache Java.


J. Bishop: Java lernen.
2. Auflage, Pearson Studium, München, 2003. D. Flanagan: Java in a Nutshell.
4. Auflage, O'Reilly, Köln, 2002.


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

Einfache Einführungen, auch zum Selbststudium geeignet.


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

Sekundärliteratur 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.


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

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

K. Arnold, J. Gosling, D. Holmes: The Java Programming Language.

Addison Wesley, 4. Aufl., 2005.

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

E.-W. Dietrich: Java 2 Von den Grundlagen bis zu Threads und Netzen.
Oldenbourg, München, 2001.
Leistungsnachweis schriftliche Prüfung zu den jeweils vorgesehenen Terminen