You are on page 1of 10

TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

KHOA CÔNG NGHỆ THÔNG TIN Độc lập – Tự do – Hạnh phúc


BỘ MÔN HỆ THỐNG THÔNG TIN
Thành phố Hồ Chí Minh, ngày tháng năm

ĐỀ CƯƠNG CHI TIẾT


CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT I
(DATA STRUCTURES AND ALGORITHMS I)
MÃ MÔN HỌC: 501043
1. Thông tin chung của môn học:

Số tín chỉ: 4 (3.1)


Phân bổ thời gian: Lý thuyết/Bài tập (tiết): 45 Thực hành/Thảo luận (tiết): 30 Tự học (giờ): 120
Môn tiên quyết: Không Mã môn tiên quyết: Không
Môn học trước: Phương pháp lập trình Mã môn học trước: 501042
Môn song hành: Không Mã môn song hành: Không
Khoa học máy tính – chuyên ngành Tính toán thông minh, Mạng máy
Ngành đào tạo: Mã ngành đào tạo: 52480101
tính và các hệ thống phân tán, Công nghệ phần mềm, Hệ thống thông tin

2. Mục tiêu của môn học:


 Kiến thức: hiểu các khái niệm trong lập trình hướng đối tượng, các cấu trúc dữ liệu như: danh sách, danh sách liên kết, ngăn xếp,
hàng đợi, bảng băm; vận dụng được các giải thuật: sắp xếp, tìm kiếm; nắm vững cách tính độ phức tạp của giải thuật.
 Kỹ năng tác nghiệp: người học có khả năng xây dựng các cấu trúc dữ liệu, sử dụng các cấu trúc dữ liệu có sẵn, phân tích vấn đề để
xây dựng giải thuật phù hợp.
 Yêu cầu về tư duy: người học có khả năng lựa chọn một cấu trúc dữ liệu phù hợp với từng vấn đề, có khả năng thiết kế giải thuật, có
thể đánh giá độ phức tạp của các giải thuật.
 Thái độ và hành vi: người học được rèn luyện kỹ năng tư duy lựa chọn thuật toán và kỹ năng lập trình để giải quyết vấn đề.

1/10
3. Chuẩn đầu ra của môn học:
STT Kết quả phải đạt được
1 Biết ý tưởng và các đặc tả của các cấu trúc dữ liệu và các giải thuật.
2 Hiểu tính chất của các cấu trúc dữ liệu như danh sách, danh sách liên kết, ngăn xếp, hàng đợi, bảng băm; các giải thuật sắp xếp và
tìm kiếm; các nguyên lý của lập trình hướng đối tượng.
3 Ứng dụng được các cấu trúc dữ liệu và các giải thuật phù hợp vào từng vấn đề cụ thể.
4 Phân tích được độ phức tạp của các giải thuật thông dụng.
5 Xây dựng được các cấu trúc dữ liệu cho từng bài toán cụ thể.

4. Tóm tắt nội dung môn học:


 Các chủ đề của học phần bao gồm: khái niệm đối tượng và mô hình hóa vấn đề hướng đối tượng, lớp và phương thức, xây dựng và
giải quyết vấn đề hướng đối tượng, hiện thực các cấu trúc dữ liệu, tính trừu tượng và tính đóng gói của các cấu trúc dữ liệu, cấu trúc
lập trình hướng đối tượng, sử dụng API và thư viện, xử lý ngoại lệ, danh sách, danh sách liên kết, ngăn xếp, hàng đợi, bảng băm và
thiết kế giải thuật, các giải thuật sắp xếp và tìm kiếm, giải thuật đệ quy, độ phức tạp của giải thuật.

5. Yêu cầu đối với người học:


 Chuyên cần:
 Tham dự đầy đủ các buổi học theo thời khoá biểu.
 Chuẩn bị bài trước khi lên lớp học.
 Xây dựng kế hoạch học tập của môn học; thái độ nghiêm túc trong giờ học.
 Làm đầy đủ các bài tập theo yêu cầu của giảng viên.
 Người học tìm hiểu, trau dồi kiến thức môn học với các tài liệu có liên quan tại thư viện trường Đại học Tôn Đức Thắng.
 Bắt buộc tham gia các hoạt động trên lớp:
 Tích cực, tự giác phát biểu, trả lời câu hỏi hoặc tranh luận về học thuật.
 Hoàn thành các bài tập về nhà:
 Đọc tài liệu bắt buộc và tham khảo theo hướng dẫn; đọc các tài liệu nâng cao để mở rộng kiến thức.
 Làm đầy đủ và nộp đúng tiến độ các bài tập được giao.

