Skip to main content
Intake every 3 weeks! There is no "application deadline" — you can start any upcoming module!Intake every 3 weeks! — apply anytime!
Studies
Admissions
The Institute
Resources
Intake every 3 weeks! There is no "application deadline" — you can start any upcoming module!Intake every 3 weeks! — apply anytime!
Studies
Admissions
The Institute
Resources
Intake every 3 weeks! There is no "application deadline" — you can start any upcoming module!Intake every 3 weeks! — apply anytime!
Studies
Admissions
The Institute
Resources

CS404a

Software Engineering: Product Development

Bangkok Campus
Aug 17, 2026 - Sep 04, 2026
This module is the first of two that together form one assessed unit of 8 ECTS with CS403BKK Software Engineering.
Bangkok Campus
Aug 17, 2026 - Sep 04, 2026
Maksym Prokopov

Faculty

Maksym Prokopov

Senior Site Reliability Manager at Billie.io

Course length

3 weeks

Duration

2 hours
per day

Total hours

30 hours

Credits

2 ECTS

Language

English

Course type

Offline

Fee for single course

€1500

Fee for degree students

€750

Skills you’ll learn

TeamworkProject ManagementDomain-Driven DesignTechnical WritingAgile Product DevelopmentArchitectural DesignAgile Software Development
OverviewCourse outlineCourse materialsPrerequisitesMethod & grading

Overview

This module is the first of two that together form one assessed unit of 8 ECTS with CS403BKK Software Engineering.Where Part 2 asks whether an engineer can safely change and operate an existing system, this part asks whether a team can build one. Students form teams and take a small software product from an initial brief to a working, tested, documented result. This part concentrates on the earlier phases of the lifecycle: turning an ambiguous request into requirements through Domain Storytelling, scenarios, and user stories; modelling the domain with strategic and tactical Domain-Driven Design; and shaping a modular architecture that remains easy to change. Quality assurance is practised as a team discipline through testing, refactoring, code review, and retrospectives. The team’s product continues to be developed through Part 2 and is assessed at the end of the unit.

Learning highlights

  • Build a software product in a team from an initial brief, covering requirements, design, implementation, and testing.
  • Apply agile principles and practices as a working process: iteration planning, incremental delivery, definition of done, and retrospectives.
  • Work effectively in a team and apply effective project management practices, including task ownership, coordination, and evidencing individual contribution.
  • Use Domain Storytelling, scenarios, and user stories to elicit requirements and communicate domain knowledge with stakeholders.
  • Distinguish functional requirements from quality attributes and plan incremental delivery accordingly.
  • Apply the fundamental concepts of Domain-Driven Design, including bounded contexts, aggregates, entities, value objects, and repositories.
  • Design and implement modular, easily modifiable software systems using established software architecture patterns.
  • Practise quality assurance as a team discipline through testing, refactoring, code reviews, and retrospectives, and produce high-quality software.
  • Use version control for collaborative development, including branching, merging, and conflict resolution.
  • Adopt a product-oriented mindset by considering user needs and product development throughout the process.
  • Document and critically reflect in writing on the project results, the development process, and their own role within the team.

Course outline

10 classes

Dive into the details of the course and get a sense of what each class will cover.
Monday
Tuesday
Wednesday
Thursday
Friday
Monday
1

Session 1

Software products and the product-oriented mindset. Project kick-off: the brief, team formation, and the working agreement. Repository and board set up.

Tuesday
2

Session 2

Agile software development in practice. Product backlog, iteration planning, and definition of done. Effective teamwork and project management practices.

Wednesday
3

Session 3

Domain Storytelling workshop. Building the domain story for the team's own product together with the stakeholder role.

Thursday
4

Session 4

From domain story to requirements. Features, scenarios, user stories, and acceptance criteria. Functional requirements and quality attributes; planning incremental delivery.

Friday
5

Session 5

