Trường Đại học Khoa Học Tự Nhiên, ĐHQG HCM Khoa Công Nghệ Thông Tin Đề cương môn học Cấu trúc dữ liệu và Giải thuật Trang 1/7 ĐỀ CƯƠNG MÔN HỌC CTT101 – Cấu trúc dữ liệu & Giải thuật 1 THÔNG TIN CHUNG[.]
Trang 1
ĐỀ CƯƠNG MÔN HỌC
CTT101 – Cấu trúc dữ liệu & Giải thuật
1 THÔNG TIN CHUNG
Tên môn học (tiếng Việt): Cấu trúc dữ liệu và Giải thuật
Tên môn học (tiếng Anh): Data structures and Algorithms
Thuộc khối kiến thức: Cơ sở ngành
Số tiết lý thuyết: 45
Số tiết thực hành: 30
Số tiết tự học: 60 Các môn học tiên quyết:
Các môn học trước:
Không
Kỹ thuật lập trình
2 MÔ TẢ MÔN HỌC (COURSE DESCRIPTION)
Nội dung của môn học gồm 2 phần: CTDL và Giải thuật
Với nội dung CTDL, môn học trình bày tất cả các cấu trúc dữ liệu cơ bản, cần thiết nhất mà người lập trình viên phải nắm vững để vận dụng trong quá trình viết ứng dụng, như: danh sách liên kết, ngăn xếp, hàng đợi, hàng đợi ưu tiên, cây nhị phân tìm kiếm (BST, AVL, Red-Black, AA), B-cây, bảng băm Với nội dung Giải thuật, ngoài những giải thuật đi kèm với từng CTDL nêu trên, môn học còn trình bày các giải thuật cần thiết khác như: sắp xếp, tìm kiếm, tìm kiếm chuỗi (KMP, Rabin Karp), giải thuật nén (Run-Length, Huffman, LZW)
Sinh viên sẽ học lập trình bằng C/C++, bao gồm: làm thế nào để ước lượng, chọn lựa, và sử dụng các thư viện để cài đặt các giải thuật và cấu trúc dữ liệu khác nhau Môn học cung cấp các kỹ thuật phân tích giải thuật cơ bản; phân tích gần đúng độ phức tạp của giải thuật; ký hiệu O, Theta và big-Omega; ôn lại và thực hiện sâu hơn kỹ thuật đệ qui; các giải thuật hiệu quả cho những cấu trúc dữ liệu rời rạc như: cây, danh sách liên kết, bảng băm,… Bên cạnh đó, sinh viên sẽ học cách cài đặt hiệu quả các giải thuật; cũng như làm thế nào để vận dụng các kỹ thuật như: chia để trị, đệ qui quay lui,…
Trang 23 MỤC TIÊU MÔN HỌC (COURSE GOALS)
Sinh viên học xong môn học này có khả năng :
Mục tiêu Mô tả (mức tổng quát ) CĐR CDIO
của chương trình
G1 Hiểu và sử dụng được các cấu trúc dữ liệu, bao gồm: khái niệm,
các tính chất, ưu điểm, hạn chế, tình huống sử dụng và các giải thuật liên quan của từng cấu trúc dữ liệu cụ thể
1.1.1 1.3.1
G2 Phân tích và xây dựng được cấu trúc dữ liệu mới (trên cơ sở kết
hợp, thay đổi các cấu trúc dữ liệu đã học) để phù hợp với yêu cầu thực tế của một phần mềm
1.3.1 2.1 2.2 2.3.1 2.4.1 2.4.3 4.1.4 4.1.5 G3 Cài đặt được các CTDL và giải thuật cơ bản đã được trình bày
trong phần nội dung môn học bằng C/C++
1.2.1 1.3.1 G4 Phân tích được ưu điểm và hạn chế của các cấu trúc dữ liệu
khác nhau, từ đó chọn lựa ra được cấu trúc dữ liệu và giải thuật
phù hợp cho một ứng dụng cụ thể
1.3.1
G5 Đọc hiểu tài liệu tham khảo tiếng Việt, tiếng Anh được cung
cấp sẵn
4.4.3
G6 Tổ chức làm việc nhóm, phân công công việc, kỹ năng trình
bày và báo cáo
4.2 4.3.1 4.3.2 3.1 3.3.1 3.3.2 2.3.1 2.3.4
Trang 34 CHUẨN ĐẦU RA MÔN HỌC
Chuẩn
đầu ra
Mô tả (Mức chi tiết - hành động) Mức độ (I/T/U)
G1.1 Áp dụng được kiến thức khoa học cơ bản trong môn học Sử
dụng một số kiến thức toán để tính toán độ phức tạp của giải
thuật, hay cài đặt giải thuật
T, U
G1.2 Hiểu và sử dụng được các cấu trúc dữ liệu, bao gồm: khái niệm,
các tính chất, ưu điểm, hạn chế, tình huống sử dụng và các giải
thuật liên quan của từng cấu trúc dữ liệu cụ thể
I, T, U
G2.1 Áp dụng được các kiến thức nghề nghiệp, nghiệp vụ (nói chung
trong xã hội) vào các chủ đề trong môn học Có vận dụng các
bài toán thực tế vào việc cài đặt những ứng dụng minh họa
CTDL
I, T, U
G2.2 Suy nghĩ và giải quyết vấn đề Có thể tự định nghĩa cấu trúc dữ
liệu mới (trên cơ sở kết hợp, thay đổi các cấu trúc dữ liệu đã
học) để phù hợp với yêu cầu thực tế của một phần mềm
I, T, U
G2.3 Phân tích và xây dựng được cấu trúc dữ liệu mới (trên cơ sở kết
hợp, thay đổi các cấu trúc dữ liệu đã học) để phù hợp với yêu
cầu thực tế của một phần mềm
T, U
G3.1 Cài đặt được các cấu trúc dữ liệu và thuật toán bằng C/C++ I, T, U
G4.1 Phân tích được ưu điểm và hạn chế của các cấu trúc dữ liệu
khác nhau, từ đó chọn lựa ra được cấu trúc dữ liệu và giải thuật
phù hợp cho một ứng dụng cụ thể
T, U
G5.1 Hiểu chính xác các thuật ngữ tiếng Anh của môn học Giải thích
và diễn đạt được các thuật ngữ tiếng Anh chuyên ngành của
môn học Phát âm đúng các thuật ngữ, sử dụng chính xác theo
ngữ cảnh
I, T, U
G5.2 Đọc và hiểu được các tài liệu tham khảo bằng tiếng Anh do GV
cung cấp
I, T
G6.1 Kỹ năng viết và nói, kỹ năng trình bày (tiếng Việt) liên quan đến
các chủ đề của môn học
U
Trang 4G6.2 SV sẽ làm seminar, bài tập nhóm và thuyết trình theo nhóm U
G6.3 Nhận biết và vận dụng được các kiến thức văn hóa, đạo đức
nghề nghiệp, trách nhiệm và các khía cạnh luật lệ liên quan đến
các chủ đề trong môn học Ý thức tuân thủ bản quyền, tài liệu
tham khảo Ý thức tự làm, trung thực trong báo cáo kết quả Ý
thức tuân thủ kế hoạch làm việc đã đặt ra
T, U
G6.4 Thảo luận, tranh luận, phản biện, phê phán trên cơ sở lý luận
khoa học Thảo luận qua các seminar
U
G6.5 Làm việc nhóm, tổ chức và quản lý Làm việc nhóm trong khi
học ở lớp hay bài tập nhóm hay seminar
U
5 KẾ HOẠCH GIẢNG DẠY LÝ THUYẾT
Tuần Tên chủ đề Chuẩn
đầu ra
Hoạt động dạy/
Hoạt động học (gợi ý) và Hoạt động đánh giá
1 Chương 1 Tính chi
phí của thuật toán
Chương 2 Các
thuật toán sắp xếp
(Sorting
Algorithms)
G5.1 G5.2 G2.1 G1.1 G3.1
- Tính chi phí của thuật toán
- Big-O, Big-, Big-
- Ôn lại Quick Sort
- Heap sort
- Radix sort
Tự ôn tập các thuật toán: Selection sort, Bubble sort, Merge sort
2 Chương 3 Các
thuật toán tìm kiếm
(Searching
Algorithms)
G5.1 G5.2 G6.1 G6.2 G1.1 G2.2 G6.5 G3.1
- Ôn lại Sequential search
- Ôn lại Binary search
- Brute Force
- Rabin Karp
- KMP
Bài tập nhóm (N1) tại lớp
Bài tập CC1-Moodle
3 Ôn tập & rèn luyện G6.3
G2.2 G3.1
- Đệ qui
- Các kiến thức của chương
1 và chương 2
Bài tập CC2 – tại lớp
Bài tập CN1 - Moodle
4 Chương 4 Các khái
niệm cơ bản
G5.1 G5.2 G1.2
- Kiểu dữ liệu (Data Type)
- Kiểu dữ liệu cơ bản (Basic Data Type)
Tự đọc tài liệu: DSLK, stack,
Trang 5G4.1 - Kiểu dữ liệu có cấu trúc
(Structured Data Type)
- Kiểu dữ liệu trừu tượng (ADT – Abstract Data Type)
- Cấu trúc dữ liệu (Data structure)
- Đánh giá Cấu trúc dữ liệu
queue
5 Chương 5 Các cấu
trúc dữ liệu
G5.1 G5.2 G6.4 G6.5 G3.1 G1.2
- Ôn lại Danh sách liên kết
- Ôn lại Stack, Queue
- Hàng đợi ưu tiên (Priority Queue)
Bài tập nhóm (N2) tại lớp
Tự đọc tài liệu: khái niệm cơ bản về cấu trúc cây
Bài tập CC3-Moodle
6 Chương 5 Các cấu
trúc dữ liệu
G5.1 G5.2 G6.3 G2.2 G3.1 G1.2 G2.3
- Cây nhị phân tìm kiếm (Binary Search Tree)
- Cây AVL
Tự đọc tài liệu: cây đỏ-đen (Red-Black tree)
Bài tập CN2 - Moodle
7 Chương 5 Các cấu
trúc dữ liệu
G5.1 G5.2 G2.2 G1.2
- B-cây
- Ôn tập cây đỏ-đen
Bài tập CC4 – tại lớp
Tự đọc tài liệu: cây AA (AA tree)
8 Chương 5 Các cấu
trúc dữ liệu
G6.3 G2.2 G6.4 G6.5 G3.1 G1.2
- Bảng băm – Hash Table
- Ôn tập cây AA
- Ôn tập các kiến thức của chương 4
Bài tập nhóm (N3) tại lớp
Bài tập CN3 - Moodle
9 Kiểm tra giữa kỳ G2.2
G3.1
10 Chương 6 Các
thuật toán nén dữ
liệu
G3.1 - Nén Run-Length Encoding
- Nén Huffman tĩnh
11 Chương 6 Các
thuật toán nén dữ
liệu
G2.1 G6.3 G2.2 G6.4 G6.5
- Nén LZW
- Ôn tập các thuật toán nén
Bài tập nhóm (N4) tại lớp
Bài tập CN4 - Moodle
Trang 6G3.1 G4.1
12 Ôn tập & rèn luyện G6.1
G6.2
Tổng hợp các kiến thức của môn học
Bài tập nhóm (N5) tại lớp
Bài tập CC5-Moodle
# Kiểm tra cuối kỳ G2.2
G1.2 G2.3 G4.1
6 KẾ HOẠCH GIẢNG DẠY THỰC HÀNH (nếu có)
Các bài tập thực hành bao gồm:
- CC1, CC3, CC5
- CN1, CN2, CN3, CN4, CN5
Kế hoạch thực hành được thể hiện cụ thể trong phần [5] ở trên
7 ĐÁNH GIÁ
Mã Tên Mô tả (gợi ý)
Các chuẩn đầu ra được đánh giá
Tỉ lệ (%)
CC1
CC3
CC5
Bài tập chuyên cần thực hiện qua hệ thống Moodle
Max 120 phút làm bài, có thể là lập trình và/hoặc trắc nghiệm hiểu bài Tiêu chí:
- Đầy đủ
- Đúng
- Đúng hạn
G6.1 G6.2 G6.3 G1.1 G2.2 G3.1 G1.2
4% 4% 4%
CC2
CC4
Bài tập chuyên cần thực
hiện tại lớp
Max 20 phút làm bài, ưu tiên câu hỏi trắc nghiệm hay tự luận ngắn Tiêu chí:
- Đầy đủ
- Đúng
4% 4%
tập lập trình Làm tại lớp
G6.1 G6.2 G2.2
4%/bài
Trang 7Max 30 phút làm bài Có thể trình bày kết quả
G6.4 G6.5 G2.3 G4.1
CN1
CN2
CN3
CN4
Bài tập lập trình tổng hợp, bao gồm kiến thức của 1 hay nhiều chương
Bài làm và nộp qua Moodle, làm riêng theo từng cá nhân Thời gian làm bài max 1 tuần
L2.1 G6.3 G2.2 G3.1 G1.2 G2.3 G4.1
5%/bài
KTGK Kiểm tra giữa kỳ Thực hành tại phòng lab G1.1
G2.2 G3.1
10%
G1.2 G2.3 G4.1
30%
8 TÀI NGUYÊN MÔN HỌC
Tài liệu tham khảo
a Mark Allen Weiss, Data structures and Algorithm Analysis in C (Second Edition),
Addison-Wesley, 1991
b Thomas H.Cormen, Charles E Leiserson, Ronald L Rivest, Introduction to Algorithms, The
MIT Press and McGraw-Hill Book Company, 1990
c Dương Anh Đức, Trần Hạnh Nhi – Cấu trúc dữ liệu, Trường ĐH KHTN – ĐHQG Tp HCM
d Đinh Mạnh Tường, Cấu trúc dữ liệu & Thuật toán, Nhà xuất bản khoa học và kỹ thuật, 2000
Tài nguyên khác
Phần mềm hay công cụ hỗ trợ thực hành:
a Ngôn ngữ lập trình: C++, viết ở chế độ console hay GUI (tùy chọn)
b Công cụ lập trình: có thể sử dụng Visual Studio 6 trở lên, đề nghị Visual Studio 2012
9 CÁC QUY ĐỊNH CHUNG
Sinh viên không được tính điểm chuyên cần nếu thiếu quá 50% số bài kiểm tra chuyên cần
Sinh viên cần tuân thủ nghiêm túc các nội quy và quy định của Khoa và Trường
Đối với bất kỳ sự gian lận nào trong quá trình làm bài tập hay bài thi, sinh viên phải chịu mọi hình thức kỷ luật của Khoa/Trường và bị 0 điểm cho môn học này
- HẾT -