Software Design Fundamentals


The goal of this one-day course is to introduce and discuss the main design principles and methods that underlie the object-oriented, generic and functional programming styles. The topics are language-independent and they only need to be learned once, after which they can be implemented in programming languages such as C++, C# and Java, for example. In this way we reduce the design to its core features without getting bogged down in non-essential implementation details (at least, not just yet) that we shall relegate to the programming phase of the software development process.

We discuss the design process and we show the main steps in mapping system requirements to design blueprints. We document these blueprints using UML class and component diagrams. Finally, we can use these diagrams directly in a given object-oriented programming language.

Some key features of the course are:

  • Clear, concise and language-independent overview of the software design process.
  • Tips and guidelines on good design practice.
  • Do's and don'ts: how to design maintainable, loosely-coupled software systems.
  • Create design blueprints that map seamlessly to code.
  • Learn to distinguish between good and bad designs.

The topics from this course are used in later language-focused courses.


Who should attend?
This course has been created for novice programmers and developers who wish to learn more about software design in order to improve the flexibility and quality of code. This code is also useful for (project) managers who wish to gain insights into the software development process.
Programming experience, ideally in a software development environment.
Click here for course contents.

Software Design Fundamentals

Fill in your personal details