Kies de Nederlandse taal
Course module: 201700082
Programming Principles, Patterns, and Processes
Course info
Course module201700082
Credits (ECTS)5
Course typeCourse
Language of instructionEnglish
Contact persondr. P. van den Bos
Contactperson for the course
dr. P. van den Bos
dr. P. van den Bos
Academic year2022
Starting block
Application procedureYou apply via OSIRIS Student
Registration using OSIRISYes
After this course the student will be able to:
  • Explain how software quality can be strengthened and ensured in different phases of software development (design, construction, and quality assurance).
  • Choose and implement appropriate design patterns.
  • Work together in a team using an agile development tool.
  • Install and use a continuous integration pipeline.
  • Evaluate the quality of software using software maintainability metrics.
  • Create test cases using the test driven development approach.
  • Refactor software to improve its structure and design.
  • Apply debugging techniques to find and resolve software faults
This course focuses on software engineering skills for software design, construction and quality assurance in a software development context. The main topics of the course are:
  • Design patterns
  • Test driven development
  • Software maintainability metrics
  • Refactoring
  • Debugging
Moreover, the students gain practical experience with using a continuous integration pipeline, and an agile development tool. Additionally, the course includes a guest lecture on software engineering practice.  Furthermore, to simulate the software development process, a requirements change will be introduced half way the course. Requirements engineering and architectural design are out of scope for this course.

During the whole course, students work in a group on a project to implement software for the given topic of the year. In the project, the students apply all the software engineering skills of the course. They report on these skills in a report, and in a final presentation. Individual contributions are tracked via the agile development tool. Also, unbalanced contributions may be reported via a red/green card system. Three times during the course, the student groups perform peer reviews on the projects of other student groups.
Assumed previous knowledge
This course assumes good programming skills at the level of a graduated student of a Computer Science bachelor.
Participating study
Master Computer Science
Participating study
Master Internet Science and Technology
Required materials
Recommended materials
Joost Visser, Sylvan Rigal, Gijs Wijnhold, Zeeger Lubsen. Building Software Teams: Ten Best Practices for Effective Software Development. O'Reilly Media; ISBN 978-1491951774
Bertrand Meyer, “Agile”, Springer, 2014. ISBN 978-3-319-05155-0
Erich Gamma, Ralph Johnson, Richard Helm, John Vlissides. "Design Patterns: Elements of Reusable Object-Oriented Software", Addison Wesley, 1998. ISBN: 9780201633610
Martin Fowler, and Kent Beck. "Refactoring: improving the design of existing code", Addison-Wesley, 1999. ISBN: 978-0201485677
Andreas Zeller. "Why programs fail - A guide to systematic debugging", 2nd Edition, Springer, 2009. ISBN: 9780123745156
Instructional modes
Presence dutyYes


Presence dutyYes

Project unsupervised
Presence dutyYes

Self study without assistance

Project, Report, Presentation

Kies de Nederlandse taal