Dùng AI

CS50's Introduction to AI with Python (Harvard): học gì, học thế nào

CS50's Introduction to Artificial Intelligence with Python là khóa nhập môn AI của Harvard do Brian Yu và David J. Malan dạy: 7 tuần gồm tìm kiếm, tri thức, bất định, tối ưu, học máy, mạng nơ-ron và ngôn ngữ, mỗi tuần có project Python. Học miễn phí qua OpenCourseWare, cần biết Python khoảng một năm, và không được dùng AI ngoài công cụ của khóa để làm hộ bài.

Ý chính
  • 7 tuần bài giảng: tìm kiếm, tri thức (logic), bất định (xác suất), tối ưu, học máy, mạng nơ-ron, ngôn ngữ. Tổng cộng 12 project Python chia vào 7 đợt.
  • Điều kiện theo trang khóa học: đã học CS50x hoặc có ít nhất một năm kinh nghiệm Python. Trang của Harvard xếp mức trung bình, 10 đến 30 giờ mỗi tuần.
  • Học miễn phí qua OpenCourseWare. Nộp project cần tài khoản edX; đạt từ 70% mỗi project thì được chứng chỉ CS50 miễn phí. Chứng chỉ xác minh của edX trả phí.
  • Quy định của khóa: dùng trợ lý AI của chính CS50 (CS50 Duck) là hợp lệ; dùng ChatGPT, Claude, Copilot, Gemini để gợi ý hay hoàn thành lời giải là không hợp lệ.

Thông tin trong bài lấy từ trang khóa học cs50.harvard.edu/ai và trang Harvard Professional & Lifelong Learning, đọc ngày 11/11/2026. Bài này giới thiệu khóa học của Harvard và cách tự học nó; nó không phải lời giải các project.

CS50 AI là khóa gì

Trang khóa học mô tả CS50 AI khám phá các khái niệm và thuật toán làm nền cho AI hiện đại, những ý tưởng đứng sau máy chơi cờ, nhận dạng chữ viết tay, dịch máy. Qua các project thực hành, người học gặp lý thuyết về tìm kiếm trên đồ thị, phân loại, tối ưu, học máy, mô hình ngôn ngữ lớn, và đưa chúng vào chương trình Python của mình. Giảng viên là Brian Yu và David J. Malan.

Điểm khác biệt so với các khóa học máy như của Andrew Ng: CS50 AI rộng hơn. Nó không bắt đầu từ hồi quy tuyến tính mà từ tìm kiếm và logic, đi qua xác suất và tối ưu, rồi mới tới học máy và mạng nơ-ron. Bạn sẽ thấy AI là một ngành gồm nhiều kỹ thuật, không chỉ là mạng nơ-ron.

Nội dung 7 tuần

Theo trang từng tuần của khóa học:

Tuần Chủ đề Nội dung chính
0 Search Bài toán tìm kiếm, DFS, BFS, tìm kiếm tham lam, A*, minimax, cắt tỉa alpha-beta
1 Knowledge Logic mệnh đề, suy diễn, kiểm tra mô hình, phép giải, logic bậc nhất
2 Uncertainty Xác suất, xác suất có điều kiện, quy tắc Bayes, mạng Bayes, lấy mẫu, mô hình Markov, Markov ẩn
3 Optimization Tìm kiếm cục bộ, leo đồi, mô phỏng luyện kim, quy hoạch tuyến tính, bài toán thỏa ràng buộc, quay lui
4 Learning Học có giám sát, láng giềng gần nhất, perceptron, SVM, hồi quy, hàm mất mát, quá khớp, chính quy hóa, học tăng cường, Q-learning, k-means
5 Neural Networks Mạng nơ-ron, hàm kích hoạt, hạ gradient, lan truyền ngược, TensorFlow, tích chập, mạng tích chập, mạng hồi quy
6 Language Cú pháp, ngữ nghĩa, văn phạm phi ngữ cảnh, nltk, n-gram, túi từ, Naive Bayes, biểu diễn từ, word2vec, attention, transformer

