BÁO CÁO MÔ TẢ THƯ MỤC VÀ TỔNG QUAN HỌC THUẬT: GIÁO TRÌNH CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT


Tổng quan về giáo trình

Giáo trình Cấu trúc dữ liệu và giải thuật được biên soạn và ban hành vào tháng 07 năm 2021 bởi Trường Cao đẳng Công nghệ Thành phố Hồ Chí Minh (thuộc Tập đoàn Dệt May Việt Nam). Đây là tài liệu giảng dạy lưu hành nội bộ, phục vụ công tác đào tạo cho học sinh hệ Trung cấp và sinh viên hệ Cao đẳng thuộc ngành Công nghệ thông tin.

Trong chương trình đào tạo chuyên ngành, học phần mang mã số MH 12 và giữ vị trí là môn học cơ sở ngành bắt buộc. Học phần có tổng thời lượng 45 giờ quy chuẩn, trong đó phân bổ gồm 15 giờ lý thuyết, 28 giờ thực hành/thảo luận/bài tập và 2 giờ dành cho kiểm tra đánh giá. Môn học được bố trí giảng dạy sau khi người học đã hoàn thành các môn học tiên quyết bao gồm Lập trình căn bảnCơ sở dữ liệu.

Về mục tiêu học tập (learning outcomes), giáo trình xác lập ba chuẩn đầu ra cụ thể:

  • Về kiến thức: Trang bị cho người học khả năng phân tích mối quan hệ bản chất giữa cấu trúc dữ liệu và thuật toán; nhận diện và phân tích các kiểu dữ liệu từ cơ bản đến trừu tượng; nắm vững nguyên tắc kết hợp dữ liệu và giải thuật để cấu thành chương trình máy tính; hiểu rõ cách tổ chức dữ liệu khoa học và phương pháp đánh giá độ phức tạp thuật toán.
  • Về kỹ năng: Người học có khả năng sử dụng ngôn ngữ lập trình (cụ thể là C/C++) để cài đặt, hiện thực hóa và kiểm nghiệm trên máy tính các thuật toán về đệ quy, sắp xếp, tìm kiếm, cũng như các cấu trúc dữ liệu động gồm danh sách liên kết, ngăn xếp, hàng đợi và cây nhị phân.
  • Về năng lực tự chủ và trách nhiệm: Rèn luyện tư duy logic trong phân tích và tổng hợp bài toán tin học; hình thành tác phong cẩn thận, tỉ mỉ khi thao tác với hệ thống máy tính và dữ liệu bộ nhớ.

Giáo trình được cấu trúc thành 6 chương chính, tiếp cận theo tiến trình sư phạm từ lý thuyết cơ sở, các giải thuật thao tác trên dữ liệu tĩnh, đến việc xây dựng và thao tác trên các cấu trúc dữ liệu động và phi tuyến tính. Điểm đặc trưng của giáo trình là gắn kết chặt chẽ giữa mô hình toán học trừu tượng với việc cài đặt mã nguồn thực tế trong môi trường ngôn ngữ C.


Nội dung kiến thức cốt lõi

Các chương và chủ đề chính

