Cấu trúc dữ liệu và giải thuật
Môn học này cung cấp cho người học sự hiểu biết về cấu trúc dữ liệu và giải thuật (thuật toán) và cho phép họ để thiết kế cài đặt các cấu trúc dữ liệu giải thuật phù hợp với vấn đề cụ thể. Đây là môn học bắt buộc cho cử nhân tin học nói chung (các ngành kỹ nghệ phần mềm, khoa học máy tính,... ).
Sau khi hoàn thành môn học này người học sẽ:
- Hiểu cấu trúc dữ liệu và giải thuật.
- Có thể triển khai một số cấu trúc dữ liệu cơ bản như: Linked List, Stack và Queue, ...
- Có thể triển khai các thuật toán tìm kiếm và sắp xếp từ cơ bản đến nâng cao.
Nội dung môn học tập trung vào cấu trúc dữ liệu và giải thuật (thuật toán), là những kiến thức được sử dụng trong lĩnh vực tin học, kỹ nghệ phần mềm và khoa học máy tính.
Môn học giới thiệu các cấu trúc dữ liệu tuyến tính và phi tuyến, các thuật toán tìm kiếm và sắp xếp từ cơ bản đến nâng cao, cùng những nội dung về đệ quy, cây, đồ thị, Heap và hashing.
Thông qua các nội dung này, người học tìm hiểu cách thiết kế, cài đặt cấu trúc dữ liệu và giải thuật phù hợp với vấn đề cụ thể.
Mục tiêu khóa học là giúp người học hiểu cấu trúc dữ liệu và giải thuật, có thể triển khai một số cấu trúc dữ liệu tuyến tính và phi tuyến, đồng thời triển khai các thuật toán tìm kiếm và sắp xếp từ cơ bản đến nâng cao.
- Nắm được khái niệm cơ bản về cấu trúc dữ liệu và giải thuật.
- Nắm được các thuật toán sắp xếp và tìm kiếm cơ bản.
- Hiểu cách sử dụng Đệ quy (Recursion), sử dụng đệ quy để giải quyết một số bài toán.
- Hiểu và có thể ứng dụng cấu trúc dữ liệu Linked Lists.
- Hiểu và có thể ứng dụng cấu trúc dữ liệu Stack và Queue.
- Hiểu và sử dụng cấu trúc cây, đặc biệt là cây tìm kiếm nhị phân.
- Tìm hiểu một số khái niệm về đồ thị, các phương pháp duyệt đồ thị và bài toán tìm đường đi ngắn nhất và tô màu trên đồ thị.
- Tìm hiểu các phương pháp tìm kiếm và sắp xếp nâng cao, cấu trúc Heap và thuật toán Heap sort.
- Cử nhân tin học nói chung.
- Người học các ngành kỹ nghệ phần mềm.
- Người học ngành khoa học máy tính.
- Người học đã hoàn thành khóa học PRO192x - Lập trình hướng đối tượng (bằng Java).
- G1: Nắm được khái niệm cơ bản về cấu trúc dữ liệu và giải thuật.
- G2: Nắm được các thuật toán sắp xếp và tìm kiếm cơ bản.
- G3: Hiểu cách sử dụng Đệ quy (Recursion), sử dụng đệ quy để giải quyết một số bài toán.
- G4: Hiểu và có thể ứng dụng cấu trúc dữ liệu Linked Lists, Stack và Queue.
- G5: Hiểu và sử dụng cấu trúc cây, đặc biệt là cây tìm kiếm nhị phân.
- G6: Tìm hiểu một số khái niệm về đồ thị, các phương pháp duyệt đồ thị và bài toán tìm đường đi ngắn nhất và tô màu trên đồ thị.
- G7: Các phương pháp tìm kiếm và sắp xếp nâng cao, cấu trúc Heap và thuật toán Heap sort.
- G8: Hiểu hashing (hastable và hash function) và một số thuật toán để giải quyết vấn đề collisions trong hashtable.
Môn học có thời lượng 59 giờ học, tập trung vào việc tìm hiểu cấu trúc dữ liệu và giải thuật, bao gồm các kiến thức chung về giải thuật, cấu trúc dữ liệu tuyến tính, cấu trúc dữ liệu phi tuyến và các phương pháp tìm kiếm, sắp xếp nâng cao. Người học nghiên cứu các nội dung trong từng phần và tìm hiểu cách triển khai các cấu trúc dữ liệu, thuật toán phù hợp với từng vấn đề cụ thể.
Môn học cung cấp sự hiểu biết về cấu trúc dữ liệu và giải thuật, giúp người học thiết kế và cài đặt các cấu trúc dữ liệu, thuật toán phù hợp với vấn đề cụ thể. Đây là môn học bắt buộc cho cử nhân tin học nói chung, bao gồm các ngành kỹ nghệ phần mềm và khoa học máy tính.
Kiến thức về Linked List, Stack, Queue, cây, đồ thị, thuật toán tìm kiếm và sắp xếp từ cơ bản đến nâng cao giúp người học có nền tảng để tiếp cận các vấn đề trong lập trình và khoa học máy tính.
- Module 1: Giới thiệu về giải thuật. Giới thiệu về các kiến thức chung của cấu trúc dữ liệu và giải thuật.
- Module 2: Cấu trúc dữ liệu tuyến tính. Giới thiệu về một số loại cấu trúc dữ liệu tuyến tính (lưu trữ dữ liệu theo dạng các giá trị tuần tự). Các nội dung liên quan gồm Linked List, Stack và Queue.
- Module 3: Cấu trúc dữ liệu phi tuyến. Giới thiệu một số loại cấu trúc dữ liệu phức tạp không lưu trữ liệu theo dạng các giá trị tuần tự. Nội dung có các khái niệm về cây, cây tìm kiếm nhị phân và đồ thị, các phương pháp duyệt đồ thị, bài toán tìm đường đi ngắn nhất và tô màu trên đồ thị.
- Module 4: Các Phương pháp tìm kiếm và sắp xếp nâng cao. Giới thiệu một số thuật toán sắp xếp và thuật toán tìm kiếm nhanh và tối ưu (hơn so với việc sắp xếp và tìm kiếm tuần tự đơn giản). Nội dung còn bao gồm cấu trúc Heap, thuật toán Heap sort, hashing (hastable và hash function) và một số thuật toán để giải quyết vấn đề collisions trong hashtable.
Thiết kế chương trình

