Cấu trúc dữ liệu và giải thuật là khối kiến thức đặc biệt quan trọng đối với lập trình viên, bất kể làm việc với ngôn ngữ lập trình nào (C/C++, C#, Java, Python, …). Không phải ngẫu nhiên mà Cấu trúc dữ liệu và giải thuật là môn học bắt buộc trong bất kỳ chương trình đào tạo nào về công nghệ thông tin ở Việt Nam và cả ở nước ngoài. Đây là khối kiến thức được sử dụng rất nhiều (dù là gián tiếp) trong công việc của lập trình viên.
Tập bài giảng này sẽ hướng dẫn các bạn tự học Cấu trúc dữ liệu và giải thuật trực tiếp với C#. Đây là một bộ tài liệu hướng dẫn cách sử dụng các cấu trúc dữ liệu và giải thuật kinh điển cũng như cách thực thi của chúng trong bộ thư viện .NET Framework với ngôn ngữ C#.
Cấu trúc dữ liệu và giải thuật, ngôn ngữ lập trình C#
Có rất nhiều sách và giáo trình về Cấu trúc dữ liệu và giải thuật. Tuy nhiên, các tài liệu này thường sử dụng ngôn ngữ lập trình C/C++. Sau này cũng xuất hiện nhiều tài liệu bài bản về cấu trúc dữ liệu và giải thuật với các ngôn ngữ lập trình khác như Java, Python, hay thậm chí Javascript hay PHP. Tuy nhiên các cuốn sách đầy đủ về cấu trúc dữ liệu và thuật toán với C# lại tương đối hiếm. Tuy nhiên, C/C++ cũng là những ngôn ngữ lập trình sinh viên khó học khó thành thạo. Không nhiều sinh viên tiếp tục sử dụng C/C++ trong các giai đoạn sau của chương trình đào tạo hoặc khi đi làm.
Từ khi ra đời năm 2001, C# đã phát triển nhanh chóng và trở thành ngôn ngữ lập trình phổ biến hàng đầu. Hiện nay, ở Việt Nam, C# và .NET framework là một hệ sinh thái mạnh mẽ với khối lượng lập trình viên đông đảo và nhu cầu tuyển dụng rất lớn. Ngôn ngữ C# dễ học, tính ứng dụng cao và là ngôn ngữ lập trình được lựa chọn hàng đầu cho công việc.
Vì vậy, không có lý do gì để học Cấu trúc dữ liệu và giải thuật bằng C/C++ rồi bỏ đó. Sau này đến lúc cần lại phải “dịch” sang C#. Tập bài giảng này sẽ hướng dẫn các bạn học Cấu trúc dữ liệu và giải thuật trực tiếp với ngôn ngữ C# và .NET Framework. Không cần “dịch” từ C/C++ sang C# nữa!
Hướng tiếp cận của bài giảng
Tập bài giảng này sử dụng hướng tiếp cận thực tế so với các bài giảng hay tài liệu về Cấu trúc dữ liệu và thuật toán khác.
Thứ nhất, sử dụng trước khi học và tự thực thi các cấu trúc dữ liệu. Do thư viện .NET Framework cung cấp sẵn hầu như tất cả các cấu trúc dữ liệu quan trọng như Array, ArrayList, Stack, Queue, HashTable, Dictionary, v.v., chúng ta có thể sử dụng chúng trước khi học cách thực thi. Điều này ngược lại so với học Cấu trúc dữ liệu trên C/C++, khi chúng ta phải hiểu và thực thi trước khi có các cấu trúc dữ liệu tương ứng để sử dụng. Việc sử dụng trước khi học sẽ giúp tiếp cận cấu trúc dữ liệu trực quan và hiệu quả hơn.
Thứ hai, cuốn tài liệu này được xây dựng theo hướng tóm tắt những thuật toán và cấu trúc dữ liệu quan trọng mà lập trình viên cần biết trong thực tế. Do đó các vấn đề lý thuyết quá hàn lâm sẽ không được đề cập tới. Sẽ không có công thức toán hay Big O nổi tiếng trong tập bài giảng này.
Thứ ba, chúng tôi đưa ra những ví dụ minh họa, hoặc code chương trình thay vì cố gắng giải thích vấn đề. Nếu bạn có một nền tảng lập trình cơ bản, việc đọc code đôi khi sẽ dễ hiểu hơn. Ví dụ, khi học về danh sách liên kết, chúng tôi cố gắng để bạn tiếp cận thông qua viết code, thay vì cố gắng giải thích các vấn đề bằng lời.
Yêu cầu cho khóa học
Để theo được khóa học này bạn cần nắm vững lập trình hướng đối tượng với C#. Nếu chưa từng biếts C#, mời bạn tham khảo khóa học C# cơ bản trên website. Đây là yêu cầu duy nhất của khóa học này.
Tất cả các ví dụ trong khóa học được xây dựng và chạy thử trên Visual Studio 2017 và 2019 (bản Community). Vì vậy, khuyến khích các bạn cài đặt các phiên bản tương ứng. Các ví dụ minh họa đều viết ở dạng Console App (.NET Framework). Do đó, khi cài đặt Visual Studio bạn chỉ cần chọn gói .NET Desktop Development là đủ.
Để dễ dàng hơn khi làm việc với giao diện console, bạn có thể tham khảo bộ thư viện hỗ trợ ứng dụng console chúng tôi đã hướng dẫn cách xây dựng qua loạt bài tương ứng. Bạn có thể tải code về và tìm hiểu sơ qua cách sử dụng.
Tập bài giảng này đang trong quá trình xây dựng. Chúng tôi sẽ cố gắng đưa các bài học mới lên hàng ngày (hoặc cách ngày). Bạn hãy truy cập site thường xuyên để update bài học mới nhé. Cảm ơn sự ủng hộ của bạn.
Series này đầy đủ chưa nhỉ ?
lll