Giáo trình bao gồm 6 chương với progression logic phát triển từ cơ sở nền tảng đến các cấu trúc phức tạp:

  • Chương 1: Tổng quan về cấu trúc dữ liệu và giải thuật: Trình bày các tiêu chuẩn đánh giá cấu trúc dữ liệu (tiết kiệm tài nguyên, phản ánh đúng thực tế, phù hợp thao tác); định nghĩa kiểu dữ liệu $T = \langle V, O \rangle$; hệ thống kiểu dữ liệu định sẵn trong C (char, int, long, float, double); khái niệm trừu tượng hóa dữ liệu và trừu tượng hóa chương trình; các kiểu dữ liệu có cấu trúc (string, mảng 1 chiều, mảng nhiều chiều, union, struct); cơ chế biến động và con trỏ (malloc, calloc, realloc, free, phép toán trên con trỏ); kỹ thuật thao tác tệp tin văn bản và tệp tin nhị phân; và đánh giá độ phức tạp tính toán thông qua ký pháp Big-O.
  • Chương 2: Đệ quy và giải thuật đệ quy: Trình bày định nghĩa đệ quy toán học và đệ quy tin học; cấu trúc một thủ tục đệ quy gồm phần neo (suy biến) và phần đệ quy; cơ chế cấp phát bộ nhớ Stack khi thực thi đệ quy; phân loại 4 dạng đệ quy (tuyến tính, nhị phân, tương hỗ, phi tuyến); phân tích các bài toán kinh điển (tính giai thừa $n!$, dãy số Fibonacci, bài toán Tháp Hà Nội với $2^n - 1$ bước chuyển); các phương pháp khử đệ quy thông qua mô phỏng xếp chồng hoặc quy hoạch động.
  • Chương 3: Tìm kiếm: Phân tích giải thuật, cài đặt mã nguồn và đánh giá hiệu năng của hai phương pháp: Tìm kiếm tuyến tính (Linear Search) và Tìm kiếm nhị phân (Binary Search).
  • Chương 4: Các phương pháp sắp xếp cơ bản: Định nghĩa bài toán sắp xếp; phân tích nguyên lý, mã nguồn và đánh giá độ phức tạp của 5 giải thuật: Chọn trực tiếp (Selection Sort), Chèn trực tiếp (Insertion Sort), Đổi chỗ trực tiếp (Interchange Sort), Nổi bọt (Bubble Sort) và Sắp xếp nhanh (Quick Sort) dựa trên kỹ thuật phân hoạch dãy con $a_l \dots a_r$.
  • Chương 5: Danh sách: Khái niệm và biểu diễn danh sách liên kết đơn (xâu đơn); các thao tác cơ bản (khai báo, duyệt xâu, chèn, loại bỏ phần tử, sắp xếp xâu đơn bằng QuickSort); cấu trúc Ngăn xếp (Stack) cài đặt bằng mảng và xâu đơn, ứng dụng xử lý biểu thức hậu tố; cấu trúc Hàng đợi (Queue) cài đặt bằng mảng và danh sách liên kết.
  • Chương 6: Cây nhị phân: Định nghĩa và các tính chất của cây, cây nhị phân; biểu diễn cây nhị phân; các thuật toán duyệt cây (cài đặt chi tiết thứ tự giữa LNR); định nghĩa, xây dựng, chèn, tìm kiếm, sắp xếp, xóa phần tử và hủy cây tìm kiếm nhị phân (Binary Search Tree - BST).

Kiến thức nền tảng được xây dựng

Giáo trình xây dựng các cơ sở lý thuyết chuẩn mực trong khoa học máy tính:

  1. Lý thuyết giải thuật: Trích dẫn định nghĩa giải thuật của Knuth (1973) – chuỗi hữu hạn các chỉ thị thực hiện trong thời gian hữu hạn. Xác lập 5 đặc trưng cơ bản của giải thuật: tính hữu hạn (finiteness), tính xác định (definiteness), tính hiệu quả (effectiveness), tính đúng đắn và tính phổ quát. Khẳng định nguyên lý căn bản của Niklaus Wirth: $$\text{Cấu trúc dữ liệu} + \text{Giải thuật} = \text{Chương trình}$$
  2. Mô hình đánh giá độ phức tạp: Đánh giá hiệu quả thuật toán dựa trên số phép so sánh và phép gán phụ thuộc vào quy mô dữ liệu đầu vào $n$. Xác định thời gian thực hiện trong trường hợp tốt nhất ($T_{\min}$), xấu nhất ($T_{\max}$) và trung bình ($T_a$). Ứng dụng quy tắc cộng, quy tắc nhân để xác định bậc độ phức tạp Big-O gồm: $O(1)$, $O(\log n)$, $O(n)$, $O(P(n))$, $O(2^n)$.
  3. Mô hình quản trị bộ nhớ: Phân biệt cơ chế cấp phát tĩnh và cấp phát động. Thiết lập mối quan hệ tương đương giữa đại số con trỏ và chỉ số mảng: *(a + i) tương đương a[i], và (a + i) tương đương &a[i]. Xây dựng mô hình tệp tin truy cập ngẫu nhiên và kỹ thuật trộn 2 tệp đã có thứ tự.

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Cài đặt thành thạo các cấu trúc dữ liệu cơ sở và thuật toán xử lý bằng ngôn ngữ C; thực hiện cấp phát và thu hồi bộ nhớ động tránh rò rỉ bộ nhớ (memory leak); thao tác đọc/ghi tệp nhị phân có cấu trúc phục vụ lưu trữ lâu dài.
  • Kỹ năng phân tích (Analytical skills): Phân tích và lựa chọn cấu trúc dữ liệu phù hợp với yêu cầu thực tế; ước lượng độ phức tạp thời gian chạy để so sánh và tối ưu hóa giải thuật; phân tích điều kiện dừng và bước đệ quy trong các bài toán lặp/quy nạp.
  • Năng lực thực hành (Practical competencies): Xây dựng các chương trình ứng dụng hoàn chỉnh như quản lý hồ sơ thí sinh, quản lý danh sách nhân viên, giải thuật đổi tiền tối ưu (máy ATM, đổi tiền xu), và thuật toán xử lý biểu thức số học.

