ĐÁNH GIÁ THƯ MỤC VÀ MÔ TẢ NỘI DUNG TÀI LIỆU HỌC TẬP: THỰC HÀNH LẬP TRÌNH MẠNG (CMP 381)

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

Tài liệu học tập Thực hành Lập trình mạng (mã học phần: CMP 381) do Tiến sĩ Văn Thiên Hoàng và Kỹ sư Nguyễn Trọng Minh Hồng Phước biên soạn năm 2021, phát hành nội bộ phục vụ đào tạo tại Trường Đại học Công nghệ TP.HCM (HUTECH) thuộc Bộ Giáo dục và Đào tạo. Trong chương trình đào tạo kỹ sư và cử nhân ngành Công nghệ thông tin, học phần này giữ vị trí khối kiến thức cơ sở ngành chuyên sâu, đóng vai trò cầu nối thực hành giữa hai môn học lý thuyết nền tảng là Mạng máy tính và Lập trình hướng đối tượng bằng Java.

Mục tiêu học tập của giáo trình tập trung trang bị cho người học năng lực hiện thực hóa các giao thức truyền thông trên máy tính bằng ngôn ngữ Java. Cụ thể, sau khi hoàn thành học phần, sinh viên có khả năng cấu hình kết nối và thao tác với hệ quản trị cơ sở dữ liệu qua mạng; làm việc với luồng nhập/xuất dữ liệu dạng nhị phân và văn bản; thao tác xử lý địa chỉ mạng thông qua lớp InetAddress; lập trình điều khiển tiến trình và đa luồng (Multithreading); phát triển các ứng dụng Client-Server dựa trên giao thức TCP, UDP; ứng dụng giao thức truyền tập tin FTP và kỹ thuật gọi phương thức từ xa (Remote Method Invocation - RMI).

Cấu trúc giáo trình bao gồm 7 bài thực hành được thiết kế theo phương pháp diễn dịch kết hợp thực nghiệm: trình bày cô đọng cơ sở lý thuyết, phân tích sơ đồ luồng dữ liệu, hướng dẫn từng bước (step-by-step) trên giao diện phần mềm và cung cấp hệ thống bài tập rèn luyện. Điểm đặc trưng của tài liệu là định hướng hoàn toàn vào việc sử dụng các thư viện chuẩn của Java (Java SE), kết hợp thao tác trực tiếp trên các công cụ môi trường như NetBeans IDE, WampServer và SQL Server Management Studio mà không dùng đến các khung ứng dụng (framework) trung gian.

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

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

