Teaching

News

  • Exam: The assigned appointments for the oral exam can be found here.
  • Lecture on 12th of June cancelled due to illness.
  • First lab class starts on Friday, 12 April 2019 from 11:00 a.m. to 12:30 a.m. at HK7 (Karl-Haußknecht-Str. 7).
  • There is an additional programming tutorial (independent from this course!) for those who are struggling with or want to update their skills in Java; Meetings start on 12 April, 3:15 p.m. for beginners and 5:00 p.m. for advanced users at the LiNT pool at B11 (Bauhausstr. 11).
  • First lecture starts on Wednesday, 10 April 2019 from 9:15 a.m. to 10:45 a.m. at HK7 (Karl-Haußknecht-Str. 7).

Course Description

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:

  • Configuration management and variability modeling
  • Classic and modern programming techniques, such as preprocessors, version control systems, components, frameworks, aspect-oriented programming, and feature-oriented programming
  • Feature interactions and virtual separation of concerns

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

  • The exponential complexity of variability spaces
  • Modeling and implementation of program families, product lines, and domain-specific generators
  • Basic concepts of software engineering (e.g., cohesion, scattering, tangling, information hiding)
  • Classic and modern concepts, such as preprocessors, plug-in systems, feature modules, collaborations, aspects, and roles
  • Critical discussion about pros and cons of the above techniques, and concepts
  • Feature interactions, non-functional properties, product line analysis

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.

Assignments

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. 

Literature

  • Feature-oriented Software Product Lines by Sven Apel, Don Batory, and Christian Kästner; Springer, 2013. Available at the university library (see link).
  • Krysztof Czarnecki, Ulrich Eisenecker : Generative Programming. Methods, Tools and Applications. Addison Wesley 2000
  • Further interesting reading includes:

    • Clements, L. Northrop: Software Product Lines: Practices and Patterns. Addison- Wesley, 2002
    • K. Pohl, G. Böckle, F. van der Linden: Software Product Line Engineering: Foundations, Principles and Techniques. Springer 2005. 

 Schedule

 

LectureTopicResources

2019-04-10

2019-04-12

1) Introduction Software Product Line Engineering

Lab class 

organizational
slides 

slides
assignment 1
base implementation

 

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

slides

assignment 2
slides
slides

2019-05-08

2019-05-10

Version Control Systems and Build Systems + Preprocessors

Lab

slides
slides

assignment 3
slides

2019-05-15Preprocessorsslides
2019-05-22

2019-05-24

Components and Frameworks

Lab

slides

slides
assignment 4

2019-05-29

2019-06-07

Feature-Oriented Programming

Lab

slides

slides
assignment 5

2019-06-05Aspect-Oriented Programmingslides
2019-06-12Cancelled!

2019-06-19

2019-06-21

AOP + Feature Interactions

Lab

slides

slides
assignment 6
assignment 6 (supplementary material)

2019-06-26Non-Functional Properties Islides

2019-07-03

Non-Functional Properties II

slides (solution assignment 6)

--syllabus
Implementation Techniques
Implementation Techniques (slides)

News

  • Exam: 2019-07-22 09:00 in Marienstraße 13c Lecture Hall D
  • 1 week added for the submission of the mini project (new submission date: 2019-08-07 23:59)
  • 1 week added for the submission of ex01 (new submission date: 2019-05-13 23:59)
  • We swapped lecture and lab class dates - the lecture is now on monday 09:15a.m. at SR015 B11 (Seminar Room 015 Bauhausstraße 11) and the lab class on tuesday 11:00a.m. at SR014 B11 (Seminar Room 014 Bauhausstraße 11)
  • First lecture starts: 2019-04-09 11:00a.m. at SR014 B11 (Seminar Room 014 Bauhausstraße 11)
  • Firs lab class starts: 2019-04-15 09:15a.m. at SR015 B11 (Seminar Room 015 Bauhausstraße 11)

Course Information

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:

  • Problem space exploration and search-based optimization
  • Meta-heuristics for single and multiple objective optimization
  • Relationship between biological learning and optimization with algorithms
  • Dimensionality-reduction techniques
  • Constraint resolution

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

  • Simulated annealing
  • Swarm optimization
  • Ant colonization
  • Evolutionary algorithms
  • Dimensionality Reduction (PCA + Feature Subset Selection)
  • Constraint Satisfaction Problem Solving

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.