Phương pháp giảng dạy và học tập

Giáo trình được thiết kế theo phương pháp tiếp cận thực hành - suy luận logic. Khung thời lượng 45 giờ phân bổ tập trung vào rèn luyện kỹ năng với 28 giờ thực hành và bài tập (chiếm 62.2% tổng thời lượng), 15 giờ lý thuyết (chiếm 33.3%) và 2 giờ kiểm tra (chiếm 4.5%).

Phương pháp sư phạm

Phương pháp sư phạm trong giáo trình được triển khai qua các bước:

  • Trừu tượng hóa bài toán: Phân tích yêu cầu thực tế để xác định tập giá trị và tập thao tác.
  • Mô hình hóa giải thuật: Trình bày giải thuật thông qua ngôn ngữ tự nhiên, sơ đồ khối (flowchart) và mã giả (pseudocode).
  • Hiện thực hóa mã nguồn: Cung cấp mã nguồn C hoàn chỉnh, chuẩn hóa các nguyên mẫu hàm, cấu trúc dữ liệu và xử lý các điều kiện biên.
  • Phân tích dấu vết bộ nhớ: Mô tả trực quan sơ đồ cấp phát bộ nhớ (RAM layout) cho biến tĩnh, biến động và cơ chế phân bổ vùng nhớ Stack khi thực thi các hàm đệ quy lồng nhau.

Hệ thống bài tập và thực hành

Giáo trình tích hợp hệ thống bài tập phong phú, chia thành các nhóm nội dung:

  • Nhóm giải thuật số học và đại số: Cài đặt thuật toán giải phương trình bậc nhất ($ax + b = 0$), phương trình bậc hai ($ax^2 + bx + c = 0$), tính toán các phép tính trên phân số tối giản.
  • Nhóm bài toán tối ưu hóa và đệ quy: Bài toán máy ATM rút số tiền $T$ với số tờ tiền ít nhất từ $n$ loại tiền ($L_1, L_2, \dots, L_n$); bài toán đổi $T$ đồng tiền giấy ra tiền xu với số đồng xu ít nhất; mô phỏng chuyển đĩa Tháp Hà Nội.
  • Nhóm xử lý cấu trúc và tệp tin: Xây dựng chương trình nhập xuất, sắp xếp danh sách thí sinh dự thi theo thứ tự họ tên; chương trình quản lý, tìm kiếm, sửa đổi và hủy bỏ hồ sơ nhân viên trên tệp nhị phân (.DBF); thuật toán ghép (trộn) hai tệp dữ liệu đã sắp thứ tự thành một tệp duy nhất.

Phương pháp đánh giá và hướng dẫn tự học

  • Đánh giá: Thực hiện kiểm tra định kỳ 2 giờ trên máy tính nhằm đánh giá khả năng hiện thực hóa thuật toán và thao tác an toàn với máy tính của người học.
  • Tự học: Sinh viên được yêu cầu thực hành kiểm chứng mã nguồn trên môi trường biên dịch C/C++, tự vẽ sơ đồ khối trước khi lập trình, và áp dụng kỹ thuật khử đệ quy bằng phương pháp lặp hoặc cấu trúc Stack tự tạo để tối ưu hóa tài nguyên.

Điểm nổi bật và cập nhật

Tài liệu được ban hành chính thức vào tháng 07/2021 theo chương trình đào tạo chuẩn nghề Công nghệ thông tin của Trường Cao đẳng Công nghệ Thành phố Hồ Chí Minh, phản ánh các đặc điểm chuyên môn sau:

Tiêu chí Nội dung thể hiện trong giáo trình
Tính chuẩn hóa học thuật Dẫn nhập chính xác các định nghĩa kinh điển của Knuth (1973), phân loại chi tiết 4 dạng hàm đệ quy, quy tắc tính Big-O qua phép gán và phép so sánh.
Tính cụ thể về kỹ thuật Hiện thực hóa chi tiết trên ngôn ngữ C; xử lý đầy đủ các trường hợp ngoại lệ bộ nhớ, ép kiểu con trỏ void*, xử lý ký tự kết thúc chuỗi \0, và cặp mã chuyển dòng CR/LF (mã ASCII 13, 10) trong tệp văn bản.
Gắn kết thực tiễn quản lý Thiết kế các cấu trúc dữ liệu tổ hợp (struct lồng union) mô tả thông tin nhân sự; thuật toán thao tác tệp tin nhị phân phục vụ xây dựng các hệ thống tin học ứng dụng trong quản lý doanh nghiệp và sản xuất.
Tính ứng dụng cao Trực tiếp cung cấp thuật toán xử lý biểu thức hậu tố bằng Stack và cấu trúc phân hoạch mảng trong QuickSort, làm nền tảng cho việc phát triển các phần mềm hệ thống.