Nội dung giáo trình được triển khai qua 7 bài học với tính logic tịnh tiến từ tầng hạ tầng dữ liệu đến các dịch vụ mạng nâng cao:

  • Bài 1: Lập trình kết nối cơ sở dữ liệu: Cung cấp kỹ thuật kết nối ứng dụng Java với hai hệ quản trị cơ sở dữ liệu là MySQL (thông qua WampServer 2.0, giao diện phpMyAdmin, driver mysql-connector-java-5) và SQL Server (sử dụng SQLEXPRESS, cấu hình cổng TCP/IP, driver sqljdbc.jar). Hướng dẫn thiết kế kiến trúc phân lớp xử lý thông qua lớp kết nối MyConnection và lớp truy xuất DBAccess (chứa các phương thức Update, Query), gắn kết với giao diện người dùng JFrame cho các tính năng đăng ký, đăng nhập tài khoản.
  • Bài 2: Luồng nhập xuất: Trình bày thao tác với hệ thống tập tin thông qua lớp File, bộ lọc FileFilter, hộp thoại chọn tệp JFileChooser. Phần thao tác đọc/ghi tệp phân định rõ hai chế độ: luồng byte nhị phân (FileInputStream) và luồng ký tự văn bản (FileReader, FileWriter, StringBuffer).
  • Bài 3: InetAddress: Định nghĩa cách thức quản lý địa chỉ mạng trong Java qua lớp InetAddress. Trình bày các phương thức tĩnh gồm InetAddress.getAllByName() và InetAddress.getLocalHost(). Hướng dẫn giải quyết các bài toán: phân biệt IPv4 và IPv6, phân giải tên miền thành danh sách địa chỉ IP, tra cứu ngược tên miền từ IP, định danh máy cục bộ, kiểm tra phân loại địa chỉ (Local, Loopback, Multicast) và so sánh địa chỉ IP giữa hai tên miền khác nhau.
  • Bài 4: Xử lý tiến trình: Định nghĩa khái niệm tiểu tiến trình (Thread), cơ chế đa nhiệm (Multitasking) dựa trên phân biệt giữa đa tiến trình (Multiprocessing) và đa luồng (MultiThreading). Trình bày vòng đời luồng (New, Runnable, Waiting, Timed Waiting, Blocked, Terminated), ưu thế về không gian bộ nhớ dùng chung cũng như các hạn chế về tranh chấp bộ nhớ và khóa chết (Deadlock). Bài thực hành minh họa cơ chế đơn luồng (SingleThread) và đa luồng (MultiThread) thông qua việc điều khiển các đối tượng đồ họa chuyển động (Ball, Balls) vẽ trên JPanel canvas kết hợp hàm điều phối Thread.sleep().
  • Bài 5: TCP Socket, FTP: Phân tích mô hình truyền thông qua tầng mạng OSI và TCP/IP, định vị Socket là giao diện giao tiếp giữa tầng ứng dụng (Application Layer) và tầng giao vận (Transport Layer) được gắn kèm số hiệu cổng (Port Number). Trình bày cơ chế thiết lập kết nối hai chiều tin cậy thông qua ServerSocket và Socket. Trình bày kiến trúc giao thức FTP hoạt động trên 2 cổng logic: cổng 21 cho đường điều khiển (Control Connection) và cổng 20 cho đường truyền dữ liệu (Data Connection), phân tích 3 chế độ truyền dữ liệu của FTP gồm Stream mode, Block mode và Compressed mode (áp dụng thuật toán nén Run-length encoding). Cung cấp mã nguồn máy chủ TCP đa luồng (ServerThread) giao tiếp đồng thời nhiều máy trạm.
  • Bài 6: UDP Socket: Trình bày nguyên lý truyền dữ liệu không liên kết (Connectionless), không đảm bảo độ tin cậy và không kiểm tra thứ tự gói tin, sử dụng lớp DatagramSocket và DatagramPacket để gửi nhận các khối dữ liệu datagram.
  • Bài 7: Lập trình RMI: Trình bày mô hình tính toán phân tán Remote Method Invocation trong Java, cho phép một đối tượng đang chạy trên máy ảo Java này gọi các phương thức của một đối tượng đang cư trú trên một máy ảo Java khác thông qua mạng.

Progression logic (tiến trình phát triển logic) của giáo trình đi từ việc chuẩn bị dữ liệu và tệp tin cục bộ (Bài 1, Bài 2), chuyển sang cơ chế định danh mạng (Bài 3), giải quyết bài toán đồng thời trên máy chủ (Bài 4), áp dụng vào các giao thức tầng giao vận và truyền tệp (Bài 5, Bài 6), cuối cùng đạt đến cấp độ trừu tượng hóa cao nhất là đối tượng phân tán (Bài 7).

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

