BIG-O BLUE: INTERMEDIATE ALGORITHMS

(PHÁT TRIỂN TƯ DUY THUẬT TOÁN)

Bạn muốn học Thuật Toán nhưng chưa có kiến thức gì về Thuật Toán? hoặc có một chút kiến thức Thuật Toán nhưng rất mơ hồ. Khi bạn tìm kiếm trên Google cụm từ “tự học Thuật Toán” bạn sẽ nhận được rất nhiều kết quả, rất nhiều tài liệu, rất nhiều ngôn ngữ lập trình khiến bạn bối rối không biết chọn cái nào để học theo? Bạn rất muốn dấn thân, thử thách bản thân trong một lĩnh vực Thuật Toán rất chông gai và vô cùng thú vị nhưng lại không biết bắt đầu như thế nào?

Khóa học Big-O Blue: Intermediate Algorithms sẽ phù hợp với bạn, giúp bạn lần đầu làm quen với các Thuật Toán. Bạn sẽ được hướng dẫn lập trình và giải các bài toán trên các hệ thống chấm bài trực tuyến (Codeforcces, Topcoder, SPOJ…). Khóa học có nhiều ví dụ thực tế, các bài tập được thiết kế từ dễ đến khó, minh họa trực quan và dễ hiểu. Ngôn ngữ lập trình minh họa khóa học C++, Python, Java.

Học phí khóa học: Ưu đãi đặc biệt 5 bạn đăng ký sớm giảm học phí 1.000.000 VNĐ. Chí tiết trong link đính kèm đăng ký bên dưới.

Chúng tôi có chương trình hổ trợ đóng học phí nhiều lần cho các bạn Học Sinh, Sinh Viên các bạn vui lòng liên hệ qua Email: admin@bigocoding.com để được hổ trợ.

Bạn có thể xem thời gian khai giảng, lịch học cụ thể và đăng ký tại đây

ĐỐI TƯỢNG HỌC PHÙ HỢP

  • Tiên quyết: Học viên yêu cầu đã biết lập trình căn bản: Nhập Môn Lập Trình, Kỹ Thuật Lập Trình.

  • Tùy chọn: Đã học Cấu Trúc Dữ Liệu & Lý Thuyết Đồ Thị nhưng vẫn còn mơ hồ về thuật toán. Hoặc chưa học qua 2 môn học này cũng có thể tham dự.

  • Nếu bạn chưa thuộc đối tượng học phù hợp của lớp học Big-O Blue này vui lòng gọi cho chúng tôi qua số điện thoại: 0937.401.483 để được tư vấn học các lớp sẽ mở tiếp theo trong thời gian tới.

BÀI TẬP MINH HỌA KHÓA HỌC

  • Bài tập 100% bằng Tiếng Anh (được hướng dẫn chi tiết lại bằng Tiếng Việt).
  • Trích từ những câu hỏi phỏng vấn tuyển dụng Intern hoặc Fulltime của: Google, Facebook, Amazon, Microsoft
  • Trích từ các chức năng thực tế của các dự án của các công ty.
  • Trích từ những kỳ thi nổi tiếng như ACM-ICPCOlympic Tin Học (dạng câu đơn giản).

THỜI GIAN VÀ ĐỊA ĐIỂM HỌC

  • Thời gian: 2.5 tháng (9 tuần)
  • Hình thức học: Offline và online.
  • Học offline tại: Tòa Nhà Jabes 1, Số 244 Cống Quỳnh, phường Phạm Ngũ Lão, Quận 1, Hồ Chí Minh.
  • Học online qua: Zoom.
  • Số lượng học viên mỗi lớp: Tối đa 25  đến 30 học viên.
  • Mỗi lớp có 1 Giảng Viên chính và 5 trợ giảng.
  • Đặc biệt có giờ Office Hours (giờ học phụ đạo) hàng tuần cho học viên ôn lại bài học nếu không theo kịp tiến độ bài học.

SỰ KHÁC BIỆT CỦA CÁC KHÓA HỌC TẠI BIG-O CODING

