CS504070 — Service-Oriented Architecture

Spring, 2024

Course Description

This course equips students with essential knowledge in software development, focusing on service-oriented architecture (SOA). Upon completion, participants will understand how to align services with business processes. Additionally, they will gain skills in developing a compact service-oriented information system, and acquire insights into various aspects such as message exchange types, service life cycle, performance, and security. Each semester, the course content is dynamically tailored, with the lecturer selecting relevant topics for a mix of lectures and practical sessions. This semester, the course is divided into three segments:

  • The first segment dedicates a week to introducing fundamental SOA concepts and exploring RESTful API using Java. This includes hands-on examples to enhance familiarity with the technology.
  • The second segment delves into FastAPI, a cutting-edge, high-speed web framework for crafting APIs in Python 3.12, leveraging standard Python type hints for efficiency and performance.
  • The third segment encourages self-directed learning through the exploration of specialized topics.

Prior knowledge is required for this course. It is essential for students to have proficiency in programming languages, particularly Java and Python, and a strong foundation in database systems, including both SQL and NoSQL databases.

Course's credits and time allocation:

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

Textbook

  1. Sam Newman. Building Microservices. O'Reilly Media, Inc., 2021. [PDF]
  2. Phuc H. Duong. FastAPI Tutorials, 2024.
  3. Miguel Grinberg. Flask Web Development, Second Edition. O'Reilly Media, Inc., 2018.
  4. Bogunuva Mohanram Balachandar. RESTful Java Web Services, Third Edition. Packt Publishing, 2017.
  5. Vaughn Vernon. Domain-Driven Design Distilled, 1/e. O'Reilly Media, Inc., 2016. [EPUB]
  6. Get started with GitHub and Visual Studio Code. Microsoft Learn.

Evaluation

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

🤖 Learning with AI

In this semester, I'm excited to enhance our course by integrating a cutting-edge AI-chatbot, powered by Large Language Models (LLMs). I'm proud to introduce KamiMind, an innovative, user-friendly, no-code platform that allows you to easily create and engage with advanced AI models on your own data. Starting from December 13, 2023, KamiMind supports three leading hyper AI models: Claude, Google Gemini Pro, and OpenAI's GPT-3 and GPT-4 Turbo. Additionally, the platform features unique models developed by our talented in-house AI engineers, further enriching your learning experience.

Hướng dẫn tạo Trợ Lý AI (AI Agent) cùng học lập trình

Schedule

Group Day [Period] e-Learning Room
5 (TC) Monday [2] | | | B304
3 (CLC) Monday [3] | | | F402

File compiling the Google Meet access links.

Syllabus

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

Practice 1:
- Programming API with Java
ch00.pdf
ch01.pdf

Practice 1
2 Chapter 1: What Are Microservices? (cont.)

Practice 2:
- Python Type Hints
- Pydantic Module
- Python Concurrency
ch01.pdf

Practice 2
3 Chapter 2: How to Model Microservices

Practice 3:
- FastAPI Introduction
- Path & Query Parameters
- Request Body
ch02.pdf
read02.pdf

Practice 3
4 Chapter 3: Splitting the Monolith

Practice 4 (A):
- Query Parameters and String Validations
- Path Parameters and Numeric Validations
Practice 4 (B):
- Email
ch03.pdf
async_sync.pdf

Practice 4 (A)
Practice 4 (B)
5 Chapter 4: Microservice Communication Styles

Practice 5:
- Body - Multiple Parameters, Fields, Nested Models
- Declare Request Example Data
- Extra Data Types
- Cookie Parameters
- Header Parameters
ch04.pdf

Practice 5
6 Chapter 4: Microservice Communication Styles (cont.)

Practice 6:
- Response Model - Return Type
- Extra Models
- Response Status Code
ch04.pdf

Practice 6
7 Chapter 5: Implement Microservice Communication (Part 1)

Practice 7:
- Form Data
ch05a.pdf

Practice 7
8 Chapter 5: Implement Microservice Communication (Part 1) [cont.]

Practice 8:
- Request Files
- Request Forms and Files
- Handling Errors
ch05a.pdf

Practice 8
9 Chapter 5: Implement Microservice Communication (Part 2)

Practice 9:
- Path Operation Configuration
- JSON Compatible Encoder
- Body - Updates
ch05b.pdf

Practice 9
10 Chapter 5: Implement Microservice Communication (Part 2) [cont.]

Practice 10:
- Dependencies
ch05b.pdf

Practice 10
11 Chapter 6: Workflow

Practice 11:
- Security
ch06.pdf

Practice 11
12 Chapter 6: Workflow (cont.)
— Practice 12:
- Middleware
- CORS (Cross-Origin Resource Sharing)
- SQL (Relational) Databases

Report: Mid-term Project
ch06.pdf

Practice 12
13 Practice 13: Bigger Applications - Multiple Files

Report: Mid-term Project
Practice 13
14 Final Project Report

Read: Chapter 14 [1]
15 Final Project Report

Read: Chapter 15, 16 [1]

Info Use the account provided by TDTU to access the above resources.

Resources

  • Cấu trúc báo cáo QT2, Cuối kỳ
  • Phiếu chấm điểm (RUBRIC) QT2, Giữa kỳ, Cuối kỳ
  • Danh Sách Sinh Viên
  • Attendance Records:

Staffs

  • Phuc H. Duong

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

Policies

  • You are allowed to absent up to 3 lecture sessions.
  • Exercises, assignment and final project must be submitted by the due date. No late submission will be accepted.
  • All submissions will be done via e-Learning platform of TDTU.
  • 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 during the class and submission of exercises after class. 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.

Archived

  • Recorded lecture videos
  • Spring, 2024 (Current)
  • Spring, 2023 | Fall, 2022 | Spring, 2022