Die Vorlesung führt in die grundlegenden Konzepte der objekt-orientierten Programmierung, insbesondere in das Programmieren mit Java ein.
Hierfür werden die Grundkonzepte, wie zum Beispiel Schleifen, Bedingungen, Funktionen und Variablen, aller Programmiersprachen anhand der Java Syntax erläutert. Neben dem algorithmischen Denken wird zusätzlich das Modellieren von Problemen mittels Objekten gleich zu Beginn der Veranstaltung gelehrt. Darauf aufbauend werden weitere Konzepte der objekt-orientierten Programmierung erläutert. Hierzu zählen die verschiedenen Arten der Polymorphie (Vererbung, Interfaces, Generics, etc.) sowie das Arbeiten mit mehreren Klassen und Objekten.
Zusätzlich werden einige grundlegende Datenstrukturen, wie zum Beispiel Stack, Queue und Listen im Laufe der Veranstaltungen implementiert werden. Abschließend werden Themen wie das Schreiben von lesbarem Code, Fehlerbehandlung und das Arbeiten mit Versionierungsverwaltungssystemen vermittelt.
Themen:
Lesbarer Code, Kommentare, Fehlerbehandlung, Versionierung
Vorlesungen:
Wöchentlich Montags 09:15 - 10:45 (Start ab 21.10.2019) im Hörsaal Karl-Haußknecht-Straße 7
Link zur Veranstaltung im Vorlesungsverzeichnis: link
Übungsleiter: André Karge
Übungskontrolle: Sarah Böning
Übungstermine: Wöchentlich Donnerstags (Start ab 24.10.2019) im LiNt-Pool Bauhausstraße 11 (links neben dem Haupteingang der Bauhausstraße 11)
Übungsabgabe in Gruppen von maximal 2-3 Studenten pro Gruppe
Das Mitbringen eines eigenen Laptops ist von Vorteil, jedoch keine Pflicht.
Bewertung:
50% aller möglichen Punkte müssen erreicht werden, um die Prüfungszulassung zu erhalten.
Jede Gruppe stellt einmal die Lösungen eines Beleges vor.
Vorlesung | Thema | Folien |
---|---|---|
21.10.2019 | Einführung | slides |
28.10.2019 | Datentypen und Verhalten | slides |
04.11.2019 | Kontrollstrukturen | slides |
11.11.2019 | Objektorientierung | slides |
18.11.2019 | Arrays, Strings, Static | |
25.11.2019 | Heap, Stack, Parameter, Cloning | slides |
02.12.2019 | Enumerations, Packagages, Recursion | slides |
09.12.2019 | Listen, Stacks, Queues | slides |
16.12.2019 | Polymorphie | slides |
06.01.2020 | Probeklausur | |
13.01.2020 | Polymorphie II | |
20.01.2020 | Exceptions und Java Klassen | slides |
27.01.2020 | Clean Code + Versionskontrolle |
Übung | Thema | Übungsblatt und Materialien |
---|---|---|
24.10.2019 | Organisation | |
31.10.2019 | - Feiertag - | |
07.11.2019 | Operatoren, Methoden, Primitives | |
14.11.2019 | Schleifen, Kontrollstrukturen, Klassen Präsentation blatt01:
| |
21.11.2019 | Static, Arrays, Strings Präsentation blatt02:
| |
28.11.2019 | Heap, Stack, Copy Präsentation blatt03:
| |
05.12.2019 | Packages, Kapselung Präsentation blatt04:
| |
12.12.2019 | Enum, Foreach, Recursion, Listen Präsentation blatt05:
| |
19.12.2019 | Stack, Queues, Generics Präsentation blatt06:
| |
09.01.2020 | Probeklausur, Polymorphie Teil 2 Präsentation blatt07:
| |
16.01.2020 | Probeklausur, Polymorphie, Fragerunde | |
23.01.2020 | Exceptions, Debugging | |
30.01.2020 | Wiederholung part 1 | |
06.02.2020 | -- Abgesagt, da scheinbar kein Wiederholungsbedarf -- |
News: Vorlesung am 26.11. entfällt.
Die Vorlesung Software Engineering erfordert als Zulassungsvoraussetzung für die Klausur, dass mindestens ⅔ der Punkte in den bewerteten Übungsblättern erzielt werden.
Übungsleiter: Nicolai Ruckel
Übung: Freitag 11:00–12:30 Uhr, SR015
Vorlesung | Thema | Folien |
---|---|---|
15.10.2019 | Einführung | slides |
22.10.2019 | Requirements Engineering | slides |
29.10.2019 | Responsibility-Driven Design | slides |
05.11.2019 | UML | slides 1 slides 2 |
12.11.2019 | Design Patterns | slides |
19.11.2019 | Design Patterns II | |
2611.2019 | Ausfall | |
03.12.2019 | Architektur | slides |
10.12.2019 | Implementierung | slides |
17.12.2019 | Implementierung / Testing | slides |
07.01.2020 | Testing | slides |
14.01.2020 | Industrievorlesung | |
21.01.2020 | Entwicklungsprozesse | slides |
28.01.2020 | Projektmanagement / Evolution und Wartung | slides |
Übung | Thema | Übungsblatt |
---|---|---|
18.10.2019 | Allgemeine Hinweise Einführung in Git | Übungsblatt 1 |
25.10.2019 | Gradle | |
01.11.2019 | Fällt aus | |
08.11.2019 | Besprechung Übungsblatt 1 | Übungsblatt 2 |
15.11.2019 | Fragestunde zu Übungsblatt 2 | |
22.11.2019 | Besprechung Übungsblatt 2 | Übungsblatt 3 |
29.11.2019 | Design Patterns | |
06.12.2019 | Besprechung Übungsblatt 3 | Übungsblatt 4 Adapter Pattern Visitor Pattern |
13.12.2019 | Testing | |
20.12.2019 | Besprechung Übungsblatt 4 | Übungsblatt 5 Factory- und Singleton-Pattern |
10.01.2020 | Testing — Teil 2 | Startcode, Lösungen |
17.01.2020 | Besprechung Übungsblatt 5 | Übungsblatt 6 |
24.01.2020 | Debugging | Code, Lösung |
31.01.2020 | Besprechung Übungsblatt 6 | |
07.01.2020 | Klausurvorbereitung | Lösung Übungsblätter |
The seminar teaches theoretical and practical knowledge about modern software technologies, which are used in nearly all software project nowadays. The topics will follow a running example, in which all technologies can be tested and applied. The students will be assigned to a technology for which they will give a presentation about the key concepts and usage scenarios of the respective technology. A tutorial follows each presentation, in which the presenter teaches the other students in actually applying the technique.
The used technologies differ depending on the number of students and include the following:
Assingments will be determined in the second lecture.
Lecture | Topic | Resources |
---|---|---|
2019-04-08 | Introduction | slides |
2019-04-15 | How to give presentations | slides |
2019-05-20 | Gradle, | |
2019-05-27 | Microservices with Flask + Spring Boot, Rest | Spring |
2019-06-03 | Travis, Testcontainer, Selenium | |
2019-06-10 | Pfingsten (keine Vorlesung) | |
2019-06-17 | Ansible, Tutorial: Gradle, Docker | |
2019-06-24 | Tutorial: REST, Microservice Flask + SpringBoot | |
2019-07-01 | Tutorial: Selenium, Travis, Testcontainer, Ansible |
Software product lines and configurable software systems are the main driving factor for mass customization, tailor-made products, and product diversity while keeping a maintainable code base and saving development time. The lecture will teach about central elements of product line modeling and development.
Students should understand the following techniques and theories:
Students should be able to apply the above theories and concepts to judge points in favor and against a certain technique depending on the application scenario at hand. Hence, the students will be able to decide which techniques, tools, and methods to use.
Students should master concepts and approaches such as
Students will implement these concepts in Java.
Students should develop an understanding of the current state of research in software product lines. With appropriate supervision, students should be able to tackle new research problems, especially in the area of product line development and optimization.
Participation requires the successful completion of the course labs in the form of between six and seven fortnightly assignments. All assignments include programming tasks, so some experience with Java is required. Digital Engineering students will be required to successfully complete an additional part of the assignments since they obtain 6 ECTS instead of 4.5 ECTS for CS4M students.
Lecture | Topic | Resources |
---|---|---|
2019-04-10 2019-04-12 | 1) Introduction Software Product Line Engineering Lab class | slides
|
2019-04-17 2019-04-19 | 2) Development Process and Variability Modelling no lab class (Good Friday/Karfreitag) | slides |
2019-04-24 2019-04-26 2019-05-03 | Runtime Variability Lab | |
2019-05-08 2019-05-10 | Version Control Systems and Build Systems + Preprocessors Lab | |
2019-05-15 | Preprocessors | slides |
2019-05-22 2019-05-24 | Components and Frameworks | |
2019-05-29 2019-06-07 | Feature-Oriented Programming Lab | |
2019-06-05 | Aspect-Oriented Programming | slides |
2019-06-12 | Cancelled! | |
2019-06-19 2019-06-21 | AOP + Feature Interactions Lab | |
2019-06-26 | Non-Functional Properties I | slides |
2019-07-03 | Non-Functional Properties II | |
- | - | syllabus Implementation Techniques Implementation Techniques (slides) |
Search-Based Software Engineering is about learning and optimizing complex tasks that are computationally intractable for exact methods. The goal of this course is to understand the principles of meta-heuristics in optimization as well as on handling constraints and dimensionality.
Students should understand the following techniques and theories:
Students should be able to apply the above theories for solving concrete learning and optimization problems. Furthermore, they should appreciate the limits and constraints of the individual methods above.
Students should be able formalize and generalize their own solutions using the above concepts and implement them in a specified language (preferable in Python).
Students should master concepts and approaches such as
in order to tackle problems learning and optimizing huge problems, which are inherent to Digital Media. They should also be able to implement the algorithms and techniques in Python and be able to understand a proposed problem, to compare different approaches and techniques regarding applicability and accuracy, to make well-informed decisions about the preferred solution and, if necessary, to find their own solutions.
Students should develop an understanding of the current state of research in optimization and learning. With appropriate supervision, students should be able to tackle new research problems, especially in the area of search-based software engineering.
There will be 3 to 4 graded assignments over the semester and a final project.
Students have to pass those assignments to get the admission for the final exam.
To solve the intermediate assignments, groups of max. 2 students are allowed.
The final project assignment has to be solved by each student individually.
The first lab class will be on Mo. 2019-04-15 09:15 a.m. at seminar room 015 in Bauhausstraße 11.
Date | Topic | Resources |
---|---|---|
2019-04-09 | Introduction to Optimization Problems | slides |
2019-04-15 | Single-State Optimization Techniques | slides |
2019-04-22 | Easter monday | |
2019-04-29 | Single-State: Simulated Annealing, Tabu Search, and Iterated Local Search; Multi-State Optimization Techniques: Evolutionary Algorithms | slides |
2019-05-06 | Multi-State Optimization Techniques: Genetic Algorithms, Crossover, Line Recombination, Selection Operators | |
2019-05-13 | Multi-State Optimization Techniques: Genetic Algorithms, Crossover, Line Recombination, Selection Operators | - |
2019-05-20 | Representation | slides |
2019-05-27 | Exploitative Multi-State (Swarm, etc.) | |
2019-06-03 | Multi-Objective Optimization I | slides |
2019-06-10 | No lecture (Whitsun) | |
2019-06-17 | Multi-Objective Optimization II | |
2019-06-24 | Combinatorial Optimization I | slides |
2019-07-01 | Combinatorial Optimization II | |
2019-07-08 | Constraint Satisfaction Problems | slides |
Date | Topic | Resources |
---|---|---|
2019-04-16 | Organization and Python Introduction | - organization |
2019-04-23 | Single State Meta-Heuristics (problem definition) | - exercise01 |
2019-04-30 | consultation on first problem set | |
2019-05-07 | consultation | |
2019-05-14 | results of first algorithm + Multi State Optimization (problem definition) | - exercise02 |
2019-05-21 | consultation | |
2019-05-28 | results of second exercise + next problem definition | |
2019-06-04 | consultation | |
2019-06-11 | results of third exercise | |
2019-06-18 | next problem definition | - exercise04 (for Digital Engineering) |
2019-06-25 | consultation | |
2019-07-02 | project details (graded for digital engineering students) | - project_egame.pdf (updated) - notebook |
Die Vorlesung führt in die grundlegenden Konzepte der objekt-orientierten Programmierung, insbesondere in das Programmieren mit Java ein.
Hierfür werden die Grundkonzepte, wie zum Beispiel Schleifen, Bedingungen, Funktionen und Variablen, aller Programmiersprachen anhand der Java Syntax erläutert. Neben dem algorithmischen Denken wird zusätzlich das Modellieren von Problemen mittels Objekten gleich zu Beginn der Veranstaltung gelehrt. Darauf aufbauend werden weitere Konzepte der objekt-orientierten Programmierung erläutert. Hierzu zählen die verschiedenen Arten der Polymorphie (Vererbung, Interfaces, Generics, etc.) sowie das Arbeiten mit mehreren Klassen und Objekten.
Zusätzlich werden einige grundlegende Datenstrukturen, wie zum Beispiel Stack, Queue und Listen im Laufe der Veranstaltungen implementiert werden. Abschließend werden Themen wie das Schreiben von lesbarem Code, Fehlerbehandlung und das Arbeiten mit Versionierungsverwaltungssystemen vermittelt.
Themen:
Die Vorlesung Einführung in die Programmierung erfordert als Zulassungsvoraussetzung für die Klausur, dass mindestens 50% der Punkte in den bewerteten Übungsblättern erzielt werden. Abgaben zu bewerteten Übungsblättern müssen spätestens am Montag 12 Uhr (CEST;Berlin) abgegeben sein. Das genaue Datum für die jeweilige Abgabe finden Sie auf dem Übungsblatt. Hierzu Email an den Übungsleiter: andre.karge[at]uni-weimar.de.
News:
Vorlesung | Thema | Folien |
---|---|---|
15.10.2018 | Einführung Programmierung | Download |
22.10.2018 | Datentypen, Anweisungen und Methoden | Download |
29.10.2018 | Kontrollstrukturen | Download |
05.11.2018 | Objektorientierung | Download |
12.11.2018 | Arrays, Strings, Static-Schlüsselwort | Download |
19.11.2018 | JVM: Heap, Stack; Parameter, Cloning | Download |
26.11.2018 | Enumerations, Packages, Rekursion | Download |
03.12.2018 | Listen, Stacks, Queues | Download |
10.12.2018 | Polymorphie | Download |
17.12.2018 | Polymorphie | |
07.01.2019 | Probeklausur | |
14.01.2019 | Exceptions und Debugging | Download |
21.01.2019 | Clean Code | Download |
28.01.2019 | Versionskontrolle, IDEs, Build-Systeme | Download |
Übung | Thema | Übungsblatt |
---|---|---|
18.10.2018 | Einführung (Datentypen/ Zahlendarstellung) | |
25.10.2018 | Methoden und Operatoren | Übungsblatt 1 |
01.11.2018 | ||
08.11.2018 | ||
15.11.2018 | ||
22.11.2018 | ||
29.11.2018 | Übungsblatt 6 | |
06.12.2018 | Übungsblatt 7 | |
13.12.2018 | ||
20.12.2018 | Polymorphie Teil 2 | |
10.01.2019 | Probeklausur | |
17.01.2019 | Übungsblatt 9 | |
24.01.2019 | Prüfungsvorbereitung I | |
30.01.2019 | Prüfungsvorbereitung II |
Die Vorlesung Software Engineering erfordert als Zulassungsvoraussetzung für die Klausur, dass mindestens 50% der Punkte in den bewerteten Übungsblättern erzielt werden. Die Übungsblätter werden immer am gleichen Tag nach der Vorlesung ausgegeben. Man hat eine Woche Zeit diese zu bearbeiten. Abgaben zu bewerteten Übungsblättern müssen spätestens also mittwochs 23:59 Uhr (CEST;Berlin) abgegeben sein. Das genaue Datum für die jeweilige Abgabe finden Sie auf dem Übungszettel. Hierzu Email an den Übungsleiter: Nicolai Ruckel.
News: Ausfall am 16.10.2018
Vorlesung | Thema | Folien |
---|---|---|
09.10.2018 | Einführung & Software Lebenszyklus | slides |
16.10.2018 | Ausfall | slides |
23.10.2018 | Requirements Engineering | ~ |
30.10.2018 | Responsibility-Driven Design | slides |
06.11.2018 | UML Wiederholung | slides 1 & 2 |
13.11.2018 | Design Patterns | slides |
20.11.2018 | Design & Architektur | slides |
27.11.2018 | Design & Architektur 2 | |
04.12.2018 | Implementierung | slides |
11.12.2018 | Testen | slides |
18.12.2018 | Wartung und Evolution | slides |
08.01.2019 | Softwareentwicklungsprozesse | slides |
15.01.2019 | Projektmanagement + SE Evolution | slides |
22.01.2019 | Industrievorlesung |
Übung | Thema | Übungsblatt |
---|---|---|
12.10.2018 | Allgemeine Hinweise, Git, Polymorphie in Java | - |
19.10.2018 | entfällt | - |
26.10.2018 | Besprechung Übungsblatt 1, Gradle | Übungsblatt 1, Gradle-Projekt |
02.11.2018 | Java-Projekte | - |
09.11.2018 | entfällt | Übungsblatt 2 |
16.11.2018 | Besprechung Übungsblatt 2 | Übungsblatt 3 |
23.11.2018 | Besprechung Übungsblatt 3 | Übungsblatt 4 |
30.11.2018 | Besprechung Übungsblatt 4, Musterlösung | Übungsblatt 5 |
07.12.2018 | Besprechung Übungsblatt 5 | Übungsblatt 6 |
14.12.2018 | Besprechung Übungsblatt 6, Musterlösung | Übungsblatt 7, Interval.zip |
11.01.2019 | Besprechung Übungsblatt 7 | Übungsblatt 8 |
18.01.2019 | Besprechung Übungsblatt 8 | - |
25.01.2019 | Klausurvorbereitung | - |
In this interactive seminar, students will learn the current state of the art in code completion, API suggestion, auto repair, and program synthesis. The main focus will be on advanced machine-learning techniques involving natural language processing, neural nets, and genetic algorithms.
The students will read 2-4 papers, extract the key ideas, and present them to their colleagues. Depending on the papers and tasks, the students will either implement the networks or write a summary report about them.
Introduction to Deep Learning jupyter notebook
Date | Talk order | Papers |
---|---|---|
04.12.2018 | 1st |
|
04.12.2018 | 2nd |
|
04.12.2018 | 3rd |
|
11.12.2018 | 1st |
|
11.12.2018 | 2nd |
|
11.12.2018 | 3rd |
|
18.12.2018 | 1st |
|
18.12.2018 | 2nd |
|
18.12.2018 | 3rd |
|
08.01.2019 | 1st |
|
08.01.2019 | 2nd |
|
Date | Lecture |
---|---|
2018-10-09 | 01-motivation |
2018-10-23 | 02-howToPresent |
Software product lines and configurable software systems are the main driving factor for mass customization, tailor-made products, and product diversity while keeping a maintainable code base and saving development time. The lecture will teach about central elements of product line modelling and implementation.
Students should understand the following techniques and theories:
Information: Digital engineering students need to successfully complete an additional task, since they obtain 6ECTS instead of 4.5 for students from CS4DM and HCI.
News:
Lecture | Topic | Resources |
---|---|---|
04.04.2018 | 1) Introduction Software Product Line Engineering | |
06.04.2018 | Exercise: First assignment | assignment 1 example implementation |
11.04.2018 | 2) Development Process and Variability Modelling | slides |
13.04.2018 | Exercise: | |
18.04.2018 | 3) Runtime Variability | |
20.04.2018 | Exercise: | practical session |
25.04.2018 | 4) Version Control Systems and Build Systems + 5) Preprocessors | |
27.04.2018 | Exercise: | assignment 2 |
02.05.2018 | 6) Components and Frameworks | |
04.05.2018 | Exercise: | practical session |
09.05.2018 | 7) Components and Frameworks | |
11.05.2018 | Exercise: | assignment 3 |
16.05.2018 | 8) Feature-oriented Programming | slides |
18.05.2018 | Exercise: | assignment 4 template 04 |
23.05.2018 | 9) Aspect-oriented Programming | |
25.05.2018 | No exercise | |
30.05.2018 | No lecture |
|
01.06.2018 | Exercise | |
06.06.2018 | No lecture | |
08.06.2018 | No exercise | |
13.06.2018 | 10) Aspects vs. Features vs. Improved Preprocessors | slides |
15.06.2018 | Exercise | assignment 5 |
20.06.2018 | 11) Feature Interactions | slides |
22.06.2018 | Exercise | |
27.06.2018 | 12) Optimizing Non-Functional Properties | slides |
29.06.2018 | Exercise | assignment 6 task2 Foo.java SimpleAudioPlayer |
04.07.2018 | 13) ~ | ~ |
06.07.2018 | Exercise | |
11.07.2018 | 14) Refactoring + Big Picture | slides |
Search-Based Software Engineering is about optimizing complex tasks that are computationally intractable for exact methods. The goal of this course is to understand the principles of meta-heuristics in optimization, the role of exploration vs. exploitation, single-state vs. multi-state optimization methods as well as key concepts about dimensionality reduction to make optimization tractable.
Information: Students who haven already taken the course Machine Learning for Software Engineering are not eligble to take this course, since this is basically a rebrand of this course. Furtermore, digital engineering students need to successfully complete an additional task, since they obtain 6ECTS instead of 4.5 for students from CS4DM and HCI.
News:
Timeslot | Wednesday 2018-07-25 | Thursday 2018-07-26 | Monday 2018-07-30 |
---|---|---|---|
09:00 - 09:30 | reserved | ||
09:30 - 10:00 | reserved | reserved | |
10:00 - 10:30 | reserved | reserved | reserved |
10:30 - 11:00 | reserved | reserved | reserved |
11:00 - 11:30 | reserved | reserved | |
11:30 - 12:00 | reserved | reserved | |
13:00 - 13:30 | reserved | reserved | |
13:30 - 14:00 | reserved | reserved | |
14:00 - 14:30 | reserved | ||
14:30 - 15:00 | reserved |
Lecture | Topic | Resources |
---|---|---|
09.04.2018 | 1) Introduction to the lecture and optimization Problems | slides |
16.04.2018 | 2) Single-State Optimization Techniques | |
17.04.2018 | Tutorial on Python and Numpy | |
23.04.2018 | 3) Single-State: Simulated Annealing, Tabu Search, and Iterated Local Search; Multi-State Optimization Techniques: Evolutionary Algorithms | |
24.04.2018 | Exercise: Implementing Tabu Search and ILS; the Travelling Salesman Problem in Python | |
30.04.2018 | 4) Multi-State Optimization Techniques: Genetic Algorithms, Crossover, Line Recombination, Selection Operators | |
07.05.2018 | 5) Multi-State Optimization |
|
08.05.2018 | Exercise: Genetic Algorithm | |
14.05.2018 | 6) Representation of Problems (how to encode?) | slides |
15.05.2018 | Exercise: 2nd Task | |
21.05.2018 | Whitsun (no lecture) | |
22.05.2018 | Exercise |
|
28.05.2018 | No lecture |
|
29.05.2018 | Exercise | |
05.06.2018 | No lecture |
|
11.06.2018 | 6) Continued | |
12.06.2018 | 7) Elitism, Steady-State Algorithm, Memetic Algorithm, Scatter Search, Differential Evolution, Particle Swarm Optimization | |
18.06.2018 | 7) ~ | |
19.06.2018 | Exercise | |
25.06.2019 | 8) Multi-Objective Optimization | slides |
02.07.2018 | 9) Combinatorial Optimization Problems (Ant Colony Optimization, Guided Local Search, etc.) | |
09.07.2018 | 10) Constraint Satisfaction Problem | slides |
10.07.2018 | Excercie: Constraint Satisfaction Problem |
Die Vorlesung Einführung in die Programmierung erfordert als Zulassungsvoraussetzung für die Klausur, dass mindestens 50% der Punkte in den bewerteten Übungsblättern erzielt werden. Abgaben zu bewerteten Übungsblättern müssen spätestens am Montag 12 Uhr (CEST;Berlin) abgegeben sein. Das genaue Datum für die jeweilige Abgabe finden Sie auf dem Übungsblatt. Hierzu Email an den/die jeweiligeN ÜbungsleiterIn: nathalie.jolanthe.dittrich[at]uni-weimar.de bzw. hans.lienhop[at]uni-weimar.de
News:
Vorlesung | Thema | Folien |
---|---|---|
10.10.2016 | Einführung / Python | |
17.10.2016 | Java: Struktur (Klassen/Objekte) | Skript |
24.10.2016 | Java: Verhalten (Methoden/Operatoren) | |
31.10.2016 | Ausfall (Reformationstag) | |
07.11.2016 | Objektinstantiierung, Methodenaufrufe, Kontrollstrukturen | |
14.11.2016 | Schleifen und Arrays | |
21.11.2016 | Heap & Stack in Java, Referenzen | |
28.11.2016 | Packages, Ennumerations, Static | Skript |
05.12.2016 | Style & Code Guidelines, Kommentare | Skript |
12.12.2016 | Ausfall wegen Krankheit | |
02.01.2017 | Listen, Stacks, etc. | Skript |
09.01.2017 | Fehler und Fehlerbehandlung | |
16.01.2017 | Polymorphie | Skript |
23.01.2017 | Versionsverwaltung, IDEs, Build Tools | Skript |
Übung | Thema | Übungsblatt | Bewertet | Tutor |
---|---|---|---|---|
13.10.2016 | Python Einführung | Nur Skript | Nein | Hans Lienhop |
20.10.2016 | Struktur / Zahlendarstellung | Blatt1 | Ja | Nathalie Dittrich |
27.10.2016 | Methoden und Operatoren | Blatt2 | Ja | Hans Lienhop |
03.11.2016 | Wiederholung | Kein Blatt | Nein | Nathalie Dittrich |
10.11.2016 | Objekte und Kontrollstrukturen | Ja | Hans Lienhop | |
17.11.2016 | Arrays und Schleifen | Blatt4 | Ja | Nathalie Dittrich |
24.11.2016 | Wiederholung / Übung | Kein Blatt | Nein | Hans Lienhop |
01.12.2016 | Wiederholung / Übung | Kein Blatt | Nein | Nathalie Dittrich |
08.12.2016 | Wiederholung / Übung | Kein Blatt | Nein | Hans Lienhop |
15.12.2016 | Listen, Stacks, Queues | kein Blatt | Nein | Nathalie Dittrich |
05.01.2017 | Listen, Stacks, etc. | Blatt5 | Ja | Nathalie Dittrich |
12.01.2017 | Testing | Kein Blatt | Nein | Hans Lienhop |
19.01.2017 | Generics & Vererbung | Blatt6 | Ja | Nathalie Dittrich |
26.01.2017 | Interfaces | Kein Blatt | Nein | Hans Lienhop |
Die Studierenden werden im Projekt Methoden des maschinellen Lernens auf Probleme im Bereich des Software Engineerings anwenden. Dabei werden sowohl neuartige Techniken, wie z.B. Deep Learning, als auch klassische Methoden, wie random forests, logistic regression, etc. eingesetzt, um aktuelle Probleme im Bereich der Softwareentwicklung und Wartung zu beheben.
Ausgewählte Problemfelder:
- Automatisches Generieren von Tests
- Automatisches Fixen von Bugs
- Vorhersage von Merge-Konflikten in Versionsverwaltungssystemen
- Parametertuning von Robotern und Softwaresystemen
Ablauf:
- Problemfeld wird festgelegt
- Einarbeitung in das Problemfeld mittels Literaturstudie
- Erarbeitung eines Konzeptes zum Lösen der Probleme
- Implementierung des Konzeptes
- Evaluierung des Konzeptes
- Schriftliche Ausarbeitung des Projektes
Studierende arbeiten an allen Phasen des Projektes, jedoch wird es Phasenverantwortliche geben, die auch eine Abschlusspräsentation für die jeweilige Phase.
Vermittelte Kompetenzen:
- Softskills (Präsentieren, Diskutieren, Teamwork, Schreiben eines wissenschaftlichen Artikels)
- Vertieftes Wissen im Bereich des Software Engineerings
- Vertieftes Wissens und Anwendung im Bereich des maschinellen Lernens
Machine Learning for Software Engineering is about learning and optimizing complex tasks that are computationally intractable for exact methods. The goal of this course is to understand the principles of meta-heuristics in optimization as well as key concepts of learning based on neural nets.
News:
Lecture | Topic | Resources |
---|---|---|
04.04.2017 | 1) Introduction to the lecture and optimization Problems | Script |
10.04.2017 | Tutorial on Python and Numpy | Notebook |
11.04.2017 | 2) Single-State Optimization Techniques | Notebook from lecture |
18.04.2017 | 3) Single-State: Simulated Annealing, Tabu Search, and Iterated Local Search; Multi-State Optimization Techniques: Evolutionary Algorithms | |
24.04.2017 | Exercise: Implementing Tabu Search and ILS; the Travelling Salesman Problem in Python | |
25.04.2017 | 4) Multi-State Optimization Techniques: Genetic Algorithms, Crossover, Line Recombination, Selection Operators | |
02.05.2017 | 5) Elitism, Steady-State Algorithm, Memetic Algorithm, Scatter Search, Differential Evolution, Particle Swarm Optimization | |
08.05.2017 | Exercise: Application to Software Engineering Problems (read the papers as preparation to the exercise) + Representation of Problems (how to encode?) | Paper1: Optimising Existing Software with Genetic Programming Paper2: Automated Software Transplantation |
09.05.2017 | 6) Multi-Objective Optimization | Script |
15.05.2017 | Exercise: Application to Software Engineering Problems (read the papers as preparation to the exercise) + Representation of Problems (how to encode?) | Script |
16.05.2017 | 7) Combinatorial Optimization Problems (Ant Colony Optimization, Guided Local Search, etc.) | Script |
22.05.2017 | No exercise |
|
23.05.2017 | 8) Ant Colony Optimization, Constraint Satisfaction Problem |
|
29.05.2017 | Exercise: Project Introduction | Script |
30.05.2017 | 9) Constraint Satisfaction Problem | |
05.06.2017 | No exercise:Whitsun | |
06.06.2017 | 10) Canceled! | |
12.06.2017 | Exercise: Constraint Satisfaction Problem examples | |
13.06.2017 | 11) Dimensionality Reduction: PCA | |
19.06.2017 | Exercise: Canceled! | |
20.06.2017 | 12) Dimensionality Reduction: PCA continued + Feature Selection | See above |
26.06.2017 | Exercise: Tutorial on Keras | Notebook |
27.06.2017 | 13) Introduction to Neuronal Networks | |
03.07.2017 | Exercise:Tutorial on TensorFlow | Notebook |
04.07.2017 | 14) Recap + Architectures of Neuronal Networks | Script |
11.07.2017 | 15) Repetition + Summary of the Course |
Note: We will have our first milestone meeting at room 003 at the Berkaer Straße 1.
The seminar teaches theoretical and practical knowledge about modern software technologies, which are used in nearly all software project nowadays. The topics will follow a running example, in which all technologies can be tested and applied. The students will be assigned to a technology for which they will give a presentation about the key concepts and usage scenarios of the respective technology. A tutorial follows each presentation, in which the presenter teaches the other students in actually applying the technique.
The used technologies differ depending on the number of students and include the following:
This is all framed in a real-world Project, in which we will digitize the booking process of the Ferienpass-Weimar.de.
Requirements are a successfully completed Software Engineering Course.
Bitte alle Teilnehmer per Email mit Topic + GitHub Account bei mir melden. Vielen Dank!
Wichtige Links:
GitHub repo: https://github.com/digital-bauhaus
Slack Channel: https://digital-bauhaus.slack.com/
Date | Description |
---|---|
10.10.2017 | Introduction & Topics >Folien< |
17.10.2017 | Customer Meeting & Requirements Elicitation: Ferienpass-Weimar.de |
24.10.2017 | Architecture and Topics |
07.11.2017 | How to prepare and give a presentation? |
Die Vorlesung Einführung in die Programmierung erfordert als Zulassungsvoraussetzung für die Klausur, dass mindestens 50% der Punkte in den bewerteten Übungsblättern erzielt werden. Abgaben zu bewerteten Übungsblättern müssen spätestens am Montag 12 Uhr (CEST;Berlin) abgegeben sein. Das genaue Datum für die jeweilige Abgabe finden Sie auf dem Übungsblatt. Hierzu Email an den/die jeweiligeN ÜbungsleiterIn: nathalie.jolanthe.dittrich[at]uni-weimar.de.
News:
Vorlesung | Thema | Folien |
---|---|---|
16.10.2017 | Einführung | |
23.10.2017 | Datentypen, Methoden, Zuweisungen, Operatoren | Skript |
30.10.2017 | Kontrollstrukturen: If, Switch, Schleifen, Scope | |
06.11.2017 | OOP: Klassen, Objekte, Instantiierung, Methodenaufrufe | |
13.11.2017 | Arrays, Static-Schlüsselwort, String | |
20.11.2017 | Heap & Stack in Java, Referenzen, Cloning | |
27.11.2017 | Packages, Enumerations, Recursion | Skript |
04.12.2017 | Listen | Skript |
11.12.2017 | Listen, Stacks, etc. | ~ |
18.12.2017 | Polymorphie | |
08.01.2018 | Probeklausur | -- |
15.01.2018 | Ausfall | -- |
22.01.2018 | Fehler und Fehlerbehandlung | Skript |
29.01.2018 | Style & Code Guidelines, Kommentare | Skript |
Übung | Thema | Übungsblatt | Bewertet | |
---|---|---|---|---|
19.10.2017 | Datentypen/ Zahlendarstellung | Blatt1 | Ja | |
26.10.2017 | Methoden und Operatoren | Blatt 2 | Ja | |
02.11.2017 | Wiederholung | Blatt 3 | Ja | |
09.11.2017 | Objekte und Kontrollstrukturen | LösungAusÜbung | Nein | |
16.11.2017 | Arrays und Schleifen | Blatt4 | Ja | |
23.11.2017 | Wiederholung / Übung | Blatt5 | Ja | |
30.11.2017 | Rekursion, Klonen, etc. | - | Nein | |
07.12.2017 | Wiederholung / Übung | - | Nein | |
14.12.2017 | Listen, Stacks, Queues | Blatt6 | Ja | |
21.12.2017 | Generics & Vererbung | - | Nein | |
04.01.2018 |
| - | Nein | |
11.01.2018 | Wiederholung / Übung | - | Nein | |
18.01.2018 | Probeklausur Lösung | Ja | ||
25.01.2018 | Testing | - | Nein |
Update: Leider muss der Industrievortrag auf Januar verschoben werden. Siehe geänderten Lehrplan.
Die Vorlesung Software Engineering erfordert als Zulassungsvoraussetzung für die Klausur, dass mindestens 50% der Punkte in den bewerteten Übungsblättern erzielt werden. Die Übungsblätter werden immer am gleichen Tag nach der Vorlesung ausgegeben. Man hat eine Woche Zeit diese zu bearbeiten. Abgaben zu bewerteten Übungsblättern müssen spätestens also mittwochs 23:59 Uhr (CEST;Berlin) abgegeben sein. Das genaue Datum für die jeweilige Abgabe finden Sie auf dem Übungszettel. Hierzu Email an den Übungsleiter: Philipp Seltmann.
Vorlesung | Thema | Folien |
---|---|---|
10.10.2017 | Einführung / Softwarelebenszyklus | Download |
17.10.2017 | Anforderungsanalyse (Requirements Engineering) | Download |
24.10.2017 | Responsibility-Driven Design | Download |
31.10.2017 | Ausfall: Reformationstag | |
07.11.2017 | UML | |
14.11.2017 | Design Patterns | Download |
21.11.2017 | Design & Architektur | Download |
28.11.2017 | Implementierung | Download |
05.12.2017 | Implementierung | ~ |
12.12.2017 | Testen | Download |
19.12.2017 | Testen | ~ |
09.01.2018 | Wartung und Evolution + Softwareentwicklungsprozesse | Download |
16.01.2018 | Ausfall | - |
23.01.2018 | Softwareentwicklungsprozesse + Projektmanagement | |
30.01.2018 | Gastvorlesung: Jonas Hecht von codecentric: Real-Life Software Engineering | - |
Übung | Thema | Übungsblatt | Bewertet |
---|---|---|---|
20.10.2017 | Versionsverwaltung | Req. Eng. | Ja |
27.10.2017 | Requirements Engineering | Resp.Design | Ja |
03.11.2017 | Responsibility-Driven Design | entfällt | Nein |
10.11.2017 | UML | UML | Ja |
17.11.2017 | Design Patterns | Patterns | Ja |
24.11.2017 | Architektur | Architektur | Ja |
01.12.2017 | Implementierung | Implementierung | Ja |
08.12.2017 | Testen | - | Nein |
15.12.2017 | Testen & Debugging | Testen LinkedList Interval | Ja |
12.01.2018 | SW Qualität & Wartung | TBA | Ja |
19.01.2018 | SW Entwicklungsprozesse | TBA | Ja |
26.01.2017 | Projektmanagement+Klausurvorbereitung | Nein | Nein |
Hinweis: Erste Übung im neuen Jahr ist am 13.1.2017.
Die Vorlesung Software Engineering erfordert als Zulassungsvoraussetzung für die Klausur, dass mindestens 50% der Punkte in den bewerteten Übungsblättern erzielt werden. Die Übungsblätter werden immer am gleichen Tag nach der Vorlesung ausgegeben. Man hat eine Woche Zeit diese zu bearbeiten. Abgaben zu bewerteten Übungsblättern müssen spätestens also mittwochs 23:59 Uhr (CEST;Berlin) abgegeben sein. Das genaue Datum für die jeweilige Abgabe finden Sie auf dem Übungszettel. Hierzu Email an den Übungsleiter: Philipp Seltmann.
Vorlesung | Thema | Folien |
---|---|---|
13.10.2016 | Einführung / Softwarelebenszyklus | Download |
20.10.2016 | Anforderungsanalyse (Requirements Engineering) | Download |
27.10.2016 | Responsibility-Driven Design | Download |
03.11.2016 | UML | |
10.11.2016 | Design Patterns | Download |
17.11.2016 | Design & Architektur | Download |
24.11.2016 | Implementierung | Download |
01.12.2016 | Testen | Download |
08.12.2016 | Gastvorlesung: Prof. Dr.-Ing. Thomas Leich (FH Harz, METOP AG): Global SE + SE in Praxis | |
15.12.2016 | Ausfall wegen Krankheit | |
05.01.2017 | Wartung und Evolution | Download |
12.01.2017 | Softwareentwicklungsprozesse | Download |
19.01.2017 | Projektmanagement | Download |
26.01.2017 | Gastvorlesung: Jonas Hecht von codecentric: Real-Life Software Engineering --Bewertung aktueller Ansätze des Software Engineerings anhand praktischer Erfahrungen eines IT-Consultants |
Übung | Thema | Übungsblatt | Bewertet |
---|---|---|---|
21.10.2016 | Java vs. C++; Versionsverwaltungssysteme | Ja | |
28.10.2016 | Responsibility-Driven Design | Ja | |
04.11.2016 | UML | Ja | |
11.11.2016 | Design Patterns | Blatt4 (engl.) | Ja |
18.11.2016 | Architektur | Ja | |
25.11.2016 | Implementierung (Abgabe erst am 8.12.) | Ja | |
02.12.2016 | Testen | Ja | |
09.12.2016 | Testen & Debugging | Folien | |
13.01.2017 | SW Qualität & Wartung | Ja | |
20.01.2017 | SW Entwicklungsprozesse | Ja | |
27.01.2017 | Projektmanagement | Ja | |
03.02.2017 | Klausurvorbereitung | Folien | Nein |
Wechsel zwischen Farb- und Schwarz-Weiß-Ansicht
Kontrastansicht aktiv
Kontrastansicht nicht aktiv
Wechsel der Hintergrundfarbe von Weiß zu Schwarz
Darkmode aktiv
Darkmode nicht aktiv
Fokussierte Elemente werden schwarz hinterlegt und so visuell hervorgehoben.
Feedback aktiv
Feedback nicht aktiv
Beendet Animationen auf der Website
Animationen aktiv
Animationen nicht aktiv