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

Giáo trình Lập trình căn bản (Mã môn học: MH09) là tài liệu giảng dạy chính khóa được biên soạn theo chương trình đào tạo ngành Tin học ứng dụng trình độ Cao đẳng, ban hành kèm theo Quyết định số 459/QĐ-NSG ngày 31 tháng 08 năm 2022 của Hiệu trưởng Trường Cao đẳng Bách Khoa Nam Sài Gòn. Công trình do ThS. Bùi Thị Mai Châu đảm nhiệm vai trò chủ biên.

Về vị trí trong chương trình đào tạo, môn học thuộc khối kiến thức chuyên môn nghề bắt buộc. Tổng thời lượng giảng dạy quy chuẩn là 60 giờ, bao gồm 30 giờ lý thuyết, 28 giờ dành cho thực hành, thí nghiệm, bài tập, thảo luận và 02 giờ kiểm tra định kỳ.

Mục tiêu học tập (learning outcomes) của giáo trình được xác lập trên ba phương diện chuẩn đầu ra:

  • Kiến thức: Cung cấp hệ thống lý thuyết nền tảng về ngôn ngữ lập trình Java; phân biệt các kiểu dữ liệu cơ sở, cấu trúc biến, hệ thống toán tử, luồng điều khiển, cú pháp lớp và phương thức; nắm vững cơ chế biên dịch và thực thi chương trình.
  • Kỹ năng: Nhận dạng cú pháp lệnh chuẩn xác, tổ chức cấu trúc dữ liệu mảng, chuỗi và xây dựng các chương trình phần mềm hướng đối tượng quy mô vừa và nhỏ.
  • Năng lực tự chủ và trách nhiệm: Xây dựng tác phong làm việc công nghiệp, tính kiên trì, độ chính xác và khả năng tự nghiên cứu trong môi trường kỹ thuật phần mềm.

Về cấu trúc và cách tiếp cận, tài liệu được phân chia thành 5 bài học tuần tự:

  1. Bài 1: Giới thiệu ngôn ngữ lập trình
  2. Bài 2: Kiểu, toán tử, lệnh IF, SWITCH
  3. Bài 3: Mảng và lệnh lặp
  4. Bài 4: Lớp và đối tượng
  5. Bài 5: Kế thừa

Điểm đặc sắc của giáo trình là việc sử dụng trực tiếp ngôn ngữ Java nhằm minh họa cho mô hình lập trình cấu trúc kết hợp hướng đối tượng (OOP), đi kèm hệ thống ví dụ mã nguồn mẫu và câu hỏi trắc nghiệm kiểm tra khả năng bắt lỗi cú pháp biên dịch.


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

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