Mỗi tuần có video bài giảng, ghi chú, slide, mã nguồn ví dụ, bài trắc nghiệm và project.

12 project

Trang Projects chia thành 7 đợt, mỗi đợt một hoặc hai project:

  • Đợt 0: Degrees, Tic-Tac-Toe
  • Đợt 1: Knights, Minesweeper
  • Đợt 2: PageRank, Heredity
  • Đợt 3: Crossword
  • Đợt 4: Shopping, Nim
  • Đợt 5: Traffic
  • Đợt 6: Parser, Attention

Tên project gợi ý đúng chủ đề tuần đó: tìm đường giữa hai diễn viên, chơi cờ caro bằng minimax, suy luận logic, xếp hạng trang web, điền ô chữ bằng thỏa ràng buộc, nhận dạng biển báo giao thông bằng mạng tích chập, phân tích câu. Một lưu ý kỹ thuật từ trang project Traffic: phiên bản Python mới nhất nên dùng cho khóa là Python 3.12, nhất là với project này vì TensorFlow.

Thử ý tưởng tuần 0 bằng code của bạn

Cách học tốt nhất là tự viết lại ý tưởng bài giảng trên một ví dụ của mình trước khi làm project. Đoạn Python dưới đây cài bốn cách tìm đường trong cùng một mê cung nhỏ: DFS dùng ngăn xếp, BFS dùng hàng đợi, tìm kiếm tham lam ưu tiên ô gần đích nhất theo khoảng cách Manhattan, và A* ưu tiên tổng "số bước đã đi + ước lượng còn lại". Đây là ví dụ tự viết, không phải lời giải project nào của khóa.

"""So sánh bốn cách tìm đường trong mê cung, đúng chủ đề tuần đầu của CS50 AI (Search):
tìm theo chiều sâu (DFS), theo chiều rộng (BFS), tham lam theo khoảng cách (greedy best-first) và A*.

Đây là ví dụ tự viết để minh họa ý tưởng bài giảng, không phải lời giải project của khóa học.
In ra: độ dài đường đi tìm được và số ô đã phải xét. Mê cung: # là tường, A là đầu, B là đích.
"""
import heapq
from collections import deque

ME_CUNG = """\
#########
#A    # #
# ### # #
# #   # #
# # ### #
#   #   #
### # # #
#     #B#
#########"""


def doc(van_ban):
    luoi = van_ban.splitlines()
    for r, dong in enumerate(luoi):
        for c, o in enumerate(dong):
            if o == "A":
                dau = (r, c)
            elif o == "B":
                dich = (r, c)
    return luoi, dau, dich


def ke(luoi, o):
    r, c = o
    for dr, dc in ((-1, 0), (1, 0), (0, -1), (0, 1)):
        nr, nc = r + dr, c + dc
        if luoi[nr][nc] != "#":
            yield (nr, nc)


def manhattan(a, b):
    return abs(a[0] - b[0]) + abs(a[1] - b[1])


def tim(luoi, dau, dich, cach):
    """Trả về (độ dài đường đi, số ô đã xét). Mỗi phần tử biên: (ưu tiên, thứ tự, ô, số bước)."""
    thu_tu = 0
    bien = [(0, thu_tu, dau, 0)]
    if cach in ("DFS", "BFS"):
        bien = deque(bien)
    da_xet = set()
    while bien:
        if cach == "DFS":
            _, _, o, buoc = bien.pop()          # ngăn xếp: vào sau ra trước
        elif cach == "BFS":
            _, _, o, buoc = bien.popleft()      # hàng đợi: vào trước ra trước
        else:
            _, _, o, buoc = heapq.heappop(bien)  # hàng đợi ưu tiên
        if o in da_xet:
            continue
        da_xet.add(o)
        if o == dich:
            return buoc, len(da_xet)
        for k in ke(luoi, o):
            if k in da_xet:
                continue
            thu_tu += 1
            if cach in ("DFS", "BFS"):
                bien.append((0, thu_tu, k, buoc + 1))
            else:
                h = manhattan(k, dich)
                uu_tien = h if cach == "Greedy" else buoc + 1 + h   # A*: g(n) + h(n)
                heapq.heappush(bien, (uu_tien, thu_tu, k, buoc + 1))
    return None, len(da_xet)