Assignments

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.

Literature

  • Handbook of Metaheuristics, Fred W. Glover, Gary A. Kochenberger, Springer Science & Business Media, 2006.
  • Machine Learning, Tom Mitchell, McGraw-Hill Education, 1997.
  • Essentials of Metaheuristics, Sean Luke, 2013.
  • A Field Guide to Genetic Programming, Riccardo Poli, William B. Langdon, Nicholas Freitag McPhee, Lulu Pr, 2008.
  • Make Your Own Neural Network, Rashid, Tariq, CreateSpace Independent Publishing Platform, 2016.
  • http://neuralnetworksanddeeplearning.com/index.html (online book)

Lecture Schedule

DateTopicResources
2019-04-09Introduction to Optimization Problemsslides
2019-04-15Single-State Optimization Techniquesslides
2019-04-22Easter monday
2019-04-29 Single-State: Simulated Annealing, Tabu Search, and Iterated Local Search; Multi-State Optimization Techniques: Evolutionary Algorithmsslides
2019-05-06Multi-State Optimization Techniques: Genetic Algorithms, Crossover, Line Recombination, Selection Operators

slides

notebook

2019-05-13Multi-State Optimization Techniques: Genetic Algorithms, Crossover, Line Recombination, Selection Operators-
2019-05-20Representationslides
2019-05-27Exploitative Multi-State (Swarm, etc.)

slides

notebook

2019-06-03Multi-Objective Optimization Islides
2019-06-10No lecture (Whitsun)
2019-06-17Multi-Objective Optimization II
2019-06-24Combinatorial Optimization Islides
2019-07-01Combinatorial Optimization II
2019-07-08Constraint Satisfaction Problemsslides

 

 

Lab Class Schedule

DateTopicResources
2019-04-16Organization and Python Introduction

- organization
- python_tutorial.html
- python_tutorial.ipynb
- introduction task

2019-04-23Single State Meta-Heuristics (problem definition)

- exercise01
- problem_definition.html
- problem_definition.zip
- city100.txt

2019-04-30consultation on first problem set
2019-05-07consultation
2019-05-14results of first algorithm + Multi State Optimization (problem definition)

- exercise02
- problem_definition.html
- datasets.zip
- run_genetic_alg.py

2019-05-21consultation
2019-05-28results of second exercise + next problem definition

- exercise03
- framework.zip

2019-06-04consultation
2019-06-11results of third exercise
2019-06-18next problem definition- exercise04 (for Digital Engineering)
2019-06-25consultation
2019-07-02project details (graded for digital engineering students)- project_egame.pdf (updated)
- notebook

 

 

 

News

  • First lecture starts on Monday 8th, 2019.