Giáo trình hình thành hệ thống lý thuyết mạng máy tính gắn liền với kiến trúc phần mềm:

  • Mô hình phân tầng: Giải thích chi tiết quá trình đóng gói dữ liệu (Encapsulation) từ tầng ứng dụng xuống tầng vật lý ở bên gửi, cùng quá trình giải mã dữ liệu (Decapsulation) ngược lại tại bên nhận.
  • Cơ chế định danh giao vận: Làm rõ vai trò của cặp định danh địa chỉ IP và mã số cổng (Port Number) trong việc định tuyến gói tin và chuyển giao dữ liệu chính xác cho các tiến trình đang thực thi.
  • Mô hình Client-Server: Xây dựng tư duy phân tách vai trò máy chủ (lắng nghe yêu cầu, cấp phát luồng xử lý) và máy khách (khởi tạo yêu cầu, nhận kết quả).
  • Bộ nhớ chia sẻ trong đa nhiệm: Cung cấp nền tảng về cơ chế phân bổ tài nguyên của máy ảo Java (JVM), giải thích nguyên lý chia sẻ không gian địa chỉ giữa các luồng để giảm chi phí chuyển đổi ngữ cảnh (Context Switching).

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Cài đặt và cấu hình dịch vụ mạng cục bộ (Apache, MySQL, SQL Server Express); tích hợp thư viện điều khiển JDBC; sử dụng thành thạo gói thư viện java.net và java.io; thiết kế giao diện đồ họa người dùng bằng Java Swing (JFrame, JPanel, JButton, JTextField, JFileChooser).
  • Kỹ năng phân tích (Analytical skills): Phân tích và lựa chọn giao thức truyền tải phù hợp (TCP cho ứng dụng cần tính chính xác và toàn vẹn; UDP cho ứng dụng ưu tiên tốc độ); phát hiện và xử lý lỗi tranh chấp tài nguyên mạng, tắc nghẽn luồng và lỗi kết nối cổng.
  • Kỹ năng thực tiễn (Practical competencies): Xây dựng hoàn chỉnh các ứng dụng mạng có giao diện tương tác: hệ thống quản lý tài khoản qua cơ sở dữ liệu phân tán, công cụ tra cứu thông tin tên miền và IP, ứng dụng truyền nhận thông điệp đa máy khách, các mô-đun đọc/ghi tệp tin đồng bộ trong môi trường phân tán.

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

Giáo trình áp dụng mô hình sư phạm thực hành có hướng dẫn (Guided Laboratory Pedagogy). Mỗi bài học không bắt đầu bằng lý thuyết trừu tượng dài dòng mà đi thẳng vào mục tiêu đầu ra cụ thể, tiếp nối bằng một dự án mẫu được chia nhỏ thành các bước thực hiện chi tiết.

Phương pháp học tập thông qua ca thực hành điển hình (Case Studies) được áp dụng nhất quán. Ví dụ trong Bài 1, sinh viên được hướng dẫn từng thao tác cụ thể: cài đặt WampServer, khởi động dịch vụ, truy cập http://localhost/phpmyadmin/, tạo cơ sở dữ liệu quanlytaikhoan, thiết lập bảng taikhoan với các trường dữ liệu cụ thể (username VARCHAR 50, password VARCHAR 50, path VARCHAR 200, per INT). Sau đó, tài liệu hướng dẫn tạo dự án trên NetBeans IDE, thao tác thêm thư viện mysql-connector-java-5.jar qua giao diện đồ họa, viết mã nguồn cho các lớp xử lý và gán sự kiện actionPerformed cho các nút bấm btnDangKy, btnDangNhap, btnThoat.

Hệ thống bài tập thực hành được phân tầng rõ rệt:

  1. Bài tập mẫu theo hướng dẫn: Đầy đủ mã nguồn, ảnh chụp màn hình minh họa giao diện và cấu hình để sinh viên đối chiếu, kiểm tra tính đúng đắn khi thực thi.
  2. Bài tập làm thêm (Tự giải quyết): Đặt ra các bài toán mở yêu cầu tổng hợp kiến thức. Chẳng hạn tại Bài 2, sinh viên phải tự viết chương trình sinh đối tượng phân số ngẫu nhiên lưu vào tệp phanso.dat, sau đó đọc lại và lọc các phân số có mẫu số là số nguyên tố; hoặc chia nhỏ tệp tin thành các mảng số nguyên 100 phần tử ghi vào tệp Mang.dat. Tại Bài 4, sinh viên phải tự hiện thực các lớp FileTWriter và FileTReader kế thừa lớp Thread để thực thi đọc/ghi đồng thời trên cùng một tệp tin có xử lý đồng bộ hóa dữ liệu.

