Đề cương môn Cấu trúc dữ liệu và giải thuật| Môn Cấu trúc dữ liệu và thuật toán| Trường Đại học Bách Khoa Hà Nội

Môn học nhằm cung cấp cho sinh viên khả năng sử dụng các cấu trúc dữ liệu nền tảng. Môn học cũng hướng dẫn sinh viên hiểu, phân tích và đánh giá được các giải thuật làm việc với các cấu trúc dữ liệu đó.

1/21
Đại Học Quốc Gia TP.HCM
Trƣờng Đại Học Bách Khoa
Khoa KH&KT Máy Tính
Vietnam National University HCMC
Ho Chi Minh City University of Technology
Faculty of Computer Science and Engineering
Đề cương môn học
CU TRÚC D LIU VÀ GII THUT
(Data Structures and Algorithms)
Số tín chỉ
4 (3.2.7)
MSMH
CO2003
Số tiết
Tổng: 75
TH:
TN: 30
BTL/TL: x
Môn ĐA, TT, LV
Tỉ lệ đánh giá
BT: 15%
KT: 0%
BTL/TL: 25%
Thi: 50%
Hình thức đánh giá
- Bài tập: sinh viên làm trước bài tập nhà; bài tập được chấm theo
cách chấm được nêu trong cột cuối cùng của bảng danh mục các bài
tập (thực hành), được trình bày ở phần sau, gần cuối bản đề cương.
- Thí nghiệm: sinh viên làm trước các bài thí nghiệm nhà; các bài thí
nghiệm được chấm theo cách chấm được nêu trong cột cuối cùng của
bảng danh mục các thí nghiệm, được trình bày phần sau, gần cuối
bản đề cương.
- Thi: viết và trắc nghiệm, 120 phút
Môn tiên quyết
Không
Môn học trước
Kỹ thuật Lập trình
CO1011
Môn song hành
Không
CTĐT ngành
Khoa Học Máy Tính và Kỹ Thuật Máy Tính
Trình độ đào tạo
Đại học
Cấp độ môn học
Cấp độ 2 (dạy cho sinh viên năm 2)
Ghi chú khác
1. Mục tiêu của môn học
Môn hc nhằm cung cấp cho sinh viên khả năng sử dụng các cấu trúc dữ liệu nền tảng. Môn học
cũng hướng dẫn sinh viên hiểu, phân tích đánh giá được các giải thuật làm việc với các cấu trúc
dữ liệu đó.
Aims:
This course is to provide students abilities to use fundamental data structures. It also helps students
understanding, analyzing, and evaluating algorithms associated with those data structures.
2. Nội dung tóm tắt môn học
Ôn lại về lập trình, các kiểu dữ liệu trong C/C++, đặc biệt là cấu trúc và con trỏ.
Giới thiệu về độ phc tp tính toán và đệ qui.
Các cấu trúc dliệu sự phân tích chúng: danh sách; chng ng; y, cây nhị phân,
cây nhị phân tìm kiếm, AVL và đa phân; heap; giải thuật sắp xếp; bảng băm; và đồ thị.
2/21
Course outline:
Review on programming and data types in C/C++, especially, struct and pointer.
Basics of computational complexity and recursive algorithms.
Data structures and their analysis: list, stack and queue, tree, binary tree, binary search tree,
AVL and M-ways tree, sorting, hashing table, and graph
3. Tài liệu học tập
Sách, Giáo trình chính:
[1]. Data Structures: a Pseudocode Approach with C++”, R.F.Gilberg and B.A. Forouzan,
Thomson Learning Inc., 2001.
Sách tham khảo:
[1] Data Structures and Algorithms in C++”, A. Drozdek, Thomson Learning Inc., 2005.
[2] C/C++: How to Program”, 7
th
Ed. Paul Deitel and Harvey Deitel, Prentice Hall, 2012.
[3] Internet.
4. Hiểu biết, kỹ năng, thái độ cần đạt đƣợc sau khi học môn học
STT
Chuẩn đầu ra môn học
CDIO
L.O.1
Phân tích gii thut
L.O.1.1 Định nghĩa được các khái niệm độ phức tạp độ phức tạp
trong các trường hợp “tốt nhất”, “xấu nhất”, và “trung bình”.
L.O.1.2 Phân tích được các giải thuật sử dụng được ký hiệu “Big O”
để ghi ra độ phức tạp của giải thuật cấu thành từ các cấu trúc điều khiển:
tuần tự, rẽ nhánh và lặp.
L.O.1.3 Liệt được, cho được dụ so sánh được các lớp độ phức
tạp, như, hằng số, log, tuyến tính, etc.
L.O.1.4 Nhận thức được sự cân bằng giữa bộ nhớ thời gian trong giải
thuật.
L.O.1.5 tả được các chiến lược thiết kế giải thuật giải quyết bài
toán.
L.O.2
S dng cu trúc d liu danh sách, chng và hàng
L.O.2.1 Phát họa được bằng hình nh cho: (a) danh sách hiện thực bằng
mảng bằng liên kết (con trỏ); (b) cho chồng; (c) cho hàng đợi
hàng đợi vòng (mức logic).
L.O.2.2 Viết được bằng mã giả tả cấu trúc lưu trữ cho: (a) danh sách
hiện thực bằng mảng bằng liên kết; (b) cho chồng; (c) cho hàng đợi
và hàng đợi vòng (mức logic).
L.O.2.3 Liệt được các phương thức cần thiết cho từng cấu trúc như
danh sách, chồng hàng đợi; cũng như tả được chúng bằng giả
(mức logic).
L.O.2.4 Hiện thực được các cấu trúc danh sách, chồng và hàng đợi bằng
C/C++ (mức physics)
L.O.2.5 Sử dụng được danh sách, chồng, hàng để giải quyết bài toán
thực, cũng như cân nhắc chọn lựa kiểu hiện thực tối ưu.
L.O.2.6 Phân tích được làm thí nghiệm đánh giá các phương thức đã
hổ trợ cho các cấu trúc danh sánh, chồng, và hàng.
3/21
L.O.3
Sử dụng cấu trúc cây
L.O.3.1 Phát họa được bằng hình ảnh cho các cây tiêu biểu, như, cây nhị
phân, y nhị phân đầy đủ, cây nhị phân cân bằng, cây AVL, cây đa phân,
v.v. (mức logic).
L.O.3.2 Viết được bằng giả tả cấu trúc lưu trữ cho các loại cây
(mức logic)
L.O.3.3 Liệt kê được các phương thức cần thiết cho cho các cấu trúc cây;
cũng như mô tả được chúng bằng mã giả (mức logic).
L.O.3.4 Chỉ ra được và cho dụ minh họa về tầm quan trọng của tính
cân bằng trong cây.
L.O.3.5 Chỉ ra được vẽ hình minh họa về tất cả các trường mất cân
bằng trong y AVL y B, cũng như thực hiện từng bước để tái cân
bằng chúng trên hình vẽ (mức logic).
L.O.3.6 Hiện thực được các cấu trúc y nhị phân y AVL bằng
C/C++
L.O.3.7 Sử dụng được cây nhị phân và cây AVL để giải quyết bài toán
thực, đặc biệt là liên quan đến tìm kiếm.
L.O.3.8 Phân tích được làm thực nghiệm đánh giá được các phương
thức đã hổ trợ cho các cấu trúc cây nhị phân và cây AVL.
L.O.4
Sử dụng Heap
L.O.4.1 Chỉ ra được những ứng dụng cần đến Heap
L.O.4.2 Phác họa được bằng hình ảnh cho cấu trúc Heap nêu ra sự
liên quan đến lưu trữ ở dạng mảng.
L.O.4.3 Liệt được các phương thức cần thiết cho cho cấu trúc heap;
cũng như mô tả được chúng bằng mã giả (mức logic).
L.O.4.4 Phác họa được bằng hình ảnh các phương thức để đảm bảo tính
chất của cấu trúc Heap khi đưa vào hay lấy ra phần tử trong heap (mức
logic).
L.O.4.5 Hiện thực được cấu trúc heap bằng C/C++.
L.O.4.6 Phân tích được làm thực nghiệm đánh giá được các phương
thức đã hổ trợ cho cấu trúc Heap.
L.O.5
Sử dụng bảng băm
L.O.5.1 Vẽ được hình minh họa một bảng băm cùng với khái niệm về
khóa, đụng độ và giải quyết đụng độ.
L.O.5.2 tả được bằng giả cho dminh họa cho các hàm
băm cơ bản.
L.O.5.3 tả được bằng mã giả và cho dụ minh họa cho các phương
thức giải quyết đụng độ.
L.O.5.4 Hiện thực được cấu trúc bảng băm bằng C/C++.
L.O.5.5 Phân tích được làm thực nghiệm đánh giá được các phương
thức đã hổ trợ cho cấu trúc bảng băm.
L.O.6
Phát triển các giải thuật sắp xếp
L.O.6.1 Minh họa được bằng hình vẽ từng bước hoạt động của các giải
thuật sắp xếp.
L.O.6.2 Mô tả được bằng mã giả cho các giải thuật sắp xếp.
L.O.6.3 Hiện thực được các giải thuật sắp xếp bằng C/C++ .
L.O.6.4 Phân tích được làm thực nghiệm đánh giá các giải thuật sắp
4/21
xếp.
L.O.6.5 Sử dụng được giải thuật sắp xếp trong bài toán thực.
L.O.7
Hiểu biết cơ bản về đồ thị
L.O.7.1 Phát họa được bằng hình ảnh cho các khái niệm như đồ thị liên
thông và không liên thông, đồ thị có hướng và không hướng, chu trình, v.v.
L.O.7.2 Vẽ được hình minh họa tả cấu trúc lưu trữ cho đồ thị
các dạng ma trận kề và danh sách kề bằng mã giả (mức logic).
L.O.7.3 Liệt được các phương thức cần thiết cho cho các cấu trúc đồ
thị; cũng như mô tả được chúng bằng mã giả (mức logic).
L.O.7.4 Minh họa được bằng hình ảnh các phương pháp duyệt đồ thị
bản (depth first and bread-first).
L.O.7.5 Hiện thực được cấu trúc lưu trữ đồ thì bằng C/C++.
L.O.7.6 Hiện thực được các phương pháp duyệt nói trên bằng C/C++
sử dụng chúng giải quyết bài toán thực.
L.O.7.7 Minh họa bằng hình vẽ từng bước hoạt động của các giải thuật
tìm đường ngắn nhất bằng Dijktra giải thuật tìm cây phủ tối tiểu bằng
giải thuật Prim.
L.O.8
Sử dụng đệ quy
L.O.8.1 Mô tả được các thành phần cơ bản của một giải thuật đệ quy.
L.O.8.2 Vẽ được cây tả các lần gọi hàm giá trị của các tham số
được truyền vào các hàm đó.
L.O.8.3 Cho được ví dụ về một hàm gọi đệ quy viết bằng C/C++.
L.O.8.4 Phát triển được giải thuật đệ quy cho các phương thức cần thiết
của các cấu trúc: danh sách, y, heap, tìm kiếm trên cây tìm kiếm nhị
phân, và đồ thị.
L.O.8.5 Làm được thí nghiệm để so sánh cách tiếp cận đquy cách
lặp.
L.O.8.6 Cho được dụ minh họa sự liên quan giữa Backtracking đệ
quy.
Index
Course learning outcomes
CDIO
L.O.1
Analyze algorithms
L.O.1.1 Define concept “computational complexity” and its sepcial
cases, best, average, and worst.
L.O.1.2 Analyze algorithms and use Big-O notation to characterize the
computational complexity of algorithms composed by using the following
control structures: sequence, branching, and iteration (not recursion).
L.O.1.3 List, give examples, and compare complexity classes, for
examples, constant, linear, etc.
L.O.1.4 Be aware of the trade-off between space and time in solutions
L.O.1.5 Describe strategies in algorithm design and problem solving
L.O.2
Use data structures: list, stack and queue
L.O.2.1 Depict the following concepts: (a) array list and linked list,
including single link and double links, and multiple links; (b) stack; and (c)
queue and circular queue.
L.O.2.2 Describe storage structures by using pseudocode for: (a) array
list and linked list, including single link and double links, and multiple
5/21
links; (b) stack; and (c) queue and circular queue.
L.O.2.3 List necessary methods supplied for list, stack, and queue, and
describe them using pseudocode.
L.O.2.4 Implement list, stack, and queue using C/C++.
L.O.2.5 Use list, stack, and queue for problems in real-life, and choose
an appropriate implementation type (array vs. link).
L.O.2.6 Analyze the complexity and develop experiment (program) to
evaluate the efficiency of methods supplied for list, stack, and queue.
L.O.3
Use tree structure
L.O.3.1 Depict the following concepts: binary tree, complete binary
tree, balanced binary tree, AVL tree, multi-way tree, etc.
L.O.3.2 Describe the strorage structure for tree structures using
pseudocode.
L.O.3.3 List necessary methods supplied for tree structures, and describe
them using pseudocode.
L.O.3.4 Identify the importance of “blanced” feature in tree structures
and give examples to demonstate it.
L.O.3.5 Identiy cases in which AVL tree and B-tree are unblanced, and
demonstrate methods to resolve all the cases step-by-step using figures.
L.O.3.6 Implement binary tree and AVL tree using C/C++
L.O.3.7 Use binary tree and AVL tree to solve problems in real-life,
especially related to searching techniques.
L.O.3.8 Analyze the complexity and develop experiment (program) to
evaluate methods supplied for tree structures.
L.O.4
Use heap structure
L.O.4.1 List some applications of Heap.
L.O.4.2 Depict heap structure and relate it to array.
L.O.4.3 List necessary methods supplied for heap structure, and describe
them using pseudocode.
L.O.4.4 Depict the working steps of methods that maintain the
characteristics of heap structure for the cases of adding/removing elements
to/from heap.
L.O.4.5 Implement heap using C/C++.
L.O.4.6 Analyze the complexity and develop experiment (program) to
evaluate methods supplied for heap structures.
L.O.5
Use hash structure
L.O.5.1 Depict the following concepts: hashing table, key, collision, and
collision resolution.
L.O.5.2 Describe hashing functions using pseudocode and give examples
to show their algorithms.
L.O.5.3 Describe collision resolution methods using pseudocode and
give examples to show their algorithms.
L.O.5.4 Implement hashing tables using C/C++.
L.O.5.5 Analyze the complexity and develop experiment (program) to
evaluate methods supplied for hashing tables.
L.O.6
Use sorting
L.O.6.1 Depict the working steps of sorting algorithms step-by-steps.
6/21
L.O.6.2 Describe sorting algorithms by using pseudocode.
L.O.6.3 Implement sorting algorithms using C/C++ .
L.O.6.4 Analyze the complexity and develop experiment (program) to
evaluate sorting algorithms.
L.O.6.5 Use sorting algorithms for problems in real-life.
L.O.7
Basically understand graph structure
L.O.7.1 Depict the following concepts: connected graph, disconnected
graph, direct/undirect graph, etc.
L.O.7.2 Depict storage structures for graph and describe graph using
pseudocode in the cases of using adjacency matric and adjacency list.
L.O.7.3 List necessary methods supplied for graph, and describe them
using pseudocode.
L.O.7.4 Depict basic traversal methods step-by-step (depth first and
bread-first).
L.O.7.5 Implement storage structures for graphs using C/C++.
L.O.7.6 Implement basic traversal methods using C/C++.
L.O.7.7 Depict the working steps of Dijktra and Prim step-by-step.
L.O.8
Use recursion
L.O.8.1 Describe the basic components of recursive algorithms
(functions).
L.O.8.2 Draw trees to illustrate callings and the value of parameters
passed to them for recursive algorithms.
L.O.8.3 Give examples for recursive functions written in C/C++.
L.O.8.4 Develop recursive implementations for methods supplied for the
following structures: list, tree, heap, searching, and graphs.
L.O.8.5 Develop experiment (program) to compare the recursive and the
iterative approach.
L.O.8.6 Give examples to relate recursion to backtracking technique.
5. Hƣớng dẫn cách học - chi tiết cách đánh giá môn học
Hướng dẫn cách học:
Tài liệu học tập bao gồm: đề cương môn học, slide bài giảng, bài tập, bài thí nghiệm, và bài
tập lớn được lưu trữ trên y chủ quản lý liệu học tập của khoa (trường) . Sinh viên tải
về, in ra và mang theo khi lên lớp học.
Sinh viên cần làm thêm các bài tập các bài thực hành. Sinh viên nên tham gia làm bài tập
online trên hệ thống máy chủ nói trên, cũng như sử dụng hệ thống này để trao đổi với sinh
viên khác, TA, và giảng viên.
Sinh viên nên đi học đầy đủ làm bài tập trong quá trình học sẽ giúp tiết kiệm thời gian
trong quá trình ôn thi giữa kỳ và cuối kỳ.
Đối với phần thực hành và bài tập, sinh viên tham gia đầy đủ các buổi thí nghiệm và nộp lại
báo cáo thí nghiệm ngay cuối giờ thí nghiệm.
Chi tiết cách đánh giá môn học:
Thực hành (15%):
Bài tập (10%):
Bải tập lớn (25%):
7/21
Thi cuối kỳ (50%)
6. Dự kiến danh sách Cán bộ tham gia giảng dạy
TS. Lê Thành Sách
TS. Huỳnh Tường Nguyên
Th.S. Trần Giang Sơn
Th.S. Nguyễn Trung Trực
Th.S. Võ Thanh Hùng
Th.S. Vương Bá Thịnh
7. Nội dung chi tiết
Nội dung phần lý thuyết
Tuần
/Tiết
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy và học
Hoạt động
đánh giá
Xem
bảng
phân
tiết
Chƣơng 1. Giới thiệu
1.1. Giới thiệu về môn học
1.2. Các khái niệm: d liệu, kiểu dữ
liệu, kiểu dữ liệu trừu tượng, cấu
trúc dữ liệu, giải thuật.
1.3. Ôn tập về struct, class, con trỏ, và
mảng.
1.4. i tập
Yêu cầu tự học đ/v sinh viên: 8 giờ
- Giảng lý thuyết
- Bài tập trên lớp
- Bài tập
- Bài thí nghiệm
- Bài tập lớn
- Bài thi
Chƣơng 2. Độ phức tạp giải thuật
2.1. Khái niệm độ phức tạp
2.2. Ký hiệu Big-O và các trường hợp
2.3. Các bài toán các độ phức tạp
thường gặp
2.4. Giới thiệu về P và NP
2.5. Bài tập
Yêu cầu tự học đ/v sinh viên: 8 giờ
L.O.1.1 Định nghĩa
được các khái niệm đ
phức tạp độ phức
tạp trong các trường
hợp “tốt nhất”, “xấu
nhất”, và “trung bình”.
L.O.1.2 Phân tích
được các giải thuật
sử dụng được hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật
cấu thành từ các cấu
trúc điều khiển: tuần
tự, rẽ nhánh và lặp.
L.O.1.3 Liệt kê được,
cho được dụ so
sánh được các lớp độ
phức tạp, như, hằng số,
log, tuyến tính, etc.
L.O.1.4 Nhận thức
được sự n bằng giữa
bộ nhớ thời gian
trong giải thuật.
L.O.1.5 tả được
các chiến lược thiết kế
giải thuật giải quyết
bài toán.
- Giảng lý thuyết
- Bài tập trên lớp
- Bài tập
- Bài thí nghiệm
- Bài tập lớn
- Bài thi
Chƣơng 3. Đệ quy
L.O.8.1 tả được
các thành phần bản
- Giảng lý thuyết
- Bài tập trên lớp
- Bài tập
- Bài thí nghiệm
8/21
Tuần
/Tiết
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy và học
Hoạt động
đánh giá
3.1 Đệ quy các thành phần bản
của giải thuật đệ quy.
3.2 Đệ quy và C/C++.
3.3 Tính chất của đệ quy.
3.4 Thiết kế giải thuật đệ qui
3.5 Đệ quy và kỹ thuật quay lui
3.6 Bài tập
Yêu cầu tự học đ/v sinh viên: 8 giờ
của một giải thuật đệ
quy.
L.O.8.2 Vẽ được y
tả các lần gọi hàm
giá trị của các tham
số được truyền vào các
hàm đó.
L.O.8.3 Cho được
dụ về một hàm gọi đệ
quy viết bằng C/C++.
L.O.8.5 Làm được
thí nghiệm để so sánh
cách tiếp cận đệ quy
cách lặp.
L.O.8.6 Cho được
dụ minh họa sự liên
quan giữa Backtracking
và đệ quy.
- Bài tập lớn
- Bài thi
Chƣơng 4. Danh sách
4.1 Khái niệm và ứng dụng
4.2 Hiện thực bằng mảng (array)
4.3 Hiện thực bằng liên kết đơn
4.4 Các dạng liên kết phức tạp khác
4.5 Đánh giá các dạng hiện thực
4.1. i tập
Yêu cầu tự học đ/v sinh viên: 8
L.O.2.1 Phát họa
được bằng hình ảnh
cho: (a) danh sách hiện
thực bằng mảng
bằng liên kết (con trỏ);
(b) cho chồng; (c)
cho hàng đợi hàng
đợi vòng (mức logic).
L.O.2.2 Viết được
bằng giả tả cấu
trúc u tr cho: (a)
danh sách hiện thực
bằng mảng bằng
liên kết; (b) cho chồng;
(c) cho ng đợi
hàng đợi vòng (mức
logic).
L.O.2.3 Liệt được
các phương thức cần
thiết cho từng cấu trúc
như danh sách, chồng
hàng đợi; cũng như
tả được chúng bằng
mã giả (mức logic).
L.O.2.4 Hiện thực
được các cấu trúc danh
sách, chồng hàng
đợi bằng C/C++ (mức
physics)
L.O.2.5 Sử dụng
được danh sách, chồng,
hàng để giải quyết
bài toán thực, cũng n
cân nhắc chọn lựa kiểu
hiện thực tối ưu.
L.O.2.6 Phân tích
được và làm thí nghiệm
đánh giá các phương
- Giảng lý thuyết
- Bài tập trên lớp
- Bài tập
- Bài thí nghiệm
- Bài tập lớn
- Bài thi
9/21
Tuần
/Tiết
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy và học
Hoạt động
đánh giá
thức đã hổ trợ cho các
cấu trúc danh sánh,
chồng, và hàng.
L.O.8.4 Phát triển
được giải thuật đệ quy
cho các phương thức
cần thiết của các cấu
trúc: danh sách, y,
heap, m kiếm trên cây
m kiếm nhị phân,
và đồ thị.
L.O.1.2 Phân tích
được các giải thuật
sử dụng được hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật
cấu thành từ các cấu
trúc điều khiển: tuần
tự, rẽ nhánh và lặp.
Chƣơng 5. Chồng và Hàng
5.1 Các ứng dụng của chồng & hàng
5.2 Các tác vụ cơ bản trên chồng
5.3 Hiện thực chồng bằng danh sách
liên kết và mảng
5.4 Các tác vụ cơ bản trên hàng
5.5 Hiện thực ng bằng danh sách
liên kết và mảng
5.6 Bài tập
Yêu cầu tự học đ/v sinh viên: 8 giờ
L.O.2.1 Phát họa
được bằng hình ảnh
cho: (a) danh sách hiện
thực bằng mảng
bằng liên kết (con trỏ);
(b) cho chồng; (c)
cho hàng đợi hàng
đợi vòng (mức logic).
L.O.2.2 Viết được
bằng giả tả cấu
trúc u tr cho: (a)
danh sách hiện thực
bằng mảng bằng
liên kết; (b) cho chồng;
(c) cho ng đợi
hàng đợi vòng (mức
logic).
L.O.2.3 Liệt được
các phương thức cần
thiết cho từng cấu trúc
như danh sách, chồng
hàng đợi; cũng như
tả được chúng bằng
mã giả (mức logic).
L.O.2.4 Hiện thực
được các cấu trúc danh
sách, chồng hàng
đợi bằng C/C++ (mức
physics)
L.O.2.5 Sử dụng
được danh sách, chồng,
hàng để giải quyết
bài toán thực, cũng n
cân nhắc chọn lựa kiểu
hiện thực tối ưu.
L.O.2.6 Phân tích
được và làm thí nghiệm
đánh giá các phương
- Giảng lý thuyết
- Bài tập trên lớp
- Bài tập
- Bài thí nghiệm
- Bài tập lớn
- Bài thi
10/21
Tuần
/Tiết
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy và học
Hoạt động
đánh giá
thức đã hổ trợ cho các
cấu trúc danh sánh,
chồng, và hàng.
L.O.8.4 Phát triển
được giải thuật đệ quy
cho các phương thức
cần thiết của các cấu
trúc: danh sách, y,
heap, m kiếm trên cây
m kiếm nhị phân,
và đồ thị.
L.O.1.2 Phân tích
được các giải thuật
sử dụng được hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật
cấu thành từ các cấu
trúc điều khiển: tuần
tự, rẽ nhánh và lặp.
Kiểm tra giữa kỳ
Chƣơng 6. Cây
6.1 Các khái niệm căn bản về cây
ứng dụng
6.2 Cây nhị phân
6.3 Cấu trúc lưu trữ các phương
thức
6.4 Cây nhị phân tìm kiếm
6.5 Cây biểu thức
6.6 i tập
Yêu cầu tự học đ/v sinh viên: 8 giờ
L.O.3.1 Phát họa
được bằng hình ảnh
cho các cây tiêu biểu,
như, cây nhị phân, cây
nhị phân đầy đủ, y
nhị phân n bằng, cây
AVL, cây đa phân, v.v.
(mức logic).
L.O.3.2 Viết được
bằng giả tả cấu
trúc lưu trữ cho c
loại cây (mức logic)
L.O.3.3 Liệt được
các phương thức cần
thiết cho cho các cấu
trúc y; cũng như
tả được chúng bằng
giả (mức logic).
L.O.3.4 Chỉ ra được
cho dụ minh họa
về tầm quan trọng của
tính cân bằng trong
cây.
L.O.3.5 Chỉ ra được
vẽ hình minh họa về
tất cả các trường mất
cân bằng trong cây
AVL cây B, cũng
như thực hiện từng
bước để tái cân bằng
chúng trên hình vẽ
(mức logic).
L.O.3.6 Hiện thực
được các cấu trúc y
nhị phân và cây AVL
bằng C/C++
L.O.3.7 Sử dụng
được cây nhị phân
- Giảng lý thuyết
- Bài tập trên lớp
- Bài tập
- Bài thí nghiệm
- Bài tập lớn
- Bài thi
11/21
Tuần
/Tiết
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy và học
Hoạt động
đánh giá
cây AVL để giải quyết
bài toán thực, đặc biệt
liên quan đến m
kiếm.
L.O.3.8 Phân tích
được làm thực
nghiệm đánh giá được
các phương thức đã hổ
trợ cho các cấu trúc cây
nhị phân và cây AVL.
L.O.8.4 Phát triển
được giải thuật đệ quy
cho các phương thức
cần thiết của các cấu
trúc: danh sách, y,
heap, m kiếm trên cây
m kiếm nhị phân,
và đồ thị.
L.O.1.2 Phân tích
được các giải thuật
sử dụng được hiệu
“Big O” đ ghi ra đ
phức tạp của giải thuật
cấu thành từ các cấu
trúc điều khiển: tuần
tự, rẽ nhánh và lặp.
Chƣơng 7. Cây AVL
7.1 Cây AVL: Khái niệm, ưu điểm
ứng dụng
7.2 Cấu trúc lưu trữ các phương
thức
7.3 Cân bằng cây AVL
7.4 Cây đa phân: khái niệm, ưu điểm
và ứng dụng
7.5 Cây B-Tree: khái niệm
7.6 Cân bằng cây B-Tree
7.7 i tập
Yêu cầu tự học đ/v sinh viên: 16 giờ
L.O.3.1 Phát họa
được bằng hình ảnh
cho các cây tiêu biểu,
như, cây nhị phân, cây
nhị phân đầy đủ, y
nhị phân n bằng, cây
AVL, cây đa phân, v.v.
(mức logic).
L.O.3.2 Viết được
bằng giả tả cấu
trúc lưu trữ cho c
loại cây (mức logic)
L.O.3.3 Liệt được
các phương thức cần
thiết cho cho các cấu
trúc y; cũng như
tả được chúng bằng
giả (mức logic).
L.O.3.4 Chỉ ra được
cho dụ minh họa
về tầm quan trọng của
tính cân bằng trong
cây.
L.O.3.5 Chỉ ra được
vẽ hình minh họa về
tất cả các trường mất
cân bằng trong cây
AVL cây B, cũng
như thực hiện từng
bước để tái cân bằng
chúng trên hình vẽ
(mức logic).
- Giảng lý thuyết
- Bài tập trên lớp
- Bài tập
- Bài thí nghiệm
- Bài tập lớn
- Bài thi
12/21
Tuần
/Tiết
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy và học
Hoạt động
đánh giá
L.O.3.6 Hiện thực
được các cấu trúc y
nhị phân và cây AVL
bằng C/C++
L.O.3.7 Sử dụng
được cây nhị phân
cây AVL để giải quyết
bài toán thực, đặc biệt
liên quan đến m
kiếm.
L.O.3.8 Phân tích
được làm thực
nghiệm đánh giá được
các phương thức đã hổ
trợ cho các cấu trúc cây
nhị phân và cây AVL.
L.O.8.4 Phát triển
được giải thuật đệ quy
cho các phương thức
cần thiết của các cấu
trúc: danh sách, y,
heap, m kiếm trên cây
m kiếm nhị phân,
và đồ thị.
L.O.1.2 Phân tích
được các giải thuật
sử dụng được hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật
cấu thành từ các cấu
trúc điều khiển: tuần
tự, rẽ nhánh và lặp.
Chƣơng 8. Heap
8.1 Khái niệm và ứng dụng
8.2 Cấu trúc lưu trữ và các phép toán
8.3 Bài tập
Yêu cầu tự học đ/v sinh viên: 4 giờ
L.O.4.1 Chỉ ra được
những ứng dụng cần
đến Heap
L.O.4.2 Phác họa
được bằng hình ảnh
cho cấu trúc Heap
nêu ra sự liên quan đến
lưu trữ ở dạng mảng.
L.O.4.3 Liệt được
các phương thức cần
thiết cho cho cấu trúc
heap; cũng n mô tả
được chúng bằng
giả (mức logic).
L.O.4.4 Phác họa
được bằng hình ảnh các
phương thức đ đảm
bảo tính chất của cấu
trúc Heap khi đưa vào
hay lấy ra phần tử
trong heap (mức logic).
L.O.4.5 Hiện thực
được cấu trúc heap
bằng C/C++.
L.O.4.6 Phân tích
được làm thực
nghiệm đánh giá được
- Giảng lý thuyết
- Bài tập trên lớp
- Bài tập
- Bài thí nghiệm
- Bài tập lớn
- Bài thi
13/21
Tuần
/Tiết
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy và học
Hoạt động
đánh giá
các phương thức đã hổ
trợ cho cấu trúc Heap.
L.O.8.4 Phát triển
được giải thuật đệ quy
cho các phương thức
cần thiết của các cấu
trúc: danh sách, y,
heap, m kiếm trên cây
m kiếm nhị phân,
và đồ thị.
L.O.1.2 Phân tích
được các giải thuật
sử dụng được hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật
cấu thành từ các cấu
trúc điều khiển: tuần
tự, rẽ nhánh và lặp.
Chƣơng 9. Bảng băm
9.1 Khái niệm và ứng dụng
9.2 Các hàm băm
9.3 Các phương pháp giải quyết đụng
độ
9.4 Bài tập
Yêu cầu tự học đ/v sinh viên: 8 giờ
L.O.5.1 Vẽ được
hình minh họa một
bảng băm ng với
khái niệm về khóa,
đụng độ giải quyết
đụng độ.
L.O.5.2 tả được
bằng giả cho
dụ minh họa cho các
hàm băm cơ bản.
L.O.5.3 tả được
bằng giả cho
dụ minh họa cho các
phương thức giải quyết
đụng độ.
L.O.5.4 Hiện thực
được cấu trúc bảng
băm bằng C/C++.
L.O.5.5 Phân tích
được làm thực
nghiệm đánh giá được
các phương thức đã hổ
trợ cho cấu trúc bảng
băm.
L.O.1.2 Phân tích
được các giải thuật
sử dụng được hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật
cấu thành từ các cấu
trúc điều khiển: tuần
tự, rẽ nhánh và lặp.
- Giảng lý thuyết
- Bài tập trên lớp
- Bài tập
- Bài thí nghiệm
- Bài tập lớn
- Bài thi
Chƣơng 10. Sắp xếp
10.1 Khái niệm và ứng dụng
10.2 Các giải thuật chèn
10.3 Các giải thuật chọn
10.4 Các giải thuật trao đổi
10.5 Các giải thuật sắp xếp ngoài
10.6 Bài tập
Yêu cầu tự học đ/v sinh viên: 8 giờ
L.O.6.1 Minh họa
được bằng hình vẽ từng
bước hoạt động của các
giải thuật sắp xếp.
L.O.6.2 tả được
bằng giả cho c
giải thuật sắp xếp.
L.O.6.3 Hiện thực
được các giải thuật sắp
xếp bằng C/C++ .
- Giảng lý thuyết
- Bài tập trên lớp
- Bài tập
- Bài thí nghiệm
- Bài tập lớn
- Bài thi
14/21
Tuần
/Tiết
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy và học
Hoạt động
đánh giá
L.O.6.4 Phân tích
được làm thực
nghiệm đánh giá các
giải thuật sắp xếp.
L.O.6.5 Sử dụng
được giải thuật sắp xếp
trong bài toán thực.
L.O.8.4 Phát triển
được giải thuật đệ quy
cho các phương thức
cần thiết của các cấu
trúc: danh sách, y,
heap, m kiếm trên cây
m kiếm nhị phân,
và đồ thị.
L.O.1.2 Phân tích
được các giải thuật
sử dụng được hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật
cấu thành từ các cấu
trúc điều khiển: tuần
tự, rẽ nhánh và lặp.
Chƣơng 11. Đồ thị
11.1 Khái niệm và ứng dụng
11.2 Cấu trúc lưu trữ các phương
thức
11.3 Cây phủ tối thiểu
11.4 Đường đi ngắn nhất
11.5 Các bài toán ứng dụng trên đồ thị
11.6 i tập
Yêu cầu tự học đ/v sinh viên: 8 giờ
L.O.7.1 Phát họa
được bằng hình ảnh
cho các khái niệm như
đồ thị liên thông
không liên thông, đồ
thị hướng không
hướng, chu trình, v.v.
L.O.7.2 Vẽ được
hình minh họa mô tả
cấu trúc u trữ cho đồ
thị các dạng ma trận
kề danh sách kề
bằng giả (mức
logic).
L.O.7.3 Liệt được
các phương thức cần
thiết cho cho các cấu
trúc đồ thị; cũng như
tả được chúng bằng
mã giả (mức logic).
L.O.7.4 Minh họa
được bằng hình ảnh các
phương pháp duyệt đồ
thị bản (depth first
and bread-first).
L.O.7.5 Hiện thực
được cấu trúc lưu tr
đồ thì bằng C/C++.
L.O.7.6 Hiện thực
được các phương pháp
duyệt nói trên bằng
C/C++ sử dụng
chúng giải quyết bài
toán thực.
L.O.7.7 Minh họa
- Giảng lý thuyết
- Bài tập trên lớp
- Bài tập
- Bài thí nghiệm
- Bài tập lớn
- Bài thi
15/21
Tuần
/Tiết
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy và học
Hoạt động
đánh giá
bằng hình vẽ từng bước
hoạt động của các giải
thuật tìm đường ngắn
nhất bằng Dijktra
giải thuật m y phủ
tối tiểu bằng giải thuật
Prim.
L.O.8.4 Phát triển
được giải thuật đệ quy
cho các phương thức
cần thiết của các cấu
trúc: danh sách, y,
heap, m kiếm trên cây
m kiếm nhị phân,
và đồ thị.
L.O.1.2 Phân tích
được các giải thuật
sử dụng được hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật
cấu thành từ các cấu
trúc điều khiển: tuần
tự, rẽ nhánh và lặp.
Review
**
Nội dung giới hạn cho kiểm tra giữa
kỳ (tập trung)
Chương 1 – 5
Ứơc nh số giờ SV cần chuẩn bị để
kiểm tra giữa kỳ: 12
**
Nội dung thi cuối kỳ (tập trung)
Các chương còn lại.
Ứơc tính số giờ SV cần chuẩn bị để thi
cuối kỳ: 16
Bảng phân tiết
Chƣơng
1
2
3
4
5
6
7
8
9
10
11
Số tiết
3
3
3
6
2
4
6
2
4
6
6
Nội dung phần thực hành (bài tập)
Tuần
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy/học
Hoạt động
đánh giá
1
Bài tập số 1: Phân tích độ phức tạp
1.1. Phân tích độ phức tạp của giải
thuật lặp sử dụng hiệu Big-
O để mô tả.
1.2. Các lớp độ phức tạp và so sánh
1.3. Phát triển giải thuật cho một số
bài toàn tiêu biểu phân tích
chúng
Yêu cầu tự học đ/v sinh viên:
L.O.1.2 Phân tích
được các giải thuật
sử dụng được hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật
cấu thành từ các cấu
trúc điều khiển: tuần
tự, rẽ nhánh và lặp.
L.O.1.3 Liệt kê được,
cho được dụ so
sánh được các lớp độ
phức tạp, như, hằng số,
log, tuyến tính, etc.
Thầy/Cô:
- Hướng dẫn làm bài
tiêu biểu.
- Phân tích chỉnh
sửa bài giải của sinh
viên làm trên bảng
hay làm trên giấy (lấy
ngẫu nhiên)
Sinh viên:
- Làm trước bài tập
nhà vào giấy (đề lấy
từ hệ thống máy chủ
Đánh giá trên
thái độ tham gia
các buổi bài tập,
sự chuyên cần,
và chất lượng bài
giải của sinh viên
trên bảng hay bài
giải nộp cho
giảng viên
16/21
Tuần
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy/học
Hoạt động
đánh giá
L.O.1.5 tả được
các chiến lược thiết kế
giải thuật giải quyết
bài toán.
quản lý liệu học
tập).
- Lên bảng m c
bài tập theo yêu cầu
của giảng viên.
- Nộp lời giải cho
giảng viên cuối
buổi.
2
Bài tập số 2: Sử dụng danh sách
2.1. tả ý tưởng hiện thực danh
sách bằng hình ảnh bằng
giả.
2.2. Viết giả thực hiện từng
bước cho các phương thức trên
danh sách, chồng, và hàng
Yêu cầu tự học đ/v sinh viên:
L.O.2.1 Phát họa
được bằng hình nh
cho: (a) danh sách hiện
thực bằng mảng
bằng liên kết (con trỏ);
(b) cho chồng; (c)
cho hàng đợi hàng
đợi vòng (mức logic).
L.O.2.2 Viết được
bằng giả tả cấu
trúc u tr cho: (a)
danh sách hiện thực
bằng mảng và bằng liên
kết; (b) cho chồng;
(c) cho ng đợi
hàng đợi vòng (mức
logic).
L.O.2.3 Liệt được
các phương thức cần
thiết cho từng cấu trúc
như danh sách, chồng
hàng đợi; cũng n
tả được chúng bằng
mã giả (mức logic).
Thầy/Cô:
- Hướng dẫn làm bài
tiêu biểu.
- Phân tích chỉnh
sửa bài giải của sinh
viên làm trên bảng
hay làm trên giấy (lấy
ngẫu nhiên)
Sinh viên:
- Làm trước bài tập
nhà vào giấy (đề lấy
từ hệ thống máy chủ
quản lý liệu học
tập).
- Lên bảng m c
bài tập theo yêu cầu
của giảng viên.
- Nộp lời giải cho
giảng viên cuối
buổi.
Đánh giá trên
thái độ tham gia
các buổi bài tập,
sự chuyên cần,
và chất lượng bài
giải của sinh viên
trên bảng hay bài
giải nộp cho
giảng viên
3
Bài tập số 3: Sử dụng cây
3.1. Xác định c tính chất của cây:
cây đầy đủ, cân bằng, hệ số cân
bằng, etc.
3.2. Thực hiện từng bước n bằng
cây AVL bằng hình ảnh
Yêu cầu tự học đ/v sinh viên:
L.O.3.1 Phát họa
được bằng hình nh
cho các cây tiêu biểu,
như, cây nhị phân, y
nhị phân đầy đủ, y
nhị phân n bằng, cây
AVL, cây đa phân, v.v.
(mức logic).
L.O.3.2 Viết được
bằng giả tả cấu
trúc lưu trữ cho các loại
cây (mức logic)
L.O.3.5 Chỉ ra được
vẽ hình minh họa về
tất cả các trường mất
cân bằng trong cây
AVL cây B, ng
như thực hiện từng
bước để tái cân bằng
chúng trên hình vẽ
(mức logic).
Thầy/Cô:
- Hướng dẫn làm bài
tiêu biểu.
- Phân tích chỉnh
sửa bài giải của sinh
viên làm trên bảng
hay làm trên giấy (lấy
ngẫu nhiên)
Sinh viên:
- Làm trước bài tập
nhà vào giấy (đề lấy
từ hệ thống máy chủ
quản lý liệu học
tập).
- Lên bảng m c
bài tập theo yêu cầu
của giảng viên.
- Nộp lời giải cho
giảng viên cuối
buổi.
Đánh giá trên
thái độ tham gia
các buổi bài tập,
sự chuyên cần,
và chất lượng bài
giải của sinh viên
trên bảng hay bài
giải nộp cho
giảng viên
4
Bài tập số 4: Sử dụng Bảng băm
Heap
4.1. Đảm bảo tính chất của heap bằng
L.O.4.2 Phác họa
được bằng hình nh
cho cấu trúc Heap
Thầy/Cô:
- Hướng dẫn làm bài
tiêu biểu.
Đánh giá trên
thái độ tham gia
các buổi bài tập,
sự chuyên cần,
17/21
Tuần
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy/học
Hoạt động
đánh giá
hình ảnh
4.2. Phân tích độ phức tạp của các
phương thức
4.3. Xây dựng bảng m với các m
băm tiêu biểu
4.4. Theo vết q trình giải quyết
đụng độ của một giải thuật
Yêu cầu tự học đ/v sinh viên:
nêu ra sự liên quan đến
lưu trữ ở dạng mảng.
L.O.4.3 Liệt được
các phương thức cần
thiết cho cho cấu trúc
heap; cũng n mô tả
được chúng bằng
giả (mức logic).
L.O.4.4 Phác họa
được bằng hình ảnh các
phương thức đ đảm
bảo tính chất của cấu
trúc Heap khi đưa vào
hay lấy ra phần tử
trong heap (mức logic).
L.O.5.2 tả được
bằng giả cho
dụ minh họa cho các
hàm băm cơ bản.
L.O.5.3 tả được
bằng giả cho
dụ minh họa cho các
phương thức giải quyết
đụng độ.
L.O.4.6 Phân tích
được làm thực
nghiệm đánh giá được
các phương thức đã hổ
trợ cho cấu trúc Heap.
L.O.5.5 Phân tích
được m thực
nghiệm đánh giá được
các phương thức đã hổ
trợ cho cấu trúc bảng
băm.
- Phân tích chỉnh
sửa bài giải của sinh
viên làm trên bảng
hay làm trên giấy (lấy
ngẫu nhiên)
Sinh viên:
- Làm trước bài tập
nhà o giấy (đề lấy
từ hệ thống máy chủ
quản lý liệu học
tập).
- Lên bảng m c
bài tập theo yêu cầu
của giảng viên.
- Nộp lời giải cho
giảng viên cuối
buổi.
và chất lượng bài
giải của sinh viên
trên bảng hay bài
giải nộp cho
giảng viên
5
Bài tập số 5: Sử dụng các giải thuật
sắp xếp
5.1. Thực hiện từng bước quá trình
sắp xếp cho các giải thuật.
5.2. Phân tích các giải thuật sắp xếp
và đặc trưng bởi ký hiệu Big-O.
5.3. Sử dụng giả tả giải thuật
sắp xếp
Yêu cầu tự học đ/v sinh viên:
L.O.6.1 Minh họa
được bằng hình vẽ từng
bước hoạt động của các
giải thuật sắp xếp.
L.O.6.2 tả được
bằng giả cho c
giải thuật sắp xếp.
L.O.6.4 Phân tích
được làm thực
nghiệm đánh giá các
giải thuật sắp xếp.
Thầy/Cô:
- Hướng dẫn làm bài
tiêu biểu.
- Phân tích chỉnh
sửa bài giải của sinh
viên làm trên bảng
hay làm trên giấy (lấy
ngẫu nhiên)
Sinh viên:
- Làm trước bài tập
nhà vào giấy (đề lấy
từ hệ thống máy chủ
quản lý liệu học
tập).
- Lên bảng m các
bài tập theo yêu cầu
của giảng viên.
- Nộp lời giải cho
giảng viên cuối
buổi.
Đánh giá trên
thái độ tham gia
các buổi bài tập,
sự chuyên cần,
và chất lượng bài
giải của sinh viên
trên bảng hay bài
giải nộp cho
giảng viên
18/21
Tuần
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy/học
Hoạt động
đánh giá
6
Bài tập số 6: Sử dụng đồ thị
6.1. Mô tả cấu trúc lưu trữ cho đồ thị
6.2. Thực hiện theo vết từng bước
quá trình duyệt đồ thị.
6.3. Minh họa bằng hình ảnh các giải
thuật Dijktra và Prim
Yêu cầu tự học đ/v sinh viên:
L.O.7.2 Vẽ được
hình minh họa mô tả
cấu trúc u trữ cho đồ
thị các dạng ma trận
kề danh sách kề
bằng giả (mức
logic).
L.O.7.4 Minh họa
được bằng hình ảnh các
phương pháp duyệt đồ
thị bản (depth first
and bread-first).
L.O.7.7 Minh họa
bằng hình vẽ từng bước
hoạt động của các giải
thuật tìm đường ngắn
nhất bằng Dijktra
giải thuật m y phủ
tối tiểu bằng giải thuật
Prim.
Thầy/Cô:
- Hướng dẫn làm bài
tiêu biểu.
- Phân tích chỉnh
sửa bài giải của sinh
viên làm trên bảng
hay làm trên giấy (lấy
ngẫu nhiên)
Sinh viên:
- Làm trước bài tập
nhà vào giấy (đề lấy
t hệ thống máy chủ
quản lý liệu học
tập).
- Lên bảng m c
bài tập theo yêu cầu
của giảng viên.
- Nộp lời giải cho
giảng viên cuối
buổi.
Đánh giá trên
thái độ tham gia
các buổi bài tập,
sự chuyên cần,
và chất lượng bài
giải của sinh viên
trên bảng hay bài
giải nộp cho
giảng viên
Review
**
Nội dung báo cáo tiểu luận/thực
hành
Yêu cầu đ/v sinh viên: Sinh viên m
trước bài tập nhà nộp lại bài tập
cho giảng viên cuối buổi.
**
Nội dung giới hạn cho kiểm tra giữa
kỳ (tập trung)
Không có
**
Nội dung thi cuối kỳ (tập trung)
(Uớc tính số giờ SV cần để chuẩn bị
cho kỳ thi: )
Nội dung phần thí nghiệm
Tuần
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy/học
Hoạt động
đánh giá
1
Bài thực hành số 1
1.1. Luyện tập sử dụng các kiểu dữ
liệu bản kiểu do người
dùng định nghĩa trong C/C++
1.2. Luyện tập sử dụng con trỏ
tham khảo trong C/C++
1.3. Viết các chương trình đ quy
trong C/C++
Yêu cầu tự học đ/v sinh viên:
L.O.8.3 Give
examples for recursive
functions written in
C/C++.
L.O.8.6 Give
examples to relate
recursion to
backtracking technique.
Thầy/Cô:
- Hướng dẫn làm bài
tiêu biểu.
- Phân tích chỉnh
sửa bài giải của sinh
viên làm trước nhà
(lấy ngẫu nhiên)
Sinh viên:
- Làm trước bài tập
nhà và chép file mang
theo, cũng như nộp
lên hệ thống máy chủ
(đề lấy từ hệ thống
máy chủ quản lý
liệu học tập).
- Trình bày lời giải
cho giảng viên.
- Nộp lời giải cho
giảng viên cuối
buổi hay nộp trên hệ
Đánh giá trên
thái độ tham gia
thí nghiệm,
chuyên cần,
coding style, và
bài giải của sinh
viên trên file nộp
ở máy chủ hay
file nộp trực tiếp
tại lớp.
19/21
Tuần
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy/học
Hoạt động
đánh giá
thống máy chủ.
2
Bài thực hành số 2
2.1. Hiện thực danh sách ở dạng array
và liên kết.
2.2. Làm thí nghiệm đánh giá giữa
tìm kiếm tuần tự tìm kiếm nhị
phân.
2.3. Làm thí nghiệm đánh giá giữa
lặp và đệ quy.
Yêu cầu tự học đ/v sinh viên:
L.O.8.5 Làm được
thí nghiệm để so sánh
cách tiếp cận đquy
cách lặp.
L.O.2.4 Hiện thực
được các cấu trúc danh
sách, chồng hàng
đợi bằng C/C++ (mức
physics)
Thầy/Cô:
- Hướng dẫn làm bài
tiêu biểu.
- Phân tích chỉnh
sửa bài giải của sinh
viên làm trước nhà
(lấy ngẫu nhiên)
Sinh viên:
- Làm trước bài tập
nhà và chép file mang
theo, cũng như nộp
lên hệ thống máy chủ
(đề lấy từ hệ thống
máy chủ quản lý
liệu học tập).
- Trình bày lời giải
cho giảng viên.
- Nộp lời giải cho
giảng viên cuối
buổi hay nộp trên hệ
thống máy chủ.
Đánh giá trên
thái độ tham gia
thí nghiệm,
chuyên cần,
coding style, và
bài giải của sinh
viên trên file nộp
ở máy chủ hay
file nộp trực tiếp
tại lớp.
3
Bài thực hành số 3
3.1. Hiện thực chồng và hàng
3.2. Sử dụng chồng hàng để giải
quyết bài toán thực tế
Yêu cầu tự học đ/v sinh viên:
L.O.2.4 Hiện thực
được các cấu trúc danh
sách, chồng hàng
đợi bằng C/C++ (mức
physics)
L.O.2.5 Sử dụng
được danh sách, chồng,
hàng để giải quyết
bài toán thực, ng như
cân nhắc chọn lựa kiểu
hiện thực tối ưu.
Thầy/Cô:
- Hướng dẫn làm bài
tiêu biểu.
- Phân tích chỉnh
sửa bài giải của sinh
viên làm trước nhà
(lấy ngẫu nhiên)
Sinh viên:
- Làm trước bài tập
nhà và chép file mang
theo, cũng như nộp
lên hệ thống máy chủ
(đề lấy từ hệ thống
máy chủ quản lý
liệu học tập).
- Trình bày lời giải
cho giảng viên.
- Nộp lời giải cho
giảng viên cuối
buổi hay nộp trên hệ
thống máy chủ.
Đánh giá trên
thái độ tham gia
thí nghiệm,
chuyên cần,
coding style, và
bài giải của sinh
viên trên file nộp
ở máy chủ hay
file nộp trực tiếp
tại lớp.
4
Bài thực hành số 4
4.1. Hiện thực y nhị phân m kiếm
và cây AVL
4.2. Làm thí nghiệm đánh giá giữa
tìm kiếm với cây nhị phân, AVL
và tìm kiếm tuần tự.
Yêu cầu tự học đ/v sinh viên:
L.O.3.6 Hiện thực
được các cấu trúc cây
nhị phân và cây AVL
bằng C/C++
L.O.3.8 Phân tích
được làm thực
nghiệm đánh giá được
các phương thức đã hổ
trợ cho các cấu trúc cây
nhị phân và cây AVL.
Thầy/Cô:
- Hướng dẫn làm bài
tiêu biểu.
- Phân tích chỉnh
sửa bài giải của sinh
viên làm trước nhà
(lấy ngẫu nhiên)
Sinh viên:
- Làm trước bài tập
nhà và chép file mang
theo, cũng như nộp
lên hệ thống máy chủ
(đề lấy từ hệ thống
máy chủ quản lý
Đánh giá trên
thái độ tham gia
thí nghiệm,
chuyên cần,
coding style, và
bài giải của sinh
viên trên file nộp
ở máy chủ hay
file nộp trực tiếp
tại lớp.
20/21
Tuần
Nội dung
Chuẩn đầu ra chi tiết
Hoạt động
dạy/học
Hoạt động
đánh giá
liệu học tập).
- Trình bày lời giải
cho giảng viên.
- Nộp lời giải cho
giảng viên cuối
buổi hay nộp trên hệ
thống máy chủ.
5
Bài thực hành số 5
5.1. Hiện thực cấu trúc Heap.
5.2. Ứng dụng Heap để giải quyết bài
toán thực
Yêu cầu tự học đ/v sinh viên:
L.O.4.5 Hiện thực
được cấu trúc heap
bằng C/C++.
Thầy/Cô:
- Hướng dẫn làm bài
tiêu biểu.
- Phân tích chỉnh
sửa bài giải của sinh
viên làm trước nhà
(lấy ngẫu nhiên)
Sinh viên:
- Làm trước bài tập
nhà và chép file mang
theo, cũng như nộp
lên hệ thống máy chủ
(đề lấy từ hệ thống
máy chủ quản lý
liệu học tập).
- Trình bày lời giải
cho giảng viên.
- Nộp lời giải cho
giảng viên cuối
buổi hay nộp trên hệ
thống máy chủ.
Đánh giá trên
thái độ tham gia
thí nghiệm,
chuyên cần,
coding style, và
bài giải của sinh
viên trên file nộp
ở máy chủ hay
file nộp trực tiếp
tại lớp.
6
Bài thực hành số 6
6.1. Hiện thực bảng băm.
6.2. Ứng dụng bảng m để giải
quyết bài toán thực
Yêu cầu tự học đ/v sinh viên:
L.O.5.4 Hiện thực
được cấu trúc bảng
băm bằng C/C++.
Thầy/Cô:
- Hướng dẫn làm bài
tiêu biểu.
- Phân tích chỉnh
sửa bài giải của sinh
viên làm trước nhà
(lấy ngẫu nhiên)
Sinh viên:
- Làm trước bài tập
nhà và chép file mang
theo, cũng như nộp
lên hệ thống máy chủ
(đề lấy từ hệ thống
máy chủ quản lý
liệu học tập).
- Trình bày lời giải
cho giảng viên.
- Nộp lời giải cho
giảng viên cuối
buổi hay nộp trên hệ
thống máy chủ.
Đánh giá trên
thái độ tham gia
thí nghiệm,
chuyên cần,
coding style, và
bài giải của sinh
viên trên file nộp
ở máy chủ hay
file nộp trực tiếp
tại lớp.
7
Bài thực hành số 7
7.1. Hiện thực các giải thuật sắp xếp
7.2. Làm thí nghiệm đánh giá các giải
thuật sắp xếp
Yêu cầu tự học đ/v sinh viên:
L.O.6.3 Hiện thực
được các giải thuật sắp
xếp bằng C/C++ .
L.O.6.4 Phân tích
được làm thực
nghiệm đánh giá các
giải thuật sắp xếp.
Thầy/Cô:
- Hướng dẫn làm bài
tiêu biểu.
- Phân tích chỉnh
sửa bài giải của sinh
viên làm trước nhà
(lấy ngẫu nhiên)
Sinh viên:
Đánh giá trên
thái độ tham gia
thí nghiệm,
chuyên cần,
coding style, và
bài giải của sinh
viên trên file nộp
ở máy chủ hay
file nộp trực tiếp
tại lớp.
| 1/21