1. CHƯƠNG TRÌNH GIẢNG DẠY:

  • Được giảng dạy bởi chuyên gia về Thuật Toán với nhiều năm kinh nghiệm (xem thêm phần “đội ngũ giảng dạy“).
  • Làm việc trên các hệ thống chấm bài nổi tiếng trên thế giới Codeforces, Hackerrank, Hackerearth, SPOJ…
  • Được gặp gỡ và trao đổi với những bạn thành công đi trước chia sẻ kinh nghiệm học tập Thuật Toán và kinh nghiệm làm việc.
  • Mỗi lớp học ngoài Giảng Viên chính đều có 5 trợ giảng: Trợ giảng phụ trách tại lớp và trợ giảng phụ trách diễn đàn riêng của lớp đảm bảo mọi thắc mắc của học viên sẽ được trả lời nhanh chóng mọi lúc mọi nơi.

2. MỤC TIÊU ĐẠT ĐƯỢC SAU KHÓA HỌC:

  • Hệ thống toàn bộ kiến thức Thuật Toán nền tảng vững chắc.
  • Nếu bạn là Software Engineer bạn có thể tham dự các kỳ thi thuật toán của các công ty công nghệ Samsung Challenge, Facebook Hacker Cup (Round 1), Google Codejam (Round 1).
  • Nếu bạn là Học Sinh, Sinh viên bạn có thể tham dự các kỳ thi Olympic Tin, IOI (International Olympiad in Informatics), ACM-ICPC, Codeforces (Div 2).
  • Có thể ứng dụng 1 phần nào đó Thuật Toán vào dự án thực tế.
  • Chuẩn bị kiến thức để đạt mục tiêu xa hơn là Internship, fulltime các công ty công nghệ hàng đầu.

ĐỀ CƯƠNG CHI TIẾT

Tìm hiểu về mảng động và xâu: cách khai báo, thao tác xử lí, các lưu ý và cách áp dụng chúng trong việc giải các bài tập. Làm quen với các hệ thống làm bài và chấm bài trực tuyến thông, về tư duy giải quyết vấn đề (problem solving).