Strategic Domain-Driven Design. Bounded contexts, context maps, and the ubiquitous language. Identifying domain boundaries in the team's product.

Monday
6

Session 6

Tactical Domain-Driven Design. Entities, value objects, aggregates, and repositories. Applied modelling session on each team's own domain model.

Tuesday
7

Session 7

Software architecture patterns. Layered and hexagonal architecture, ports and adapters, modular design, and dependency rules for changeable systems.

Wednesday
8

Session 8

Implementing a vertical slice. Supervised working session on the team codebase, from domain model through to a working feature.

Thursday
9

Session 9

Quality assurance as a team discipline. Testing strategy and test design; code review practice; collaborative version control with branching, merging, and conflict resolution.

Friday
10

Session 10

Refactoring toward a clean architecture and review of the architecture documentation. Team retrospective, evidencing individual contribution, and planning the continuation of the project.

Prerequisites

Working knowledge of an object-oriented programming language is required, including object-oriented design, design patterns, and the SOLID principles. Students should be able to use Git branches and pull requests and to write and debug automated tests.

The module does not reteach programming, version control, or testing fundamentals. No prior course in software engineering is assumed; this part precedes Part 2 within the unit.

The course is taught for exchange students from the University of St.Gallen only.

Methodology

CS404aBKK comprises 8 ECTS, or 240 hours of total learner workload across both parts. Part 1 accounts for 60 of those hours: 20 scheduled contact hours across 10 sessions of 2 hours; 8 hours of supervised project review, feedback, and consultation, distributed across the period to 16 October; and 32 hours of independent and team project work. ECTS measures total workload, not classroom time.

The 10 sessions of Part 1 are distributed across the block from 17 August to 4 September 2026, at three to four sessions per week. Each session combines a lecture segment with a supervised studio in which teams apply the concept introduced to their own product; the intervening days are given to team project work.

The distinguishing feature of the unit is a team project that runs continuously for nine weeks, from 17 August to 16 October. The project opens in Session 1 of Part 1 and is developed there through framing, domain modelling, architecture, and a first working slice. Between 7 and 25 September there are no taught sessions: teams continue development independently, supported by scheduled supervised reviews. From 28 September teams continue to develop their product through Part 2, applying to it the delivery, operations, and maintenance practices taught there. Project artefacts are submitted weekly throughout all nine weeks, so that the project forms a continuous record from the first week to the final submission.

Teams build a small software product from a common brief. The broad topic and a set of core requirements are given, but each team shapes its own product within that frame. Weekly artefacts comprise the domain story, user stories and acceptance criteria, the domain model, architecture documentation, source code, and the test suite. Session 10 includes a structured team retrospective with feedback. Participation in the studios and scheduled reviews is essential for successful group work.

Grading

The final grade will be composed of the following criteria:
50% - Written Examination, analog, on campus, closed book, Individual Work, Individual Grade
40% - Written report, Digital, Individual Work, Individual Grade
7% - Detailed final presentation of the project, oral, Group Work, Individual Grade
3% - Weekly submission of project artefacts, Digital, Group Work, submitted / not submitted
CS404aBKK is assessed as one unit of 8 ECTS, for which a single grade is awarded covering both parts.
Maksym Prokopov

Faculty

Maksym Prokopov

Senior Site Reliability Manager at Billie.io

Maksym is an experienced tech lead developer and Staff Site Reliability Engineer spent many years creating solutions from scratch to the production. Possesses the skill of explaining complex things in a simple way.

He believes everyone with passion eventually becomes a professional.

See full profile

Apply for this course

Snap up your chance to enroll before all spaces fill up.

Software Engineering: Product Development

by Maksym Prokopov

Total hours

30 Hours

Dates

Aug 17 - Sep 04, 2026

Fee for single course

€1500

Fee for degree students

€750

How to secure your spot

Complete the form below to kickstart your application

Schedule your Harbour.Space interview

If successful, get ready to join us on campus

FAQ