Đối tượng sử dụng giáo trình

Giáo trình được biên soạn phục vụ các nhóm đối tượng cụ thể trong hệ thống giáo dục nghề nghiệp:

  • Sinh viên và học sinh: Người học hệ Cao đẳng và hệ Trung cấp nghề Công nghệ thông tin. Giáo trình được học ở giai đoạn cơ sở ngành (năm thứ nhất hoặc đầu năm thứ hai).
  • Yêu cầu kiến thức tiên quyết: Người học bắt buộc phải hoàn thành học phần Lập trình căn bản (nắm vững cú pháp lập trình cơ cấu, câu lệnh điều kiện, vòng lặp, hàm trong C) và môn học Cơ sở dữ liệu.
  • Giảng viên chuyên ngành: Sử dụng giáo trình làm tài liệu chuẩn để thiết kế đề cương bài giảng, phân bổ kế hoạch dạy học 45 giờ và xây dựng ngân hàng đề thi thực hành cho học phần MH 12.
  • Người tự học và tham khảo: Kỹ thuật viên phát triển phần mềm, người xây dựng các hệ thống tin học ứng dụng phục vụ sản xuất và quản trị trong doanh nghiệp cần củng cố kiến thức về quản lý bộ nhớ động và tối ưu hóa giải thuật.

Câu hỏi thường gặp

1. Giáo trình này phù hợp với ai?

Giáo trình được thiết kế chuẩn hóa cho học sinh hệ Trung cấp và sinh viên hệ Cao đẳng nghề Công nghệ thông tin, đồng thời là tài liệu tham khảo cho kỹ thuật viên muốn nắm vững bản chất tổ chức dữ liệu và giải thuật trong ngôn ngữ C.

2. Cần kiến thức nền nào để học?

Người học cần hoàn thành môn Lập trình căn bản (thao tác thành thạo ngôn ngữ C cơ sở) và môn Cơ sở dữ liệu. Ngoài ra, người học cần có kiến thức toán học cơ bản về quy nạp, hệ nhị phân và tư duy logic.

3. Điểm khác biệt của giáo trình so với các tài liệu thuần lý thuyết?

Giáo trình dành hơn 62% thời lượng cho thực hành; cung cấp mã nguồn C đầy đủ, chi tiết từ các thao tác cấp phát con trỏ, thao tác tệp tin nhị phân đến cài đặt danh sách liên kết, cây tìm kiếm nhị phân và giải thuật sắp xếp nhanh QuickSort.

4. Làm sao để tự học và nghiên cứu giáo trình hiệu quả?

Người học nên tuân thủ quy trình: đọc hiểu khái niệm $\to$ phân tích sơ đồ giải thuật $\to$ tự tay gõ và chạy thử mã nguồn mẫu trên máy tính $\to$ giải quyết các bài tập cuối chương (như bài toán ATM, đổi tiền xu, xử lý danh sách thí sinh, trộn tệp).

5. Có tài liệu bổ trợ nào kèm theo trong giáo trình?

Giáo trình cung cấp sẵn hệ thống mã nguồn mẫu chuẩn ngôn ngữ C, bảng tra cứu kích thước và miền giá trị các kiểu dữ liệu, hệ thống hàm xử lý chuỗi (string.h), hàm cấp phát bộ nhớ (alloc.h), hàm nhập xuất tệp (stdio.h) và các bài toán thực hành ứng dụng cụ thể.


Kết luận

Giáo trình Cấu trúc dữ liệu và giải thuật (2021) của Trường Cao đẳng Công nghệ Thành phố Hồ Chí Minh là tài liệu học thuật cơ sở ngành hoàn chỉnh, kết hợp hài hòa giữa nguyên lý khoa học máy tính kinh điển và kỹ năng lập trình hệ thống bằng ngôn ngữ C.

Lộ trình học tập đề xuất từ giáo trình:

$$\text{Lập trình căn bản / CSDL} \longrightarrow \text{Cấu trúc dữ liệu và giải thuật (MH 12)} \longrightarrow \text{Lập trình ứng dụng & Phát triển phần mềm doanh nghiệp}$$

Tài liệu cung cấp nền tảng tư duy tổ chức dữ liệu, phân tích độ phức tạp thuật toán và kỹ năng quản trị bộ nhớ mức thấp, giúp người học phát triển năng lực xây dựng các hệ thống tin học ứng dụng phục vụ hiệu quả cho công tác quản lý và sản xuất.