Khóa học Lập trình C++ Nâng cao là khóa học cung cấp trọn vẹn kiến thức của ngôn ngữ lập trình C++. Mục tiêu là xây dựng tư duy logic, kỹ năng giải quyết bài toán, nền tảng thuật toán và cấu trúc dữ liệu cho học viên bằng cách sử dụng ngôn ngữ lập trình C++. Khóa học sẽ có số lượng bài tập lớn hơn và mức độ khó hơn so với khóa cơ bản tới nâng cao.
Khóa học phù hợp với người mới chưa từng học lập trình, người mất gốc, tư duy logic còn yếu và những bạn đã từng học qua lập trình C/C++ muốn nâng cao hơn nữa kỹ năng lập trình của mình.
Tổng quan khóa học
Khóa học gồm 42 buổi (84 giờ học) kéo dài trong 3 tháng, mỗi tuần học viên sẽ có 4 buổi học.
Khóa học dành cho các bạn sinh viên CNTT muốn học C++ nâng cao và các bạn học sinh muốn bắt đầu học lập trình để tham gia các kì thi học sinh giỏi tin học. Khóa học C++ nâng cao này phù hợp với những bạn muốn học nhanh hơn, muốn thực hành với nhiều bài tập và mức độ khó cao hơn.
Bài tập trong khóa học gồm 600-650 bài tập được chuẩn bị kỹ lưỡng trên hệ thống chấm bài là một trong những yếu tố nâng cao chất lượng giảng dạy. Toàn bộ bài tập trong contest sẽ được giáo viên giải chi tiết. Ngoài ra để đánh giá kiến thức của học viên, mỗi tuần sẽ đều diễn ra contest như một bài kiểm tra trong vòng 1h30 phút có xếp rank và rating.
Thời lượng : 42 buổi học (84 giờ học)
Thời gian học : 3 tháng
Hình thức học: Video qua Google Drive
Số buổi trên tuần : 4 buổi (2h/buổi)
Contest hàng tuần : 12
Số lượng bài tập : 600-650 bài tập
Lộ trình khóa học
Bài 1 : Nhập xuất, Kiểu Dữ Liệu, Toán tử, Làm quen với OJ
- Hướng dẫn sử dụng IDE
- Kiểu dữ liệu và Biến trong C++
- Toán tử trong C++
- Các hàm toán học phổ biến
- Hướng dẫn làm contest và các lỗi phổ biến khi làm bài trên Hackerrank
- Giao bài tập Làm quen với Hackerrank (20 bài tập)
Bài 2 : Hướng dẫn bài tập kiểu dữ liệu, biến, toán tử
Hướng dẫn bài tập kiểu dữ liệu, biến, toán tử
Bài 3 : Cấu trúc rẽ nhánh if else và switch-case
- Cấu trúc rẽ nhánh : If else, switch - case
- Bảng mã ASCII
- Giao bài tập Kiểu dữ liệu, toán tử, rẽ nhánh (45 bài tập)
Bài 4 : Hướng dẫn bài tập cấu trúc rẽ nhánh
Hướng dẫn bài tập cấu trúc rẽ nhánh
Bài 5 : Vòng lặp for, while, do-while
- Vòng lặp For
- Các vòng lặp for thường gặp
- Câu lệnh break & continue
- Vòng lặp While, Do-While
- Dạng bài tập tách chữ số bằng vòng lặp while
- Cách tạo vòng lặp vĩnh viễn
- Giao bài tập Vòng lặp : Vòng lặp (40 bài tập)
Bài 6 : Hướng dẫn bài tập Vòng lặp
- Hướng dẫn bài tập Vòng lặp
Bài 7 : Vòng lặp lồng nhau & dạng bài tập vẽ hình bằng vòng lặp
- Vòng for lồng nhau
- Vẽ hình bằng vòng lặp lồng nhau
- Phạm vi của biến - Scope rule
- Define, Typedef, Using trong C++
-Các hệ đếm nhị phân, bát phân, thập lục phân
Bài 8 : Hàm trong C++
- Hàm và lời gọi hàm trong C++
- Tham số và đối số
- Kiểu trả về của hàm và câu lệnh return
- Hàm void là gì ?
- Lý thuyết số : Số nguyên tố, Số chính phương,Số thuận nghịch, Phân tích thừa số nguyên tố, Số hoàn hảo, Tính tổng ước, Đếm ước của số nguyên, Lý thuyết đồng dư, Ước chung lớn nhất, bội chung nhỏ nhất…
- Giao bài tập Hàm, Lý thuyết số (50 bài tập)
Bài 9 : Hướng dẫn bài tập Hàm, Lý thuyết số
- Hướng dẫn bài tập Hàm, Lý thuyết số
Bài 10 : Lý thuyết số, tổ hợp nâng cao
Lý thuyết số và tổ hợp nâng cao :
- Số Fibonacci, Ước chung lớn nhất, Bội chung nhỏ nhất, Tổ hợp, Lý thuyết đồng dư,
- Nghịch đảo Modulo, Định lý nhỏ Fermat, Định lý Euler, Công thức Legendre,
- Lũy thừa nhị phân, Chỉnh hợp lặp…
Bài 11 : Hướng dẫn bài tập Hàm, Lý thuyết số P2
- Hướng dẫn bài tập Hàm, Lý thuyết số P2
Bài 12 : Mảng 1 Chiều & Range-based for loop (C++11)
- Mảng 1 Chiều
- Cách duyệt mảng bằng chỉ số
- Vòng lặp Range-based for loop
- 15 dạng bài tập phổ biến trên mảng 1 chiều
- Giao bài tập Mảng 1 chiều cơ bản (50 bài tập)
Bài 13 : Hướng dẫn bài tập mảng 1 chiều cơ bản
- Hướng dẫn bài tập mảng 1 chiều cơ bản
Bài 14 : Vector, Iterator, Pair, Auto & Kỹ thuật đệ quy
- Vector và Iterator
- Kiểu dữ liệu Pair và Auto trong C++
- Bộ nhớ ngăn xếp
- Stack frame
- Kỹ thuật đệ quy và các bài toán đệ quy thường gặp
- Giao bài tập Vector, Pair (10 bài tập)
- Giao bài tập Đệ quy (20 bài tập)
Bài 15 : Hướng dẫn bài tập Vector, Đệ quy
- Hướng dẫn bài tập Vector, Đệ quy
Bài 16 : Sàng nguyên tố & Quy hoạch động cơ bản
- Sàng số nguyên tố
- Quy hoạch động cơ bản
- Giao bài tập Quy hoạch động cơ bản (20 bài tập)
Bài 17 : Hướng dẫn bài tập Quy hoạch động cơ bản
- Hướng dẫn bài tập Quy hoạch động cơ bản
Bài 18 : Set & Map
- Set, Multiset, Unordered_set
- Map, Multimap, Unordered_map
- Các dạng bài tập với set & map
- Giao bài tập Set & Map (25 bài tập)
Bài 19 : Hướng dẫn giải bài tập Set & map
- Hướng dẫn giải bài tập Set & map
Bài 20 : Hàm sort, binary_search, lower_bound, upper_bound
- Hàm sort & stable_sort
- Xây dựng comparison function cho hàm sort
- Sắp xếp với nhiều tiêu chí
- Tìm kiếm nhị phân binary_search
- Các biến thể quan trọng của tìm kiếm nhị phân
- Lower_bound & upper_bound
- Giao bài tập Hàm sort, comparison function, lower_bound, upper_bound (20 bài tập)
- Giao bài tập Sắp xếp & Tìm kiếm (50 bài tập)
Bài 21 : Hướng dẫn bài tập Sắp xếp và Tìm kiếm P1
- Hướng dẫn bài tập Sắp xếp và Tìm kiếm P1
Bài 22 : Hướng dẫn bài tập Sắp xếp và Tìm kiếm P1
- Hướng dẫn bài tập Sắp xếp và Tìm kiếm P1
- Giao bài tập Mảng 1 chiều nâng cao (50 bài tập)
Bài 23 : Hướng dẫn bài tập Sắp xếp và Tìm kiếm P2
- Hướng dẫn bài tập Sắp xếp và Tìm kiếm P2
Bài 24 : Cấu trúc dữ liệu ngăn xếp, hàng đợi
- Ngăn xếp và các bài toán thường gặp
- Hàng đợi và các bài toán thường gặp
- Hàng đợi ưu tiên và các bài toán thường gặp
- Giao bài tập Ngăn xếp, hàng đợi (15 bài tập)
Bài 25 : Hướng dẫn bài tập Ngăn xếp, hàng đợi
- Hướng dẫn bài tập Ngăn xếp, hàng đợi
Bài 26 : Kỹ thuật Hai con trỏ, Cửa sổ trượt
- Kỹ thuật Cửa sổ trượt
- Kỹ thuật Hai con trỏ
- Giao bài tập Hai con trỏ, cửa sổ trượt (15 bài tập)
Bài 27 : Hướng dẫn giải bài tập Hai con trỏ, cửa sổ trượt
- Hướng dẫn giải bài tập Hai con trỏ, cửa sổ trượt
Bài 28 : Mảng 2 chiều & Ma trận
- Mảng 2 chiều & các dạng bài toán
- Ma trận và các phép toán trên ma trận
- Kỹ thuật loang các ô liên kề trên mảng 2 chiều
- Giao bài tập Mảng 2 chiều & Ma trận (40 bài tập)
Bài 29 : Hướng dẫn bài tập mảng 2 chiều phần 1 & ma trận xoắn ốc
- Ma trận xoắn ốc
- Bài toán maximum path sum & Count Island
- Hướng dẫn bài tập mảng 2 chiều phần 1
Bài 30 : Chuỗi ký tự (String) trong C++
- String trong C++
- Duyệt String
- Mảng, vector, set, map với kiểu string
- Bài toán liên quan tới tần suất của từ và tần suất ký tự
- Giao bài tập Chuỗi ký tự cơ bản (50 bài tập)
Bài 31 : Hướng dẫn bài tập Chuỗi ký tự cơ bản & Stringstream
- Stringstream trong C++
- Các bài toán liên quan tới từ : chuẩn hóa tên, cấp email, tách từ...
- Giao bài tập Chuỗi ký tự nâng cao (60 bài tập)
- Hướng dẫn bài tập Chuỗi ký tự cơ bản
Bài 32 : Hướng dẫn giải bài tập Chuỗi ký tự nâng cao
- Hướng dẫn giải bài tập Chuỗi ký tự nâng cao P1
Bài 34 : Lý thuyết con trỏ & Struct
- Con trỏ, địa chỉ, tham chiếu, giải tham chiếu
- Con trỏ & hàm
- Con trỏ cấp 2, 3...
- Kiểu struct trong C++
- Sắp xếp danh sách sinh viên sử dụng struct
- Giao bài tập Struct ( 20 bài tập)
Bài 35 : Hướng dẫn bài tập Struct
- Hướng dẫn bài tập Struct
Bài 36 : Danh sách liên kết
- Danh sách liên kết đơn
- Danh sách liên kết đôi
- Giao bài tập Danh sách liên kết (10 bài tập)
Bài 37 : Hướng dẫn bài tập Danh sách liên kết
- Hướng dẫn bài tập Danh sách liên kết
Bài 38 : Lập trình hướng đối tượng
- Lập trình hướng đối tượng
- Các khái niệm cơ bản trong lập trình hướng đối tượng
- Nạp chồng toán tử, hàm bạn, lớp bạn, static keyword
- Thiết kế lớp và các bài toán áp dụng
- Giao bài tập OOP Phần (30 bài tập)
Bài 39 : Hướng dẫn bài tập OOP
- Hướng dẫn bài tập OOP
Bài 40 : Kế thừa & Đa hình
- Kế thừa
- Đa hình
- Hàm ảo
- Giao bài tập Kế thừa & Đa hình (20 bài tập)
Bài 41 : Hướng dẫn bài tập Kế thừa, Đa hình
- Hướng dẫn bài tập Kế thừa, Đa hình
Bài 42 : Đọc ghi file trong C++ & Toán tử bit
- Xử lý File
- Toán tử bit
- Giao bài tập và hướng dẫn bài tập xử lý file
Mục tiêu khóa học
Thành thạo ngôn ngữ lập trình C++
Khóa học sẽ giúp bạn nắm vững các kiến thức của lập trình nói chung thông qua ngôn ngữ C++. Các kiến thức nâng cao và nội dung bổ sung của các phiên bản C++ mới được cập nhật đầy đủ.
Lập trình hướng đối tượng & STL
Ngôn ngữ lập trình C++ cũng giúp bạn nắm được Lập trình hướng đối tượng - một kỹ năng không thể không có của lập trình viên. Ngoài ra điểm mạnh của C++ là thư viện STL với các thuật toán và cấu trúc dữ liệu giúp bạn code tối ưu hơn, phù hợp để học thuật toán và thi đấu lập trình.
Kỹ thuật lập trình & Coding skill
Giúp bạn có kỹ thuật lập trình vững chắc, khả năng cài đặt thuật toán nhanh chóng, code sạch đẹp và tối ưu hơn. Bạn không thể trở thành một lập trình viên nếu bạn không có kỹ thuật lập trình.
Phát triển tư duy logic & Thói quen học tập
Thông qua số lượng bài tập lớn, được chuẩn bị chi tiết và bám sát các kỹ năng cần thiết của một lập trình viên 28Tech sẽ giúp bạn có tư duy logic tốt hơn, nhanh nhạy, tối ưu. Ngoài ra việc học và làm bài tập hàng ngày giúp duy trì thói quen học tập cho bạn.
Kết quả khóa học
Kiến thức hoàn thiện
Có được kiến thức hoàn thiện về ngôn ngữ lập trình C++ và lập trình Hướng Đối Tượng, nền tảng cho bạn tiếp cận với các ngôn ngữ như Java, PHP, Python, Javascript... sau này trở nên dễ dàng hơn.
Tư duy của lập trình viên giỏi & Code tối ưu
Bài tập đa dạng, phong phú, bám sát kỹ năng cần có của lập trình viên hiện đại và hệ thống chấm bài tự động sẽ giúp bạn cực kỳ nhiều trong việc phát triển tư duy. Bạn bắt buộc phải học code một các chính xác và tối ưu.
Hỗ trợ việc học tập tại đại học & Phỏng vấn
Kiến thức và mức độ khó của bài tập trong khóa học phù hợp với mọi sinh viên các trường đại học sẽ hỗ trợ cho việc học lập trình và thuật toán của bạn dễ dàng và nhanh chóng hơn. Ngoài ra những kiến thức và kỹ năng trong khóa học cũng giúp bạn chuẩn bị tốt cho vòng phỏng vấn về tư duy lập trình, thuật toán.
Cấu trúc dữ liệu & Thuật toán
Những kiến thức trong khóa học C++ của 28Tech cũng đã cung cấp tương đối nhiều cấu trúc dữ liệu, thuật toán và kỹ năng giải bài quan trọng. Điều này giúp bạn học thuật toán sẽ dễ dàng hơn.
Kinh nghiệm giải bài với hệ thống chấm tự động
Có kinh nghiệm giải bài tập trên các nền tảng chấm bài online tự động như Codeforces, Hackerrank, SPOJ. Đây một bước chuẩn bị vững vàng với các bạn theo đuổi lập trình thi đấu hoặc đam mê với thuật toán. Các doanh nghiệp tuyển dụng cũng đang sử dụng hệ thống chấm tự động trong vòng phỏng vấn thuật toán.
Nền tảng & sự tự tin của lập trình viên
Để trở thành lập trình viên thì bạn cần phải học rất nhiều nhưng đầu tiên bạn cần biết code tốt đã, việc có nền tảng tốt sẽ giúp bạn tự tin và đi xa hơn trong tương lai. 28Tech luôn cố gắng giúp bạn lọt vào 30% lập trình viên có kỹ năng tốt nhất.