CS504070 — Service-Oriented Architecture

Fall, 2022

Course Description

This course provides students with fundamental knowledge in software development based on service-oriented architecture. After completing this course, students can know how to classify services towards business processes; besides that, students can also program a small service-oriented-based information system, and understand types of message exchange, life cycle, performance and security of the service. Each semester, the lecturer will choose some specific topics and organize them into lecture and hands-on-practice sessions. This semester, we will organize the course into three parts. In the first part, we take one week to present some fundamental definitions of SOA and get familiar with the RESTful API through some example programs. In the second part, we will present Flask by taking a demonstration on a real-world application. We organize the third part as a self-study to present how to program APIs with Java programming language. We note that there are some prerequisites before registering and studying this course. You need to be familiar with programming languages such as Java and Python. You also need to have a good background in databases, either SQL or NoSQL.

  • No. of credits: 3(3,0)
  • Time allocation:
    • Theory + Practice (hours): 45
    • Self-study (hours): 90


  1. Sam Newman. Building Microservices. O'Reilly Media, Inc., 2021. [PDF]
  2. Miguel Grinberg. Flask Web Development, Second Edition. O'Reilly Media, Inc., 2018.
  3. Bogunuva Mohanram Balachandar. RESTful Java Web Services, Third Edition. Packt Publishing, 2017.
  4. Nicloai M. Josuttis. SOA in Practice, First Edition. O'Reilly Media, Inc., 2007. [PDF]
  5. Antonio Melé. Django 3 By Example. Packt Publishing, 2020. [EPUB]
  6. Vaughn Vernon. Domain-Driven Design Distilled, 1/e. O'Reilly Media, Inc., 2016. [EPUB]
  7. Don Norman. The Design of Everyday Things: Revised and Expanded Edition. Basic Books, 2013. [EPUB]


Evaluation categories Weight (%) Types
Process evaluation 1 10 Process Exercise
Process evaluation 2 20 Essay
Mid-term project 20 Assignment
Final project 50 Report


Group Day Google Classroom Room
1 (TC) Tuesday [2] | B501
2 (CLC) Tuesday [3] | D0101-B


Weeks Topics Resources
1 Chapter 0: Course Introduction
Chapter 1: What Are Microservices?

Programming the first API with Java

Lesson 1
Homework 1
2 Chapter 2: How to Model Microservices

Flask Installation (Self-study)
Basic Application Structure

Lesson 2
Homework 2
3 Chapter 3: Splitting the Monolith

Web Forms

Lesson 3A
Homework 3
4 Chapter 4: Microservice Communication Styles

Large Application Structure (Self-study)
Appendix A: Gmail with OAuth 2.0

Lesson 3B
Appendix A
Homework 4
5 Chapter 5: Implement Microservice Communication (Part 1)

A Social Blogging Application
- Part 1: User Authentication

Lesson 4A
Homework 5
6 Chapter 5: Implement Microservice Communication (Part 2)

User Authentication with OAuth 2.0

Lesson 4B
Homework 6
7 Chapter 6: Workflow

A Social Blogging Application
- Part 2: User Roles

Lesson 4C
Homework 7
8 Chapter 7: Build

A Social Blogging Application
- Part 3: User Profile

Lesson 5A
Homework 8
9 Chapter 8: Deployment

A Social Blogging Application
- Part 4: Blog Posts

Lesson 5B
Homework 9
10 Chapter 9: Testing

A Social Blogging Application
- Part 5: Followers
- Part 6: User Comments

Lesson 6
Lesson 7
Homework 10A
Homework 10B
11 Chapter 10: From Monitoring to Observability

A Social Blogging Application
- Part 7: Application Programming Interfaces

Lesson 8
Homework 11
12 Chapter 11: Security

- Testing Flask Applications
- Measure Flask Application Performance
- Flask Application Deployment

Lesson 9
Homework 12
13 Mid-term Report

Read: Chapter 12, 13 [1]
Mid-term Exam
14 Final Project Report

Read: Chapter 14 [1]
15 Final Project Report

Read: Chapter 15, 16 [1]


  • RUBRIC [Midterm | Final Project]
  • You should refer to this tutorial to install Flask, setup virtual environment and download demo source code.
  • Learning forum (hosted on Facebook Groups):
    • Nhóm 1 (TieuChuan)
    • Nhóm 2 (CLC)
  • Attendance Records:


  • [NEW] Hướng Dẫn Nộp Đồ Án Môn Học
  • [NEW] Bảng Điểm Môn Học | Công Thức Tính Điểm
  • Lịch phân công báo cáo Giữa Kỳ & ĐAMH
  • Danh sách nhóm thực hiện ĐAMH
  • Đăng ký nhóm thực hiện ĐAMH
  • Đăng ký đề tài ĐAMH


  • Phuc H. Duong - duonghuuphuc@tdtu.edu.vn
  • Nguyen Dinh Nhat Minh (TA) - nguyendinhnhatminh@it.tdt.edu.vn

Info I welcome everyone to become a teaching assistant for this course, please do not hesitate to drop me an email at dhp@dhpit.com.


  • You are allowed to absent up to 3 sessions of lecture hours.
  • Exercises, assignment and final project must be submitted by the due date. No late submission will be accepted.
  • For assignment and final project, all group members must submit the work together.
  • About collaboration, you may discuss with other students on the review reports. However, you must write up the reports on your own independently.
  • You need to be honest in all academic work and understanding that failure to comply with this commitment will result in disciplinary action.
  • For online class sections (if any), attendance and participation are determined by active interaction in the weekly discussion forums and submission of on-class exercises/homeworks/assignments. Failure to complete at least 50% of the work each week will be deemed as lack of active participation in the course.


Mailing List

Sign up with your email address at this form to receive news and updates.


  • Recorded lecture videos
  • Fall, 2022 (Current)
  • Spring, 2022