Modulbeschreibung Softwareentwicklung I
Bachelor-Pflichtmodul: Softwareentwicklung I
1. Modulkennung
IP1
2. Studiengang
Bachelorstudiengang Informatik, Masterstudiengang Bioinformatik
3. Modulbezeichnung
Softwareentwicklung I (SE I), engl.: Software Development I
4. Modul-Verantwortlicher
Züllighoven
5. Veranstalter/Dozent
Floyd, Gryczan, Züllighoven
6. Sprache
Deutsch mit deutsch- und englischsprachigem Lehrmaterial
7. Motivation, Bedeutung für / Stellung im Gesamtprogramm
In einer praxisnahen und berufsqualifizierenden Informatik-Ausbildung spielt das Beherrschen des grundlegenden Handwerks der Programmierung eine entscheidende Rolle. Aufgrund der Bedeutung objektorientierter Programmiersprachen für die Praxis der Softwareentwicklung werden in dieser einführenden Veranstaltung die Grundlagen des objektorientierten Paradigmas ausführlich behandelt. Dazu zählen neben den objektorientierten Kernkonzepten auch die Basiskonzepte der imperativen Programmierung. Standardnotationen wie die EBNF und Teile der UML, der Umgang mit Bibliotheken sowie eine erste Einführung in das Testen von Software werden vermittelt.
8. Lernziele/Kompetenzen
Softwareentwicklung soll auch im Kleinen als Wechselspiel zwischen Analyse, Modellierung, Konstruktion und Bewertung vermittelt werden. Dabei soll deutlich werden, dass konstruktiv technische Fähigkeiten und Fertigkeiten mit kommunikativer Kompetenz zusammen kommen müssen. Eine erste Einsicht soll gefördert werden, dass das Produkt Software nicht beliebig von seinem Entwicklungsprozess getrennt werden kann.
8.1 Passung Leitbild
- Erkenntnis und Wissen über Basiskonzepte der Softwareentwicklung
- Intensives, praktisches Einüben von Realisierungsfertigkeiten
8.2 Grundlagen-/Faktenwissen
- Kernkonzepte der imperativen und objektorientierten Programmierung kennen
- Standardnotationen der Programmierung (EBNF, UML) kennen
- Erste Eindrücke vom Komplexitätsbegriff
8.3 Methodenwissen
- Umgang mit Programmtext (Erstellen, Verstehen, Dokumentieren, Fehler suchen) und mit informellen Spezifikationen
- Handwerkliche Grundkonzepte der Softwaretechnik kennen lernen
- Testgetriebenes Vorgehen bei der Softwareentwicklung kennen
8.4 Transferkompetenz
- Konzeptwissen der Programmierung über eine konkrete Programmiersprache hinaus
- Elemente einer imperativen und objektorientierten Programmiersprache anhand des Programmiersprachen-Paradigmas identifizieren
8.5 Normativ-bewertende Kompetenz
- Kleine Programme auf ihre Verständlichkeit hin beurteilen können
- Grenzen der Werkzeugunterstützung (insb. durch Compiler) bei der Programmierung einschätzen können
- Möglichkeiten und Grenzen von Tests einschätzen können
8.6 ABK/BOK/Schlüsselqualifikationen
- Sicher mit einem Rechner umgehen können
- Grundlegendes Handwerkszeug der Programmierung beherrschen
- Kleine sequenzielle Probleme allein und im Programmierpaar lösen können
- Lösungen rechtfertigen können
- Programmierwerkzeuge nutzen können
9. Lehrveranstaltungen
- 2 SWS Vorlesung Softwareentwicklung I (Plenum)
- 2 SWS Übungen Softwareentwicklung I (Betreuter Laborbetrieb mit Kleingruppen)
10. Inhalt
Einführung in objektorientierte und imperative Programmierung:
- Objekte, Klassen, Operationen
- Datenfelder, Methoden, Konstruktoren
- Der Prozedurbegriff, Parameterübergabe
- Strukturierte Programmierung (Sequenz, Auswahl, Wiederholung)
- Variablen und Typen, Ausdrücke, Zuweisungen
- Unterscheidung Syntax, Semantik und Pragmatik bei Programmiersprachen, Syntax in EBNF
- Basistypen und Referenztypen
- Grundelemente der Modellierung mit UML
- Namensräume, Sichtbarkeit
- Modulbegriff, Klasse als Modul, Klasse als Typ
- Funktionale Dekomposition, Rekursion
- Umgang mit APIs, Schnittstellen, Interfaces
- Sammlungen benutzen:
- Listen, Mengen, Abbildungen
- Iteratoren, Gleichheit und Identität
- Sammlungen implementieren:
- Arrays, verkettete Strukturen
- Bäume, Hashing
- Komplexität verschiedener Implementierungen
- Fehlersuche/Debugging, Fehlerbehandlung
- Testen: Modultests, Regressionstests
11. Bezüge zu anderen Modulen
- Innerhalb des Bachelorstudienganges: Das Modul bildet die Grundlage für alle Veranstaltungen, in denen Software-Systeme erstellt oder deren Entwicklung thematisiert wird.
- In anderen Studiengängen: Das Modul eignet sich als Nebenfachmodul sowie als Bestandteil von Wirtschafts- und Bioinformatik-Studiengängen. Darüber hinaus ist ein Einbringen als Wahlmodul im Rahmen naturwissenschaftlicher Studiengänge denkbar.
12. Modulvoraussetzungen
Verbindlich: keine
Empfohlen: keine
13. Semester, Studienjahr /-phase
Studienabschnitt: 1
Referenzsemester: 1
14. Prüfungsleistungen
Die Zulassung zur Modulprüfung setzt die regelmäßige und erfolgreiche Teilnahme
an Übungen/Praktikum voraus; die Teilnahme gilt grundsätzlich als erfolgreich,
wenn alle Aufgaben bearbeitet und mindestens 50% richtig gelöst wurden; im Falle
abweichender Kriterien müssen diese zu Beginn der Veranstaltung bekannt
gemacht werden.
Gemeinsame Modulprüfung für alle Lehrveranstaltungen des Moduls; in der Regel
schriftlich (Klausur) und in deutscher Sprache; bei Modus-Abweichung Bekanntgabe
zu Beginn der Veranstaltung.
15. Bewertung
Gesamt: 6 Leistungspunkte
(Softwareentwicklung I: 3 Leistungspunkte,
Übungen/Praktikum zu Softwareentwicklung I: 3 Leistungspunkte)
16. Periodizität
Wintersemester, jährlich, Dauer: 1 Semester
17. Methodische Aufbereitung und Medienformen
- Vorlesung: Folien mit Beamer
- Übungen: Laborbetrieb, intensive Arbeit am Computer
Die Veranstaltung legt großes Gewicht auf das Erlernen praktischer Fähigkeiten. Aus diesem Grund kommt den Übungen eine besondere Bedeutung zu; sie sollen in Form eines intensiv betreuten Laborbetriebs konzipiert sein. Die Studierenden sollen im Labor präsent sein und die gestellten Aufgaben vor Ort lösen. Sie werden dabei von Tutoren betreut, die unmittelbar und personenspezifisch Feedback geben können. Teilweise wird die klassische Abfolge „theoretische Behandlung in der Vorlesung, praktische Umsetzung in der Übung“ invertiert: Es werden zuerst problembasiert praktische Erfahrungen in den Übungen gesammelt, die dann in der Vorlesung reflektiert und theoretisch unterfüttert werden. Moderne Konzepte zur Programmierausbildung wie Objects First, Interfaces vor Vererbung, Array eher Realisierung als Konzept, Integriertes Testen etc. werden berücksichtigt.
18. Literatur
- Barnes, Kölling: Objektorientierte Programmierung mit Java - Eine praxisnahe Einführung mit BlueJ, Pearson Education Deutschland, 2003.
- Schiedermeier: Programmieren mit Java - Eine methodische Einführung, Pearson Education Deutschland, 2005.
- Goll, Weiß, Müller: Java als erste Programmiersprache - Vom Einsteiger zum Profi, 3. Auflage, Teubner, 2001.