Giáo trình triển khai khối lượng kiến thức qua 5 bài học có tính liên kết chặt chẽ:

  • Bài 1: Giới thiệu ngôn ngữ lập trình (Trang 6 – 21): Trình bày lịch sử phát triển của Java (khởi nguyên từ dự án nhóm Green Team và ngôn ngữ Oak của Sun Microsystem do James Gosling phát triển năm 1995). Phân tích kiến trúc máy ảo Java (Java Virtual Machine - JVM), mã Java Bytecode và tính chất "Viết một lần, chạy mọi nơi" (Write Once, Run Anywhere). Giới thiệu 8 kiểu dữ liệu nguyên thủy (byte, short, int, long, float, double, char, boolean), quy tắc định danh biến, hằng số, toán tử số học, toán tử bit, toán tử quan hệ - logic, toán tử điều kiện ba ngôi (?:), thứ tự ưu tiên và cơ chế ép kiểu (widening/narrow conversion). Phần này tích hợp 16 câu hỏi trắc nghiệm kỹ thuật.
  • Bài 2: Cấu trúc IF, SWITCH (Trang 22 – 26): Trình bày các cấu trúc rẽ nhánh điều kiện gồm if đơn, if-else, chuỗi if-else-if và cấu trúc lựa chọn đa trường hợp switch-case kèm lệnh ngắt break và nhánh mặc định default. Phần bài tập minh họa bao gồm các thuật toán: kiểm tra số chẵn/lẻ, xác định năm nhuận, tìm phần nguyên - phần dư và xây dựng ứng dụng máy tính số học đơn giản.
  • Bài 3: Mảng và lệnh lặp (Trang 27 – 45): Giới thiệu ba dạng vòng lặp cơ bản: while, do-while, for cùng cấu trúc điều khiển luồng break, continue và cơ chế gắn nhãn label (thay thế cho lệnh goto). Trình bày cấu trúc mảng một chiều, mảng hai chiều (int table[][]), cơ chế cấp phát bộ nhớ động bằng toán tử new và cách quản lý chỉ số từ 0 đến $n-1$. Phân tích thao tác xử lý chuỗi ký tự qua lớp String, kỹ thuật nhập xuất dữ liệu sử dụng luồng BufferedReader, InputStreamReader và lớp Scanner. Chương này cung cấp 12 ví dụ chương trình hoàn chỉnh: thuật toán sắp xếp nổi bọt (BubbleSort), tìm giá trị cực trị (MinMax), xử lý ngoại lệ chỉ số mảng (ArrayErr), nối chuỗi, trích xuất chuỗi con (substring) và đảo ngược chuỗi (InverstString).
  • Bài 4: Lớp và đối tượng (Trang 46 – 56): Xây dựng nền tảng hướng đối tượng: định nghĩa lớp (Class như một template), tạo thể hiện (Instance Object) bằng từ khóa new. Quy định phạm vi truy xuất thuộc tính và phương thức qua các tiền tố public, private, protected. Phân tích các từ khóa bổ trợ: static, final, abstract, synchronized. Giải thích cấu trúc hàm khởi tạo (Constructor mặc định và Constructor có tham số). Cung cấp mã nguồn thực hành thông qua lớp mô hình xemay (với các thuộc tính nhasx, model, chiphisx, thoigiansx, so, biến tĩnh sobanhxe và phương thức tinhgiaban()).
  • Bài 5: Kế thừa (Trang 57 – 96): Đi sâu vào quan hệ kế thừa giữa các lớp, kỹ thuật tái sử dụng mã nguồn, xây dựng lớp trừu tượng (Abstract Class) và phương thức trừu tượng (Abstract Method), giới thiệu giao diện (Interface) để hỗ trợ mô hình đa kế thừa.

Progression logic (logic tiến trình) của tài liệu đi từ tầng cú pháp chỉ thị cơ bản (biến, kiểu dữ liệu, cấu trúc rẽ nhánh, vòng lặp), chuyển tiếp sang cấu trúc dữ liệu tuyến tính (mảng, chuỗi ký tự), và nâng cấp lên mô hình lập trình hướng đối tượng có cấu trúc lớp, bao đóng dữ liệu và kế thừa.

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

  • Fundamental theories: Lý thuyết biên dịch kết hợp thông dịch của Java (biên dịch từ mã nguồn *.java thành tập tin *.class chứa Java Bytecode để JVM thông dịch sang mã máy của từng hệ điều hành cụ thể).
  • Core principles: Nguyên lý đóng gói và bảo vệ dữ liệu (Data Encapsulation) thông qua việc thiết lập thuộc tính ở chế độ private và phương thức ở chế độ public; nguyên lý quản lý bộ nhớ thông qua cấp phát động với từ khóa new.
  • Essential frameworks: Phân loại hệ sinh thái công nghệ Java gồm J2SE (Java 2 Standard Edition) phục vụ ứng dụng đơn và Client-Server, J2EE (Java 2 Enterprise Edition) cho ứng dụng thương mại/doanh nghiệp, và J2ME (Java 2 Micro Edition) cho thiết bị di động.

Kỹ năng phát triển

  • Technical skills: Khai báo và sử dụng đúng chuẩn các kiểu dữ liệu; sử dụng luồng nhập xuất chuẩn (System.in, BufferedReader, Scanner); viết mã khởi tạo đối tượng, định nghĩa thuộc tính và cài đặt Constructor cho lớp.
  • Analytical skills: Phân tích giải thuật điều kiện, giải thuật lặp qua các cấu trúc for, while; phân tích luồng thực thi và kiểm tra các lỗi logic như vượt quá chỉ số mảng hoặc xung đột kiểu dữ liệu.
  • Practical competencies: Xây dựng các chương trình ứng dụng hoàn chỉnh xử lý chuỗi, sắp xếp mảng số học, tính giá trị trung bình cộng, xác định số tồn tại trong mảng, và tạo dựng các mô hình lớp thực tế.

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

