CS403BKK
Software Engineering

Faculty
Igor Sakhankov
Staff Software Engineer at Glovo
Course length
Duration
Total hours
Credits
Language
Course type
Fee for single course
Fee for degree students
Skills you’ll learn
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
Session 1
What is software engineering? Java basics. Java ecosystem.
Session 2
Introduction to Spring. First Spring application. Coding best practices.
Session 3
Spring Boot. Web application. Style guides and rules.
Session 4
Designing APIs, integrating with 3rd party systems.
Session 5
System quality. Introduction to testing. Unit and integration testing.
Session 6
Using Data Stores. Test Containers framework.
Session 7
Version control. Code reviews. Continuous integration and delivery.
Session 8
Designing the system. Design patterns. Architecture patterns.
Session 9
Requirements. Functional requirements, quality attributes, technical constraints.
Session 10
Documentation. Knowledge sharing. Working in a team. Meeting culture.
Session 11
Observability. Monitoring. Alerting. Security. OWASP.
Session 12
Scaling systems. Deprecating legacy parts. Maintaining systems. Chaos Engineering.
Session 13
Working on Group Projects. Practical Examples.
Session 14
Working on Group Projects. Practical Examples.
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
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 profileApply for this course
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.