6. Tài liệu học tập:


 Giáo trình chính:
[1] Janet J. Prichard, Frank M. Carrano, [2011], Data Abstraction and Problem Solving with JAVA: Walls & Mirrors, 3rd Edition,
Pearson Education, New Jersey.
2/10
 Tài liệu tham khảo chính:
[2] Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser, [2014], Data Structures and Algorithms in Java, 6th Edition,
Wiley, NJ.
[3] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, [2009], Introduction to Algorithms, 3rd Edition, MIT
Press, Boston.
 Tài liệu tham khảo khác:
[4] Robert Lafore, [2003], Data Structures and Algorithms in Java, 2nd Edition, Sams Publishing, Ind.
[5] Robert Sedgewick, Kevin Wayne, [2011], Algorithms, 4th Edition, Addison-Wesley Professional, NJ.

7. Phân loại và hình thức đánh giá kết quả học tập:
Phân loại Tỷ trọng (%) Hình thức Kiểm tra Chuẩn đầu ra
Đánh giá quá trình 1 10 Thực hành [1], [2], [3], [4], [5]
Đánh giá quá trình 2 20 Bài tập lớn [1], [2], [3], [4], [5]
Kiểm tra giữa kỳ 20 Làm bài trên máy tính [1], [2], [3], [5]
Kiểm tra cuối kỳ 50 Bài tập nhỏ [1], [2], [3], [4], [5]

8. Nội dung chi tiết môn học:


Tổ chức giảng dạy Liên quan đến Phạm vi &
Tuần Tự Chuẩn Yêu cầu đối với
Nội dung các môn điều hình thức
(Buổi) LT BT TH TL học đầu ra người học
kiện đánh giá
Chương 1. Giới thiệu ngôn ngữ Java 3 2 8 [1], [2],
(Introduction to Java) [3], [4]
1 1.1. Giới thiệu về ngôn ngữ lập trình 501042-2 Tại lớp: - Đánh giá
Java 501042-3 - Tích cực nghe quá trình 1,2
1.2. Giới thiệu các khái niệm cơ bản 501042-4 giảng, đặt câu hỏi. - Kiểm tra
trong lập trình hướng đối tượng (OOP) 501042-12 - Làm các bài tập do giữa kỳ
501042-13 giảng viên yêu cầu. - Kiểm tra
Ở nhà: cuối kỳ
- Đọc bài giảng
trước khi đến lớp
3/10
- Làm đầy đủ các
bài tập về nhà.
- Đọc [1], chương 1
Chương 2. OPP phần 1: Sử dụng 3 2 8 [1], [2],
OOP [3], [4]
(OOP Part1: User Mode)
2 2.1. Sử dụng các lớp trong thư viện 501042-3 Tại lớp: - Đánh giá
2.2. Lập trình cơ bản với lớp và đối 501042-9 - Tích cực nghe quá trình 1,2
tượng 501042-12 giảng, đặt câu hỏi. - Kiểm tra
2.3. Trừu tượng hóa và che dấu thông 501042-13 - Làm các bài tập do giữa kỳ
tin giảng viên yêu cầu. - Kiểm tra
Ở nhà: cuối kỳ
- Đọc bài giảng
trước khi đến lớp.
- Làm đầy đủ các bài
tập về nhà.
- Đọc [1], chương 2
Chương 3. Thiết kế OOP 3 2 8 [1], [2],
(OOP Part 2: Designer Mode) [3], [4]
3.1. Mô hình hóa lập trình và OOP 501042-3 Tại lớp: - Đánh giá
3 3.2. Thiết kế OOP 501042-12 - Tích cực nghe quá trình 1,2
3.3. Các khái niệm OOP 501042-13 giảng, đặt câu hỏi. - Kiểm tra
3.4. Unified Modeling Language - Làm các bài tập do giữa kỳ
(UML) giảng viên yêu cầu. - Kiểm tra
Ở nhà: cuối kỳ
- Đọc bài giảng
trước khi đến lớp.
- Làm đầy đủ các bài
tập về nhà.
- Đọc [1], chương 2
Chương 4. Các kiểu dữ liệu tập hợp 3 2 8 [1], [2],
(Collection of Data) [3], [4]