Pedagogical approach

Giáo trình thiết kế theo mô hình lý thuyết kết hợp thực hành trực tiếp (tỷ lệ phân bổ: 30 giờ lý thuyết song hành cùng 28 giờ bài tập thực hành/thảo luận). Mỗi đơn vị bài học bắt đầu bằng phần mục tiêu cụ thể, tiếp nối là phần phân tích cú pháp kèm quy tắc hoạt động, kết thúc bằng các mã nguồn minh họa chi tiết và bài tập lập trình áp dụng.

Bài tập và case studies

Hệ thống thực hành trong giáo trình được chia làm hai dạng:

  1. Trắc nghiệm kiểm tra cú pháp và khả năng bắt lỗi biên dịch: Điển hình là bộ 16 câu hỏi tại Bài 1, tập trung vào việc nhận biết kích thước byte của kiểu dữ liệu (char 2 bytes), kiểm tra các lỗi tương thích kiểu (như phép gán String y = x + 3; hoặc so sánh biến boolean với giá trị nguyên int), và kiểm tra lỗi chia cho 0 (DivideByZeroException).
  2. Bài tập lập trình thuật toán thực nghiệm:
    • Tính toán điều kiện: Kiểm tra năm nhuận, tạo menu máy tính số học 4 phép tính bằng switch-case.
    • Xử lý mảng: Thuật toán sắp xếp nổi bọt BubbleSort, thuật toán tìm cực trị MinMax, tính tổng và giá trị trung bình cộng mảng số thực, tìm kiếm vị trí phần tử trong mảng.
    • Xử lý chuỗi: Nhập xuất chuỗi văn bản bằng BufferedReader, đếm chiều dài chuỗi với phương thức .length(), so sánh chuỗi, cắt chuỗi con với .substring() và đảo ngược chuỗi ký tự.

Practical exercises & Assessment methods

  • Đánh giá thường xuyên thông qua 28 giờ thực hành trên máy: sinh viên tự gõ mã nguồn, biên dịch và sửa lỗi các chương trình mẫu.
  • Đánh giá định kỳ qua 02 giờ kiểm tra: tập trung vào việc thiết kế cấu trúc lớp, sử dụng đúng phạm vi truy cập (public, private, protected) và cài đặt chính xác các thuật toán cơ bản.

Self-study guidelines

Tài liệu cung cấp hướng dẫn rõ ràng cho việc tự học: người học cần chú ý các quy ước đặt tên biến phân biệt chữ hoa - chữ thường, quy tắc ép kiểu tường minh đối với số nguyên và số thực, quy định bắt buộc phải kết thúc câu lệnh bằng dấu chấm phẩy (;), và cơ chế bảo toàn dữ liệu bằng cách hạn chế dùng tiền tố public cho các biến thuộc tính của lớp.


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

  • Tính pháp lý và tiêu chuẩn hóa: Giáo trình được biên soạn chuẩn theo chương trình đào tạo của Trường Cao đẳng Bách Khoa Nam Sài Gòn, ban hành năm 2022 theo quyết định của Hiệu trưởng, đảm bảo tính thống nhất trong toàn bộ tiến trình đào tạo.
  • Tính chính xác về mặt kỹ thuật của ngôn ngữ Java: Giáo trình nhấn mạnh và phân tích sâu các điểm khác biệt mang tính cốt lõi giữa Java và ngôn ngữ lập trình C/C++:
    • Loại bỏ các tính năng gây mất an toàn bộ nhớ như con trỏ và lệnh goto (thay thế bằng cơ chế nhãn label kết hợp break/continue).
    • Không hỗ trợ kiểu số nguyên không dấu (unsigned).
    • Quản lý kiểu luận lý (boolean) độc lập, không cho phép ép kiểu hoặc so sánh trực tiếp giữa boolean và int.
    • Chuỗi ký tự được định nghĩa là một đối tượng thuộc lớp String thay vì chỉ là mảng ký tự đơn thuần.
    • Ngăn chặn đa kế thừa trực tiếp để tránh xung đột cấu trúc, thay thế bằng khái niệm Interface.
  • Minh họa thực tế qua các kịch bản lập trình: Các ví dụ mã nguồn không trừu tượng hóa quá mức mà gắn liền với các thao tác nhập xuất hệ thống thực tế thông qua các thư viện nền tảng như java.util.Scanner, java.io.BufferedReader, java.io.InputStreamReader và các phương thức toán học tĩnh Math.min().

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

  • Sinh viên: Sinh viên hệ Cao đẳng chính quy ngành Tin học ứng dụng hoặc các ngành thuộc nhóm ngành Công nghệ thông tin. Giáo trình được sử dụng làm tài liệu học tập chính thức cho môn học Lập trình căn bản (MH09).
  • Prerequisites (Điều kiện tiên quyết): Người học cần có kiến thức cơ bản về tin học đại cương, khả năng thao tác với hệ điều hành máy tính (Windows, Linux) và tư duy logic căn bản về giải thuật.
  • Giảng viên: Sử dụng làm đề cương chi tiết và tài liệu chuẩn để phân bổ nội dung giảng dạy trong 60 giờ (30 giờ lý thuyết, 28 giờ thực hành và 02 giờ kiểm tra); làm căn cứ ra đề thi, đề kiểm tra đánh giá năng lực lập trình của sinh viên.
  • Tự học và tham khảo: Phù hợp cho lập trình viên mới bắt đầu tiếp cận ngôn ngữ Java, người học cần tài liệu chuẩn hóa về cú pháp Java cơ bản và các nguyên lý lập trình hướng đối tượng ban đầu.

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ế trực tiếp cho sinh viên trình độ Cao đẳng ngành Tin học ứng dụng tại Trường Cao đẳng Bách Khoa Nam Sài Gòn và những người mới bắt đầu học lập trình hướng đối tượng.

