Giới thiệu
CHÀO MỪNG CÁC BẠN SINH VIÊN ĐẾN VỚI MÔN HỌC
LẬP TRÌNH PHÂN TÁN
(Distributed Programming)
1- Tên môn học: Lập trình Phân tán
2- Bộ môn phụ trách môn học: Bộ môn Công nghệ phần mềm
3- Mã số môn học: CSE423
4- Số tín chỉ: 3 tín chỉ (LT: 2; TH/BT/TL: 1)
5- Giảng viên:
TS. Lê Nguyễn Tuấn Thành, BM Công nghệ phần mềm (email: thanhlnt [at] tlu [dot] edu [dot] vn)
6- Mô tả môn học:
Môn học này cung cấp cho sinh viên một cái nhìn tổng thể về lập trình phân tán, các thuật toán trong lập trình phân tán, các xu thế phân tán, và các công cụ cũng như ngôn ngữ hỗ trợ phát triển ứng dụng phân tán.
Nội dung môn học được chia làm 2 phần:
Phần đầu cung cấp kiến thức về những bài toán và kỹ thuật lập trình đồng thời và song song trong những hệ thống dựa trên bộ nhớ chia sẻ:
Khái niệm luồng (threads) trong các ngôn ngữ như Java, Python, C#, C/C++
Lập trình đa luồng
Những thuật toán cho bài toán loại trừ lẫn nhau (mutual exclusion)
Đối tượng nguyên tử (atomic objects)
Cơ chế đồng bộ: wait và notify
2. Phần hai cung cấp kiến thức về những bài toán và kỹ thuật lập trình trong những hệ thống phân tán sử dụng cơ chế truyền thông điệp
Bài toán truy cập tài nguyên chia sẻ
Bài toán đồng bộ đồng hồ
Bài toán bầu chọn người lãnh đạo
Bài toán sắp thứ tự thông điệp
Những kiến thức trong môn học này giúp sinh viên trang bị những kiến thức và kỹ năng về các chủ đề:
Cấu trúc trong ngôn ngữ đồng thời/song song: threads, semaphores, monitors, wait & signals, giao tiếp liên quá trình.
Lập trình phân tán: Socket, RMI, MOM
Các nguyên tắc cơ bản của tính toán đồng thời: Loại trừ lẫn nhau (Mutual Exclusion), Khóa (Locking), Bế tắc (Deadlocks)
Các nguyên tắc cơ bản của tính toán phân tán: Đồng hồ logic (Logical clocks), Loại trừ lẫn nhau (Mutual Exclusion), Bầu cử người lãnh đạo (Leader election)
7- Mục đích:
Cung cấp kiến thức nền tảng về phát triển ứng dụng phân tán.
Cung cấp các kiến thức và kỹ năng cho lập trình đa luồng/song song và phân tán.
Khi hoàn thành khóa học, sinh viên có khả năng phân tích các bài toán điển hình trong lập trình phân tán và áp dụng được các kỹ thuật của môn học vào bài toán thực tế.
Áp dụng trên một số ngôn ngữ như Java, Python, C#, C/C++ sử dụng các thư viện lập trình đồng thời/ song song tương ứng
8- Yêu cầu: Đối với học viên:
Dự lớp đầy đủ
Đọc trước tài liệu (bài giảng, sách, ...) trước khi đến lớp (~3h)
Có khả năng đọc hiểu tài liệu tiếng Anh
Làm bài tập tại các buổi thực hành và chia nhóm làm dự án nhỏ
Tham gia thảo luận, thực hành trên lớp và thông qua Piazza
9- Phân bổ thời gian:
Tổng số: 45 tiết
- Lý thuyết: 30 tiết;
- Bài tập, thảo luận: 15 tiết.
10- Logic môn học:
Các môn học trước:
Nguyên lý lập trình hướng đối tượng (CSE224)
Kiến trúc máy tính (CSE370)
Hệ điều hành (CSE482)
Mạng máy tính (CSE489)
11- Định hướng bài tập:
- Bài tập tại buổi thực hành
12- Tư vấn và hướng dẫn học viên:
- Hướng dẫn thực hành tại các buổi thực hành
- Cung cấp kiến thức trên lớp
- Giới thiệu các tài liệu tham khảo trong và ngoài nước
13- Tài liệu học tập:
- Bài giảng của giảng viên
14- Phương pháp giảng dạy và học tập
- Thuyết trình, có minh họa
- Nêu vấn đề, thảo luận tại lớp
- Sinh viên tự nghiên cứu trình bày theo nhóm tại các buổi thực hành
15- Tổ chức đánh giá môn học