def chay_thu():
    luoi, dau, dich = doc(ME_CUNG)
    dong = []
    for cach in ("DFS", "BFS", "Greedy", "A*"):
        dai, so_o = tim(luoi, dau, dich, cach)
        dong.append(f"{cach:<7} đường đi {dai} bước, xét {so_o} ô")
    print("\n".join(dong))
    return dong


if __name__ == "__main__":
    chay_thu()

Kết quả trên mê cung mẫu: DFS tìm được đường 20 bước sau khi xét 26 ô, không phải đường ngắn nhất; BFS tìm đường ngắn nhất 16 bước nhưng phải xét 30 ô; tìm kiếm tham lam cũng ra 16 bước và chỉ xét 17 ô, nhưng đó là may mắn của mê cung này, nó không bảo đảm đường ngắn nhất; A* ra 16 bước, xét 28 ô, và luôn bảo đảm đường ngắn nhất khi hàm ước lượng không đánh giá quá khoảng cách thật. Thử sửa mê cung để thấy tham lam đi đường vòng.

Tuần 0 CS50 AI: tìm đường Cùng một mê cung, bốn cách tìm DFS20 bướcxét 26 ô, không ngắn nhất BFS16 bướcxét 30 ô, ngắn nhất Greedy16 bướcxét 17 ô, lần này may A*16 bướcxét 28 ô, chắc ngắn nhất A* = số bước đã đi + ước lượng còn lại
Tuần 0 CS50 AI: tìm đường DFS20 bướcxét 26 ô, không ngắn nhất BFS16 bướcxét 30 ô, ngắn nhất Greedy16 bướcxét 17 ô, lần này may A*16 bướcxét 28 ô, chắc ngắn nhất A* = số bước đã đi + ước lượng còn lại
Hình 1. Cùng một mê cung, bốn cách tìm đường: DFS đi 20 bước và xét 26 ô, không ngắn nhất; BFS đi 16 bước, xét 30 ô, ngắn nhất; Greedy đi 16 bước, xét 17 ô, lần này may mắn; A* đi 16 bước, xét 28 ô, chắc chắn ngắn nhất. A* xếp ưu tiên theo số bước đã đi cộng ước lượng còn lại.

Học thế nào

Trang khóa học hướng dẫn quy trình mỗi tuần rất gọn: xem bài giảng rồi nộp project. Theo trang Harvard Professional & Lifelong Learning, khóa tự học theo nhịp riêng, dài 7 tuần, cần 10 đến 30 giờ mỗi tuần, mở bất cứ lúc nào.

Gợi ý cho người học ở Việt Nam:

  1. Kiểm điều kiện trước. Nếu chưa vững Python (hàm, lớp, đệ quy, đọc tệp), học Python trước; xem bài Python cho AI.
  2. Xem bài giảng có phụ đề. Trang mỗi tuần có phụ đề và bản ghi lời giảng (transcript), tiện cho người chưa nghe tốt tiếng Anh.
  3. Đọc ghi chú (notes) sau mỗi bài giảng. Ghi chú tóm tắt và có code ví dụ; gõ lại code ví dụ trước khi làm project.
  4. Làm project ngay trong tuần. Đừng xem hết 7 tuần rồi mới làm; project là phần học thật.
  5. Hỏi trong cộng đồng của khóa như Ed Discussion, Discord, khi bế tắc.

Muốn bổ sung phần học máy sâu hơn, sau CS50 AI có thể học tiếp các khóa của Andrew Ng.