4/10
4 4.1. Array Tại lớp: - Đánh giá
4.2. Generics - Tích cực nghe quá trình 1,2
4.3. Vector giảng, đặt câu hỏi. - Kiểm tra
4.4. ArrayList - Làm các bài tập do giữa kỳ
501042-6 giảng viên yêu cầu. - Kiểm tra
501042-7 Ở nhà: cuối kỳ
- Đọc bài giảng
trước khi đến lớp.
- Làm đầy đủ các bài
tập về nhà.
- Đọc [1], chương 1
Chương 5. Thừa kế trong OOP 3 2 8 [1], [2],
(Inheritance) [3], [4]
5 5.1. Phương thức viết chống (overrding 501042-12 Tại lớp: - Đánh giá
Methods) 501042-13 - Tích cực nghe quá trình 1,2
5.2. Tạo lớp con (creating a Subclass) giảng, đặt câu hỏi. - Kiểm tra
5.3. Sự thay thế lớp con (Subclass - Làm các bài tập do giữa kỳ
Substitutability) giảng viên yêu cầu. - Kiểm tra
5.4. Lớp đặc biệt “Object” Ở nhà: cuối kỳ
5.5. “is-a” và “has-a” - Đọc bài giảng
5.6. Sư dụng “final” chống lại việc thừa trước khi đến lớp
kế - Làm đầy đủ các bài
5.7. Ràng buộc trong thừa kế của ngôn tập về nhà.
ngữ Java - Đọc [1], chương 1
- Đọc [2], chương 2:
phần 2.2
Chương 6. Xử lý ngoại lệ trong Java 3 2 8 [1], [2],
(Exceptions) [3], [4]
6 6.1. Tại sao phải xử lý ngoại lệ? Tại lớp: - Đánh giá
6.2. Xác định ngoại lệ - Tích cực nghe quá trình 1,2
6.3. Xử lý ngoại lệ giảng, đặt câu hỏi. - Kiểm tra
6.4. Luồng thực thi Execution Flow - Làm các bài tập do giữa kỳ
6.5. Phân loại ngoại lệ: Checked vs giảng viên yêu cầu. - Kiểm tra
5/10
Unchecked Ở nhà: cuối kỳ
6.6. Tự định nghĩa lớp ngoại lệ - Đọc bài giảng
trước khi đến lớp.
- Làm đầy đủ các
bài tập về nhà.
- Đọc [1], chương 1:
phần 1.6
- Đọc [2], chương 2:
phần 2.4
Chương 7. Kiểu dữ liệu trừu tượng 3 2 8 [1], [2],
(Abstract Data Type – ADT) [3], [4]
7 7.1. Các vấn đề trong công nghệ phần 501042-13 Tại lớp: - Đánh giá
mềm - Tích cực nghe quá trình 1,2
7.2. Kiểu dữ liệu trừu tượng giảng, đặt câu hỏi. - Kiểm tra
7.3. Giao tiếp của lớp trong Java (Java - Làm các bài tập do cuối kỳ
Interface) giảng viên yêu cầu.
Ở nhà:
- Đọc bài giảng
trước khi đến lớp.
- Làm đầy đủ các
bài tập về nhà.
- Đọc [1], chương 4
Chương 8. Kiểu dữ liệu trừu tượng 6 3 15 [1], [2],
List và LinkedList [3], [4]
(List ATD & Linked Lists)
8, 9 8.1. Kiểu dữ liệu danh sách (List) 501042-6 Tại lớp: - Đánh giá
8.2. Thực thi List sử dụng Array 501042-7 - Tích cực nghe quá trình 1,2
8.3. Thực thi List sử dụng danh sách giảng, đặt câu hỏi. - Kiểm tra
liên kết (linked list) - Làm các bài tập do cuối kỳ
8.4. Các kiểu danh sách liên kết khác và giảng viên yêu cầu.
các biến thể Ở nhà:
8.5. Java API: lớp LinkedList - Đọc bài giảng
trước khi đến lớp.
6/10
- Làm đầy đủ các
bài tập về nhà.
- Đọc [1], chương 5
- Đọc [2], chương 7
Chương 9. Ngăn xếp và hàng đợi 6 3 15 [1], [2],
(Stack and Queue) [3], [4]
10, 11 9.1. Stacks ADT 501042-6 Tại lớp: - Đánh giá
9.2. Thực thi Stack sử dụng Array 501042-7 - Tích cực nghe quá trình 1,2
9.3. Thực thi Stack Sử dụng Linked List giảng, đặt câu hỏi. - Kiểm tra
9.4. Queue ADT - Làm các bài tập do cuối kỳ
9.5. Thực thi Queue sử dụng Array giảng viên yêu cầu.
9.6. Thực thi Queue sử dụng Tailed Ở nhà:
Linked List - Đọc bài giảng
9.8. Các ứng dụng của Queue và Stack trước khi đến lớp.
9.9 Java API: lớp Stack và Queue - Làm đầy đủ các
bài tập về nhà.
- Đọc [1], chương 7,
chương 8
- Đọc [2], chương 6
- Đọc [3], chương
10
Chương 10. Đệ qui 3 3 9 [1], [2],
(Recursion) [3], [4]
12 10.1. Đệ qui là gì và tại sao phải sử 501042-10 Tại lớp: - Đánh giá
dụng đệ qui? - Tích cực nghe quá trình 1,2
10.2. Thể hiện đệ qui trong Java thế giảng, đặt câu hỏi. - Kiểm tra
nào? - Làm các bài tập do cuối kỳ
10.3. Các ví dụ sử dụng đệ qui giảng viên yêu cầu.
Ở nhà:
- Đọc bài giảng
trước khi đến lớp.
- Làm đầy đủ các
bài tập về nhà.
7/10
- Đọc [1], chương 3,
chương 6
- Đọc [2], chương 5