Phương pháp đánh giá môn học được văn bản hóa cụ thể trong giáo trình:

  • Điểm quá trình (50% tổng số điểm): Bao gồm kiểm tra thường xuyên trong quá trình học tập, điểm kiểm tra giữa học phần, điểm làm bài tập thực hành trên lớp và điểm chuyên cần.
  • Điểm thi kết thúc học phần (50% tổng số điểm): Tổ chức dưới hình thức bài thi thực hành trực tiếp trên máy tính trong thời gian 90 phút. Quy chế thi quy định thí sinh không được mang tài liệu vào phòng thi. Nội dung đề thi gồm các câu hỏi lý thuyết kỹ thuật và bài tập lập trình tương đương với khối lượng kiến thức đã học trong các bài lab.

Hướng dẫn tự học đối với sinh viên: Đọc trước các nội dung lý thuyết trước khi đến phòng thực hành; tự giác cài đặt môi trường trên máy tính cá nhân; viết lại toàn bộ mã nguồn thay vì sao chép; hoàn thiện đầy đủ các câu hỏi và bài tập về nhà trước khi bước vào bài học tiếp theo.

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

  • Tính trực quan và chuẩn hóa thao tác: Toàn bộ các hướng dẫn cấu hình môi trường đều đi kèm ảnh chụp giao diện thực tế của hệ điều hành và công cụ phát triển (NetBeans IDE, SQL Server Management Studio Express 2005, phpMyAdmin trên nền WampServer 2.0). Điều này giúp loại bỏ sai số trong quá trình sinh viên tự thiết lập môi trường lab.
  • Cập nhật kiến trúc phân giải địa chỉ mạng hiện đại: Giáo trình tích hợp nội dung xử lý địa chỉ IPv6 song song với IPv4 tại Bài 3. Sinh viên được tiếp cận phương pháp kiểm tra định dạng chuỗi địa chỉ IPv6 thực tế (như chuỗi 2001:068:0000:0000:0000:0000:1986:69af), phản ánh đúng xu thế chuyển dịch giao thức Internet.
  • Phân tích chi tiết giao thức FTP: Tài liệu không dừng lại ở mức sử dụng công cụ mà mổ xẻ chi tiết cấu trúc hoạt động của FTP thông qua hai đường truyền độc lập: kết nối điều khiển (Control Connection qua cổng 21) duy trì suốt phiên làm việc và kết nối dữ liệu (Data Connection qua cổng 20) chỉ mở khi truyền tệp và tự đóng khi hoàn tất. Tài liệu trình bày tường minh thuật toán nén Run-length encoding áp dụng trong chế độ truyền nén (Compressed mode).
  • Mô hình hóa kiến trúc phần mềm chuyên nghiệp: Việc chia tách mã nguồn thành các lớp kết nối (MyConnection) và lớp xử lý dữ liệu (DBAccess) ngay từ Bài 1 cung cấp cho sinh viên cách tiếp cận kiến trúc chuẩn trong các dự án phần mềm doanh nghiệp, hỗ trợ tái sử dụng mã nguồn và quản lý ngoại lệ tập trung.

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

  • Sinh viên: Giáo trình được biên soạn chuyên biệt cho sinh viên đại học chính quy từ năm thứ hai đến năm thứ ba thuộc các chuyên ngành: Công nghệ thông tin, Kỹ thuật phần mềm, Hệ thống thông tin, Mạng máy tính và Truyền thông dữ liệu.
  • Kiến thức tiền đề bắt buộc: Căn cứ theo mục "Kiến thức tiền đề" của tài liệu, người học bắt buộc phải hoàn thành các môn học:
    • Mạng máy tính: Nắm vững các khái niệm về địa chỉ IP, cổng, mô hình mạng OSI, TCP/IP, cơ chế truyền thông gói tin.
    • Lập trình cơ bản và Hướng đối tượng với Java: Nắm vững cú pháp Java, thao tác lớp và đối tượng, xử lý mảng, cấu trúc điều khiển và cơ chế bắt ngoại lệ (try-catch-finally).
  • Giảng viên: Tài liệu đóng vai trò là đề cương bài giảng và kịch bản thực hành chuẩn cho giảng viên hướng dẫn trong phòng máy. Giảng viên sử dụng hệ thống câu hỏi, bài tập mẫu và bài tập làm thêm trong giáo trình để xây dựng ngân hàng đề kiểm tra quá trình và đề thi thực hành 90 phút kết thúc học phần.
  • Tự học và tham khảo: Tài liệu phù hợp làm sách hướng dẫn thực hành cho các lập trình viên muốn củng cố kỹ năng lập trình socket, truyền thông mạng và xử lý đa luồng ở mức nền tảng trong hệ sinh thái Java.

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 phù hợp với sinh viên chuyên ngành Công nghệ thông tin hoặc lập trình viên đã có kiến thức lập trình cơ bản, cần học cách xây dựng ứng dụng chạy trên môi trường mạng bằng Java SE thông qua các bài lab cụ thể.

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

