Software Design and Programming Techniques
SS 2010
The goal of this course is to educate students on how software design and various programming techniques can improve the effectiveness of programmers during the whole software life cycle. Besides classical design techniques such as design and architecture patterns, design heuristics, and framework design, we will learn about a broad range of programming techniques. These techniques include concepts and tools for software analysis (such as data flow analysis, model checking, debugging) and software construction (such as refactoring or the construction of domain-specific languages). Students will learn how to use techniques both from scientific research and industrial practice, both by reading scientific articles and experimenting with practical tools.
Time and Place
see here
Instructors
Prof. Dr. Klaus
Ostermann
Tillmann Rendel,
M.Sc.
Forum
A web-based forum is available for discussion about this course. The instructors will read this forum and answer questions, but you can also discuss with your fellow students. To use the forum, you have to register yourself using your department user name and your department email adress (e.g. abcd and abcd@mathematik.uni-ma...). You can then join the user group for Software Design and Programming Techniques to get access to the forum for this lecture.
Schedule
The obligatory material is the basis for the exam. The advanced material exceeds what was discussed in class, but it is a good idea to take a look at it if you are striving for a very good grade in the exam.
| Date | Topic | Material |
|---|---|---|
| April 13, 2010 | Introduction | Slides |
| April 20&27, 2010 | Class Design Principles | Slides |
| May 4, 2010 | Class Design Patterns | Slides |
| May 18, 2010 | Class Design Patterns, ctd. | Slides |
| May 25-June 8, 2010 | Inheritance |
Slides |
| June 15, 2010 | Advanced Inheritance |
Slides |
| June 22, 2010 | Frameworks |
Slides |
| June 29 and July 6, 2010 | AOP |
Slides |
| July 13, 2010 | CaesarJ |
Slides |
Exercises
Starting from April 28, the exercise sessions are rescheduled to 15:00 to 16:00, both s.t.
| Date |
Topic |
Material |
Homework Deadline |
|---|---|---|---|
| April 14, 2010 |
no exercise session |
||
| April 21, 2010 |
Testing |
Slides |
|
| Object-Oriented Analysis |
Slides,
Assignment |
April 27, 23:59 |
|
| April 28, 2010 |
OOA, Testing, DIP |
Assignment |
May 4, 23:59 |
| May 5, 2010 |
jUnit, SRP, Strategy vs. Template Method |
Assignment, jUnit example |
May 11, 23:59 |
| May 12, 2010 |
OCP, Abstraction, Patterns vs. Principles |
Assignment | May 18, 23:59 |
| May 19, 2010 |
LSP, Design by Contract |
||
| May 26, 2010 |
no exercise session |
||
| June 2, 2010 |
Scala, Visitor Pattern |
Assignment, visitor.scala |
June 8, 23:59 |
| June 9, 2010 |
Visitor Pattern |
abstract types.scala generics.scala |
|
| June 16, 2010 |
Virtual Classes, Mixins |
Assignment, extended shapes.scala |
June 22, 23:59 |
| June 23, 2010 |
|||
| June 30, 2010 |
Scala, self-types, AOP |
self types.scala |
|
| July 7, 2010 |
no exercise session |
||
| July 14, 2010 |
CaesarJ, mixin linearisation |
Exam
TBD