Chứng chỉ và chi phí

  • Học miễn phí: trang khóa học ghi người không phải sinh viên Harvard vẫn được "học" miễn phí qua OpenCourseWare. Nộp project để được chấm cần tạo tài khoản edX.
  • Chứng chỉ CS50 miễn phí: theo trang CS50 Certificate, nộp và đạt ít nhất 70% ở mỗi project thì đủ điều kiện nhận chứng chỉ CS50 miễn phí.
  • Chứng chỉ xác minh của edX: trả phí, đăng ký ở cs50.edx.org/ai. Trang Harvard Professional & Lifelong Learning ghi giá 299 USD (đọc ngày 11/11/2026). Ngoài ra có chứng chỉ chuyên nghiệp qua edX và chương trình tín chỉ qua Harvard Extension School hoặc Harvard Summer School.

Với người học để biết, chứng chỉ miễn phí là đủ. Chứng chỉ xác minh chỉ cần khi bạn có lý do cụ thể.

Dùng AI khi học CS50 AI

Trang Academic Honesty của khóa nêu tinh thần "be reasonable" (hãy hợp lý) và liệt kê rõ:

  • Hợp lý: dùng phần mềm AI của chính CS50, gồm CS50 Duck (ddb) trên cs50.ai và cs50.dev; hỏi người khác giúp miễn là họ không làm thay bạn; vẽ ý tưởng lời giải bằng sơ đồ hay mã giả nhưng không phải code thật.
  • Không hợp lý: dùng phần mềm AI khác ngoài của CS50 (trang nêu ví dụ ChatGPT, Claude, Copilot, Gemini) để gợi ý hoặc hoàn thành câu trả lời hay dòng code; xem lời giải của người khác rồi dựa vào đó.

Đây là điều cần tôn trọng nếu bạn nộp bài để lấy chứng chỉ. Và kể cả khi tự học không nộp bài, để AI làm hộ project là bỏ mất đúng phần đáng học nhất của khóa.

Cẩn thận
  • Bắt đầu CS50 AI khi chưa vững Python, rồi kẹt ngay project đầu.
  • Xem hết video mà không làm project.
  • Dùng ChatGPT, Claude hay Copilot làm hộ project rồi nộp, trái quy định của khóa.
  • Chép lời giải trên GitHub của người khác; vừa vi phạm quy định vừa không học được gì.
  • Dùng Python mới hơn 3.12 cho project dùng TensorFlow dù trang project đã lưu ý.

Câu hỏi thường gặp

CS50 AI có miễn phí không?

Có. Học và nộp project qua OpenCourseWare miễn phí, và chứng chỉ CS50 cũng miễn phí nếu đạt từ 70% mỗi project. Chỉ chứng chỉ xác minh của edX là trả phí.

Cần học CS50x trước không?

Không bắt buộc. Trang khóa học yêu cầu CS50x hoặc ít nhất một năm kinh nghiệm Python.

Học xong CS50 AI đã làm được AI chưa?

Bạn sẽ hiểu nền tảng rộng và đã tự viết 12 chương trình AI nhỏ. Để làm dự án học máy, học sâu thực tế, cần học tiếp các khóa chuyên sâu hơn và làm dự án riêng.

Khóa có còn cập nhật không?

Tuần 6 về ngôn ngữ đã có attention và transformer, và mô tả khóa nhắc tới mô hình ngôn ngữ lớn. Trước khi bắt đầu, xem trang khóa học để biết phiên bản hiện tại.

Học tiếp

Nếu bạn muốn học Python và AI bài bản cùng giảng viên, tham khảo khóa học AI của Big-O Coding.

Muốn học bài bản cùng giảng viên?

Khóa AI – Introduction to Machine Learning: nền tảng Máy học từ thuật toán cơ bản đến Neural Networks và LLM, học bằng Python. Học thử buổi 1 miễn phí.

Xem Khóa AI

Nguồn tham khảo

Chia sẻ: Facebook LinkedIn
Nhắn Zalo tư vấnZalo Gọi 0937 401 483