Preview text:

Đại Học Quốc Gia TP.HCM
Vietnam National University – HCMC
Trƣờng Đại Học Bách Khoa
Ho Chi Minh City University of Technology Khoa KH&KT Máy Tính
Faculty of Computer Science and Engineering
Đề cương môn học
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
(Data Structures and Algorithms ) Số tín chỉ 4 (3.2.7) MSMH CO2003 Số tiết Tổng: 75 LT: 45 TH: TN: 30 BTL/TL: x Môn ĐA, TT, LV Tỉ lệ đánh giá BT: 15% TN: 10% KT: 0% BTL/TL: 25% Thi: 50% Hình thức đánh giá
- Bài tập: sinh viên làm trước bài tập ở nhà; bài tập được chấm theo
cách chấm được nêu trong cột cuối cùng của bảng danh mục các bài
tập (thực hành), được trình bày ở phần sau, gần cuối bản đề cương.

- Thí nghiệm: sinh viên làm trước các bài thí nghiệm ở nhà; các bài thí
nghiệm được chấm theo cách chấm được nêu trong cột cuối cùng của
bảng danh mục các thí nghiệm, được trình bày ở phần sau, gần cuối bản đề cương.

- Thi: viết và trắc nghiệm, 120 phút Môn tiên quyết Không Môn học trước Kỹ thuật Lập trình CO1011 Môn song hành Không CTĐT ngành
Khoa Học Máy Tính và Kỹ Thuật Máy Tính Trình độ đào tạo Đại học Cấp độ môn học
Cấp độ 2 (dạy cho sinh viên năm 2) Ghi chú khác
1. Mục tiêu của môn học
Môn học nhằm cung cấp cho sinh viên khả năng sử dụng các cấu trúc dữ liệu nền tảng. Môn học
cũng hướng dẫn sinh viên hiểu, phân tích và đánh giá được các giải thuật làm việc với các cấu trúc dữ liệu đó. Aims:
This course is to provide students abilities to use fundamental data structures. It also helps students
understanding, analyzing, and evaluating algorithms associated with those data structures.
2. Nội dung tóm tắt môn học
Ôn lại về lập trình, các kiểu dữ liệu trong C/C++, đặc biệt là cấu trúc và con trỏ.
Giới thiệu về độ phức tạp tính toán và đệ qui.
Các cấu trúc dữ liệu và sự phân tích chúng: danh sách; chồng và hàng; cây, cây nhị phân,
cây nhị phân tìm kiếm, AVL và đa phân; heap; giải thuật sắp xếp; bảng băm; và đồ thị. 1/21 Course outline:
Review on programming and data types in C/C++, especially, struct and pointer.
Basics of computational complexity and recursive algorithms.
Data structures and their analysis: list, stack and queue, tree, binary tree, binary search tree,
AVL and M-ways tree, sorting, hashing table, and graph 3. Tài liệu học tập Sách, Giáo trình chính:
[1]. “Data Structures: a Pseudocode Approach with C++”, R.F.Gilberg and B.A. Forouzan, Thomson Learning Inc., 2001. Sách tham khảo:
[1]Data Structures and Algorithms in C++”, A. Drozdek, Thomson Learning Inc., 2005.
[2] “C/C++: How to Program”, 7th Ed. – Paul Deitel and Harvey Deitel, Prentice Hall, 2012. [3] Internet.
4. Hiểu biết, kỹ năng, thái độ cần đạt đƣợc sau khi học môn học STT Chuẩn đầu ra môn học CDIO L.O.1
Phân tích giải thuật
L.O.1.1 – Định nghĩa được các khái niệm độ phức tạp và độ phức tạp
trong các trường hợp “tốt nhất”, “xấu nhất”, và “trung bình”.
L.O.1.2 – Phân tích được các giải thuật và sử dụng được ký hiệu “Big O”
để ghi ra độ phức tạp của giải thuật cấu thành từ các cấu trúc điều khiển:
tuần tự, rẽ nhánh và lặp.
L.O.1.3 – Liệt kê được, cho được ví dụ và so sánh được các lớp độ phức
tạp, như, hằng số, log, tuyến tính, etc.
L.O.1.4 – Nhận thức được sự cân bằng giữa bộ nhớ và thời gian trong giải thuật.
L.O.1.5 – Mô tả được các chiến lược thiết kế giải thuật và giải quyết bài toán. L.O.2
Sử dụng cấu trúc dữ liệu danh sách, chồng và hàng
L.O.2.1 – Phát họa được bằng hình ảnh cho: (a) danh sách hiện thực bằng
mảng và bằng liên kết (con trỏ); (b) cho chồng; và (c) cho hàng đợi và
hàng đợi vòng (mức logic).
L.O.2.2 – Viết được bằng mã giả mô tả cấu trúc lưu trữ cho: (a) danh sách
hiện thực bằng mảng và bằng liên kết; (b) cho chồng; và (c) cho hàng đợi
và hàng đợi vòng (mức logic).
L.O.2.3 – Liệt kê được các phương thức cần thiết cho từng cấu trúc như
danh sách, chồng và hàng đợi; cũng như mô tả được chúng bằng mã giả (mức logic).
L.O.2.4 – Hiện thực được các cấu trúc danh sách, chồng và hàng đợi bằng C/C++ (mức physics)
L.O.2.5 – Sử dụng được danh sách, chồng, và hàng để giải quyết bài toán
thực, cũng như cân nhắc chọn lựa kiểu hiện thực tối ưu.
L.O.2.6 – Phân tích được và làm thí nghiệm đánh giá các phương thức đã
hổ trợ cho các cấu trúc danh sánh, chồng, và hàng. 2/21 L.O.3
Sử dụng cấu trúc cây
L.O.3.1 – Phát họa được bằng hình ảnh cho các cây tiêu biểu, như, cây nhị
phân, cây nhị phân đầy đủ, cây nhị phân cân bằng, cây AVL, cây đa phân, v.v. (mức logic).
L.O.3.2 – Viết được bằng mã giả mô tả cấu trúc lưu trữ cho các loại cây (mức logic)
L.O.3.3 – Liệt kê được các phương thức cần thiết cho cho các cấu trúc cây;
cũng như mô tả được chúng bằng mã giả (mức logic).
L.O.3.4 – Chỉ ra được và cho ví dụ minh họa về tầm quan trọng của tính cân bằng trong cây.
L.O.3.5 – Chỉ ra được và vẽ hình minh họa về tất cả các trường mất cân
bằng trong cây AVL và cây B, cũng như thực hiện từng bước để tái cân
bằng chúng trên hình vẽ (mức logic).
L.O.3.6 – Hiện thực được các cấu trúc cây nhị phân và cây AVL bằng C/C++
L.O.3.7 – Sử dụng được cây nhị phân và cây AVL để giải quyết bài toán
thực, đặc biệt là liên quan đến tìm kiếm.
L.O.3.8 – Phân tích được và làm thực nghiệm đánh giá được các phương
thức đã hổ trợ cho các cấu trúc cây nhị phân và cây AVL. L.O.4 Sử dụng Heap
L.O.4.1 – Chỉ ra được những ứng dụng cần đến Heap
L.O.4.2 – Phác họa được bằng hình ảnh cho cấu trúc Heap và nêu ra sự
liên quan đến lưu trữ ở dạng mảng.
L.O.4.3 – Liệt kê được các phương thức cần thiết cho cho cấu trúc heap;
cũng như mô tả được chúng bằng mã giả (mức logic).
L.O.4.4 – Phác họa được bằng hình ảnh các phương thức để đảm bảo tính
chất của cấu trúc Heap khi đưa vào hay lấy ra phần tử trong heap (mức logic).
L.O.4.5 – Hiện thực được cấu trúc heap bằng C/C++.
L.O.4.6 – Phân tích được và làm thực nghiệm đánh giá được các phương
thức đã hổ trợ cho cấu trúc Heap. L.O.5
Sử dụng bảng băm
L.O.5.1 – Vẽ được hình minh họa một bảng băm cùng với khái niệm về
khóa, đụng độ và giải quyết đụng độ.
L.O.5.2 – Mô tả được bằng mã giả và cho ví dụ minh họa cho các hàm băm cơ bản.
L.O.5.3 – Mô tả được bằng mã giả và cho ví dụ minh họa cho các phương
thức giải quyết đụng độ.
L.O.5.4 – Hiện thực được cấu trúc bảng băm bằng C/C++.
L.O.5.5 – Phân tích được và làm thực nghiệm đánh giá được các phương
thức đã hổ trợ cho cấu trúc bảng băm. L.O.6
Phát triển các giải thuật sắp xếp
L.O.6.1 – Minh họa được bằng hình vẽ từng bước hoạt động của các giải thuật sắp xếp.
L.O.6.2 – Mô tả được bằng mã giả cho các giải thuật sắp xếp.
L.O.6.3 – Hiện thực được các giải thuật sắp xếp bằng C/C++ .
L.O.6.4 – Phân tích được và làm thực nghiệm đánh giá các giải thuật sắp 3/21 xếp.
L.O.6.5 – Sử dụng được giải thuật sắp xếp trong bài toán thực. L.O.7
Hiểu biết cơ bản về đồ thị
L.O.7.1 – Phát họa được bằng hình ảnh cho các khái niệm như đồ thị liên
thông và không liên thông, đồ thị có hướng và không hướng, chu trình, v.v.
L.O.7.2 – Vẽ được hình minh họa và mô tả cấu trúc lưu trữ cho đồ thị ở
các dạng ma trận kề và danh sách kề bằng mã giả (mức logic).
L.O.7.3 – Liệt kê được các phương thức cần thiết cho cho các cấu trúc đồ
thị; cũng như mô tả được chúng bằng mã giả (mức logic).
L.O.7.4 – Minh họa được bằng hình ảnh các phương pháp duyệt đồ thị cơ
bản (depth first and bread-first).
L.O.7.5 – Hiện thực được cấu trúc lưu trữ đồ thì bằng C/C++.
L.O.7.6 – Hiện thực được các phương pháp duyệt nói trên bằng C/C++ và
sử dụng chúng giải quyết bài toán thực.
L.O.7.7 – Minh họa bằng hình vẽ từng bước hoạt động của các giải thuật
tìm đường ngắn nhất bằng Dijktra và giải thuật tìm cây phủ tối tiểu bằng giải thuật Prim. L.O.8 Sử dụng đệ quy
L.O.8.1 – Mô tả được các thành phần cơ bản của một giải thuật đệ quy.
L.O.8.2 – Vẽ được cây mô tả các lần gọi hàm và giá trị của các tham số
được truyền vào các hàm đó.
L.O.8.3 – Cho được ví dụ về một hàm gọi đệ quy viết bằng C/C++.
L.O.8.4 – Phát triển được giải thuật đệ quy cho các phương thức cần thiết
của các cấu trúc: danh sách, cây, heap, tìm kiếm trên cây và tìm kiếm nhị phân, và đồ thị.
L.O.8.5 – Làm được thí nghiệm để so sánh cách tiếp cận đệ quy và cách lặp.
L.O.8.6 – Cho được ví dụ minh họa sự liên quan giữa Backtracking và đệ quy. Index Course learning outcomes CDIO L.O.1 Analyze algorithms
L.O.1.1 – Define concept “computational complexity” and its sepcial
cases, best, average, and worst.
L.O.1.2 – Analyze algorithms and use Big-O notation to characterize the
computational complexity of algorithms composed by using the following
control structures: sequence, branching, and iteration (not recursion).
L.O.1.3 – List, give examples, and compare complexity classes, for
examples, constant, linear, etc.
L.O.1.4 – Be aware of the trade-off between space and time in solutions
L.O.1.5 – Describe strategies in algorithm design and problem solving L.O.2
Use data structures: list, stack and queue
L.O.2.1 – Depict the following concepts: (a) array list and linked list,
including single link and double links, and multiple links; (b) stack; and (c) queue and circular queue.
L.O.2.2 – Describe storage structures by using pseudocode for: (a) array
list and linked list, including single link and double links, and multiple 4/21
links; (b) stack; and (c) queue and circular queue.
L.O.2.3 – List necessary methods supplied for list, stack, and queue, and
describe them using pseudocode.
L.O.2.4 – Implement list, stack, and queue using C/C++.
L.O.2.5 – Use list, stack, and queue for problems in real-life, and choose
an appropriate implementation type (array vs. link).
L.O.2.6 – Analyze the complexity and develop experiment (program) to
evaluate the efficiency of methods supplied for list, stack, and queue. L.O.3 Use tree structure
L.O.3.1 – Depict the following concepts: binary tree, complete binary
tree, balanced binary tree, AVL tree, multi-way tree, etc.
L.O.3.2 – Describe the strorage structure for tree structures using pseudocode.
L.O.3.3 – List necessary methods supplied for tree structures, and describe them using pseudocode.
L.O.3.4 – Identify the importance of “blanced” feature in tree structures
and give examples to demonstate it.
L.O.3.5 – Identiy cases in which AVL tree and B-tree are unblanced, and
demonstrate methods to resolve all the cases step-by-step using figures.
L.O.3.6 –Implement binary tree and AVL tree using C/C++
L.O.3.7 – Use binary tree and AVL tree to solve problems in real-life,
especially related to searching techniques.
L.O.3.8 – Analyze the complexity and develop experiment (program) to
evaluate methods supplied for tree structures. L.O.4 Use heap structure
L.O.4.1 – List some applications of Heap.
L.O.4.2 – Depict heap structure and relate it to array.
L.O.4.3 – List necessary methods supplied for heap structure, and describe them using pseudocode.
L.O.4.4 – Depict the working steps of methods that maintain the
characteristics of heap structure for the cases of adding/removing elements to/from heap.
L.O.4.5 – Implement heap using C/C++.
L.O.4.6 – Analyze the complexity and develop experiment (program) to
evaluate methods supplied for heap structures. L.O.5 Use hash structure
L.O.5.1 – Depict the following concepts: hashing table, key, collision, and collision resolution.
L.O.5.2 – Describe hashing functions using pseudocode and give examples to show their algorithms.
L.O.5.3 – Describe collision resolution methods using pseudocode and
give examples to show their algorithms.
L.O.5.4 – Implement hashing tables using C/C++.
L.O.5.5 – Analyze the complexity and develop experiment (program) to
evaluate methods supplied for hashing tables. L.O.6 Use sorting
L.O.6.1 – Depict the working steps of sorting algorithms step-by-steps. 5/21
L.O.6.2 – Describe sorting algorithms by using pseudocode.
L.O.6.3 – Implement sorting algorithms using C/C++ .
L.O.6.4 – Analyze the complexity and develop experiment (program) to evaluate sorting algorithms.
L.O.6.5 – Use sorting algorithms for problems in real-life. L.O.7
Basically understand graph structure
L.O.7.1 – Depict the following concepts: connected graph, disconnected
graph, direct/undirect graph, etc.
L.O.7.2 – Depict storage structures for graph and describe graph using
pseudocode in the cases of using adjacency matric and adjacency list.
L.O.7.3 – List necessary methods supplied for graph, and describe them using pseudocode.
L.O.7.4 – Depict basic traversal methods step-by-step (depth first and bread-first).
L.O.7.5 – Implement storage structures for graphs using C/C++.
L.O.7.6 – Implement basic traversal methods using C/C++.
L.O.7.7 – Depict the working steps of Dijktra and Prim step-by-step. L.O.8 Use recursion
L.O.8.1 – Describe the basic components of recursive algorithms (functions).
L.O.8.2 – Draw trees to illustrate callings and the value of parameters
passed to them for recursive algorithms.
L.O.8.3 – Give examples for recursive functions written in C/C++.
L.O.8.4 – Develop recursive implementations for methods supplied for the
following structures: list, tree, heap, searching, and graphs.
L.O.8.5 – Develop experiment (program) to compare the recursive and the iterative approach.
L.O.8.6 – Give examples to relate recursion to backtracking technique.
5. Hƣớng dẫn cách học - chi tiết cách đánh giá môn học Hướng dẫn cách học:
Tài liệu học tập bao gồm: đề cương môn học, slide bài giảng, bài tập, bài thí nghiệm, và bài
tập lớn được lưu trữ trên máy chủ quản lý tư liệu học tập của khoa (trường) . Sinh viên tải
về, in ra và mang theo khi lên lớp học.
Sinh viên cần làm thêm các bài tập và các bài thực hành. Sinh viên nên tham gia làm bài tập
online trên hệ thống máy chủ nói trên, cũng như sử dụng hệ thống này để trao đổi với sinh
viên khác, TA, và giảng viên.
Sinh viên nên đi học đầy đủ và làm bài tập trong quá trình học sẽ giúp tiết kiệm thời gian
trong quá trình ôn thi giữa kỳ và cuối kỳ.
Đối với phần thực hành và bài tập, sinh viên tham gia đầy đủ các buổi thí nghiệm và nộp lại
báo cáo thí nghiệm ngay cuối giờ thí nghiệm.
Chi tiết cách đánh giá môn học: Thực hành (15%): Bài tập (10%): Bải tập lớn (25%): 6/21 Thi cuối kỳ (50%)
6. Dự kiến danh sách Cán bộ tham gia giảng dạy TS. Lê Thành Sách TS. Huỳnh Tường Nguyên Th.S. Trần Giang Sơn Th.S. Nguyễn Trung Trực Th.S. Võ Thanh Hùng Th.S. Vương Bá Thịnh 7. Nội dung chi tiết
Nội dung phần lý thuyết Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động /Tiết dạy và học đánh giá Xem
Chƣơng 1. Giới thiệu - Giảng lý thuyết - Bài tập bảng - Bài tập trên lớp - Bài thí nghiệm
1.1. Giới thiệu về môn học phân - Bài tập lớn tiết
1.2. Các khái niệm: dữ liệu, kiểu dữ - Bài thi
liệu, kiểu dữ liệu trừu tượng, cấu
trúc dữ liệu, giải thuật.
1.3. Ôn tập về struct, class, con trỏ, và mảng. 1.4. Bài tập
Yêu cầu tự học đ/v sinh viên: 8 giờ
Chƣơng 2. Độ phức tạp giải thuật
L.O.1.1 – Định nghĩa - Giảng lý thuyết - Bài tập
được các khái niệm độ - Bài tập trên lớp - Bài thí nghiệm
2.1. Khái niệm độ phức tạp phức tạp và độ phức - Bài tập lớn
2.2. Ký hiệu Big-O và các trường hợp tạp trong các trường - Bài thi
2.3. Các bài toán và các độ phức tạp thường gặp
hợp “tốt nhất”, “xấu
nhất”, và “trung bình”.
2.4. Giới thiệu về P và NP
L.O.1.2 – Phân tích 2.5. Bài tập
được các giải thuật và
Yêu cầu tự học đ/v sinh viên: 8 giờ
sử dụng được ký hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật cấu thành từ các cấu trúc điều khiển: tuần tự, rẽ nhánh và lặp.
L.O.1.3 – Liệt kê được, cho được ví dụ và so
sánh được các lớp độ
phức tạp, như, hằng số, log, tuyến tính, etc.
L.O.1.4 – Nhận thức
được sự cân bằng giữa bộ nhớ và thời gian trong giải thuật.
L.O.1.5 – Mô tả được
các chiến lược thiết kế
giải thuật và giải quyết bài toán. Chƣơng 3. Đệ quy
L.O.8.1 – Mô tả được - Giảng lý thuyết - Bài tập
các thành phần cơ bản - Bài tập trên lớp - Bài thí nghiệm 7/21 Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động /Tiết dạy và học đánh giá
3.1 Đệ quy và các thành phần cơ bản của một giải thuật đệ - Bài tập lớn
của giải thuật đệ quy. quy. - Bài thi 3.2 Đệ quy và C/C++.
L.O.8.2 – Vẽ được cây
3.3 Tính chất của đệ quy.
mô tả các lần gọi hàm
3.4 Thiết kế giải thuật đệ qui
và giá trị của các tham
3.5 Đệ quy và kỹ thuật quay lui
số được truyền vào các hàm đó. 3.6 Bài tập
Yêu cầu tự học đ/v sinh viên: 8 giờ
L.O.8.3 – Cho được ví
dụ về một hàm gọi đệ quy viết bằng C/C++.
L.O.8.5 – Làm được thí nghiệm để so sánh
cách tiếp cận đệ quy và cách lặp.
L.O.8.6 – Cho được ví dụ minh họa sự liên quan giữa Backtracking và đệ quy. Chƣơng 4. Danh sách
L.O.2.1 – Phát họa - Giảng lý thuyết - Bài tập
được bằng hình ảnh - Bài tập trên lớp - Bài thí nghiệm
4.1 Khái niệm và ứng dụng cho: (a) danh sách hiện - Bài tập lớn
4.2 Hiện thực bằng mảng (array) thực bằng mảng và - Bài thi
4.3 Hiện thực bằng liên kết đơn
bằng liên kết (con trỏ);
4.4 Các dạng liên kết phức tạp khác (b) cho chồng; và (c)
4.5 Đánh giá các dạng hiện thực cho hàng đợi và hàng 4.1. Bài tập đợi vòng (mức logic).
Yêu cầu tự học đ/v sinh viên: 8
L.O.2.2 – Viết được
bằng mã giả mô tả cấu trúc lưu trữ cho: (a) danh sách hiện thực bằng mảng và bằng liên kết; (b) cho chồng; và (c) cho hàng đợi và hàng đợi vòng (mức logic).
L.O.2.3 – Liệt kê được các phương thức cần
thiết cho từng cấu trúc như danh sách, chồng và hàng đợi; cũng như
mô tả được chúng bằng mã giả (mức logic).
L.O.2.4 – Hiện thực
được các cấu trúc danh sách, chồng và hàng đợi bằng C/C++ (mức physics)
L.O.2.5 – Sử dụng được danh sách, chồng,
và hàng để giải quyết bài toán thực, cũng như
cân nhắc chọn lựa kiểu hiện thực tối ưu.
L.O.2.6 – Phân tích
được và làm thí nghiệm đánh giá các phương 8/21 Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động /Tiết dạy và học đánh giá
thức đã hổ trợ cho các cấu trúc danh sánh, chồng, và hàng.
L.O.8.4 – Phát triển
được giải thuật đệ quy cho các phương thức
cần thiết của các cấu trúc: danh sách, cây, heap, tìm kiếm trên cây và tìm kiếm nhị phân, và đồ thị.
L.O.1.2 – Phân tích
được các giải thuật và
sử dụng được ký hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật cấu thành từ các cấu trúc điều khiển: tuần tự, rẽ nhánh và lặp.
Chƣơng 5. Chồng và Hàng
L.O.2.1 – Phát họa - Giảng lý thuyết - Bài tập
được bằng hình ảnh - Bài tập trên lớp - Bài thí nghiệm
5.1 Các ứng dụng của chồng & hàng cho: (a) danh sách hiện - Bài tập lớn
5.2 Các tác vụ cơ bản trên chồng thực bằng mảng và - Bài thi
5.3 Hiện thực chồng bằng danh sách liên kết và mảng
bằng liên kết (con trỏ); (b) cho chồng; và (c)
5.4 Các tác vụ cơ bản trên hàng cho hàng đợi và hàng
5.5 Hiện thực hàng bằng danh sách đợi vòng (mức logic). liên kết và mảng
L.O.2.2 – Viết được 5.6 Bài tập
bằng mã giả mô tả cấu
Yêu cầu tự học đ/v sinh viên: 8 giờ trúc lưu trữ cho: (a) danh sách hiện thực bằng mảng và bằng liên kết; (b) cho chồng; và (c) cho hàng đợi và hàng đợi vòng (mức logic).
L.O.2.3 – Liệt kê được các phương thức cần
thiết cho từng cấu trúc như danh sách, chồng và hàng đợi; cũng như
mô tả được chúng bằng mã giả (mức logic).
L.O.2.4 – Hiện thực
được các cấu trúc danh sách, chồng và hàng đợi bằng C/C++ (mức physics)
L.O.2.5 – Sử dụng được danh sách, chồng,
và hàng để giải quyết bài toán thực, cũng như
cân nhắc chọn lựa kiểu hiện thực tối ưu.
L.O.2.6 – Phân tích
được và làm thí nghiệm đánh giá các phương 9/21 Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động /Tiết dạy và học đánh giá
thức đã hổ trợ cho các cấu trúc danh sánh, chồng, và hàng.
L.O.8.4 – Phát triển
được giải thuật đệ quy cho các phương thức
cần thiết của các cấu trúc: danh sách, cây, heap, tìm kiếm trên cây và tìm kiếm nhị phân, và đồ thị.
L.O.1.2 – Phân tích
được các giải thuật và
sử dụng được ký hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật cấu thành từ các cấu trúc điều khiển: tuần tự, rẽ nhánh và lặp. Kiểm tra giữa kỳ Chƣơng 6. Cây
L.O.3.1 – Phát họa - Giảng lý thuyết - Bài tập
được bằng hình ảnh - Bài tập trên lớp - Bài thí nghiệm
6.1 Các khái niệm căn bản về cây và ứng dụng - Bài tập lớn cho các cây tiêu biểu, như, cây nhị phân, cây - Bài thi 6.2 Cây nhị phân
nhị phân đầy đủ, cây
6.3 Cấu trúc lưu trữ và các phương thức nhị phân cân bằng, cây AVL, cây đa phân, v.v.
6.4 Cây nhị phân tìm kiếm (mức logic). 6.5 Cây biểu thức
L.O.3.2 – Viết được 6.6 Bài tập
bằng mã giả mô tả cấu
Yêu cầu tự học đ/v sinh viên: 8 giờ trúc lưu trữ cho các loại cây (mức logic)
L.O.3.3 – Liệt kê được các phương thức cần thiết cho cho các cấu trúc cây; cũng như mô
tả được chúng bằng mã giả (mức logic).
L.O.3.4 – Chỉ ra được và cho ví dụ minh họa về tầm quan trọng của tính cân bằng trong cây.
L.O.3.5 – Chỉ ra được
và vẽ hình minh họa về
tất cả các trường mất cân bằng trong cây AVL và cây B, cũng như thực hiện từng
bước để tái cân bằng chúng trên hình vẽ (mức logic).
L.O.3.6 – Hiện thực
được các cấu trúc cây nhị phân và cây AVL bằng C/C++
L.O.3.7 – Sử dụng được cây nhị phân và 10/21 Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động /Tiết dạy và học đánh giá cây AVL để giải quyết
bài toán thực, đặc biệt là liên quan đến tìm kiếm.
L.O.3.8 – Phân tích được và làm thực nghiệm đánh giá được
các phương thức đã hổ
trợ cho các cấu trúc cây nhị phân và cây AVL.
L.O.8.4 – Phát triển
được giải thuật đệ quy cho các phương thức
cần thiết của các cấu trúc: danh sách, cây, heap, tìm kiếm trên cây và tìm kiếm nhị phân, và đồ thị.
L.O.1.2 – Phân tích
được các giải thuật và
sử dụng được ký hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật cấu thành từ các cấu trúc điều khiển: tuần tự, rẽ nhánh và lặp. Chƣơng 7. Cây AVL
L.O.3.1 – Phát họa - Giảng lý thuyết - Bài tập
được bằng hình ảnh - Bài tập trên lớp - Bài thí nghiệm
7.1 Cây AVL: Khái niệm, ưu điểm và ứng dụng - Bài tập lớn cho các cây tiêu biểu, như, cây nhị phân, cây - Bài thi
7.2 Cấu trúc lưu trữ và các phương thức
nhị phân đầy đủ, cây 7.3 Cân bằng cây AVL nhị phân cân bằng, cây AVL, cây đa phân, v.v.
7.4 Cây đa phân: khái niệm, ưu điểm và ứng dụng (mức logic). 7.5 Cây B-Tree: khái niệm
L.O.3.2 – Viết được
bằng mã giả mô tả cấu 7.6 Cân bằng cây B-Tree trúc lưu trữ cho các 7.7 Bài tập loại cây (mức logic)
Yêu cầu tự học đ/v sinh viên: 16 giờ
L.O.3.3 – Liệt kê được các phương thức cần thiết cho cho các cấu trúc cây; cũng như mô
tả được chúng bằng mã giả (mức logic).
L.O.3.4 – Chỉ ra được và cho ví dụ minh họa về tầm quan trọng của tính cân bằng trong cây.
L.O.3.5 – Chỉ ra được
và vẽ hình minh họa về
tất cả các trường mất cân bằng trong cây AVL và cây B, cũng như thực hiện từng
bước để tái cân bằng chúng trên hình vẽ (mức logic). 11/21 Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động /Tiết dạy và học đánh giá
L.O.3.6 – Hiện thực
được các cấu trúc cây nhị phân và cây AVL bằng C/C++
L.O.3.7 – Sử dụng được cây nhị phân và cây AVL để giải quyết
bài toán thực, đặc biệt là liên quan đến tìm kiếm.
L.O.3.8 – Phân tích được và làm thực nghiệm đánh giá được
các phương thức đã hổ
trợ cho các cấu trúc cây nhị phân và cây AVL.
L.O.8.4 – Phát triển
được giải thuật đệ quy cho các phương thức
cần thiết của các cấu trúc: danh sách, cây, heap, tìm kiếm trên cây và tìm kiếm nhị phân, và đồ thị.
L.O.1.2 – Phân tích
được các giải thuật và
sử dụng được ký hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật cấu thành từ các cấu trúc điều khiển: tuần tự, rẽ nhánh và lặp. Chƣơng 8. Heap
L.O.4.1 – Chỉ ra được - Giảng lý thuyết - Bài tập
những ứng dụng cần - Bài tập trên lớp - Bài thí nghiệm
8.1 Khái niệm và ứng dụng đến Heap - Bài tập lớn
8.2 Cấu trúc lưu trữ và các phép toán - Bài thi
L.O.4.2 – Phác họa 8.3 Bài tập được bằng hình ảnh
Yêu cầu tự học đ/v sinh viên: 4 giờ cho cấu trúc Heap và
nêu ra sự liên quan đến lưu trữ ở dạng mảng.
L.O.4.3 – Liệt kê được các phương thức cần thiết cho cho cấu trúc heap; cũng như mô tả được chúng bằng mã giả (mức logic).
L.O.4.4 – Phác họa
được bằng hình ảnh các phương thức để đảm
bảo tính chất của cấu trúc Heap khi đưa vào hay lấy ra phần tử trong heap (mức logic).
L.O.4.5 – Hiện thực được cấu trúc heap bằng C/C++.
L.O.4.6 – Phân tích được và làm thực nghiệm đánh giá được 12/21 Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động /Tiết dạy và học đánh giá
các phương thức đã hổ trợ cho cấu trúc Heap.
L.O.8.4 – Phát triển
được giải thuật đệ quy cho các phương thức
cần thiết của các cấu trúc: danh sách, cây, heap, tìm kiếm trên cây và tìm kiếm nhị phân, và đồ thị.
L.O.1.2 – Phân tích
được các giải thuật và
sử dụng được ký hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật cấu thành từ các cấu trúc điều khiển: tuần tự, rẽ nhánh và lặp.
Chƣơng 9. Bảng băm
L.O.5.1 – Vẽ được - Giảng lý thuyết - Bài tập
hình minh họa một - Bài tập trên lớp - Bài thí nghiệm
9.1 Khái niệm và ứng dụng bảng băm cùng với - Bài tập lớn 9.2 Các hàm băm khái niệm về khóa, - Bài thi
9.3 Các phương pháp giải quyết đụng độ
đụng độ và giải quyết đụng độ. 9.4 Bài tập
L.O.5.2 – Mô tả được
Yêu cầu tự học đ/v sinh viên: 8 giờ bằng mã giả và cho ví dụ minh họa cho các hàm băm cơ bản.
L.O.5.3 – Mô tả được bằng mã giả và cho ví dụ minh họa cho các
phương thức giải quyết đụng độ.
L.O.5.4 – Hiện thực được cấu trúc bảng băm bằng C/C++.
L.O.5.5 – Phân tích được và làm thực nghiệm đánh giá được
các phương thức đã hổ trợ cho cấu trúc bảng băm.
L.O.1.2 – Phân tích
được các giải thuật và
sử dụng được ký hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật cấu thành từ các cấu trúc điều khiển: tuần tự, rẽ nhánh và lặp.
Chƣơng 10. Sắp xếp
L.O.6.1 – Minh họa - Giảng lý thuyết - Bài tập
được bằng hình vẽ từng - Bài tập trên lớp - Bài thí nghiệm
10.1 Khái niệm và ứng dụng
bước hoạt động của các - Bài tập lớn
10.2 Các giải thuật chèn giải thuật sắp xếp. - Bài thi
10.3 Các giải thuật chọn
L.O.6.2 – Mô tả được
10.4 Các giải thuật trao đổi bằng mã giả cho các
10.5 Các giải thuật sắp xếp ngoài giải thuật sắp xếp. 10.6 Bài tập
L.O.6.3 – Hiện thực
Yêu cầu tự học đ/v sinh viên: 8 giờ
được các giải thuật sắp xếp bằng C/C++ . 13/21 Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động /Tiết dạy và học đánh giá
L.O.6.4 – Phân tích được và làm thực nghiệm đánh giá các giải thuật sắp xếp.
L.O.6.5 – Sử dụng
được giải thuật sắp xếp trong bài toán thực.
L.O.8.4 – Phát triển
được giải thuật đệ quy cho các phương thức
cần thiết của các cấu trúc: danh sách, cây, heap, tìm kiếm trên cây và tìm kiếm nhị phân, và đồ thị.
L.O.1.2 – Phân tích
được các giải thuật và
sử dụng được ký hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật cấu thành từ các cấu trúc điều khiển: tuần tự, rẽ nhánh và lặp.
Chƣơng 11. Đồ thị
L.O.7.1 – Phát họa - Giảng lý thuyết - Bài tập
được bằng hình ảnh - Bài tập trên lớp - Bài thí nghiệm
11.1 Khái niệm và ứng dụng cho các khái niệm như - Bài tập lớn
11.2 Cấu trúc lưu trữ và các phương - Bài thi thức đồ thị liên thông và không liên thông, đồ 11.3 Cây phủ tối thiểu thị có hướng và không
11.4 Đường đi ngắn nhất hướng, chu trình, v.v.
11.5 Các bài toán ứng dụng trên đồ thị
L.O.7.2 – Vẽ được 11.6 Bài tập hình minh họa và mô tả
Yêu cầu tự học đ/v sinh viên: 8 giờ
cấu trúc lưu trữ cho đồ
thị ở các dạng ma trận kề và danh sách kề bằng mã giả (mức logic).
L.O.7.3 – Liệt kê được các phương thức cần thiết cho cho các cấu trúc đồ thị; cũng như
mô tả được chúng bằng mã giả (mức logic). L.O.7.4 – Minh họa
được bằng hình ảnh các phương pháp duyệt đồ thị cơ bản (depth first and bread-first).
L.O.7.5 – Hiện thực
được cấu trúc lưu trữ đồ thì bằng C/C++.
L.O.7.6 – Hiện thực được các phương pháp duyệt nói trên bằng C/C++ và sử dụng chúng giải quyết bài toán thực. L.O.7.7 – Minh họa 14/21 Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động /Tiết dạy và học đánh giá
bằng hình vẽ từng bước
hoạt động của các giải thuật tìm đường ngắn nhất bằng Dijktra và
giải thuật tìm cây phủ
tối tiểu bằng giải thuật Prim.
L.O.8.4 – Phát triển
được giải thuật đệ quy cho các phương thức
cần thiết của các cấu trúc: danh sách, cây, heap, tìm kiếm trên cây và tìm kiếm nhị phân, và đồ thị.
L.O.1.2 – Phân tích
được các giải thuật và
sử dụng được ký hiệu
“Big O” để ghi ra độ
phức tạp của giải thuật cấu thành từ các cấu trúc điều khiển: tuần tự, rẽ nhánh và lặp. Review **
Nội dung giới hạn cho kiểm tra giữa kỳ (tập trung) Chương 1 – 5
Ứơc tính số giờ SV cần chuẩn bị để
kiểm tra giữa kỳ: 12 **
Nội dung thi cuối kỳ (tập trung) Các chương còn lại.
Ứơc tính số giờ SV cần chuẩn bị để thi cuối kỳ: 16 Bảng phân tiết Chƣơng 1 2 3 4 5 6 7 8 9 10 11 Số tiết 3 3 3 6 2 4 6 2 4 6 6
Nội dung phần thực hành (bài tập) Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động dạy/học đánh giá 1
Bài tập số 1: Phân tích độ phức tạp
L.O.1.2 – Phân tích  Thầy/Cô: Đánh giá trên
được các giải thuật và thái độ tham gia
1.1. Phân tích độ phức tạp của giải
- Hướng dẫn làm bài các buổi bài tập,
thuật lặp và sử dụng ký hiệu Big- sử dụng được ký hiệu tiêu biểu. sự chuyên cần, O để mô tả.
“Big O” để ghi ra độ - Phân tích và chỉnh và chất lượng bài
1.2. Các lớp độ phức tạp và so sánh
phức tạp của giải thuật sửa bài giải của sinh giải của sinh viên
1.3. Phát triển giải thuật cho một số cấu thành từ các cấu viên làm trên bảng trên bảng hay bài
bài toàn tiêu biểu và phân tích trúc điều khiển: tuần hay làm trên giấy (lấy giải nộp cho chúng tự, rẽ nhánh và lặp. ngẫu nhiên) giảng viên
L.O.1.3 – Liệt kê được,
cho được ví dụ và so  Sinh viên:
Yêu cầu tự học đ/v sinh viên:
sánh được các lớp độ
- Làm trước bài tập ở
phức tạp, như, hằng số, nhà vào giấy (đề lấy log, tuyến tính, etc. từ hệ thống máy chủ 15/21 Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động dạy/học đánh giá
L.O.1.5 – Mô tả được quản lý tư liệu học
các chiến lược thiết kế tập).
giải thuật và giải quyết - Lên bảng làm các bài tập theo yêu cầu bài toán. của giảng viên. - Nộp lời giải cho giảng viên ở cuối buổi. 2
Bài tập số 2: Sử dụng danh sách
L.O.2.1 – Phát họa  Thầy/Cô: Đánh giá trên được bằng hình ảnh thái độ tham gia
2.1. Mô tả ý tưởng hiện thực danh
- Hướng dẫn làm bài các buổi bài tập,
sách bằng hình ảnh và bằng mã cho: (a) danh sách hiện tiêu biểu. sự chuyên cần, giả.
thực bằng mảng và - Phân tích và chỉnh và chất lượng bài
2.2. Viết mã giả và thực hiện từng bằng liên kết (con trỏ); sửa bài giải của sinh giải của sinh viên
bước cho các phương thức trên (b) cho chồng; và (c) viên làm trên bảng trên bảng hay bài
danh sách, chồng, và hàng
cho hàng đợi và hàng hay làm trên giấy (lấy giải nộp cho
Yêu cầu tự học đ/v sinh viên: đợi vòng (mức logic). ngẫu nhiên) giảng viên
L.O.2.2 – Viết được
bằng mã giả mô tả cấu  Sinh viên:
trúc lưu trữ cho: (a) - Làm trước bài tập ở
danh sách hiện thực nhà vào giấy (đề lấy
bằng mảng và bằng liên từ hệ thống máy chủ
kết; (b) cho chồng; và quản lý tư liệu học tập).
(c) cho hàng đợi và - Lên bảng làm các
hàng đợi vòng (mức bài tập theo yêu cầu logic). của giảng viên.
L.O.2.3 – Liệt kê được - Nộp lời giải cho
các phương thức cần giảng viên ở cuối
thiết cho từng cấu trúc buổi. như danh sách, chồng và hàng đợi; cũng như
mô tả được chúng bằng mã giả (mức logic). 3
Bài tập số 3: Sử dụng cây
L.O.3.1 – Phát họa  Thầy/Cô: Đánh giá trên được bằng hình ảnh thái độ tham gia
3.1. Xác định các tính chất của cây:
- Hướng dẫn làm bài các buổi bài tập,
cây đầy đủ, cân bằng, hệ số cân cho các cây tiêu biểu, tiêu biểu. sự chuyên bằng, etc. cần,
như, cây nhị phân, cây - Phân tích và chỉnh và chất lượng bài
3.2. Thực hiện từng bước cân bằng nhị phân đầy đủ, cây sửa bài giải của sinh giải của sinh viên cây AVL bằng hình ảnh
nhị phân cân bằng, cây viên làm trên bảng trên bảng hay bài
Yêu cầu tự học đ/v sinh viên:
AVL, cây đa phân, v.v. hay làm trên giấy (lấy giải nộp cho (mức logic). ngẫu nhiên) giảng viên
L.O.3.2 – Viết được
bằng mã giả mô tả cấu  Sinh viên:
trúc lưu trữ cho các loại - Làm trước bài tập ở cây (mức logic) nhà vào giấy (đề lấy từ hệ thống máy chủ
L.O.3.5 – Chỉ ra được
và vẽ hình minh họa về quản lý tư liệu học tập).
tất cả các trường mất - Lên bảng làm các
cân bằng trong cây bài tập theo yêu cầu
AVL và cây B, cũng của giảng viên.
như thực hiện từng - Nộp lời giải cho
bước để tái cân bằng giảng viên ở cuối
chúng trên hình vẽ buổi. (mức logic). 4
Bài tập số 4: Sử dụng Bảng băm và L.O.4.2 – Phác họa  Thầy/Cô: Đánh giá trên Heap
được bằng hình ảnh - Hướng dẫn làm bài thái độ tham gia các buổi bài tập,
4.1. Đảm bảo tính chất của heap bằng cho cấu trúc Heap và tiêu biểu. sự chuyên cần, 16/21 Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động dạy/học đánh giá hình ảnh
nêu ra sự liên quan đến - Phân tích và chỉnh và chất lượng bài
4.2. Phân tích độ phức tạp của các lưu trữ ở dạng mảng.
sửa bài giải của sinh giải của sinh viên phương thức trên bảng hay bài
L.O.4.3 – Liệt kê được viên làm trên bảng giải nộp cho
4.3. Xây dựng bảng băm với các hàm các phương thức cần hay làm trên giấy (lấy giảng viên băm tiêu biểu
thiết cho cho cấu trúc ngẫu nhiên)
4.4. Theo vết quá trình giải quyết heap; cũng như mô tả
đụng độ của một giải thuật
được chúng bằng mã  Sinh viên:
Yêu cầu tự học đ/v sinh viên: giả (mức logic).
- Làm trước bài tập ở
L.O.4.4 – Phác họa nhà vào giấy (đề lấy
được bằng hình ảnh các từ hệ thống máy chủ
phương thức để đảm quản lý tư liệu học tập).
bảo tính chất của cấu - Lên bảng làm các
trúc Heap khi đưa vào bài tập theo yêu cầu
hay lấy ra phần tử của giảng viên.
trong heap (mức logic). - Nộp lời giải cho
L.O.5.2 – Mô tả được giảng viên ở cuối
bằng mã giả và cho ví buổi. dụ minh họa cho các hàm băm cơ bản.
L.O.5.3 – Mô tả được bằng mã giả và cho ví dụ minh họa cho các
phương thức giải quyết đụng độ.
L.O.4.6 – Phân tích được và làm thực nghiệm đánh giá được
các phương thức đã hổ trợ cho cấu trúc Heap.
L.O.5.5 – Phân tích được và làm thực nghiệm đánh giá được
các phương thức đã hổ trợ cho cấu trúc bảng băm. 5
Bài tập số 5: Sử dụng các giải thuật L.O.6.1 – Minh họa  Thầy/Cô: Đánh giá trên sắp xếp
được bằng hình vẽ từng - Hướng dẫn làm bài thái độ tham gia các buổi bài tập,
5.1. Thực hiện từng bước quá trình bước hoạt động của các tiêu biểu. sự chuyên cần,
sắp xếp cho các giải thuật. giải thuật sắp xếp.
- Phân tích và chỉnh và chất lượng bài
5.2. Phân tích các giải thuật sắp xếp L.O.6.2 – Mô tả được sửa bài giải của sinh giải của sinh viên
và đặc trưng bởi ký hiệu Big-O.
bằng mã giả cho các viên làm trên bảng trên bảng hay bài
5.3. Sử dụng mã giả mô tả giải thuật giải thuật sắp xếp.
hay làm trên giấy (lấy giải nộp cho sắp xếp
L.O.6.4 – Phân tích ngẫu nhiên) giảng viên
Yêu cầu tự học đ/v sinh viên: được và làm thực
nghiệm đánh giá các  Sinh viên: giải thuật sắp xếp.
- Làm trước bài tập ở nhà vào giấy (đề lấy từ hệ thống máy chủ quản lý tư liệu học tập). - Lên bảng làm các bài tập theo yêu cầu của giảng viên. - Nộp lời giải cho giảng viên ở cuối buổi. 17/21 Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động dạy/học đánh giá 6
Bài tập số 6: Sử dụng đồ thị
L.O.7.2 – Vẽ được  Thầy/Cô: Đánh giá trên hình minh họa và mô tả thái độ tham gia
6.1. Mô tả cấu trúc lưu trữ cho đồ thị - Hướng dẫn làm bài
cấu trúc lưu trữ cho đồ tiêu biểu. các buổi bài tập,
6.2. Thực hiện theo vết từng bước sự chuyên cần,
quá trình duyệt đồ thị.
thị ở các dạng ma trận
- Phân tích và chỉnh và chất lượng bài
kề và danh sách kề sửa bài giải của sinh
6.3. Minh họa bằng hình ảnh các giải giải của sinh viên thuật Dijktra và Prim
bằng mã giả (mức viên làm trên bảng trên bảng hay bài
Yêu cầu tự học đ/v sinh viên:
hay làm trên giấy (lấy giải nộp cho logic).
L.O.7.4 – Minh họa ngẫu nhiên) giảng viên
được bằng hình ảnh các
phương pháp duyệt đồ  Sinh viên:
thị cơ bản (depth first - Làm trước bài tập ở and bread-first). nhà vào giấy (đề lấy
L.O.7.7 – Minh họa từ hệ thống máy chủ
bằng hình vẽ từng bước quản lý tư liệu học
hoạt động của các giải tập).
thuật tìm đường ngắn - Lên bảng làm các nhất bằng Dijk bài tập theo yêu cầu tra và
giải thuật tìm cây phủ của giảng viên.
tối tiểu bằng giải thuật - Nộp lời giải cho giảng viên ở cuối Prim. buổi. Review **
Nội dung báo cáo tiểu luận/thực hành
Yêu cầu đ/v sinh viên: Sinh viên làm
trước bài tập ở nhà và nộp lại bài tập
cho giảng viên cuối buổi. **
Nội dung giới hạn cho kiểm tra giữa kỳ (tập trung) Không có **
Nội dung thi cuối kỳ (tập trung)
(Uớc tính số giờ SV cần để chuẩn bị cho kỳ thi: )
Nội dung phần thí nghiệm Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động dạy/học đánh giá 1
Bài thực hành số 1 L.O.8.3 – Give  Thầy/Cô: Đánh giá trên thái độ tham gia
1.1. Luyện tập sử dụng các kiểu dữ examples for recursive - Hướng dẫn làm bài thí nghiệm,
liệu cơ bản và kiểu do người functions written in tiêu biểu. chuyên cần,
dùng định nghĩa trong C/C++ C/C++.
- Phân tích và chỉnh coding style, và
1.2. Luyện tập sử dụng con trỏ và L.O.8.6
Give sửa bài giải của sinh bài giải của sinh tham khảo trong C/C++ examples to
relate viên làm trước ở nhà viên trên file nộp recursion to
1.3. Viết các chương trình đệ quy (lấy ngẫu nhiên) ở máy chủ hay backtracking technique. trong C/C++ file nộp trực tiếp
Yêu cầu tự học đ/v sinh viên: tại lớp.  Sinh viên:
- Làm trước bài tập ở nhà và chép file mang theo, cũng như nộp lên hệ thống máy chủ
(đề lấy từ hệ thống máy chủ quản lý tư liệu học tập). - Trình bày lời giải cho giảng viên. - Nộp lời giải cho giảng viên ở cuối buổi hay nộp trên hệ 18/21 Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động dạy/học đánh giá thống máy chủ. 2
Bài thực hành số 2
L.O.8.5 – Làm được  Thầy/Cô: Đánh giá trên thí nghiệm để so sánh thái độ tham gia
2.1. Hiện thực danh sách ở dạng array
- Hướng dẫn làm bài thí nghiệm, và liên kết.
cách tiếp cận đệ quy và tiêu biểu. cách lặp. chuyên cần,
2.2. Làm thí nghiệm đánh giá giữa
- Phân tích và chỉnh coding style, và
tìm kiếm tuần tự và tìm kiếm nhị L.O.2.4 – Hiện thực sửa bài giải của sinh bài giải của sinh phân.
được các cấu trúc danh viên làm trước ở nhà viên trên file nộp
2.3. Làm thí nghiệm đánh giá giữa sách, chồng và hàng (lấy ngẫu nhiên) ở máy chủ hay lặp và đệ quy. đợi bằng C/C++ (mức file nộp trực tiếp tại lớp.
Yêu cầu tự học đ/v sinh viên: physics)  Sinh viên:
- Làm trước bài tập ở nhà và chép file mang theo, cũng như nộp lên hệ thống máy chủ
(đề lấy từ hệ thống máy chủ quản lý tư liệu học tập). - Trình bày lời giải cho giảng viên. - Nộp lời giải cho giảng viên ở cuối buổi hay nộp trên hệ thống máy chủ. 3
Bài thực hành số 3
L.O.2.4 – Hiện thực  Thầy/Cô: Đánh giá trên
được các cấu trúc danh thái độ tham gia
3.1. Hiện thực chồng và hàng - Hướng dẫn làm bài
sách, chồng và hàng tiêu biểu. thí nghiệm,
3.2. Sử dụng chồng và hàng để giải chuyên cần, quyết bài toán thực tế đợi bằng C/C++ (mức
- Phân tích và chỉnh coding style, và
Yêu cầu tự học đ/v sinh viên: physics) sửa bài giải của sinh bài giải của sinh
L.O.2.5 – Sử dụng viên làm trước ở nhà viên trên file nộp
được danh sách, chồng, (lấy ngẫu nhiên) ở máy chủ hay
và hàng để giải quyết file nộp trực tiếp
bài toán thực, cũng như  Sinh viên: tại lớp.
cân nhắc chọn lựa kiểu - Làm trước bài tập ở hiện thực tối ưu. nhà và chép file mang theo, cũng như nộp lên hệ thống máy chủ
(đề lấy từ hệ thống máy chủ quản lý tư liệu học tập). - Trình bày lời giải cho giảng viên. - Nộp lời giải cho giảng viên ở cuối buổi hay nộp trên hệ thống máy chủ. 4
Bài thực hành số 4
L.O.3.6 – Hiện thực  Thầy/Cô: Đánh giá trên
được các cấu trúc cây thái độ tham gia
4.1. Hiện thực cây nhị phân tìm kiếm
- Hướng dẫn làm bài thí nghiệm, và cây AVL
nhị phân và cây AVL tiêu biểu. bằng C/C++ chuyên cần,
4.2. Làm thí nghiệm đánh giá giữa
- Phân tích và chỉnh coding style, và
tìm kiếm với cây nhị phân, AVL L.O.3.8 – Phân tích sửa bài giải của sinh bài giải của sinh và tìm kiếm tuần tự.
được và làm thực viên làm trước ở nhà viên trên file nộp
Yêu cầu tự học đ/v sinh viên: nghiệm đánh giá được (lấy ngẫu nhiên) ở máy chủ hay
các phương thức đã hổ file nộp trực tiếp
trợ cho các cấu trúc cây tại lớp. nhị phân và cây AVL.  Sinh viên:
- Làm trước bài tập ở nhà và chép file mang theo, cũng như nộp lên hệ thống máy chủ
(đề lấy từ hệ thống máy chủ quản lý tư 19/21 Tuần Nội dung
Chuẩn đầu ra chi tiết Hoạt động Hoạt động dạy/học đánh giá liệu học tập). - Trình bày lời giải cho giảng viên. - Nộp lời giải cho giảng viên ở cuối buổi hay nộp trên hệ thống máy chủ. 5
Bài thực hành số 5
L.O.4.5 – Hiện thực  Thầy/Cô: Đánh giá trên được cấu trúc heap thái độ tham gia
5.1. Hiện thực cấu trúc Heap. - Hướng dẫn làm bài bằng C/C++. thí nghiệm, tiêu biểu.
5.2. Ứng dụng Heap để giải quyết bài chuyên cần, toán thực
- Phân tích và chỉnh coding style, và
Yêu cầu tự học đ/v sinh viên: sửa bài giải của sinh bài giải của sinh
viên làm trước ở nhà viên trên file nộp (lấy ngẫu nhiên) ở máy chủ hay file nộp trực tiếp  Sinh viên: tại lớp.
- Làm trước bài tập ở nhà và chép file mang theo, cũng như nộp lên hệ thống máy chủ
(đề lấy từ hệ thống máy chủ quản lý tư liệu học tập). - Trình bày lời giải cho giảng viên. - Nộp lời giải cho giảng viên ở cuối buổi hay nộp trên hệ thống máy chủ. 6
Bài thực hành số 6
L.O.5.4 – Hiện thực  Thầy/Cô: Đánh giá trên được cấu trúc bảng thái độ tham gia
6.1. Hiện thực bảng băm. - Hướng dẫn làm bài băm bằng C/C++. thí nghiệm, tiêu biểu.
6.2. Ứng dụng bảng băm để giải chuyên cần, quyết bài toán thực
- Phân tích và chỉnh coding style, và sửa bài giải của sinh
Yêu cầu tự học đ/v sinh viên: bài giải của sinh
viên làm trước ở nhà viên trên file nộp (lấy ngẫu nhiên) ở máy chủ hay file nộp trực tiếp  Sinh viên: tại lớp.
- Làm trước bài tập ở nhà và chép file mang theo, cũng như nộp lên hệ thống máy chủ
(đề lấy từ hệ thống máy chủ quản lý tư liệu học tập). - Trình bày lời giải cho giảng viên. - Nộp lời giải cho giảng viên ở cuối buổi hay nộp trên hệ thống máy chủ. 7
Bài thực hành số 7
L.O.6.3 – Hiện thực  Thầy/Cô: Đánh giá trên
được các giải thuật sắp thái độ tham gia
7.1. Hiện thực các giải thuật sắp xếp - Hướng dẫn làm bài xếp bằng C/C++ . thí nghiệm, tiêu biểu.
7.2. Làm thí nghiệm đánh giá các giải chuyên cần, thuật sắp xếp
L.O.6.4 – Phân tích - Phân tích và chỉnh coding style, và
Yêu cầu tự học đ/v sinh viên:
được và làm thực sửa bài giải của sinh bài giải của sinh
nghiệm đánh giá các viên làm trước ở nhà viên trên file nộp giải thuật sắp xếp. (lấy ngẫu nhiên) ở máy chủ hay file nộp trực tiếp  Sinh viên: tại lớp. 20/21