Ngô Tùng Sơn
- Tốt nghiệp Khoa học máy tính, Đại học Lorraine (Pháp).
- Từng làm việc tại phòng Thí nghiệm ở Đại học Lorrainevà Panasonic tại Việt Nam
- Hiện tại, anh Ngô Tùng Sơn là giảng viên chương trình Cử nhân quốc tế FPT-Greenwich của Đại học FPT.
- Đồng sáng lập kiêm Technical Manager của Công ty Cổ phần Công nghệ Thương mại Hưng Vượng (hvtec.vn).
- Facebook: https://www.facebook.com/NgoTungSon
Phan Thị Hà

- Trình độ chuyên môn: Tiến sĩ chuyên ngành Hệ thống thông tin, Học viện Công nghệ Bưu chính Viễn Thông; Thạc sĩ chuyên ngành Đảm bảo toán cho hệ thống tính toán, Đại học Quốc Gia.
- Nghề nghiệp: Giảng viên
- Nơi công tác: Khoa CNTT1, Học viện Công nghệ Bưu chính Viễn Thông
- Kinh nghiệm: Có 24 năm kinh nghiệm phát triển phần mềm và đào tạo.
- Facebook: https://www.facebook.com/phanthiha.ptit
Trong thời đại hiện nay, mỗi môn học đều có nhiều nguồn tài liệu liên quan kể cả sách in và online, FUNiX Way không quy định một nguồn học liệu cụ thể mà khuyến cáo để học viên chọn được nguồn phù hợp nhất cho mình. Trong quá trình học từ nhiều nguồn khác nhau theo lựa chọn cá nhân đó, khi sinh viên phát sinh câu hỏi thì sẽ được kết nối nhanh nhất với mentor để được giải đáp. Toàn bộ phần đánh giá bao gồm các câu hỏi trắc nghiệm, bài tập, dự án và thi vấn đáp do FUNiX thiết kế, xây dựng và thực hiện.
Các môn học của FUNiX không quy định bắt buộc tài liệu học tập, sinh viên có thể chủ động tìm và học từ bất kỳ nguồn nào phù hợp, kể cả sách in hay nguồn học liệu online (MOOC) hay các website. Việc sử dụng các nguồn đó do học viên chịu trách nhiệm và đảm bảo tuân thủ các chính sách của chủ sở hữu nguồn, trừ trường hợp họ có sự hợp tác chính thức với FUNiX. Nếu cần hỗ trợ, học viên có thể liên hệ phòng đào tạo FUNiX để được hướng dẫn.
Dưới đây là một số nguồn học liệu của môn học mà học viên có thể tham khảo sử dụng. Việc liệt kê nguồn dưới đây không nhất thiết hàm ý rằng FUNiX có sự hợp tác chính thức với chủ sở hữu của nguồn: distanceedjohn, IDeserve, mycodeschool, mycodeschool, Santitham Prom-on, BrandonioProductions, David Hays, Debarghya Mukherjee, edX Training, Michael Sambol, Phillip Cooke, Yusuf Shakeel, Udemy.
FUNiX sẵn sàng đón nhận và trao đổi về mọi ý kiến góp ý, phản hồi liên quan đến học liệu qua email program@funix.edu.vn