



















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