Các bài tập ứng dụng:

  • Cách tối ưu để sử dụng máy dập chữ.
  • Tìm xâu nằm ngay sau một xâu khác theo thứ tự từ điển.
  • Giới thiệu và hướng dẫn cách đánh giá, phân tích độ phức tạp không gian và thời gian của Thuật Toán. Tìm hiểu về kỹ thuật hai con trỏ.

    Các bài tập ứng dụng:

  • Đếm số lượng sách có thể đọc hết trong thời gian cho trước.
  • Tính lượng người tối đa có thể mặc vừa số áo cho trước.
  • Giới thiệu và hướng dẫn cách sử dụng thư viện chuẩn STL (Standard Template Library) để sắp xếp từ các loại dữ liệu cơ bản đến dữ liệu kiểu cấu trúc và cách ứng dụng sắp xếp vào việc giải các bài toán thực tế.

    Giải quyết các bài toán thực tế:

  • Sắp xếp lịch thi đấu Thế Vận Hội.
  • Dự đoán bảng xếp hạng cuộc thi lập trình.
  • Làm quen các cấu trúc dữ liệu cơ bản của thư viện chuẩn STL (Standard Template Library) gồm stackqueue.

    Giải quyết các bài toán thực tế:

  • Giải quyết bài toán xếp hàng siêu thị.
  • Tối ưu hóa việc đi lại của các Phà chở hàng.
  • Bắt đầu làm quen với các Thuật Toán liên quan đến đồ thị (Graph), cụ thể là Tìm kiếm theo chiều rộng (BFS). Đây là một kiến thức rất quan trọng, được ứng dụng nhiều trong AI và các lĩnh vực khác.

    Giải quyết 1 số bài toán thực tế:

  • Tìm đường thoát khỏi mê cung
  • Tìm đường đi ngắn nhất.
  • Tìm hiểu về một thuật toán tìm kiếm khác trên đồ thị: thuật toán tìm kiếm theo chiều sâu (DFS). Cài đặt DFS sử dụng stack và đệ quy, và ứng dụng của chúng.

    Giải quyết 1 số bài toán thực tế:

  • Tìm số lượng người ít nhất để truyền tin sao cho đạt hiệu quả cao nhất.
  • Tìm đường đi dài nhất đi xuyên thị trấn.
  • Xây dựng Cây nhị phân đầy đủ (complete binary tree) dùng để cài đặt Heap (minHeap & maxHeap) ứng dụng tạo ra hàng đợi ưu tiên priority queue, để giảm độ phức tạp của các Thuật Toán tìm đường đi.

    Các bài tập ứng dụng:

  • Xây dựng bảng xếp hạng độ Thịnh hành.
  • Tính số lượng tiền cần chi trong một chiến dịch khuyến mãi.
  • Làm quen với Thuật Toán tìm đường đi ngắn nhất trên đồ thị (Graph) Dijkstra cài đặt bằng priority queue.

    Giải quyết các bài toán về tìm đường đi:

  • Giải cứu chú chuột trong phòng thí nghiệm.
  • Giải đố trò chơi Commandos đặt mìn.
  • Gửi Email trong mạng máy tính theo thời gian thực.
  • Kỳ thi giữa kỳ của khóa học.

    Làm quen với một thuật toán tìm đường đi ngắn nhất khác trên đồ thị, đó chính là Bellman - Ford để xử lý thêm ở một số trường hợp đặc biệt.

    Giải quyết các bài toán về tìm đường đi:

  • Kiểm tra có chu trình âm trong đồ thị không.
  • Tìm đường đi ngắn nhất với đồ thị có trọng số âm.
  • Một thuật toán tìm đường đi ngắn nhất giữa mọi cặp đỉnh trên đồ thị, chính là thuật toán Floyd – Warshall. Được ứng dụng trong các lĩnh vực tài chính ngân hàng, dự đoán giá tài chính.

    Giải quyết bài toán tìm đường đi, bài toán kết bạn:

  • Xây dựng giải pháp để gặp Prof. Miguel.
  • Làm chức năng gợi ý kết bạn của Facebook.
  • Bắt đầu làm quen với các Cấu Trúc Dữ Liệu và Thuật Toán liên quan đến cây (Tree) như là tìm kiếm nhị phân trên một tập hợp được sắp xếp.

    Giải quyết các bài toán:

  • Tìm nghiệm thực của một hàm đơn điệu trên một đoạn.
  • Tìm kiếm giá trị trong một mảng được sắp xếp.
  • Làm quen với một cấu trúc dữ liệu (CTDL) cây rất mạnh, thường dùng giải quyết các bài toán tìm kiếm.

    Giải quyết các bài toán thực tế:

  • Tổ chức tiệc mừng cho công ty.
  • Bài toán chia kẹo cho trẻ em.
  • Làm quen với các cấu trúc dữ liệu nâng cao, cấu trúc dữ liệu Trie đặc biệt phù hợp ứng dụng gợi ý tìm kiếm.

    Giải quyết các bài toán:

  • Xây dựng cây từ điển DNA của con người.
  • Giải quyết bài toán dò tìm password.
  • Giới thiệu thuật toán tìm cây khung nhỏ nhất Prim. Ứng dụng trong việc xây dựng các đường mạng, đường đi lại các loại giao thông công cộng.

    Giải quyết các bài toán:

  • Xây dựng đường đi giữa các thành phố.
  • Xây dựng tuyến cáp Internet.
  • Học làm Tourist Guide.
  • Một cấu trúc nâng cao Disjoint Set Union ứng dụng trong Machine Learning và AI. Cũng được dùng trong thuật toán tìm cây khung nhỏ nhất Kruskal.

    Giải quyết các bài toán:

  • Tìm nhóm bạn có nhiều người trong nhóm nhất.
  • Tìm số thành phần liên thông mạnh trong đồ thị.