Skip to main navigation Skip to search Skip to main content

URL study guide

https://studiegids.vu.nl/en/courses/2025-2026/XB_40007

Course Objective

The main objective of the course is to let you master model-based design methodologies and techniques, obtain insights and knowledge about recurrent software design problems and object orientation. (Knowledge and understanding) In addition, you will develop critical reasoning skills: for a given software problem, you will be able to select and apply design principles and the most appropriate object-oriented design patterns. (Making judgements) (Applying knowledge and understanding) (Lifelong learning skills)

Course Content

Developing real software systems is complex; they are large, and their development often starts when their requirements are still not fully specified. The goal of software design is to model complex software systems in a systematic manner. The lectures will cover and apply a number of software modeling techniques and principles. You will learn which technique is the most appropriate for which problem, how to describe a (software) problem using models, and how to use such models to reason about and communicate key aspects of your software. The course also introduces several design patterns for creating robust, better-organized, and maintainable software systems. Design patterns can be considered as standardized blueprints for solving recurrent design problems regarding object-oriented software systems. The course makes use of the Unified Modelling Language (UML).

Teaching Methods

Lectures (H). Practical sessions (W).

Method of Assessment

In this course the assessment is composed of two components:Team project (70% of the final grade): it will be carried out throughout the course by groups of students; the required methods and principles for the project will be covered during the lectures and laboratory sessions throughout the whole duration of the course.The result of the team project is composed of two parts: (i) a modelling part, and (ii) an implementation part. Both the modeling and implementation parts will be evaluated by the teaching team according to a shared assessment rubric. Within the team project, each of you will be responsible for a certain part of the project; as a team, you will report the responsibilities that each team member took in the project.Written exam (30% of the final grade): it consists of a set of multiple-choice questions. The exam aims to assess your understanding and knowledge of the methods, principles, and practical insights discussed in the lectures.

Literature

Martina Seidl, Marion Scholz, Christian Huemer, Gerti Kappel, "UML@Classroom: An Introduction to Object-Oriented Modeling", 2015.John Ousterhout, “A philosophy of software design”, Yaknyam Press, 2018.Martin P. Robillard, “Introduction to Software Design with Java”, Springer, 2019.

Target Audience

Bachelor Computer Science (year 2)

Recommended background knowledge

Object-oriented principles in any programming language (for instance in Scala, Java, C/C++, Python).
Academic year1/09/2531/08/26
Course level6.00 EC

Language of Tuition

  • English

Study type

  • Premaster
  • Bachelor