2. Cần kiến thức nền nào trước khi học giáo trình này?

Người học chỉ cần kiến thức tin học cơ bản và tư duy logic. Giáo trình xây dựng nội dung từ các định nghĩa sơ khởi nhất (biến, kiểu dữ liệu, phép toán) nên không đòi hỏi người học phải biết trước một ngôn ngữ lập trình cụ thể nào khác.

3. Điểm khác biệt của giáo trình này so với các tài liệu C/C++ là gì?

Giáo trình tập trung vào các đặc thù của Java: phân tích chi tiết cơ chế biên dịch qua máy ảo JVM, quản lý bộ nhớ độc lập nền tảng, loại bỏ con trỏ, kiểu dữ liệu boolean độc lập không chuyển đổi sang số nguyên, và xử lý chuỗi dưới dạng đối tượng của lớp String.

4. Làm sao để tự học hiệu quả với tài liệu này?

Người học nên kết hợp đọc lý thuyết cú pháp, tự nhập và chạy thử toàn bộ 12 chương trình ví dụ mẫu trong Bài 3 và mã nguồn lớp xemay trong Bài 4, sau đó tự giải quyết hệ thống bài tập thuật toán và trả lời các câu hỏi trắc nghiệm kiểm tra biên dịch.

5. Giáo trình có tài liệu hoặc ví dụ mã nguồn bổ trợ nào đi kèm?

Giáo trình cung cấp sẵn các đoạn mã mẫu minh họa nhập xuất với Scanner, BufferedReader, thuật toán sắp xếp nổi bọt BubbleSort, thuật toán tìm MinMax, các hàm xử lý chuỗi trong lớp String và danh mục câu hỏi trắc nghiệm cuối mỗi bài.


Kết luận

Giáo trình Lập trình căn bản (MH09) của Trường Cao đẳng Bách Khoa Nam Sài Gòn cung cấp hệ thống tri thức chuẩn xác về ngôn ngữ lập trình Java và phương pháp tiếp cận lập trình hướng đối tượng ở cấp độ giáo dục nghề nghiệp. Tài liệu vạch ra lộ trình học tập logic: bắt đầu từ các khái niệm cơ sở về kiểu dữ liệu và luồng điều khiển, củng cố kỹ năng qua các giải thuật thao tác với mảng và chuỗi, tiến tới việc làm chủ kỹ thuật tổ chức lớp, phương thức và cơ chế kế thừa. Đây là nền tảng trực tiếp để người học tiếp tục phát triển các môn học nâng cao tiếp theo như Lập trình hướng đối tượng nâng cao, Lập trình ứng dụng Web và Lập trình ứng dụng doanh nghiệp.