Course Description

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:

  •  JUnit in combination with Selenium
  • Docker
  • Continuous Integration & Delivery with Ansible
  • Continuous Integration & Delivery with Jenkins / TravisCI
  • MicroServices
  • Code-Analyse with Sonar
  • Dependencies Management
  • Ticketing with Jira / Github issues
  • Logging
  • Version control systems (git /rebase / etc)
  • Sprint and Spring Boot

    Assignments

    Assingments will be determined in the second lecture.

     Schedule

     

    LectureTopicResources

    2019-04-08

    Introduction

    slides
    2019-04-15

    How to give presentations

    slides
    2019-05-20Gradle, Domain-Driven Design, Docker
    2019-05-27Microservices with Flask + Spring Boot, RestSpring
    2019-06-03Travis, Testcontainer, Selenium
    2019-06-10Pfingsten (keine Vorlesung)
    2019-06-17Ansible, Tutorial: Gradle, Docker
    2019-06-24Tutorial: REST, Microservice Flask + SpringBoot
    2019-07-01Tutorial: Selenium, Travis, Testcontainer, Ansible

    Alte Lehrveranstaltungen

    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:

    • Datentypen, Schleifen, Verzweigungen
    • Klassen, Methoden, Objekte, Aufzählung
    • Stack, Queue, Liste, Array
    • Interface, Vererbung, Generics
    • Lesbarer Code, Kommentare, Fehlerbehandlung, Versionierung

    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:

    • Abgabe von Beleg 08 verschoben auf den 07.01.2019
    • Download unseres Adventures >hier<
    • Erste Vorlesung findet am 15.10.2018 (11-12:30 Uhr) statt!

     

     

    VorlesungThemaFolien
    15.10.2018Einführung ProgrammierungDownload
    22.10.2018Datentypen, Anweisungen und MethodenDownload
    29.10.2018KontrollstrukturenDownload
    05.11.2018ObjektorientierungDownload
    12.11.2018Arrays, Strings, Static-SchlüsselwortDownload
    19.11.2018JVM: Heap, Stack; Parameter, CloningDownload
    26.11.2018Enumerations, Packages, RekursionDownload
    03.12.2018Listen, Stacks, QueuesDownload
    10.12.2018PolymorphieDownload
    17.12.2018Polymorphie
    07.01.2019Probeklausur
    14.01.2019Exceptions und DebuggingDownload
    21.01.2019Clean CodeDownload
    28.01.2019Versionskontrolle, IDEs, Build-SystemeDownload

     

     

    ÜbungThemaÜbungsblatt
    18.10.2018Einführung (Datentypen/ Zahlendarstellung)
    25.10.2018Methoden und OperatorenÜbungsblatt 1
    01.11.2018

    Verzweigungen und Schleifen

    Pyramide.java

    Übungsblatt 2

    Musterlösung

    08.11.2018

    Klassen und Objekte

    Übungsblatt 3

    Musterlösung

    15.11.2018

    Static & Arrays

    Vorgabe.zip

    uebungsBeispiele.zip

    Übungsblatt 4

    Musterlösung

    22.11.2018

    Referenzen & Copy

    ex05_klassen.zip

    Übungsblatt 5

    material_ex05.zip

    Musterlösung

    29.11.2018

    Packages & Recursion

    uebung_beispiele_06.zip

    Übungsblatt 6
    06.12.2018

    Listen & Stacks & Queue

    uebung_beispiele_07.zip

    Übungsblatt 7
    13.12.2018

    Polymorphie Teil 1

    material.zip

    Übungsblatt 8

    material_ex08.zip

    20.12.2018Polymorphie Teil 2
    10.01.2019Probeklausur
    17.01.2019

    Exceptions

    exceptions.zip

    Übungsblatt 9
    24.01.2019Prüfungsvorbereitung I
    30.01.2019Prü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

    VorlesungThemaFolien
    09.10.2018Einführung & Software Lebenszyklusslides
    16.10.2018Ausfallslides
    23.10.2018Requirements Engineering~
    30.10.2018Responsibility-Driven Designslides
    06.11.2018UML Wiederholungslides 1 & 2
    13.11.2018Design Patternsslides
    20.11.2018Design & Architekturslides
    27.11.2018Design & Architektur 2
    04.12.2018Implementierungslides
    11.12.2018Testenslides
    18.12.2018Wartung und Evolutionslides
    08.01.2019Softwareentwicklungsprozesseslides
    15.01.2019Projektmanagement + SE Evolutionslides
    22.01.2019Industrievorlesung

     

     

    ÜbungThemaÜbungsblatt
    12.10.2018Allgemeine Hinweise, Git, Polymorphie in Java-
    19.10.2018entfällt-
    26.10.2018Besprechung Übungsblatt 1, GradleÜbungsblatt 1, Gradle-Projekt
    02.11.2018Java-Projekte-
    09.11.2018entfälltÜbungsblatt 2
    16.11.2018Besprechung Übungsblatt 2
    Übungsblatt 3
    23.11.2018Besprechung Übungsblatt 3
    Übungsblatt 4
    30.11.2018Besprechung Übungsblatt 4, MusterlösungÜbungsblatt 5
    07.12.2018Besprechung Übungsblatt 5Übungsblatt 6
    14.12.2018Besprechung Übungsblatt 6, MusterlösungÜbungsblatt 7, Interval.zip
    11.01.2019Besprechung Übungsblatt 7Übungsblatt 8
    18.01.2019Besprechung Übungsblatt 8-
    25.01.2019Klausurvorbereitung-

     

     

     

    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

    Talk Dates

    DateTalk orderPapers
    04.12.20181st
    • On End-to-End Program Generation from User Intention by Deep Neural Networks
    • A Syntactic Neural Model for General-Purpose Code Generation
    04.12.20182nd
    • Program Synthesis from Natural Language Using Recurrent Neural Networks
    • Neural GPUs Learn Algorithms
    04.12.20183rd
    • Neural Machine Translation By Jointly Learning To Align And Translate
    • Summarizing Source Code using a Neural Attention Model
    11.12.20181st
    • Attention Is All You Need
    • A Neural Attention Model for Abstractive Sentence Summarization
    11.12.20182nd
    • Pointer Networks
    • Code Completion with Neural Attention and Pointer Networks
    • Learning Python Code Suggestion with a Sparse Pointer Network
    11.12.20183rd
      • Incorporating Copying Mechanism in Sequence-to-Sequence Learning
      • Joint Copying and Restricted Generation for Paraphrase
      • Incorporating Copying Mechanism in Image Captioning for Learning Novel Objects
      18.12.20181st
      • Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks
      • A deep tree-based model for software defect prediction
      18.12.20182nd
      • Learning To Represent Programs With Graphs
      • What Happens Next? Future Subevent Prediction Using Contextual Hierarchical LSTM
      18.12.20183rd
      • Convolutional Neural Networks over Tree Structures for Programming Language Processing
      • A Convolutional Attention Network for Extreme Summarization of Source Code
      08.01.20191st 
      • Software Defect Prediction via Convolutional Neural Network
      • Deep Android Malware Detection
      08.01.20192nd
      • Tree-To-Tree Neural Networks For Program Translation
      • Neural Program Synthesis from Diverse Demonstration Videos

       Slides

      DateLecture
      2018-10-0901-motivation
      2018-10-2302-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:

      • Configuration management and variability modeling
      • Classic and modern programming techniques, such as preprocessors, version control systems, components, frameworks, aspect-oriented programming, and feature-oriented programming
      • Feature interactions and virtual separation of concerns

      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:

      • Oral exams will be at: 27th of July 2018. Please write an eMail to max.weber[at]uni-weimar.de to register for the oral exam.
      • The first lecture starts at Wednesday, 4th of April, 9:15am at HK7 in Karl-Hausknecht Street.
      • The first exercise starts at Friday, 6th of April, 11:15am at HK7 in Karl-Hausknecht Street.
      LectureTopicResources
      04.04.20181) Introduction Software Product Line Engineering

      slides

      organizational

      06.04.2018Exercise: First assignment

      assignment 1

      organizational

      example implementation

      11.04.20182) Development Process and Variability Modellingslides
      13.04.2018Exercise: 

      slides

      18.04.2018

      3) Runtime Variability 

      slides

      20.04.2018Exercise: 

      practical session

      25.04.20184) Version Control Systems and Build Systems + 5) Preprocessors

      slides

      slides2

      27.04.2018Exercise:assignment 2
      02.05.20186) Components and Frameworks

      slides

      04.05.2018Exercise: 

      practical session

      09.05.20187) Components and Frameworks
      11.05.2018Exercise: assignment 3
      16.05.2018

      8) Feature-oriented Programming

      slides
      18.05.2018Exercise:

      assignment 4

      template 04

      23.05.20189) Aspect-oriented Programming

      slides

      25.05.2018No exercise
      30.05.2018No lecture

       

      01.06.2018Exercise
      06.06.2018No lecture
      08.06.2018No exercise
      13.06.201810) Aspects vs. Features vs. Improved Preprocessors slides
      15.06.2018Exerciseassignment 5
      20.06.201811) Feature Interactionsslides
      22.06.2018Exercise
      27.06.201812) Optimizing Non-Functional Propertiesslides
      29.06.2018Exercise

      assignment 6

      task2

      Foo.java

      SimpleAudioPlayer

      04.07.201813) ~

      ~

      06.07.2018Exercise
      11.07.201814) 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:

      • Dates are out for the oral exams: 25.07., 26.07., 30.07. 2018. Please write an eMail to andre.karge[at]uni-weimar.de to register for an oral exam! State at least 2 days with your preferrence.
      • TimeslotWednesday 2018-07-25Thursday 2018-07-26Monday 2018-07-30
        09:00 - 09:30reserved
        09:30 - 10:00reservedreserved
        10:00 - 10:30reservedreservedreserved
        10:30 - 11:00reservedreservedreserved
        11:00 - 11:30reservedreserved
        11:30 - 12:00reservedreserved
        13:00 - 13:30reservedreserved
        13:30 - 14:00reservedreserved
        14:00 - 14:30reserved
        14:30 - 15:00reserved

      • No lecture on Monday May 28th due to illness!
      • The first lecture starts at Monday, 9th of April, 9:15am at SR015 in B11.
      • The first exercise starts with a Python tutorial at Tuesday, 17th of April, 9:15am at SR015 in B11.
      LectureTopicResources
      09.04.20181) Introduction to the lecture and optimization Problemsslides
      16.04.20182) Single-State Optimization Techniques

      slides

      notebook

      17.04.2018Tutorial on Python and Numpy

      exercise organization

      python tutorial

      tutorial tasks

      23.04.2018

      3) Single-State: Simulated Annealing, Tabu Search, and Iterated Local Search; Multi-State Optimization Techniques: Evolutionary Algorithms

      slides

      notebook

      24.04.2018Exercise: Implementing Tabu Search and ILS; the Travelling Salesman Problem in Python

      exercise01

      notebook

      city100.txt

      30.04.20184) Multi-State Optimization Techniques: Genetic Algorithms, Crossover, Line Recombination, Selection Operators

      slides

      07.05.20185) Multi-State Optimization

       

      08.05.2018Exercise: Genetic Algorithm

      notebook

      exercise02

      datasets

      framework

      14.05.20186) Representation of Problems (how to encode?)slides
      15.05.2018Exercise: 2nd Task
      21.05.2018

      Whitsun (no lecture)

      22.05.2018Exercise 

       

      28.05.2018No lecture

       

      29.05.2018Exercise
      05.06.2018No lecture 

       

      11.06.20186) Continued
      12.06.20187) Elitism, Steady-State Algorithm, Memetic Algorithm, Scatter Search, Differential Evolution, Particle Swarm Optimization 

      slides

      notebook

      18.06.20187) ~
      19.06.2018Exercise

      exercise03

      notebook

      repository

      25.06.20198) Multi-Objective Optimizationslides
      02.07.20189) Combinatorial Optimization Problems (Ant Colony Optimization, Guided Local Search, etc.)

      slides

      09.07.201810) Constraint Satisfaction Problem slides
      10.07.2018Excercie: 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:

      • Der Abgabetermin für das letzte Übungsblatt ist der 31.01.2017. Das Blatt wurde entsprechend aktualisiert.
      • Erste Vorlesung im neuen Jahr findet am 2.1.2017 statt. Ich wünsche allen einen guten Rutsch ins neue Jahr!
      • Hinweis: Aufgabe 3 Blatt 2 hat sich geändert.
      • Hinweis zum Blatt 1: Geben Sie bei gültigen Objekten einfach eine gültige Belegung aller Attribute Ihrer Klasse an und bei ungültigen Objekten, eine entsprechend falsche Belegung bzw. falsche Attribute.
      • Bitten gründen Sie 2er Teams und schicken die Namen der Mitglieder und deren Matrikelnummern per Email an hans.lienhop[at]uni-weimar.de. Anschließend werden Sie einer Teamnummer (unter der Sie Ihre Abgaben einreichen können) sowie der Übungsgruppe (die Ihren Übungstermin bestimmt) zugewiesen. Falls jemand kein Teampartner findet, dann wird in der ersten Übung ein entsprechendes Team gebildet. Wichtig: Geben Sie bereits bei der Teammeldung Ihre Präferenz für die Übungszeit mit an. Wir können zwar nicht garantieren, dass alle Teams Ihre Wunschzeiten bekommen, da wir ausgeglichene Gruppen erreichen wollen, jedoch werden wir den Wunsch bei der Einteilung mit berücksichtigen.
      VorlesungThemaFolien
      10.10.2016Einführung / Python

      Skript

      Python Notebook

      17.10.2016Java: Struktur (Klassen/Objekte)Skript
      24.10.2016Java: Verhalten (Methoden/Operatoren)

      Skript

      Test.java

      31.10.2016Ausfall (Reformationstag)
      07.11.2016Objektinstantiierung, Methodenaufrufe, Kontrollstrukturen

      Skript

      Code

      14.11.2016Schleifen und Arrays

      Skript

      Code

      21.11.2016Heap & Stack in Java, Referenzen

      Skript

      Code

      28.11.2016Packages, Ennumerations, StaticSkript
      05.12.2016Style & Code Guidelines, KommentareSkript
      12.12.2016Ausfall wegen Krankheit
      02.01.2017Listen, Stacks, etc.Skript
      09.01.2017Fehler und Fehlerbehandlung

      Skript

      Rätsel

      16.01.2017PolymorphieSkript
      23.01.2017Versionsverwaltung, IDEs, Build ToolsSkript

       

       

      ÜbungThemaÜbungsblattBewertetTutor
      13.10.2016Python EinführungNur SkriptNeinHans Lienhop
      20.10.2016Struktur / ZahlendarstellungBlatt1JaNathalie Dittrich
      27.10.2016Methoden und OperatorenBlatt2JaHans Lienhop
      03.11.2016WiederholungKein BlattNeinNathalie Dittrich
      10.11.2016Objekte und Kontrollstrukturen

      Blatt3

      Folien

      JaHans Lienhop
      17.11.2016Arrays und SchleifenBlatt4JaNathalie Dittrich
      24.11.2016Wiederholung / ÜbungKein BlattNeinHans Lienhop
      01.12.2016Wiederholung / ÜbungKein BlattNeinNathalie Dittrich
      08.12.2016Wiederholung / ÜbungKein BlattNeinHans Lienhop
      15.12.2016Listen, Stacks, Queueskein BlattNeinNathalie Dittrich
      05.01.2017Listen, Stacks, etc.Blatt5JaNathalie Dittrich
      12.01.2017TestingKein BlattNeinHans Lienhop
      19.01.2017Generics & VererbungBlatt6JaNathalie Dittrich
      26.01.2017InterfacesKein BlattNeinHans 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:

      • Examplary exam questions >1< >2< >3< >4< >5< >6< ... see >here a digital version<
      • Detailed project description >here<
      • Download the second public set of optimization Tasks for the project >here< 
      • Example implementation in C# to get a CSP model from the already parsed XML file, >here<
      • Next lecture is canceled!
      • Download the first public set of optimization tasks for the project >here< (more to come later)
      • Project task will be discussed during the exercise at Monday: 29.05.2017
      • First exercise starts with a Python tutorial at Monday, 10th of April.
      • Second exercise will be at Monday 24th of April.
      • Updated the slides of lecture 2
      • The exercises require reading some papers. In order to retrieve them try searching with Google from the university's network.
      LectureTopicResources
      04.04.20171) Introduction to the lecture and optimization ProblemsScript
      10.04.2017Tutorial on Python and NumpyNotebook
      11.04.20172) Single-State Optimization Techniques

      Script

      Notebook

      Notebook from lecture

      18.04.20173) Single-State: Simulated Annealing, Tabu Search, and Iterated Local Search; Multi-State Optimization Techniques: Evolutionary Algorithms

      Script

      Notebook

      24.04.2017Exercise: Implementing Tabu Search and ILS; the Travelling Salesman Problem in Python

      Notebook

      city100.txt

      25.04.20174) Multi-State Optimization Techniques: Genetic Algorithms, Crossover, Line Recombination, Selection Operators

      Script

      Notebook

      02.05.20175) Elitism, Steady-State Algorithm, Memetic Algorithm, Scatter Search, Differential Evolution, Particle Swarm Optimization

      Script

      Notebook

      08.05.2017Exercise: 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

      Paper3: A Memetic Algorithm for whole test suite Generation

      Script

      09.05.20176) Multi-Objective OptimizationScript
      15.05.2017Exercise: Application to Software Engineering Problems (read the papers as preparation to the exercise) + Representation of Problems (how to encode?)Script
      16.05.20177) Combinatorial Optimization Problems (Ant Colony Optimization, Guided Local Search, etc.)Script
      22.05.2017No exercise

       

       

      23.05.20178) Ant Colony Optimization, Constraint Satisfaction Problem

       

       

      29.05.2017Exercise: Project IntroductionScript
      30.05.20179) Constraint Satisfaction Problem

      Script

      Notebook

      05.06.2017No exercise:Whitsun
      06.06.201710) Canceled!
      12.06.2017Exercise: Constraint Satisfaction Problem examples
      13.06.201711) Dimensionality Reduction: PCA 

      Script

      Notebook

      Places.txt

      19.06.2017Exercise: Canceled!
      20.06.201712) Dimensionality Reduction: PCA continued + Feature SelectionSee above
      26.06.2017Exercise: Tutorial on KerasNotebook
      27.06.201713) Introduction to Neuronal Networks
      03.07.2017Exercise:Tutorial on TensorFlowNotebook
      04.07.201714) Recap + Architectures of Neuronal NetworksScript
      11.07.201715) Repetition + Summary of the Course

      Modern Software Technologies

      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:

      • MicroServices
      • Code Analysis with SonarQube and Coveralls
      • Continuous integration & delivery with Ansible and Travis CI
      • Dependency Management with Maven
      • Enterprise software development with Spring Boot
      • REST
      • JavaScript frontend development with Vue.js
      • Docker
      • JUnit
      • (Bonus) Logging with Logback and Log4J
      • (Bonus) Log Analysis with Elastic Search
      • (Bonus) Ticketing and Issue System with Jira / GitHub Issues

      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/

       

      DateDescription
      10.10.2017Introduction & Topics >Folien<
      17.10.2017Customer Meeting & Requirements Elicitation: Ferienpass-Weimar.de
      24.10.2017Architecture and Topics
      07.11.2017How 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:

      • Erste Vorlesung findet am 16.10.2017 (11-12:30 Uhr) statt!
      • Bitten gründen Sie 2er Teams und schicken die Namen der Mitglieder und deren Matrikelnummern per Email an nathalie.jolanthe.dittrich@uni-weimar.de. Anschließend werden Sie einer Teamnummer (unter der Sie Ihre Abgaben einreichen können) sowie der Übungsgruppe (die Ihren Übungstermin bestimmt) zugewiesen. Falls jemand kein Teampartner findet, dann wird in der ersten Übung ein entsprechendes Team gebildet. Wichtig: Geben Sie bereits bei der Teammeldung Ihre Präferenz für die Übungszeit mit an. Wir können zwar nicht garantieren, dass alle Teams Ihre Wunschzeiten bekommen, da wir ausgeglichene Gruppen erreichen wollen, jedoch werden wir den Wunsch bei der Einteilung mit berücksichtigen.
      VorlesungThemaFolien
      16.10.2017Einführung

      Skript

      23.10.2017Datentypen, Methoden, Zuweisungen, OperatorenSkript
      30.10.2017Kontrollstrukturen: If, Switch, Schleifen, Scope

      Skript

      06.11.2017OOP: Klassen, Objekte, Instantiierung, Methodenaufrufe

      Skript

      13.11.2017Arrays, Static-Schlüsselwort, String

      Skript

      20.11.2017Heap & Stack in Java, Referenzen, Cloning

      Skript

      27.11.2017Packages, Enumerations, RecursionSkript
      04.12.2017ListenSkript
      11.12.2017Listen, Stacks, etc.~
      18.12.2017Polymorphie

      Skript

      08.01.2018Probeklausur--
      15.01.2018Ausfall--
      22.01.2018Fehler und FehlerbehandlungSkript
      29.01.2018Style & Code Guidelines, KommentareSkript

       

       

      ÜbungThemaÜbungsblattBewertet
      19.10.2017Datentypen/ ZahlendarstellungBlatt1Ja
      26.10.2017Methoden und OperatorenBlatt 2Ja
      02.11.2017WiederholungBlatt 3Ja
      09.11.2017Objekte und KontrollstrukturenLösungAusÜbungNein
      16.11.2017Arrays und SchleifenBlatt4Ja
      23.11.2017Wiederholung / ÜbungBlatt5Ja
      30.11.2017Rekursion, Klonen, etc.-Nein
      07.12.2017Wiederholung / Übung-Nein
      14.12.2017Listen, Stacks, QueuesBlatt6Ja
      21.12.2017Generics & Vererbung-Nein
      04.01.2018
      Wiederholung / Übung
      -Nein
      11.01.2018Wiederholung / Übung-Nein
      18.01.2018Probeklausur Lösung

      Blatt7

      ZipFile

      Ja
      25.01.2018Testing-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.

      VorlesungThemaFolien
      10.10.2017

      Einführung / Softwarelebenszyklus

      Download
      17.10.2017Anforderungsanalyse (Requirements Engineering)Download
      24.10.2017Responsibility-Driven DesignDownload
      31.10.2017Ausfall: Reformationstag
      07.11.2017UML

      Download

      Download

      14.11.2017Design PatternsDownload
      21.11.2017Design & ArchitekturDownload
      28.11.2017ImplementierungDownload
      05.12.2017Implementierung~
      12.12.2017TestenDownload
      19.12.2017Testen~
      09.01.2018Wartung und Evolution + SoftwareentwicklungsprozesseDownload
      16.01.2018Ausfall-
      23.01.2018Softwareentwicklungsprozesse + Projektmanagement

      Download

      Download

      30.01.2018Gastvorlesung: Jonas Hecht von codecentric: Real-Life Software Engineering -

       

       

      ÜbungThemaÜbungsblattBewertet
      20.10.2017Versionsverwaltung

      Req. Eng.

      Ja
      27.10.2017Requirements Engineering

      Resp.Design

      Ja
      03.11.2017Responsibility-Driven Design

      entfällt

      Nein
      10.11.2017UML

      UML

      Ja
      17.11.2017Design Patterns

      Patterns

      Ja
      24.11.2017Architektur

      Architektur

      Ja
      01.12.2017Implementierung 

      Implementierung

      Ja
      08.12.2017Testen-Nein
      15.12.2017Testen & Debugging

      Testen

      LinkedList

      Interval

      Ja
      12.01.2018SW Qualität & Wartung

      TBA

      Ja
      19.01.2018SW Entwicklungsprozesse

      TBA

      Ja
      26.01.2017Projektmanagement+KlausurvorbereitungNeinNein

      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.

      VorlesungThemaFolien
      13.10.2016

      Einführung / Softwarelebenszyklus

      Download
      20.10.2016Anforderungsanalyse (Requirements Engineering)Download
      27.10.2016Responsibility-Driven DesignDownload
      03.11.2016UML

      Structure

      Behaviour

      10.11.2016Design PatternsDownload
      17.11.2016Design & ArchitekturDownload
      24.11.2016ImplementierungDownload
      01.12.2016TestenDownload
      08.12.2016Gastvorlesung: Prof. Dr.-Ing. Thomas Leich (FH Harz, METOP AG): Global SE + SE in Praxis
      15.12.2016Ausfall wegen Krankheit
      05.01.2017Wartung und EvolutionDownload
      12.01.2017SoftwareentwicklungsprozesseDownload
      19.01.2017ProjektmanagementDownload
      26.01.2017Gastvorlesung: Jonas Hecht von codecentric: Real-Life Software Engineering --Bewertung aktueller Ansätze des Software Engineerings anhand praktischer Erfahrungen eines IT-Consultants

       

       

      ÜbungThemaÜbungsblattBewertet
      21.10.2016Java vs. C++; Versionsverwaltungssysteme

      Blatt1

      Blatt1 (engl.)

      Folien

      Ja
      28.10.2016Responsibility-Driven Design

      Blatt2

      Blatt2 (engl.)

      Folien

      Ja
      04.11.2016UML

      Blatt3

      Blatt3 (engl.)

      Folien

      Ja
      11.11.2016Design Patterns

      Blatt4

      Blatt4 (engl.)

      Folien

      Ja
      18.11.2016Architektur

      Blatt5

      Folien

      Code

      Ja
      25.11.2016Implementierung (Abgabe erst am 8.12.)

      Blatt6

      Folien

      Code_List

      Code_Interval

      Ja
      02.12.2016Testen

      Blatt7

      Folien

      Ja
      09.12.2016Testen & DebuggingFolien
      13.01.2017SW Qualität & Wartung

      Blatt8

      Folien

      Ja
      20.01.2017SW Entwicklungsprozesse

      Blatt9

      Folien

      Ja
      27.01.2017Projektmanagement

      Blatt10

      Folien

      Ja
      03.02.2017KlausurvorbereitungFolienNein