Tổng quan về giáo trình
Giáo trình Lập trình với C#.NET (Mã mô đun: MĐ 19, Mã văn bản: UDPM-CĐ-MĐ19-LTCNET) là tài liệu đào tạo chuyên môn do Khoa Công nghệ Thông tin – Trường Cao đẳng Nghề Cần Thơ tổ chức biên soạn, với sự chủ biên của tác giả Nguyễn Phát Minh. Đề cương chi tiết của giáo trình đã được thông qua Hội đồng Khoa học của Khoa và Trường, phục vụ trực tiếp cho chương trình đào tạo ngành Công nghệ Thông tin (chuyên ngành Ứng dụng phần mềm).
Về vị trí trong chương trình đào tạo, 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 chung và các môn học cơ sở chuyên ngành. Đây là học phần chuyên ngành bắt buộc, mang tính chất nâng cao từ môn học Lập trình C# căn bản, đồng thời đóng vai trò xây dựng nền tảng kỹ thuật trực tiếp để người học tiếp tục tiếp cận các môn học chuyên sâu về lập trình ứng dụng web như ASP.NET.
Mục tiêu học tập (Learning Outcomes) của giáo trình được xác định trên ba phương diện cụ thể:
- Về kiến thức: Cung cấp hiểu biết hệ thống về nền tảng Microsoft .NET; trang bị kiến thức về lập trình hướng đối tượng trên ngôn ngữ C#; làm chủ các kỹ thuật xử lý mảng, chuỗi ký tự; nắm vững kiến trúc truy xuất và xử lý dữ liệu ADO.NET.
- Về kỹ năng: Xây dựng và triển khai được các ứng dụng trên môi trường Windows (bao gồm Console Application và Windows Forms) sử dụng ngôn ngữ C# trên nền tảng .NET Framework; kết nối và xử lý dữ liệu với hệ quản trị cơ sở dữ liệu.
- Về năng lực tự chủ và trách nhiệm: Rèn luyện tác phong làm việc nghiêm túc, tỉ mỉ trong việc tiếp nhận kiến thức kỹ thuật, chủ động và tích cực trong thực hành cũng như giải quyết các bài toán lập trình ứng dụng.
Giáo trình có tổng thời lượng 60 giờ (gồm 30 giờ lý thuyết, 27 giờ thực hành và 3 giờ kiểm tra), được cấu trúc chặt chẽ thành 3 bài học chính theo lộ trình từ cú pháp cơ bản, tư duy hướng đối tượng nâng cao đến kỹ thuật thao tác cơ sở dữ liệu thực tế.
Nội dung kiến thức cốt lõi
Các chương/chủ đề chính
Nội dung của giáo trình được triển khai theo 3 bài học trọng tâm với tiến trình logic từ cơ bản đến ứng dụng phức tạp:
[Bài 1: Ngôn ngữ lập trình C#] (10 giờ)
[Bài 2: Lập trình hướng đối tượng với C#] (20 giờ)
[Bài 3: Xử lý dữ liệu với ADO.NET] (30 giờ)
-
Bài 1: Ngôn ngữ lập trình C# (Mã bài: MĐ 19 - 01, thời lượng 10 giờ: 4 LT - 6 TH)
- Khởi tạo ứng dụng đầu tiên (
firstApp) trên Microsoft Visual Studio để làm quen với cấu trúc thư mục Solution (bin, obj), cách tương tác qua lớp Console với phương thức ReadLine(), WriteLine().
- Khảo sát biến dữ liệu, cú pháp khai báo, cấp phát vùng nhớ và tầm hoạt động của biến (biến trường/field, biến cục bộ, biến vòng lặp).
- Khái niệm hằng dữ liệu (
const) và cơ chế tính toán giá trị tại thời điểm biên dịch.
- Hệ thống kiểu dữ liệu định nghĩa sẵn: Kiểu giá trị (Value Types) lưu trữ trên vùng nhớ Stack và kiểu tham chiếu (Reference Types) lưu trữ trên vùng nhớ Heap.
- Cấu trúc điều khiển chương trình: Câu lệnh rẽ nhánh (
if...else, switch...case), câu lệnh lặp (for, while, do...while, foreach), các lệnh nhảy (goto, break, continue, return).
- Cấu trúc chương trình: Lớp đối tượng (
class), kiểu cấu trúc (struct), phương thức (method) và cơ chế truyền tham số bằng giá trị hoặc tham chiếu thông qua từ khóa ref và out.
- Xử lý dữ liệu kiểu mảng: Mảng một chiều, mảng nhiều chiều dạng ma trận (
[,]) và mảng răng cưa ([][] - ứng dụng qua thuật toán Tam giác Pascal).
- Hệ thống toán tử, chỉ dẫn kiểm soát tràn số (
checked/unchecked), toán tử is, sizeof, kiểu liệt kê (enum) và tổ chức không gian tên (namespace).
-
Bài 2: Lập trình hướng đối tượng với C# (Mã bài: MĐ 19 - 02, thời lượng 20 giờ: 10 LT - 9 TH - 1 KT)
- Nguyên lý kế thừa trong C#: Cơ chế đơn kế thừa, mối quan hệ dẫn xuất từ lớp gốc
System.Object.
- Nạp chồng phương thức (
Method Overloading): Phân biệt các phiên bản phương thức dựa trên chữ ký (tên hàm, số lượng và kiểu đối số).
- Ghi đè phương thức (
Method Overriding) và che giấu phương thức (Method Hiding): Cặp từ khóa virtual/override, cơ chế gắn kết muộn (late-binding) tại thời điểm thực thi so với che giấu phương thức bằng từ khóa new.
- Triệu gọi phương thức của lớp cơ sở thông qua từ khóa
base.
- Lớp trừu tượng (
abstract class) và phương thức trừu tượng (abstract method).
- Lớp niêm phong (
sealed class) và phương thức niêm phong (sealed method).
- Nạp chồng toán tử (
Operator Overloading): Cú pháp public static <return type> operator <op>, quy tắc nạp chồng toán tử một ngôi, hai ngôi, quy tắc bắt buộc theo cặp đối với toán tử quan hệ (== và !=), minh họa qua việc xây dựng lớp số phức ComplexNumber.
-
Bài 3: Xử lý dữ liệu với ADO.NET (Mã bài: MĐ 19 - 03, thời lượng 30 giờ: 16 LT - 12 TH - 2 KT)
- Kiến trúc tổng quan của ADO.NET gồm hai thành phần cốt lõi: Tầng kết nối (
.NET Framework Data Provider) và Tầng ngắt kết nối (DataSet).
- Bốn đối tượng căn bản của .NET Framework Data Provider:
Connection, Command, DataReader, DataAdapter (sử dụng không gian tên System.Data.SqlClient).
- Mô hình xử lý dữ liệu kết nối: Thao tác với
SqlDataReader theo cơ chế đọc tiến một chiều (forward-only), chỉ đọc (read-only), tối ưu bộ nhớ qua phương thức ExecuteReader(CommandBehavior.CloseConnection).
- Mô hình xử lý dữ liệu ngắt kết nối: Cấu trúc container
DataSet, DataTable, lưu trữ snapshot dữ liệu tại máy client và giảm thiểu thời gian chiếm dụng kết nối CSDL.
- Kỹ thuật kết buộc dữ liệu (
Data Binding) lên các điều khiển giao diện người dùng như ListBox.
Kiến thức nền tảng được xây dựng
Giáo trình thiết lập hệ thống lý thuyết nền tảng vững chắc xoay quanh các nguyên lý cốt lõi của khoa học máy tính và kỹ thuật phần mềm:
- Mô hình quản lý bộ nhớ trong CTS (Common Type System): Phân định cơ chế cấp phát, giải phóng và tầm hoạt động của dữ liệu giữa vùng nhớ ngăn xếp (Stack) dành cho kiểu giá trị (
sbyte, short, int, long, byte, ushort, uint, ulong, float, double, decimal, bool, char, struct) và vùng nhớ đống (Heap) dành cho kiểu tham chiếu (object, string, class, mảng).
- Nguyên lý tính bất biến (Immutability): Phân tích cơ chế hoạt động của kiểu
string khi thực hiện các phép gán và chỉnh sửa chuỗi ký tự trên bộ nhớ Heap.
- Nguyên lý hướng đối tượng nâng cao: Thiết lập tư duy trừu tượng hóa dữ liệu qua các lớp
abstract, bảo vệ cấu trúc kế thừa qua sealed, thực thi đa hình lúc biên dịch (compile-time polymorphism) qua overloading và đa hình lúc chạy (runtime polymorphism) qua virtual/override.
- Kiến trúc truy cập dữ liệu tách lớp: Phân lập ranh giới giữa lớp truy cập kết nối nguồn dữ liệu vật lý và lớp xử lý logic ngắt kết nối độc lập.
Kỹ năng phát triển
Thông qua các nội dung lý thuyết và bài tập thực hành, người học phát triển bộ kỹ năng toàn diện:
- Kỹ năng kỹ thuật (Technical skills): Cú pháp hóa mã nguồn C# chuẩn xác; quản lý và bắt ngoại lệ tràn số học (
System.OverflowException); cấu hình linh hoạt tham số hàm với ref và out; nạp chồng các toán tử đại số; viết câu lệnh SQL truy vấn và ánh xạ dữ liệu vào ứng dụng.
- Kỹ năng phân tích (Analytical skills): Phân tích cấu trúc thư mục chương trình (
bin, obj); so sánh hiệu năng giữa mô hình dữ liệu kết nối (DataReader) và ngắt kết nối (DataSet); lựa chọn cấu trúc mảng phù hợp (mảng ma trận hay mảng răng cưa) dựa trên bản chất dữ liệu đầu vào.
- Kỹ năng thực hành nghề nghiệp (Practical competencies): Sử dụng thành thạo IDE Visual Studio; tra cứu tài liệu kỹ thuật MSDN; tổ chức không gian tên mã nguồn khoa học; xây dựng hoàn chỉnh ứng dụng quản lý thông tin có kết nối cơ sở dữ liệu quan hệ.
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 sư phạm định hướng thực hành (Practice-oriented approach), trong đó thời lượng thực hành và bài tập chiếm 50% tổng số giờ học trực tiếp trên lớp (27 giờ thực hành / 60 giờ tổng thể). Mỗi chủ đề lý thuyết đều đi kèm mã nguồn minh họa chi tiết và các ca thực nghiệm cụ thể.
Hệ thống bài tập và ca thực hành mẫu
Giáo trình tích hợp các ví dụ lập trình bám sát kiến thức thực tế:
- Ứng dụng tính toán cơ bản (
firstApp): Hướng dẫn sinh viên thiết lập Console Application, nhập xuất dữ liệu, ép kiểu số học ((float)x / y), xử lý các lỗi ngoại lệ logic như phép chia cho 0.
- Thuật toán Tam giác Pascal: Vận dụng mảng răng cưa (
long[][]) và vòng lặp lồng nhau để giải quyết bài toán tổ hợp dữ liệu và định dạng xuất bảng Console.
- Mô phỏng lớp số phức (
ComplexNumber): Xây dựng lớp đối tượng với đầy đủ hàm khởi dựng (constructor), ghi đè ToString(), nạp chồng toán tử cộng (+), trừ (-) và so sánh đối tượng.
- Ứng dụng truy xuất bảng
SinhVien: Kết nối cơ sở dữ liệu qua SqlConnection, thực thi câu lệnh truy vấn SELECT HoTen FROM SinhVien ORDER BY NgaySinh thông qua SqlCommand và hiển thị kết quả bằng SqlDataReader lên điều khiển giao diện ListBox.
Phương pháp đánh giá và tự học
- Phương pháp đánh giá: Kết hợp kiểm tra lý thuyết (viết, trắc nghiệm, vấn đáp) và đánh giá kỹ năng thực hành thao tác trực tiếp trên máy tính. Hệ thống kiểm tra bao gồm 3 bài kiểm tra định kỳ phân bổ vào cuối Bài 2 (1 giờ) và Bài 3 (2 giờ).
- Hướng dẫn tự học: Giáo trình yêu cầu sinh viên chủ động tra cứu tài liệu MSDN (Microsoft Developer Network) đối với các phương thức tích hợp sẵn của lớp
Console, Array, Enum, System.Data.SqlClient; yêu cầu sinh viên tự quan sát sự thay đổi của các tập tin biên dịch trong thư mục bin và obj của project sau mỗi lần thực thi.
Điểm nổi bật và cập nhật
Giáo trình thể hiện tính chuẩn mực học thuật và tính cập nhật kỹ thuật thông qua các điểm nhấn cụ thể trong văn bản:
- Kiểm soát chặt chẽ an toàn bộ nhớ và ngoại lệ: Cung cấp cú pháp tường minh về khối lệnh
checked và unchecked. Giáo trình chỉ rõ trạng thái mặc định của trình biên dịch là unchecked, từ đó giúp người học nhận thức rõ nguy cơ mất mát dữ liệu do tràn số nguyên và phương pháp chủ động bắt ngoại lệ System.OverflowException.
- Phân định rõ ràng giữa Virtual/Override và Che giấu phương thức (Method Hiding): Giáo trình giải thích chi tiết cơ chế gắn kết muộn (
late-binding) tại runtime khi dùng virtual/override, đồng thời phân tích trường hợp trình biên dịch quyết định phiên bản gọi hàm ngay tại thời điểm biên dịch (compile-time) khi phương thức bị che giấu, kèm theo giải pháp sử dụng từ khóa new để loại bỏ cảnh báo biên dịch.
- Tối ưu hóa kỹ thuật truy xuất dữ liệu với ADO.NET: Tích hợp mô hình làm việc với tham số
CommandBehavior.CloseConnection, đảm bảo tính toàn vẹn tài nguyên kết nối khi đóng đối tượng DataReader.
- Hỗ trợ đa dạng nhà cung cấp dữ liệu (Data Providers): Bên cạnh
SqlClient được tích hợp sẵn trong không gian tên System.Data, giáo trình giới thiệu mở rộng khả năng tham chiếu và tương tác với các Data Provider khác như MySQL, PostgreSQL, OracleClient, Odbc, OleDb.
Đối tượng sử dụng giáo trình
Giáo trình Lập trình với C#.NET được biên soạn nhằm phục vụ các nhóm đối tượng cụ thể:
- Sinh viên: Sinh viên năm thứ hai hoặc năm thứ ba hệ Cao đẳng và Đại học ngành Công nghệ Thông tin, chuyên ngành Ứng dụng phần mềm, Lập trình máy tính, Hệ thống thông tin.
- Điều kiện tiên quyết (Prerequisites): Người học cần hoàn thành các môn học chung, các môn cơ sở chuyên ngành như Lập trình C# căn bản, Cơ sở dữ liệu (nắm vững cú pháp SQL cơ bản), cùng kiến thức tổng quan về thuật toán và cấu trúc dữ liệu.
- Giảng viên: Giảng viên các trường Cao đẳng, Đại học sử dụng giáo trình làm tài liệu giảng dạy chính thức; khai thác khung phân phối 60 giờ, hệ thống câu hỏi ôn tập, bài tập mã nguồn mẫu để xây dựng bài giảng lý thuyết, bài thực hành phòng máy và đề thi đánh giá năng lực.
- Tài liệu tham khảo chuyên môn: Kỹ thuật viên phát triển phần mềm, người tự học lập trình muốn nắm bắt chuẩn mực cú pháp C# và nền tảng ADO.NET để chuẩn bị học tiếp các công nghệ phát triển web như ASP.NET.
Câu hỏi thường gặp
1. Giáo trình này phù hợp với đối tượng nào?
Giáo trình được biên soạn chuẩn hóa cho sinh viên ngành Công nghệ Thông tin hệ Cao đẳng Nghề và Đại học thuộc chuyên ngành Ứng dụng phần mềm, lập trình viên mới bắt đầu tiếp cận ngôn ngữ C# và nền tảng .NET.
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 cần có kiến thức về lập trình cơ bản (tương đương học phần Lập trình C# căn bản) và kiến thức cơ bản về cơ sở dữ liệu quan hệ (viết được các truy vấn SQL cơ bản như SELECT, INSERT, UPDATE, DELETE).
3. Sự khác nhau căn bản giữa struct và class được giáo trình giải thích như thế nào?
Theo giáo trình, struct là kiểu dữ liệu giá trị (Value Type) được cấp phát trên bộ nhớ Stack và không hỗ trợ kế thừa; trong khi class là kiểu dữ liệu tham chiếu (Reference Type) được cấp phát trên bộ nhớ Heap và hỗ trợ cơ chế đơn kế thừa.
4. Làm thế nào để tự học và thực hành hiệu quả theo giáo trình?
Người học cần cài đặt môi trường Microsoft Visual Studio, gõ và biên dịch trực tiếp các ví dụ mã lệnh trong giáo trình (từ ứng dụng firstApp, thuật toán mảng răng cưa, lớp ComplexNumber đến kết nối CSDL), quan sát cửa sổ Console và tra cứu thêm các phương thức thư viện tại MSDN.
5. Giáo trình chuẩn bị nền tảng cho những môn học nào tiếp theo?
Kiến thức lập trình hướng đối tượng C# và kỹ thuật xử lý dữ liệu ADO.NET trong giáo trình là điều kiện tiên quyết trực tiếp để sinh viên học tiếp học phần Lập trình web với ASP.NET và các đồ án tốt nghiệp phát triển phần mềm.
Kết luận
Giáo trình Lập trình với C#.NET (Mã mô đun: MĐ 19) là tài liệu học thuật hoàn chỉnh, cung cấp lộ trình đào tạo chặt chẽ từ cú pháp ngôn ngữ C#, tư duy lập trình hướng đối tượng nâng cao đến kỹ năng xử lý dữ liệu với ADO.NET trên nền tảng Microsoft .NET Framework.
Lộ trình học tập đề xuất:
Để hoàn thành tốt môn học, người học nên kết hợp học tập giáo trình với việc tra cứu tài liệu trực tuyến MSDN từ Microsoft, thực hành thường xuyên trên môi trường Visual Studio và hoàn thành đầy đủ các bài tập ứng dụng đi kèm.