Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)

BM01.QT02/ĐNT-ĐT  
TRƯỜNG ĐH NGOẠI NGỮ - TIN HỌC TP.HCM  
KHOA CÔNG NGHỆ THÔNG TIN  
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM  
Độc lập – Tự do – Hạnh Phúc  
ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN  
1. Thông tin chung về học phần  
Tên học phần: Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)  
Mã học phần: 4021014  
Số tín chỉ: 4 (3+1) tín chỉ  
Thuộc chương trình đào tạo của bậc, ngành: Cao đẳng, ngành Công nghệ thông tin  
Số tiết học phần:  
.
.
.
.
.
.
.
Nghe giảng lý thuyết  
Làm bài tập trên lớp  
Thảo luận  
: 30 tiết  
: 10 tiết  
: 0 tiết  
Thực hành, thực tập  
: 30 tiết  
Hoạt động theo nhóm : 5 tiết  
Thực tế  
Tự học  
: 0 tiết  
: 120 tiết  
Đơn vị phụ trách: Bộ môn Khoa học máy tính, Khoa Công nghệ thông tin  
2. Học phần trước: Nhập môn lập trình.  
3. Mục tiêu của học phần  
Hiểu được tầm quan trọng của giải thuật và cách tổ chức dữ liệu.  
Khai thác được các cấu trúc dữ liệu phức tạp.  
4. Chuẩn đầu ra của học phần  
Đáp ứng  
CĐR  
Nội dung  
CTĐT  
Kiến thức 4.1.1. Trình bày được tầm quan trọng của giải thuật và cách tổ K1  
chức dữ liệu – hai thành phần quan trọng nhất của một chương  
trình lập cho máy tính.  
1
4.1.2. Thiết kế các thuật toán cơ bản trong lập trình (ý tưởng, K2  
cài đặt, đánh giá thuật toán, đặc biệt là các thuật toán sắp xếp và  
tìm kiếm, các thuật toán trên cây).  
4.1.3. Áp dụng các thuật toán cơ bản trong lập trình (ý tưởng,  
K3  
cài đặt, đánh giá thuật toán, đặc biệt là các thuật toán sắp xếp và  
tìm kiếm, các thuật toán trên cây) để giải quyết một số bài toán  
cho máy tính.  
Phân tích bài toán thực tế, chọn CTDL và giải thuật để giải  
quyết.  
Phân tích và đánh giá độ phức tạp của CTDL và giải thuật được  
chọn cho bài toán cụ thể.  
Kỹ năng  
4.2.1. Có khả năng tư duy logic về cách tổ chức, áp dụng các S1  
cấu trúc dữ liệu thích hợp vào các bài toán lập trình cụ thể.  
4.2.2. Có khả năng sử dụng ngôn ngữ lập trình C/C++ để cài đặt S2  
các cấu trúc dữ liệu cụ thể.  
4.2.3. Có khả năng xây dựng một chương trình thực hiện một S3  
CTDL cụ thể cùng với thuật toán tương ứng để giải quyết một  
bài toán cụ thể.  
Thái độ  
4.3.1. Có thái độ làm việc khoa học, trung thực, rõ ràng.  
A1  
4.3.2. Chuẩn bị bài trước khi đến lớp. Đi học đầy đủ. Tham gia A2,A3  
tích cực trong giờ học.  
4.3.3. Làm tất cả các bài tập lý thuyết và thực hành.  
5. Mô tả tóm tắt nội dung học phần  
A3  
Vai trò của cấu trúc dữ liệu và giải thuật trong cuộc sống và phương thức đánh giá  
các cấu trúc và giải thuật.  
Tìm hiểu, phân tích và đánh giá các giải thuật tìm kiếm và sắp xếp nội.  
Tìm hiểu, phân tích và đánh giá các kiểu danh sách lưu trữ nhiều phần tử, các kiểu  
danh sách đặc biệt và các bài toán ứng dụng.  
Tìm hiểu, phân tích, đánh giá và xây dựng các cấu trúc cây lý thuyết như cây nhị  
phân tìm kiếm, cây cân bằng AVL.  
2
6. Nội dung và lịch trình giảng dạy  
6.1. Lý thuyết  
Hoạt động của  
giảng viên  
Hoạt động của  
sinh viên  
Giáo trình  
chính  
Tài liệu tham  
khảo  
Buổi/  
Tiết  
Ghi chú  
Nội dung  
1
Chương 1: Tổng quan về CTDL  
1.1. Vai trò của CTDL  
[1]: Chương Mở [2]: Chương 1  
đầu [3]: Chương 2  
4.1.1, 4.3.1,  
4.3.2, 4.3.3  
- Giới thiệu môn  
học  
- Nghe giảng,  
- Làm bài tập  
1.2. Mối quan hệ giữa CTDL và giải  
thuật  
- Tổ chức lớp  
1.3. Các tiêu chuẩn để đánh giá CTDL  
1.4. Một số kiểu dữ liệu cơ bản  
1.5. Kiểu dữ liệu trừu tượng  
- Hướng dẫn học  
tập học phần  
- Thuyết giảng  
- Hướng dẫn bài  
tập  
2
3
Chương 1: Tổng quan về CTDL  
[1]: Chương Mở [2]: Chương 1  
đầu  
4.1.1, 4.3.1,  
4.3.2, 4.3.3  
- Thuyết giảng  
- Nghe giảng,  
- Làm bài tập  
1.6. Đánh giá độ phức tạp của giải thuật  
- Hướng dẫn bài  
tập  
Chương 2: Tìm kiếm và sắp xếp  
2.1. Vai trò của tìm kiếm và sắp xếp dữ  
liệu trong hệ thống thông tin  
2.2. Các giải thuật tìm kiếm nội  
2.2.1 Tìm kiếm tuyến tính  
[1]: Chương 7  
4.1.1, 4.1.2,  
4.2.1  
- Thuyết giảng  
- Nghe giảng,  
- Thảo luận,  
- Làm bài tập  
nhóm  
- Hướng dẫn bài  
tập  
2.2.2 Tìm kiếm nhị phân  
- Làm bài tập cá  
nhân  
4
Chương 2: Tìm kiếm và sắp xếp  
2.3. Các giải thuật sắp xếp nội  
2.3.1 Định nghĩa bài toán sắp xếp  
2.3.2 Các phương pháp sắp xếp  
thông dụng: đổi chỗ trực tiếp, nổi bọt,  
Shaker sort, Quick Sort  
[1]: Chương 7  
[2]: Chương 2  
4.1.1, 4.1.2,  
4.2.1  
- Thuyết giảng  
- Nghe giảng,  
- Thảo luận,  
- Làm bài tập  
nhóm  
- Hướng dẫn bài  
tập  
- Làm bài tập cá  
3
nhân  
5
6
7
8
Chương 2: Tìm kiếm và sắp xếp  
2.3. Các giải thuật sắp xếp nội  
2.3.2 Các phương pháp sắp xếp  
thông dụng: chọn trực tiếp, Heap Sort  
[1]: Chương 7  
[1]: Chương 7  
[1]: Chương 7  
[2]: Chương 2  
[2]: Chương 2  
[2]: Chương 2  
[2]: Chương 3  
4.1.1, 4.1.2,  
4.2.1  
- Thuyết giảng  
- Nghe giảng,  
- Thảo luận,  
- Làm bài tập  
nhóm  
- Làm bài tập cá  
nhân  
- Hướng dẫn bài  
tập  
Chương 2: Tìm kiếm và sắp xếp  
2.3. Các giải thuật sắp xếp nội  
2.3.2 Các phương pháp sắp xếp  
thông dụng: chèn trực tiếp, Shell Sort  
4.1.1, 4.1.2,  
4.2.1  
- Thuyết giảng  
- Nghe giảng,  
- Thảo luận,  
- Làm bài tập  
nhóm  
- Làm bài tập cá  
nhân  
- Hướng dẫn bài  
tập  
Chương 2: Tìm kiếm và sắp xếp  
2.3. Các giải thuật sắp xếp nội  
2.3.2 Các phương pháp sắp xếp  
thông dụng: Merge Sort, Radix Sort  
4.1.1, 4.1.2,  
4.2.1  
- Thuyết giảng  
- Nghe giảng,  
- Thảo luận,  
- Làm bài tập  
nhóm  
- Làm bài tập cá  
nhân  
- Hướng dẫn bài  
tập  
Chương 3: Danh sách  
3.1 Định nghĩa  
[1]: Chương 4,  
Chương 5  
4.1.1, 4.1.2,  
4.2.1  
- Thuyết giảng  
- Nghe giảng,  
- Thảo luận,  
- Làm bài tập  
nhóm  
- Làm bài tập cá  
nhân  
- Hướng dẫn bài  
tập  
3.2 Phân loại  
3.3 Danh sách đặc  
3.4 Danh sách liên kết  
3.4.1 Định nghĩa  
3.4.2 Danh sách liên kết đơn  
3.4.3 Danh sách liên kết kép  
3.4.4 Danh sách liên kết có thứ tự  
3.4.5 Danh sách vòng  
3.4.6 Danh sách có nhiều mối liên kết  
4
9
Chương 3: Danh sách  
3.5 Các cấu trúc đặc biệt của danh sách  
3.5.1 Stack  
[1]: Chương 2,  
Chương 3  
[2]: Chương 3  
[2]: Chương 3  
[2]: Chương 4  
4.1.1, 4.1.2,  
4.2.1  
- Thuyết giảng  
- Nghe giảng,  
- Thảo luận,  
- Làm bài tập  
nhóm  
- Làm bài tập cá  
nhân  
- Hướng dẫn bài  
tập  
3.5.1 Queue  
10  
11  
Chương 3: Danh sách  
[1]: Chương 1,  
Chương 2  
4.1.1, 4.1.2,  
4.1.3, 4.2.1,  
4.2.2, 4.2.3,  
4.3.2  
- Thuyết giảng  
- Nghe giảng,  
- Thảo luận,  
- Làm bài tập  
nhóm  
- Làm bài tập cá  
nhân  
3.5 Các cấu trúc đặc biệt của danh sách  
3.5.3 Các ứng dụng: tính biểu thức,  
khử đệ quy  
- Hướng dẫn bài  
tập  
Chương 4: Cấu trúc cây  
4.1 Các khái niệm cơ bản  
4.2 Cách biểu diễn cây  
4.3 Cây nhị phân  
4.3.1 Một số tính chất của cây nhị  
phân  
4.3.2 Duyệt cây nhị phân  
4.4 Cây nhị phân tìm kiếm  
Chương 4: Cấu trúc cây  
4.5 Cây AVL  
[1]: Chương 6  
4.1.1, 4.1.2,  
4.2.1  
- Thuyết giảng  
- Nghe giảng,  
- Thảo luận,  
- Làm bài tập  
nhóm  
- Làm bài tập cá  
nhân  
- Hướng dẫn bài  
tập  
12  
13  
[1]: Chương 6  
[1]: Chương 6  
[2]: Chương 4  
[2]: Chương 4  
4.1.1, 4.1.2,  
4.2.1  
- Thuyết giảng  
- Nghe giảng,  
- Thảo luận,  
- Làm bài tập  
nhóm  
- Làm bài tập cá  
nhân  
- Hướng dẫn bài  
tập  
4.5.1 Cấu trúc  
Chương 4: Cấu trúc cây  
4.5 Cây AVL  
4.1.1, 4.1.2,  
4.1.3, 4.2.1,  
4.2.2, 4.2.3,  
- Thuyết giảng  
- Nghe giảng,  
- Thảo luận,  
- Làm bài tập  
- Hướng dẫn bài  
tập  
4.5.2 Xây dựng  
5
nhóm  
4.3.2  
- Làm bài tập cá  
nhân  
14  
15  
Chương 4: Cấu trúc cây  
4.5 Cây AVL  
[1]: Chương 6  
[2]: Chương 4  
4.1.1, 4.1.2,  
4.1.3, 4.2.1,  
4.2.2, 4.2.3,  
4.3.2  
- Thuyết giảng  
- Nghe giảng,  
- Thảo luận,  
- Làm bài tập  
nhóm  
- Làm bài tập cá  
nhân  
- Hướng dẫn bài  
tập  
4.5.2 Xây dựng  
Ôn tập  
4.3.1  
- Thuyết giảng  
- Nghe giảng  
6.2. Thực hành  
Hoạt động của sinh  
viên  
Giáo trình  
chính  
Tài liệu tham  
khảo  
Buổi/  
Tiết  
Ghi chú  
Nội dung  
Hoạt động của giảng viên  
1
Bài 1-4: Tìm kiếm tuyến tính  
[2] Danh sách  
bài tập  
4.1.1, 4.1.2,  
4.1.3, 4.2.1,  
4.2.2, 4.3.1,  
4.3.3  
- Hướng dẫn làm bài tập  
- Hướng dẫn cách nộp bài  
- Sửa lỗi lập trình cho SV  
- Thực hành viết các  
chương trình theo yêu  
cầu bài tập  
2
3
Bài 5-9: Tìm kiếm nhị phân,  
Bubblesort  
[2] Danh sách  
bài tập  
4.1.1, 4.1.2,  
4.1.3, 4.2.1,  
4.2.2, 4.3.1,  
4.3.3  
- Hướng dẫn làm bài tập  
- Hướng dẫn cách nộp bài  
- Sửa lỗi lập trình cho SV  
- Thực hành viết các  
chương trình theo yêu  
cầu bài tập  
Bài 11-13: Quicksort  
[2] Danh sách  
bài tập  
4.1.1, 4.1.3,  
4.2.1, 4.2.2,  
4.3.1, 4.3.3  
- Sửa lỗi lập trình cho SV  
- Viết các chương trình  
theo yêu cầu bài tập  
6
4
5
6
Bài 14,15: selection sort, heap  
sort, insertion sort  
[2] Danh sách  
bài tập  
4.1.1, 4.1.3,  
4.2.1, 4.2.2,  
4.3.1, 4.3.3  
- Sửa lỗi lập trình cho SV  
- Sửa lỗi lập trình cho SV  
- Sửa lỗi lập trình cho SV  
- Viết các chương trình  
theo yêu cầu bài tập  
Bài 16,17: shell sort, merge sort  
Bài 18,19: Danh sách kề  
[2] Danh sách  
bài tập  
4.1.1, 4.1.3,  
4.2.1, 4.2.2,  
4.3.1, 4.3.3  
- Viết các chương trình  
theo yêu cầu bài tập  
[2] Danh sách  
bài tập  
4.1.1, 4.1.2,  
4.1.3, 4.2.1,  
4.2.2, 4.3.1,  
4.3.3  
- Viết các chương trình  
theo yêu cầu bài tập  
7
Bài 20-22: Danh sách liên kết  
[2] Danh sách  
bài tập  
4.1.1, 4.1.2,  
4.1.3, 4.2.1,  
4.2.2, 4.3.1,  
4.3.3  
- Sửa lỗi lập trình cho SV  
- Viết các chương trình  
theo yêu cầu bài tập  
9
Bài 23,24: Stack và bài toán biểu  
thức  
[2] Danh sách  
bài tập  
4.1.2, 4.1.3,  
4.2.1, 4.2.2,  
4.3.1, 4.3.3  
- Sửa lỗi lập trình cho SV  
- Sửa lỗi lập trình cho SV  
- Viết các chương trình  
theo yêu cầu bài tập  
10  
Bài 25: Cây AVL  
[2] Danh sách  
bài tập  
4.1.2, 4.1.3,  
4.2.1, 4.2.2,  
4.3.1, 4.3.3  
- Viết các chương trình  
theo yêu cầu bài tập  
7
7. Nhiệm vụ của sinh viên  
Yêu cầu chung  
Về kiến thức nền tảng: sinh viên nắm vững các nguyên lý cơ sở lập trình để có nền  
tảng để tiếp tục nghiên cứu học phần này.  
Về nghiên cứu tài liệu: sinh viên đọc các tài liệu liên quan đến môn học theo sự  
hướng dẫn của giảng viên.  
Về thực hành: sinh viên tham gia đầy đủ các buổi thực hành và thực hiện hoàn thành  
các bài toán được giao.  
Về nghiên cứu xử lý tình huống, làm bài tập: sinh viên phải hoàn thành đầy đủ các  
bài tập cá nhân và bài tập nhóm.  
Về thái độ học tập, sự chuyên cần: sinh viên tham gia đầy đủ và đúng giờ các hoạt  
động của lớp.  
Về việc tự học: sinh viên phải thực hiện việc tự học theo kế hoạch của giảng viên.  
Quy định về hành vi trong lớp học  
Khóa học được thực hiện trên nguyên tắc tôn trọng người học và người dạy. Mọi  
hành vi làm ảnh hưởng đến quá trình dạy và học đều bị nghiêm cấm.  
Sinh viên phải đi học đúng giờ quy định. Sinh viên đi trễ quá 5 phút sau khi giờ học  
bắt đầu sẽ không được điểm danh tham dự buổi học.  
Tuyệt đối không làm ồn, gây ảnh hưởng đến người khác trong quá trình học.  
Tuyệt đối không được ăn, uống, nhai kẹo cao su, sử dụng các thiết bị như điện thoại,  
máy nghe nhạc trong giờ học.  
Máy tính xách tay, máy tính bảng chỉ được thực hiện vào mục đích ghi chép bài  
giảng, tính toán phục vụ bài giảng, bài tập, tuyệt đối không dùng vào việc khác.  
Sinh viên vi phạm các nguyên tắc trên sẽ bị mời ra khỏi lớp và bị coi là vắng buổi  
học đó.  
8. Đánh giá kết quả học tập của sinh viên  
8.1. Cách đánh giá  
TT Điểm thành phần  
Quy định  
- Tham gia học lý thuyết  
- Tham gia học thực hành  
- Nộp bài tập thực hành  
- Làm bài tập nhóm  
Trọng số  
5%  
Mục tiêu  
4.1.2, 4.1.3,  
4.2.1, 4.2.2,  
4.2.3, 4.3.1,  
4.3.2, 4.3.3  
1
Điểm thi giữa kỳ  
5%  
10%  
5%  
- Làm bài tập cá nhân  
5%  
2
Điểm thi kết thúc Thi viết 90 phút  
học phần  
70%  
4.1.1, 4.1.2,  
4.2.1, 4.2.2,  
4.3.1  
8
8.2. Cách tính điểm  
Điểm đánh giá thành phần và điểm thi kết thúc học phần được chấm theo thang điểm  
10 (từ 0 đến 10), làm tròn đến 0.5.  
Điểm học phần là tổng điểm của tất cả các điểm đánh giá thành phần của học phần  
nhân với trọng số tương ứng. Điểm học phần theo thang điểm 10 làm tròn đến một  
chữ số thập phân.  
9. Tài liệu học tập  
9.1. Giáo trình chính  
[1] Nguyễn Hồng Chương, “Cấu trúc dữ liệu - Ứng dụng và cài đặt bằng C”, NXB TPHCM,  
2003  
9.2. Tài liệu tham khảo  
[2] Trần Hạnh Nhi, Dương Anh Đức, “Nhập môn cấu trúc dữ liệu và thuật toán”, ĐH Quốc  
gia TPHCM, 2003.  
[3] Kurt Mehlhorn and Peter Sanders, “Algorithms and Data Structures – The Basic  
Toolbox”, Springer, 2007. Free Ebook - http://www.freetechbooks.com/algorithms-and-  
data-structures-the-basic-toolbox-t871.html  
10. Hướng dẫn sinh viên tự học  
10.1. Lý thuyết  
Theo nội dung phần 6. Nội dung và lịch trình giảng dạy, thực hiện theo thời gian những  
việc sau:  
Đọc tài liệu phần nội dung tương ứng trong tài liệu chính và tài liệu tham khảo.  
Ghi chú lại mục đích, ý tưởng, tính chất, độ phức tạp của các cấu trúc và giải thuật  
tương ứng.  
Sau khi học trên lớp, thực hiện nhiều lần giải thuật bằng tay với nhiều ví dụ và so  
sánh kết quả làm bằng tay với giải thuật đã cài đặt để nắm rõ hoạt động của giải  
thuật.  
Tìm kiếm thêm tài liệu khác trên internet với từ khóa là tên của giải thuật, tên của  
cấu trúc để hiểu sâu hơn về cấu trúc/giải thuật.  
10.2. Thực hành  
Làm trước ít nhất 2/3 các yêu cầu về bài tập thực hành ở nhà. Tạm ghi chú các điểm  
bị lỗi, các điểm chưa hiểu lại để xử lý sau.  
9
Hoàn thiện bài thực hành ở trên lớp thực hành thông qua hỏi đáp với giảng viên  
hướng dẫn.  
Nộp bài thực hành đã hoàn thiện cho giảng viên hướng dẫn.  
Ngày … tháng … năm 2015 Ngày … tháng … năm 2015 Ngày … tháng … năm 2015  
Trưởng khoa  
Tổ trưởng Bộ môn  
Người biên soạn  
(Ký và ghi rõ họ tên)  
(Ký và ghi rõ họ tên)  
(Ký và ghi rõ họ tên)  
Đinh Hùng  
ThS. Phạm Minh Dũng  
Ngày … tháng … năm 2015  
Ban giám hiệu  
10  
pdf 10 trang yennguyen 18420 Free
Bạn đang xem tài liệu "Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfde_cuong_chi_tiet_hoc_phan_cau_truc_du_lieu_va_giai_thuat_da.pdf