Skip to main content

CS403BKK

Software Engineering

Bangkok Campus
Sep 28, 2026 - Oct 16, 2026
This course will teach you all phases of software development from requirements gathering till project maintenance, introducing processes and best practices.
Bangkok Campus
Sep 28, 2026 - Oct 16, 2026
Igor Sakhankov

Faculty

Igor Sakhankov

Staff Software Engineer at Glovo

Course length

3 weeks

Duration

3 hours
per day

Total hours

45 hours

Credits

8 ECTS

Language

English

Course type

Offline

Fee for single course

€1500

Fee for degree students

€750

Skills you’ll learn

Software DevelopmentTeamworkSoftware EngineeringSoftware DesignSoftware ArchitectureDomain-Driven DesignJavaSoftware Testing and DebuggingSoftware ProductsAgile Software DevelopmentReliable Programming
OverviewCourse outlineCourse materialsPrerequisitesMethod & grading

Overview

There is a big difference between coding and engineering, working on a project alone or contributing to a large software system. In this course, we will discuss what software engineering is and how to become one. We will cover all phases of software development from requirements gathering to project maintenance, and discuss processes and best practices. Most of the concepts will be tried in practice using Java and Spring Framework. Agile principles and teamwork are integrated throughout to ensure that students can work effectively in modern development environments. The course covers software architecture patterns, Domain-Driven Design, quality assurance practices, and version control systems, enabling participants to design and develop high-quality and easily modifiable software systems. In addition, DevOps principles for continuous integration and continuous deployment are introduced, and a product-oriented mindset is fostered that considers the needs of users and product development. Overall, this course provides students with holistic skills required for the successful and agile development of software products, addressing both technical expertise and collaborative skills to meet the demands of the industry.

Learning highlights

  • Gain hands-on experience developing applications using the Java Spring framework.
  • Understand the key processes and practices involved in software project management.
  • Elicit, analyse, and document software requirements effectively.
  • Apply fundamental software design principles to the development of software systems.
  • Design, implement, and maintain software systems throughout their lifecycle.
  • Apply testing techniques and quality assurance practices to ensure software reliability and maintainability.
  • Work effectively in teams and apply collaborative software development practices.
  • Use version control systems (e.g. Git) for collaborative development and code management.
  • Know and be able to apply the fundamental concepts of Domain-Driven Design, including Bounded Contexts, Aggregates, Entities, Value Objects, and Repositories.
  • Understand the phases of the software development lifecycle, including design, implementation, testing, deployment, and maintenance.
  • Understand fundamental software architecture and modular design principles.

Course outline

15 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

What is software engineering? Java basics. Java ecosystem.

Tuesday
2

Session 2

Introduction to Spring. First Spring application. Coding best practices.

Wednesday
3

Session 3

Spring Boot. Web application. Style guides and rules.

Thursday
4

Session 4

Designing APIs, integrating with 3rd party systems.

Friday
5

Session 5

System quality. Introduction to testing. Unit and integration testing.

Monday
6

Session 6

Using Data Stores. Test Containers framework.

Tuesday
7

Session 7

Version control. Code reviews. Continuous integration and delivery.

Wednesday
8

Session 8

Designing the system. Design patterns. Architecture patterns.

Thursday
9

Session 9

Requirements. Functional requirements, quality attributes, technical constraints.

Friday
10

Session 10

Documentation. Knowledge sharing. Working in a team. Meeting culture.

Monday
11

Session 11

Observability. Monitoring. Alerting. Security. OWASP.

Tuesday
12

Session 12

Scaling systems. Deprecating legacy parts. Maintaining systems. Chaos Engineering.

Wednesday
13

Session 13

Working on Group Projects. Practical Examples.

Thursday
14

Session 14

Working on Group Projects. Practical Examples.

Friday
15

Session 15

Final exam.

Prerequisites

Required is the course "Foundations of Programming: Java" or similar. Prior knowledge of software systems design principles, including object-oriented design, design patterns, and SOLID principles, would be an advantage.

Methodology

The course comprises 8 ECTS, which corresponds to a workload of 240 hours per person (45 hours attendance time, including examinations, 45 hours individual consultations, 150 hours self-study). The course consists of lectures given by the professor as well as practical seminars where students complete a programming assignment under the professor’s supervision. Homework is assigned after each session to strengthen the understanding of the material. Every week, a few quizzes are conducted. A final exam happens at the end of the course.

The contents of the lecture and the exercise are closely linked. It is assumed that students have heard the contents of the lecture when they come to the exercises, where they are applied as part of a course-long project. The exercises consist of tutorials, guided sessions for working on the project, project reviews and feedback sessions, as well as project-related group work. The project is developed weekly in close coordination with the lecture. Attendance at the exercises is essential for a successful group project.

Grading

The final grade will be composed of the following criteria:
10% - Written Examination
20% - Quizzes
40% - Individual assignments
20% - Group project
10% - Class Participation
Igor Sakhankov

Faculty

Igor Sakhankov

Staff Software Engineer at Glovo

Igor is a software engineer with experience in distributed systems, microservices, data pipelines and setting up team processes. He worked for the companies like Uber and Booking.com, right now works for Glovo.

Igor graduated from Innopolis University with a Master's degree in Software Engineering backed by MSIT SE CMU original program.

See full profile

Apply for this course

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

Software Engineering

by Igor Sakhankov

Total hours

45 Hours

Dates

Sep 28 - Oct 16, 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

Will I receive a certificate after completion?

Yes. Upon completion of the course, you will receive a certificate signed by the director of the program your course belonged to.

Do I need a visa?

This depends on your case. Please check with the Spanish or Thai consulate in your country of residence about visa requirements. We will do our part to provide you with the necessary documents, such as the Certificate of Enrollment.

Can I get a discount?

Yes. The easiest way to enroll in a course at a discounted price is to register for multiple courses. Registering for multiple courses will reduce the cost per individual course. Please ask the Admissions Office for more information about the other kinds of discounts we offer and what you can do to receive one.