Contemporary Software Development

15 credits

Syllabus, Master's level, 2IS071

A revised version of the syllabus is available.
Education cycle
Second cycle
Main field(s) of study and in-depth level
Information Systems A1N
Grading system
Fail (U), Pass (G), Pass with distinction (VG)
Finalised by
The Department Board, 26 April 2018
Responsible department
Department of Informatics and Media

Entry requirements

90 credits in information systems or equivalent

Learning outcomes

In terms of knowledge and understanding, after completed course the student should be able to:

- explain how a formal language can be used to structure and reason about digital systems,

- explain how extensibility, reusability and modifiability can be supported by fundamental principles within object-oriented design,

- explain the concept of design patterns in software development,

- explain the theoretical basis for the term substitutability,

- explain and discuss the role of design science research in contemporary software development.

In terms of skills and abilities, after completed course the student should be able to:

- apply a formal language to structure and reason about digital systems,

- conduct test-driven development and restructuring,

- recognize and be able to apply fundamental object-oriented design patterns,

- construct a datalogically sound object hierarchy,

- design fault tolerant program components,

- plan and structure a design science research project, including both design and evaluation of software.

In terms of judgement and approach, after completed course the student should be able to:

- motivate design choices in program solutions from declarative and object-oriented principles,

- critically evaluate the results of a software development project based on a design science approach.


This course shows how programming in the small can be extended into the large through object orientation, software engineering methodologies, and design patterns. Fundamental concepts such as cohesion, coupling, and substitutability are the foundations on which extensible and reliable software is built. The course progresses by showing how maintaining and improving software is achieved through test-driven development and refactoring. Finally, the use of design patterns is covered, enabling learnt solutions to previous problems to be reused.

To support the above, the course covers topics such as high-level object-oriented design with constructive and critical perspective, design patterns, reliable software through fault-tolerance, rigorous software construction through test-driven development and the use of contracts, automated building, testing, and deployment. Formal languages, including concepts such as sets, functions, relations, propositional logic, predicate logic, theorem proving, Standard Specification operations, and Model checking toolset, form the foundation for the practical exercises in the course.

The course also contributes to the program's integrated research method stream by introducing the student to the design science research approach, which is used as the basis for development projects during the course.


Lectures, seminars, and laboratory sessions.


Seminars, laboratory sessions, assignments, and written exam, Compulsory attendance is required for some elements.

If there are special reasons for doing so, an examiner may make an exception from the method of assessment indicated and allow a student to be assessed by another method. An example of special reasons might be a certificate regarding special pedagogical support from the University's disability coordinator.