Người học cần nắm chắc kiến thức cơ bản về mạng máy tính (mô hình OSI, TCP/IP, địa chỉ IP, Port) và kỹ năng lập trình hướng đối tượng bằng Java (lớp, kế thừa, giao diện, cấu trúc điều khiển, xử lý ngoại lệ).

3. Điểm khác biệt với giáo trình khác?

Tài liệu tập trung 100% vào kỹ năng thực hành thông qua các hướng dẫn cấu hình từng bước kèm mã nguồn chi tiết trên NetBeans IDE và các hệ quản trị CSDL phổ biến, tránh các lý thuyết mô tả thuần túy không thể kiểm chứng bằng mã nguồn.

4. Làm sao để tự học hiệu quả?

Người học cần tự chuẩn bị môi trường thực hành (NetBeans, WampServer, SQL Server), đọc trước phần lý thuyết tóm tắt, tự gõ lại toàn bộ mã nguồn của các bài thực hành mẫu, và giải quyết đầy đủ các bài tập làm thêm được yêu cầu ở cuối mỗi bài.

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

Tài liệu đi kèm các gói thư viện driver JDBC (mysql-connector-java-5.jar, sqljdbc.jar) và kênh phản hồi chuyên môn trực tiếp qua địa chỉ thư điện tử của ban biên tập: tailieuhoctap@hutech.vn.

Kết luận

Tài liệu học tập Thực hành Lập trình mạng (CMP 381) của Đại học Công nghệ TP.HCM cung cấp hệ thống thực hành có cấu trúc chặt chẽ, dẫn dắt người học từ các thao tác kết nối dữ liệu cơ sở đến việc làm chủ các giao thức truyền thông mạng và mô hình phân tán trong môi trường Java. Lộ trình học tập đề xuất là tuân thủ tuần tự 7 bài thực hành: làm chủ tương tác CSDL và I/O (Bài 1, 2) -> kiểm soát định danh mạng và đa luồng (Bài 3, 4) -> hiện thực hóa ứng dụng Client-Server qua TCP/UDP, FTP và tính toán phân tán RMI (Bài 5, 6, 7). Để mở rộng kiến thức, người học có thể tham khảo thêm tài liệu đặc tả API chuẩn từ Oracle cho gói java.net, java.rmi và các tài liệu chuyên khảo về kiến trúc hệ thống phân tán.