Chương 11. Phân tích thuật toán 3 3 9 [5]


(Analysis of Algorithm)
13 11.1. Giới thiệu về thuật toán Tại lớp: - Đánh giá
11.2 Phân tích thuật toán là gì? - Tích cực nghe quá trình 1,2
11.3. Tốc độ tăng của giải thuật giảng, đặt câu hỏi. - Kiểm tra
(algorithm Growth Rates) - Làm các bài tập do cuối kỳ
11.4. Kí hiệu Big-O giảng viên yêu cầu.
11.5. Tìm độ phức tạp của giải thuật Ở nhà:
- Đọc bài giảng
trước khi đến lớp.
- Làm đầy đủ các
bài tập về nhà.
- Đọc [1], chương
10
- Đọc [2], chương 4
- Đọc [3], phần I
Chương 12. Các thuật toán sắp xếp 3 2 8 [1], [2],
(Sorting) [3], [4]
14 12.1. Sắp xếp lựa chọn (Selection Sort) 501042-11 Tại lớp: - Đánh giá
12.2. Sắp xếp nổi bọt (Bubble Sort) - Tích cực nghe quá trình 1,2
12.3. Sắp xếp chèn (Insertion Sort) giảng, đặt câu hỏi. - Kiểm tra
12.4. Sắp xếp trộn (Merge Sort) - Làm các bài tập do cuối kỳ
12.5. Sắp xếp nhanh (Quick Sort) giảng viên yêu cầu.
12.6. Sắp xếp cơ số (Radix Sort) Ở nhà:
12.7. Sử dụng các phương thức sắp xếp - Đọc bài giảng
trong Java trước khi đến lớp.
- Làm đầy đủ các
bài tập về nhà.
8/10
- Đọc [1], chương
10
- Đọc [2], chương
12
- Đọc [3], phần II
Chương 13. Băm 3 2 8 [1], [2],
(Hashing) [3], [4]
15 13.1. Bảng đánh địa chỉ trực tiếp 501042-6 Tại lớp: - Đánh giá
13.2. Bảng băm (Hash Table) 501042-7 - Tích cực nghe quá trình 1,2
13.3. Hàm băm (Hash Functions) 501042-11 giảng, đặt câu hỏi. - Kiểm tra
13.4. Giải quyết xung đột - Làm các bài tập do cuối kỳ
13.5. Lớp HashMap của Java giảng viên yêu cầu.
Ở nhà:
- Đọc bài giảng
trước khi đến lớp.
- Làm đầy đủ các
bài tập về nhà.
- Đọc [1], chương
13: phần 13.2
- Đọc [2], chương
10
- Đọc [3], chương
11
Tổng 45 30 120

9/10
Giảng viên biên soạn Chịu trách nhiệm khoa học
Q. Trưởng Khoa

PGS. TS. Lê Anh Cường TS. Phạm Văn Huy

Giảng viên đọc lại, phản biện Kiểm soát so sánh mẫu
Trưởng phòng đại học

TS. Phạm Văn Huy

Kiểm soát chuyên môn Phê chuẩn của


Trưởng Bộ môn Chủ tịch hội đồng khoa học và đào tạo

PGS. TS. Lê Anh Cường GS. LÊ VINH DANH

10/10

You might also like