Microsoft Word CauTrucDuLieuvaGiaiThuat 4TC Updated doc 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 Tech[.]
Đạ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 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT (Data Structures and Algorithms) Số tín (3.2.7) Số tiết Tổng: 75 Môn ĐA, TT, LV Tỉ lệ đánh giá Hình thức đánh giá MSMH LT: 45 TH: 15 TN: 15 BTL/TL: Y Môn tiên BT: 15% TN: 10% KT: 0% BTL/TL: 25% Thi: 50% - Bài tập: sinh viên làm trước tập nhà; tập chấm theo cách chấm nêu cột cuối bảng danh mục tập (thực hành), trình bày phần sau, gần cuối đề cương - Thí nghiệm: sinh viên làm trước thí nghiệm nhà; thí nghiệm chấm theo cách chấm nêu cột cuối bảng danh mục thí nghiệm, trình bày phần sau, gần cuối đề cương - Thi: viết trắc nghiệm, 90 phút Không Môn học trước Kỹ thuật Lập trình Mơn song hành Khơng CTĐT ngành Trình độ đào tạo Khoa Học Máy Tính Kỹ Thuật Máy Tính Đại học Cấp độ mơn học Cấp độ (dạy cho sinh viên năm 1) 501027 Ghi khác Mục tiêu môn học Môn học nhằm cung cấp cho sinh viên khả sử dụng cấu trúc liệu tảng Môn học hướng dẫn sinh viên hiểu, phân tích đánh giá giải thuật làm việc với cấu trúc 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 Nội dung tóm tắt mơn học • • • Ơn lại lập trình, kiểu liệu C/C++, đặc biệt cấu trúc trỏ Giới thiệu độ phức tạp tính tốn đệ qui Các cấu trúc liệu phân tích chúng: danh sách; chồng hàng; cây, nhị phân, nhị phân tìm kiếm, AVL đa phân; heap; giải thuật xếp; bảng băm; đồ 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 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 Hiểu biết, kỹ năng, thái độ cần đạt sau học môn học STT L.O.1 L.O.2 Chuẩn đầu môn học CDIO Phân tích giải thuật L.O.1.1 – Định nghĩa khái niệm độ phức tạp độ phức tạp trường hợp “tốt nhất”, “xấu nhất”, “trung bình” L.O.1.2 – Phân tích giải thuật sử dụng ký hiệu “Big O” để ghi độ phức tạp giải thuật cấu thành từ cấu trúc điều khiển: tuần tự, rẽ nhánh lặp L.O.1.3 – Liệt kê được, cho ví dụ so sánh lớp độ phức tạp, như, số, log, tuyến tính, etc L.O.1.4 – Nhận thức cân nhớ thời gian giải thuật L.O.1.5 – Mô tả chiến lược thiết kế giải thuật giải toán Sử dụng cấu trúc liệu danh sách, chồng hàng L.O.2.1 – Phát họa hình ảnh cho: (a) danh sách thực mả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 mã giả mô tả cấu trúc lưu trữ cho: (a) danh sách thực mảng liên kết; (b) cho chồng; (c) cho hàng đợi hàng đợi vòng (mức logic) L.O.2.3 – Liệt kê phương thức cần thiết cho cấu trúc danh sách, chồng hàng đợi; mô tả chúng mã giả (mức logic) L.O.2.4 – Hiện thực cấu trúc danh sách, chồng hàng đợi C/C++ (mức physics) L.O.2.5 – Sử dụng danh sách, chồng, hàng để giải toán thực, cân nhắc chọn lựa kiểu thực tối ưu L.O.2.6 – Phân tích làm thí nghiệm đánh giá phương thức 2/21 L.O.3 L.O.4 L.O.5 L.O.6 hổ trợ cho cấu trúc danh sánh, chồng, hàng Sử dụng cấu trúc L.O.3.1 – Phát họa hình ảnh cho tiêu biểu, như, nhị phân, nhị phân đầy đủ, nhị phân cân bằng, AVL, đa phân, v.v (mức logic) L.O.3.2 – Viết mã giả mô tả cấu trúc lưu trữ cho loại (mức logic) L.O.3.3 – Liệt kê phương thức cần thiết cho cho cấu trúc cây; mô tả chúng mã giả (mức logic) L.O.3.4 – Chỉ cho ví dụ minh họa tầm quan trọng tính cân L.O.3.5 – Chỉ vẽ hình minh họa tất trường cân AVL B, thực bước để tái cân chúng hình vẽ (mức logic) L.O.3.6 – Hiện thực cấu trúc nhị phân AVL C/C++ L.O.3.7 – Sử dụng nhị phân AVL để giải toán thực, đặc biệt liên quan đến tìm kiếm L.O.3.8 – Phân tích làm thực nghiệm đánh giá phương thức hổ trợ cho cấu trúc nhị phân AVL Sử dụng Heap L.O.4.1 – Chỉ ứng dụng cần đến Heap L.O.4.2 – Phác họa hình ảnh cho cấu trúc Heap nêu liên quan đến lưu trữ dạng mảng L.O.4.3 – Liệt kê phương thức cần thiết cho cho cấu trúc heap; mô tả chúng mã giả (mức logic) L.O.4.4 – Phác họa hình ảnh phương thức để đảm bảo tính chất cấu trúc Heap đưa vào hay lấy phần tử heap (mức logic) L.O.4.5 – Hiện thực cấu trúc heap C/C++ L.O.4.6 – Phân tích làm thực nghiệm đánh giá phương thức hổ trợ cho cấu trúc Heap Sử dụng bảng băm L.O.5.1 – Vẽ hình minh họa bảng băm với khái niệm khóa, đụng độ giải đụng độ L.O.5.2 – Mô tả mã giả cho ví dụ minh họa cho hàm băm L.O.5.3 – Mô tả mã giả cho ví dụ minh họa cho phương thức giải đụng độ L.O.5.4 – Hiện thực cấu trúc bảng băm C/C++ L.O.5.5 – Phân tích làm thực nghiệm đánh giá phương thức hổ trợ cho cấu trúc bảng băm Phát triển giải thuật xếp L.O.6.1 – Minh họa hình vẽ bước hoạt động giải thuật xếp L.O.6.2 – Mô tả mã giả cho giải thuật xếp L.O.6.3 – Hiện thực giải thuật xếp C/C++ 3/21 L.O.7 L.O.8 Index L.O.1 L.O.2 L.O.6.4 – Phân tích làm thực nghiệm đánh giá giải thuật xếp L.O.6.5 – Sử dụng giải thuật xếp toán thực Hiểu biết đồ thị L.O.7.1 – Phát họa hình ảnh cho khái niệm đồ thị liên thơng khơng liên thơng, đồ thị có hướng khơng hướng, chu trình, v.v L.O.7.2 – Vẽ hình minh họa mơ tả cấu trúc lưu trữ cho đồ thị dạng ma trận kề danh sách kề mã giả (mức logic) L.O.7.3 – Liệt kê phương thức cần thiết cho cho cấu trúc đồ thị; mô tả chúng mã giả (mức logic) L.O.7.4 – Minh họa hình ảnh phương pháp duyệt đồ thị (depth first and bread-first) L.O.7.5 – Hiện thực cấu trúc lưu trữ đồ C/C++ L.O.7.6 – Hiện thực phương pháp duyệt nói C/C++ sử dụng chúng giải toán thực L.O.7.7 – Minh họa hình vẽ bước hoạt động giải thuật tìm đường ngắn Dijktra giải thuật tìm phủ tối tiểu giải thuật Prim Sử dụng đệ quy L.O.8.1 – Mô tả thành phần giải thuật đệ quy L.O.8.2 – Vẽ mô tả lần gọi hàm giá trị tham số truyền vào hàm L.O.8.3 – Cho ví dụ hàm gọi đệ quy viết C/C++ L.O.8.4 – Phát triển giải thuật đệ quy cho phương thức cần thiết cấu trúc: danh sách, cây, heap, tìm kiếm tìm kiếm nhị phân, đồ thị L.O.8.5 – Làm thí nghiệm để so sánh cách tiếp cận đệ quy cách lặp L.O.8.6 – Cho ví dụ minh họa liên quan Backtracking đệ quy Course learning outcomes CDIO 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 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 4/21 L.O.3 L.O.4 L.O.5 L.O.6 list and linked list, including single link and double links, and multiple 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 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 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 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 Use sorting 5/21 L.O.7 L.O.8 L.O.6.1 – Depict the working steps of sorting algorithms step-by-steps 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 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 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 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 giảng, tập, thí nghiệm, tập lớn lưu trữ máy chủ quản lý tư liệu học tập khoa (trường) Sinh viên tải về, in mang theo lên lớp học • Sinh viên cần làm thêm tập thực hành Sinh viên nên tham gia làm tập online hệ thống máy chủ nói trên, sử dụng hệ thống để trao đổi với sinh viên khác, TA, giảng viên • Sinh viên nên học đầy đủ làm tập trình học giúp tiết kiệm thời gian q trình ơn thi kỳ cuối kỳ • Đối với phần thực hành tập, sinh viên tham gia đầy đủ buổi thí nghiệm nộp lại báo cáo thí nghiệm cuối thí nghiệm Chi tiết cách đánh giá mơn học: • Thực hành (15%): • Bài tập (10%): 6/21 • Bải tập lớn (25%): • Thi cuối kỳ (50%) Dự kiến danh sách Cán tham gia giảng dạy • TS Lương Thế Nhân • Th.S Trần Giang Sơn Nội dung chi tiết Nội dung phần lý thuyết Tuần /Tiết Nội dung Xem bảng phân tiết Chương Giới thiệu 1.1 Giới thiệu môn học 1.2 Các khái niệm: liệu, kiểu liệu, kiểu liệu trừu tượng, cấu trúc liệu, giải thuật 1.3 Ôn tập struct, class, trỏ, mảng 1.4 Bài tập Yêu cầu tự học đ/v sinh viên: Chương Độ 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 trường hợp 2.3 Các toán độ phức tạp thường gặp 2.4 Giới thiệu P NP 2.5 Bài tập Yêu cầu tự học đ/v sinh viên: Chương Đệ quy 3.1 Đệ quy thành phần giải thuật đệ quy 3.2 Đệ quy C/C++ 3.3 Tính chất đệ quy 3.4 Thiết kế giải thuật đệ qui Chuẩn đầu chi tiết L.O.1.1 – Định nghĩa khái niệm độ phức tạp độ phức tạp trường hợp “tốt nhất”, “xấu nhất”, “trung bình” L.O.1.2 – Phân tích giải thuật sử dụng ký hiệu “Big O” để ghi độ phức tạp giải thuật cấu thành từ cấu trúc điều khiển: tuần tự, rẽ nhánh lặp L.O.1.3 – Liệt kê được, cho ví dụ so sánh lớp độ phức tạp, như, số, log, tuyến tính, etc L.O.1.4 – Nhận thức cân nhớ thời gian giải thuật L.O.1.5 – Mô tả chiến lược thiết kế giải thuật giải toán L.O.8.1 – Mô tả thành phần giải thuật đệ quy L.O.8.2 – Vẽ mô tả lần gọi hàm Hoạt động dạy học - Giảng lý thuyết - Bài tập lớp - Hoạt động đánh giá Bài tập Bài thí nghiệm Bài tập lớn Bài thi - Giảng lý thuyết - Bài tập lớp - Bài tập Bài thí nghiệm Bài tập lớn Bài thi - Giảng lý thuyết - Bài tập lớp - Bài tập Bài thí nghiệm Bài tập lớn Bài thi 7/21 Tuần /Tiết Nội dung 3.5 Đệ quy kỹ thuật quay lui 3.6 Bài tập Yêu cầu tự học đ/v sinh viên: Chương Danh sách 4.1 Khái niệm ứng dụng 4.2 Hiện thực mảng (array) 4.3 Hiện thực 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á dạng thực 4.1 Bài tập Yêu cầu tự học đ/v sinh viên: Chuẩn đầu chi tiết giá trị tham số truyền vào hàm L.O.8.3 – Cho ví dụ hàm gọi đệ quy viết C/C++ L.O.8.5 – Làm thí nghiệm để so sánh cách tiếp cận đệ quy cách lặp L.O.8.6 – Cho ví dụ minh họa liên quan Backtracking đệ quy L.O.2.1 – Phát họa hình ảnh cho: (a) danh sách thực mả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 mã giả mô tả cấu trúc lưu trữ cho: (a) danh sách thực mảng liên kết; (b) cho chồng; (c) cho hàng đợi hàng đợi vòng (mức logic) L.O.2.3 – Liệt kê phương thức cần thiết cho cấu trúc danh sách, chồng hàng đợi; mô tả chúng mã giả (mức logic) L.O.2.4 – Hiện thực cấu trúc danh sách, chồng hàng đợi C/C++ (mức physics) L.O.2.5 – Sử dụng danh sách, chồng, hàng để giải toán thực, cân nhắc chọn lựa kiểu thực tối ưu L.O.2.6 – Phân tích làm thí nghiệm đánh giá phương thức hổ trợ cho cấu trúc danh sánh, chồng, hàng L.O.8.4 – Phát triển giải thuật đệ quy Hoạt động dạy học - Giảng lý thuyết - Bài tập lớp Hoạt động đánh giá - Bài tập Bài thí nghiệm Bài tập lớn Bài thi 8/21 Tuần /Tiết Nội dung Chương Chồng Hàng 5.1 Các ứng dụng chồng & hàng 5.2 Các tác vụ chồng 5.3 Hiện thực chồng danh sách liên kết mảng 5.4 Các tác vụ hàng 5.5 Hiện thực hàng danh sách liên kết mảng 5.6 Bài tập Yêu cầu tự học đ/v sinh viên: Chuẩn đầu chi tiết cho phương thức cần thiết cấu trúc: danh sách, cây, heap, tìm kiếm tìm kiếm nhị phân, đồ thị L.O.1.2 – Phân tích giải thuật sử dụng ký hiệu “Big O” để ghi độ phức tạp giải thuật cấu thành từ cấu trúc điều khiển: tuần tự, rẽ nhánh lặp L.O.2.1 – Phát họa hình ảnh cho: (a) danh sách thực mả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 mã giả mô tả cấu trúc lưu trữ cho: (a) danh sách thực mảng liên kết; (b) cho chồng; (c) cho hàng đợi hàng đợi vòng (mức logic) L.O.2.3 – Liệt kê phương thức cần thiết cho cấu trúc danh sách, chồng hàng đợi; mô tả chúng mã giả (mức logic) L.O.2.4 – Hiện thực cấu trúc danh sách, chồng hàng đợi C/C++ (mức physics) L.O.2.5 – Sử dụng danh sách, chồng, hàng để giải toán thực, cân nhắc chọn lựa kiểu thực tối ưu L.O.2.6 – Phân tích làm thí nghiệm đánh giá phương thức hổ trợ cho cấu trúc danh sánh, chồng, hàng L.O.8.4 – Phát triển giải thuật đệ quy Hoạt động dạy học - Giảng lý thuyết - Bài tập lớp Hoạt động đánh giá - 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 chi tiết Hoạt động dạy học Hoạt động đánh giá cho phương thức cần thiết cấu trúc: danh sách, cây, heap, tìm kiếm tìm kiếm nhị phân, đồ thị L.O.1.2 – Phân tích giải thuật sử dụng ký hiệu “Big O” để ghi độ phức tạp giải thuật cấu thành từ cấu trúc điều khiển: tuần tự, rẽ nhánh lặp Kiểm tra kỳ Chương Cây 6.1 Các khái niệm ứng dụng 6.2 Cây nhị phân 6.3 Cấu trúc lưu trữ 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 Bài tập Yêu cầu tự học đ/v sinh viên: L.O.3.1 – Phát họa hình ảnh cho tiêu biểu, như, nhị phân, nhị phân đầy đủ, nhị phân cân bằng, AVL, đa phân, v.v (mức logic) L.O.3.2 – Viết mã giả mô tả cấu trúc lưu trữ cho loại (mức logic) L.O.3.3 – Liệt kê phương thức cần thiết cho cho cấu trúc cây; mô tả chúng mã giả (mức logic) L.O.3.4 – Chỉ cho ví dụ minh họa tầm quan trọng tính cân L.O.3.5 – Chỉ vẽ hình minh họa tất trường cân AVL B, thực bước để tái cân chúng hình vẽ (mức logic) L.O.3.6 – Hiện thực cấu trúc nhị phân AVL C/C++ L.O.3.7 – Sử dụng nhị phân AVL để giải toán thực, đặc biệt liên quan đến tìm kiếm - Giảng lý thuyết - Bài tập 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 Chương 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ữ phương thức 7.3 Cân AVL 7.4 Cây đa phân: khái niệm, ưu điểm ứng dụng 7.5 Cây B-Tree: khái niệm 7.6 Cân B-Tree 7.7 Bài tập Yêu cầu tự học đ/v sinh viên: 16 Chuẩn đầu chi tiết L.O.3.8 – Phân tích làm thực nghiệm đánh giá phương thức hổ trợ cho cấu trúc nhị phân AVL L.O.8.4 – Phát triển giải thuật đệ quy cho phương thức cần thiết cấu trúc: danh sách, cây, heap, tìm kiếm tìm kiếm nhị phân, đồ thị L.O.1.2 – Phân tích giải thuật sử dụng ký hiệu “Big O” để ghi độ phức tạp giải thuật cấu thành từ cấu trúc điều khiển: tuần tự, rẽ nhánh lặp L.O.3.1 – Phát họa hình ảnh cho tiêu biểu, như, nhị phân, nhị phân đầy đủ, nhị phân cân bằng, AVL, đa phân, v.v (mức logic) L.O.3.2 – Viết mã giả mô tả cấu trúc lưu trữ cho loại (mức logic) L.O.3.3 – Liệt kê phương thức cần thiết cho cho cấu trúc cây; mô tả chúng mã giả (mức logic) L.O.3.4 – Chỉ cho ví dụ minh họa tầm quan trọng tính cân L.O.3.5 – Chỉ vẽ hình minh họa tất trường cân AVL B, thực bước để tái cân chúng hình vẽ (mức logic) L.O.3.6 – Hiện thực cấu trúc nhị phân AVL C/C++ Hoạt động dạy học - Giảng lý thuyết - Bài tập lớp Hoạt động đánh giá - 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 Chương Heap 8.1 Khái niệm ứng dụng 8.2 Cấu trúc lưu trữ phép toán 8.3 Bài tập Yêu cầu tự học đ/v sinh viên: Chuẩn đầu chi tiết L.O.3.7 – Sử dụng nhị phân AVL để giải tốn thực, đặc biệt liên quan đến tìm kiếm L.O.3.8 – Phân tích làm thực nghiệm đánh giá phương thức hổ trợ cho cấu trúc nhị phân AVL L.O.8.4 – Phát triển giải thuật đệ quy cho phương thức cần thiết cấu trúc: danh sách, cây, heap, tìm kiếm tìm kiếm nhị phân, đồ thị L.O.1.2 – Phân tích giải thuật sử dụng ký hiệu “Big O” để ghi độ phức tạp giải thuật cấu thành từ cấu trúc điều khiển: tuần tự, rẽ nhánh lặp L.O.4.1 – Chỉ ứng dụng cần đến Heap L.O.4.2 – Phác họa hình ảnh cho cấu trúc Heap nêu liên quan đến lưu trữ dạng mảng L.O.4.3 – Liệt kê phương thức cần thiết cho cho cấu trúc heap; mô tả chúng mã giả (mức logic) L.O.4.4 – Phác họa hình ảnh phương thức để đảm bảo tính chất cấu trúc Heap đưa vào hay lấy phần tử heap (mức logic) L.O.4.5 – Hiện thực cấu trúc heap C/C++ L.O.4.6 – Phân tích làm thực nghiệm đánh giá phương thức hổ trợ cho cấu trúc Heap L.O.8.4 – Phát triển giải thuật đệ quy Hoạt động dạy học - Giảng lý thuyết - Bài tập lớp Hoạt động đánh giá - 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 Chương Bảng băm 9.1 Khái niệm ứng dụng 9.2 Các hàm băm 9.3 Các phương pháp giải đụng độ 9.4 Bài tập Yêu cầu tự học đ/v sinh viên: Chương 10 Sắp xếp 10.1 Khái niệm ứ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 xếp 10.6 Bài tập Yêu cầu tự học đ/v sinh viên: Chuẩn đầu chi tiết cho phương thức cần thiết cấu trúc: danh sách, cây, heap, tìm kiếm tìm kiếm nhị phân, đồ thị L.O.1.2 – Phân tích giải thuật sử dụng ký hiệu “Big O” để ghi độ phức tạp giải thuật cấu thành từ cấu trúc điều khiển: tuần tự, rẽ nhánh lặp L.O.5.1 – Vẽ hình minh họa bảng băm với khái niệm khóa, đụng độ giải đụng độ L.O.5.2 – Mô tả mã giả cho ví dụ minh họa cho hàm băm L.O.5.3 – Mô tả mã giả cho ví dụ minh họa cho phương thức giải đụng độ L.O.5.4 – Hiện thực cấu trúc bảng băm C/C++ L.O.5.5 – Phân tích làm thực nghiệm đánh giá phương thức hổ trợ cho cấu trúc bảng băm L.O.1.2 – Phân tích giải thuật sử dụng ký hiệu “Big O” để ghi độ phức tạp giải thuật cấu thành từ cấu trúc điều khiển: tuần tự, rẽ nhánh lặp L.O.6.1 – Minh họa hình vẽ bước hoạt động giải thuật xếp L.O.6.2 – Mô tả mã giả cho giải thuật xếp L.O.6.3 – Hiện thực giải thuật xếp C/C++ L.O.6.4 – Phân tích làm thực nghiệm đánh giá Hoạt động dạy học Hoạt động đánh giá - Giảng lý thuyết - Bài tập lớp - Bài tập Bài thí nghiệm Bài tập lớn Bài thi - Giảng lý thuyết - Bài tập 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 Chương 11 Đồ thị 11.1 Khái niệm ứng dụng 11.2 Cấu trúc lưu trữ phương thức 11.3 Cây phủ tối thiểu 11.4 Đường ngắn 11.5 Các toán ứng dụng đồ thị 11.6 Bài tập Yêu cầu tự học đ/v sinh viên: Chuẩn đầu chi tiết giải thuật xếp L.O.6.5 – Sử dụng giải thuật xếp toán thực L.O.8.4 – Phát triển giải thuật đệ quy cho phương thức cần thiết cấu trúc: danh sách, cây, heap, tìm kiếm tìm kiếm nhị phân, đồ thị L.O.1.2 – Phân tích giải thuật sử dụng ký hiệu “Big O” để ghi độ phức tạp giải thuật cấu thành từ cấu trúc điều khiển: tuần tự, rẽ nhánh lặp L.O.7.1 – Phát họa hình ảnh cho khái niệm đồ thị liên thơng khơng liên thơng, đồ thị có hướng khơng hướng, chu trình, v.v L.O.7.2 – Vẽ hình minh họa mơ tả cấu trúc lưu trữ cho đồ thị dạng ma trận kề danh sách kề mã giả (mức logic) L.O.7.3 – Liệt kê phương thức cần thiết cho cho cấu trúc đồ thị; mô tả chúng mã giả (mức logic) L.O.7.4 – Minh họa hình ảnh phương pháp duyệt đồ thị (depth first and bread-first) L.O.7.5 – Hiện thực cấu trúc lưu trữ đồ C/C++ L.O.7.6 – Hiện thực phương pháp duyệt nói C/C++ sử dụng chúng giải toán thực L.O.7.7 – Minh họa hình vẽ bước hoạt động giải thuật tìm đường ngắn Dijktra Hoạt động dạy học - Giảng lý thuyết - Bài tập lớp Hoạt động đánh giá - 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 chi tiết Hoạt động dạy học Hoạt động đánh giá giải thuật tìm phủ tối tiểu giải thuật Prim L.O.8.4 – Phát triển giải thuật đệ quy cho phương thức cần thiết cấu trúc: danh sách, cây, heap, tìm kiếm tìm kiếm nhị phân, đồ thị L.O.1.2 – Phân tích giải thuật sử dụng ký hiệu “Big O” để ghi độ phức tạp giải thuật cấu thành từ cấu trúc điều khiển: tuần tự, rẽ nhánh lặp Review ** ** Nội dung giới hạn cho kiểm tra kỳ (tập trung) Chương – Ứơc tính số SV cần chuẩn bị để kiểm tra kỳ: 12 Nội dung thi cuối kỳ (tập trung) Các chương lại Ứơc tính số SV cần chuẩn bị để thi cuối kỳ: 16 Bảng phân tiết Chương 10 11 Số tiết 3 6 6 Nội dung phần thực hành (bài tập) Tuần Nội dung Chuẩn đầu chi tiết Bài tập số 1: Phân tích độ phức tạp 1.1 Phân tích độ phức tạp giải thuật lặp sử dụng ký hiệu BigO để mô tả 1.2 Các lớp độ phức tạp so sánh 1.3 Phát triển giải thuật cho số tồn tiêu biểu phân tích chúng L.O.1.2 – Phân tích giải thuật sử dụng ký hiệu “Big O” để ghi độ phức tạp giải thuật cấu thành từ cấu trúc điều khiển: tuần tự, rẽ nhánh lặp L.O.1.3 – Liệt kê được, cho ví dụ so sánh lớp độ phức tạp, như, số, log, tuyến tính, etc L.O.1.5 – Mơ tả chiến lược thiết kế giải thuật giải Yêu cầu tự học đ/v sinh viên: Hoạt động dạy/học Ø Thầy/Cô: - Hướng dẫn làm tiêu biểu - Phân tích chỉnh sửa giải sinh viên làm bảng hay làm giấy (lấy ngẫu nhiên) Hoạt động đánh giá Đánh giá thái độ tham gia buổi tập, chuyên cần, chất lượng giải sinh viên bảng hay giải nộp cho giảng viên Ø Sinh viên: - Làm trước 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 tập theo yêu cầu 15/21 Tuần Nội dung Chuẩn đầu chi tiết toán Bài tập số 2: Sử dụng danh sách 2.1 Mô tả ý tưởng thực danh sách hình ảnh mã giả 2.2 Viết mã giả thực bước cho phương thức danh sách, chồng, hàng Yêu cầu tự học đ/v sinh viên: Bài tập số 3: Sử dụng 3.1 Xác định tính chất cây: đầy đủ, cân bằng, hệ số cân bằng, etc 3.2 Thực bước cân AVL hình ảnh Yêu cầu tự học đ/v sinh viên: Bài tập số 4: Sử dụng Bảng băm Heap 4.1 Đảm bảo tính chất heap hình ảnh 4.2 Phân tích độ phức tạp phương thức 4.3 Xây dựng bảng băm với hàm L.O.2.1 – Phát họa hình ảnh cho: (a) danh sách thực mả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 mã giả mô tả cấu trúc lưu trữ cho: (a) danh sách thực mảng liên kết; (b) cho chồng; (c) cho hàng đợi hàng đợi vòng (mức logic) L.O.2.3 – Liệt kê phương thức cần thiết cho cấu trúc danh sách, chồng hàng đợi; mô tả chúng mã giả (mức logic) L.O.3.1 – Phát họa hình ảnh cho tiêu biểu, như, nhị phân, nhị phân đầy đủ, nhị phân cân bằng, AVL, đa phân, v.v (mức logic) L.O.3.2 – Viết mã giả mô tả cấu trúc lưu trữ cho loại (mức logic) L.O.3.5 – Chỉ vẽ hình minh họa tất trường cân AVL B, thực bước để tái cân chúng hình vẽ (mức logic) L.O.4.2 – Phác họa hình ảnh cho cấu trúc Heap nêu liên quan đến lưu trữ dạng mảng L.O.4.3 – Liệt kê phương thức cần Hoạt động dạy/học giảng viên - Nộp lời giải cho giảng viên cuối buổi Ø Thầy/Cô: - Hướng dẫn làm tiêu biểu - Phân tích chỉnh sửa giải sinh viên làm bảng hay làm giấy (lấy ngẫu nhiên) Hoạt động đánh giá Đánh giá thái độ tham gia buổi tập, chuyên cần, chất lượng giải sinh viên bảng hay giải nộp cho giảng viên Ø Sinh viên: - Làm trước 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 tập theo yêu cầu giảng viên - Nộp lời giải cho giảng viên cuối buổi Ø Thầy/Cô: - Hướng dẫn làm tiêu biểu - Phân tích chỉnh sửa giải sinh viên làm bảng hay làm giấy (lấy ngẫu nhiên) Đánh giá thái độ tham gia buổi tập, chuyên cần, chất lượng giải sinh viên bảng hay giải nộp cho giảng viên Ø Sinh viên: - Làm trước 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 tập theo yêu cầu giảng viên - Nộp lời giải cho giảng viên cuối buổi Ø Thầy/Cô: - Hướng dẫn làm tiêu biểu - Phân tích chỉnh sửa giải sinh viên làm bảng hay làm giấy (lấy Đánh giá thái độ tham gia buổi tập, chuyên cần, chất lượng giải sinh viên bảng hay giải nộp cho 16/21 Tuần Nội dung Chuẩn đầu chi tiết băm tiêu biểu 4.4 Theo vết trình giải đụng độ giải thuật Yêu cầu tự học đ/v sinh viên: thiết cho cho cấu trúc heap; mô tả chúng mã giả (mức logic) L.O.4.4 – Phác họa hình ảnh phương thức để đảm bảo tính chất cấu trúc Heap đưa vào hay lấy phần tử heap (mức logic) L.O.5.2 – Mô tả mã giả cho ví dụ minh họa cho hàm băm L.O.5.3 – Mô tả mã giả cho ví dụ minh họa cho phương thức giải đụng độ L.O.4.6 – Phân tích làm thực nghiệm đánh giá phương thức hổ trợ cho cấu trúc Heap L.O.5.5 – Phân tích làm thực nghiệm đánh giá phương thức hổ trợ cho cấu trúc bảng băm L.O.6.1 – Minh họa hình vẽ bước hoạt động giải thuật xếp L.O.6.2 – Mô tả mã giả cho giải thuật xếp L.O.6.4 – Phân tích làm thực nghiệm đánh giá giải thuật xếp Bài tập số 5: Sử dụng giải thuật xếp 5.1 Thực bước trình xếp cho giải thuật 5.2 Phân tích giải thuật xếp đặc trưng ký hiệu Big-O 5.3 Sử dụng mã giả mô tả giải thuật xếp Yêu cầu tự học đ/v sinh viên: 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 theo vết bước trình duyệt đồ thị 6.3 Minh họa hình ảnh giải L.O.7.2 – Vẽ hình minh họa mơ tả cấu trúc lưu trữ cho đồ thị dạng ma trận kề danh sách kề Hoạt động dạy/học ngẫu nhiên) Hoạt động đánh giá giảng viên Ø Sinh viên: - Làm trước 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 tập theo yêu cầu giảng viên - Nộp lời giải cho giảng viên cuối buổi Ø Thầy/Cô: - Hướng dẫn làm tiêu biểu - Phân tích chỉnh sửa giải sinh viên làm bảng hay làm giấy (lấy ngẫu nhiên) Đánh giá thái độ tham gia buổi tập, chuyên cần, chất lượng giải sinh viên bảng hay giải nộp cho giảng viên Ø Sinh viên: - Làm trước 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 tập theo yêu cầu giảng viên - Nộp lời giải cho giảng viên cuối buổi Ø Thầy/Cô: - Hướng dẫn làm tiêu biểu - Phân tích chỉnh sửa giải sinh Đánh giá thái độ tham gia buổi tập, chuyên cần, chất lượng giải sinh viên 17/21 Tuần Nội dung Chuẩn đầu chi tiết thuật Dijktra Prim Yêu cầu tự học đ/v sinh viên: mã giả (mức logic) L.O.7.4 – Minh họa hình ảnh phương pháp duyệt đồ thị (depth first and bread-first) L.O.7.7 – Minh họa hình vẽ bước hoạt động giải thuật tìm đường ngắn Dijktra giải thuật tìm phủ tối tiểu giải thuật Prim Hoạt động dạy/học viên làm bảng hay làm giấy (lấy ngẫu nhiên) Hoạt động đánh giá bảng hay giải nộp cho giảng viên Ø Sinh viên: - Làm trước 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 tập theo yêu cầu giảng viên - Nộp lời giải cho giảng viên cuối 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 tập nhà nộp lại tập cho giảng viên cuối buổi Nội dung giới hạn cho kiểm tra kỳ (tập trung) Khơng có Nội dung thi cuối kỳ (tập trung) (Uớc tính số 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 chi tiết Bài thực hành số 1.1 Luyện tập sử dụng kiểu liệu kiểu người dùng định nghĩa C/C++ 1.2 Luyện tập sử dụng trỏ tham khảo C/C++ 1.3 Viết chương trình đệ quy 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 Bài thực hành số 2.1 Hiện thực danh sách dạng array liên kết 2.2 Làm thí nghiệm đánh giá L.O.8.5 – Làm thí nghiệm để so sánh cách tiếp cận đệ quy cách lặp Hoạt động dạy/học Ø Thầy/Cô: - Hướng dẫn làm tiêu biểu - Phân tích chỉnh sửa giải sinh viên làm trước nhà (lấy ngẫu nhiên) Ø Sinh viên: - Làm trước tập nhà chép file mang theo, 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 hệ thống máy chủ Ø Thầy/Cô: - Hướng dẫn làm tiêu biểu - Phân tích chỉnh Hoạt động đánh giá Đánh giá thái độ tham gia thí nghiệm, chuyên cần, coding style, giải sinh viên file nộp máy chủ hay file nộp trực tiếp lớp Đánh giá thái độ tham gia thí nghiệm, chuyên cần, coding style, 18/21 Tuần Nội dung Chuẩn đầu chi tiết tìm kiếm tìm kiếm nhị phân 2.3 Làm thí nghiệm đánh giá lặp đệ quy Yêu cầu tự học đ/v sinh viên: L.O.2.4 – Hiện thực cấu trúc danh sách, chồng hàng đợi C/C++ (mức physics) Bài thực hành số 3.1 Hiện thực chồng hàng 3.2 Sử dụng chồng hàng để giả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ấu trúc danh sách, chồng hàng đợi C/C++ (mức physics) L.O.2.5 – Sử dụng danh sách, chồng, hàng để giải toán thực, cân nhắc chọn lựa kiểu thực tối ưu Bài thực hành số 4.1 Hiện thực nhị phân tìm kiếm AVL 4.2 Làm thí nghiệm đánh giá tìm kiếm với nhị phân, AVL tìm kiếm Yêu cầu tự học đ/v sinh viên: L.O.3.6 – Hiện thực cấu trúc nhị phân AVL C/C++ L.O.3.8 – Phân tích làm thực nghiệm đánh giá phương thức hổ trợ cho cấu trúc nhị phân AVL Hoạt động dạy/học sửa giải sinh viên làm trước nhà (lấy ngẫu nhiên) Ø Sinh viên: - Làm trước tập nhà chép file mang theo, 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 hệ thống máy chủ Ø Thầy/Cô: - Hướng dẫn làm tiêu biểu - Phân tích chỉnh sửa giải sinh viên làm trước nhà (lấy ngẫu nhiên) Ø Sinh viên: - Làm trước tập nhà chép file mang theo, 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 hệ thống máy chủ Ø Thầy/Cô: - Hướng dẫn làm tiêu biểu - Phân tích chỉnh sửa giải sinh viên làm trước nhà (lấy ngẫu nhiên) Ø Sinh viên: - Làm trước tập nhà chép file mang theo, 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 Hoạt động đánh giá giải sinh viên file nộp máy chủ hay file nộp trực tiếp lớp Đánh giá thái độ tham gia thí nghiệm, chuyên cần, coding style, giải sinh viên file nộp máy chủ hay file nộp trực tiếp lớp Đánh giá thái độ tham gia thí nghiệm, chuyên cần, coding style, giải sinh viên file nộp máy chủ hay file nộp trực tiếp lớp 19/21 Tuần Nội dung Chuẩn đầu chi tiết Bài thực hành số 5.1 Hiện thực cấu trúc Heap 5.2 Ứng dụng Heap để giả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ấu trúc heap C/C++ Bài thực hành số 6.1 Hiện thực bảng băm 6.2 Ứng dụng bảng băm để giải toán thực Yêu cầu tự học đ/v sinh viên: Bài thực hành số 7.1 Hiện thực giải thuật xếp 7.2 Làm thí nghiệm đánh giá giải thuật xếp Yêu cầu tự học đ/v sinh viên: L.O.5.4 – Hiện thực cấu trúc bảng băm C/C++ L.O.6.3 – Hiện thực giải thuật xếp C/C++ L.O.6.4 – Phân tích làm thực nghiệm đánh giá giải thuật xếp Hoạt động dạy/học buổi hay nộp hệ thống máy chủ Ø Thầy/Cô: - Hướng dẫn làm tiêu biểu - Phân tích chỉnh sửa giải sinh viên làm trước nhà (lấy ngẫu nhiên) Ø Sinh viên: - Làm trước tập nhà chép file mang theo, 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 hệ thống máy chủ Ø Thầy/Cô: - Hướng dẫn làm tiêu biểu - Phân tích chỉnh sửa giải sinh viên làm trước nhà (lấy ngẫu nhiên) Ø Sinh viên: - Làm trước tập nhà chép file mang theo, 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 hệ thống máy chủ Ø Thầy/Cô: - Hướng dẫn làm tiêu biểu - Phân tích chỉnh sửa giải sinh viên làm trước nhà (lấy ngẫu nhiên) Ø Sinh viên: - Làm trước tập nhà chép file mang theo, nộp lên hệ thống máy chủ (đề lấy từ hệ thống Hoạt động đánh giá Đánh giá thái độ tham gia thí nghiệm, chuyên cần, coding style, giải sinh viên file nộp máy chủ hay file nộp trực tiếp lớp Đánh giá thái độ tham gia thí nghiệm, chuyên cần, coding style, giải sinh viên file nộp máy chủ hay file nộp trực tiếp lớp Đánh giá thái độ tham gia thí nghiệm, chuyên cần, coding style, giải sinh viên file nộp máy chủ hay file nộp trực tiếp lớp 20/21 ... hổ trợ cho cấu trúc bảng băm Phát triển giải thuật xếp L.O.6.1 – Minh họa hình vẽ bước hoạt động giải thuật xếp L.O.6.2 – Mô tả mã giả cho giải thuật xếp L.O.6.3 – Hiện thực giải thuật xếp C/C++... Các khái niệm: liệu, kiểu liệu, kiểu liệu trừu tượng, cấu trúc liệu, giải thuật 1.3 Ôn tập struct, class, trỏ, mảng 1.4 Bài tập Yêu cầu tự học đ/v sinh viên: Chương Độ phức tạp giải thuật 2.1 Khái... đánh giá giải thuật xếp Bài tập số 5: Sử dụng giải thuật xếp 5.1 Thực bước trình xếp cho giải thuật 5.2 Phân tích giải thuật xếp đặc trưng ký hiệu Big-O 5.3 Sử dụng mã giả mô tả giải thuật xếp