Review khoá học CS50: Introduction to Computer Science bởi Harvard

Tặng 45 phút tư vấn lộ trình ngành Tech cùng chuyên gia

Chỉ còn 7 suất cuối trong tháng này, hỗ trợ tư vấn ngoài giờ hành chính (Trị giá 500,000 VND)

Cám ơn bạn đã tin tưởng CoderSchool, các tư vấn viên sẽ liên lạc với bạn trong 24 giờ tới nên bạn nhớ chú ý điện thoại nhé.
Không thể gửi thông tin. Xin vui lòng kiểm tra và gửi lại.
coderschool-backgroud

Dưới đây là review của học viên khoá CS50 có tên là Phoebe Voong-Fadel chia sẻ trên trang FreeCodeCamp

Bạn muốn tham gia khoá học CS50 nhưng còn băn khoăn không biết liệu nó có phù hợp với mục tiêu của bạn hiện tại hay không?

Là một người không có bằng cấp về Khoa học máy tính và đang tìm cách học những kiến thức cơ bản trong lĩnh vực này, tôi cũng từng ở trong hoàn cảnh tương tự. Đó là lý do tại sao tôi quyết định đăng ký khóa học và ghi lại trải nghiệm của mình trong bài viết này.

Tôi sẽ cung cấp góc nhìn tổng quát về CS50, giúp bạn quyết định xem liệu đây có phải là khóa học phù hợp với bạn hay không.

CS50 là gì?

CS50 là một khóa học giới thiệu về Khoa học máy tính kéo dài 10 tuần, có thể học trực tuyến hoặc tại trường. Khóa học này được giảng dạy tại Đại học Harvard và Yale.

Người đứng đầu khóa học là Giáo sư David J. Malan. Ông được hỗ trợ bởi đội ngũ CS50, bao gồm các Trợ giảng cấp cao và một đội ngũ sản xuất hoàn chỉnh. Khóa học diễn ra từ ngày 1 tháng 1 đến ngày 31 tháng 12.

Tại sao chọn CS50?

Có nhiều lý do khiến CS50 có thể là lựa chọn tốt cho bạn. Dưới đây là một vài lý do:

  • Đây là một khóa học danh tiếng bởi Đại học Harvard. Điều này có nghĩa là bạn sẽ học từ những giảng viên có kinh nghiệm và được tiếp cận với một khóa học chất lượng cao.Khóa học bao gồm một loạt các chủ đề, từ các kiến thức cơ bản về Khoa học máy tính, thuật toán, cấu trúc dữ liệu và các ngôn ngữ lập trình như C, Python và SQL. Điều này có nghĩa là bạn sẽ có cái nhìn toàn diện về lĩnh vực này.
  • Bạn có thể học theo tốc độ của riêng mình, phù hợp với lịch trình cá nhân. Bạn có thể xem các bài giảng trên nhiều nền tảng. Đối với tôi, điều này rất quan trọng vì tôi không có nhiều thời gian rảnh.
  • Khóa học miễn phí! Bạn sẽ có quyền truy cập vào các bài giảng và tài liệu khóa học.

Hình thức học như thế nào?

Có 10 tuần học bao gồm bài giảng, bài thực hành và các bài tập cần phải hoàn thành. Cuối khoá học có dự án tốt nghiệp.

Đây có phải là khóa học cho người mới bắt đầu không?

Đúng vậy. Thực tế, khoảng hai phần ba sinh viên đăng ký CS50 chưa từng tham gia khóa học Khoa học máy tính nào trước đó. Vì vậy, nếu bạn mới bước vào lĩnh vực này và muốn học những kiến thức cơ bản, bạn sẽ có nhiều bạn đồng hành.

Tuy nhiên, đừng mong đợi khóa học dễ dàng. Mặc dù các bài giảng được thiết kế sao cho dễ hiểu và hấp dẫn, các bài tập và bài thực hành có thể khiến bạn thấy khó khăn. Trung bình, học viên nên dành khoảng thời gian dự kiến 12 giờ mỗi tuần cho khóa học.

Tôi có nhận được chứng chỉ sau khi hoàn thành khóa học không?

Bạn có thể chọn nhận chứng chỉ CS50 miễn phí hoặc trả tiền để nhận chứng chỉ xác nhận từ edX.

Nếu bạn không hoàn thành khóa học trước ngày 31 tháng 12 thì sao?

Bạn có thể chuyển tất cả các bài nộp sang năm tiếp theo. Tôi đã làm điều này và quá trình rất đơn giản. Nội dung khóa học hầu như không thay đổi, chỉ có một số cập nhật về tài liệu khóa học.

Điểm qua nội dung khoá CS50 theo từng tuần:

Tuần 0: Học Scratch

Trong tuần đầu tiên của khóa học, bạn sẽ được giới thiệu về thế giới Khoa học máy tính và cách mà con số, văn bản và hình ảnh được biểu diễn dưới dạng nhị phân.

Bạn cũng sẽ học về thuật toán (algorithms) và mã giả (pseudo code), và có một phần giới thiệu thực hành về Scratch, một ngôn ngữ lập trình với giao diện đồ hoạ thân thiện và dễ sử dụng.

Đối với bài tập đầu tiên, bạn sẽ tạo một dự án Scratch. Đây là một cách thú vị để bạn làm quen với khóa học và có một trải nghiệm lập trình đầu tiên.

Tuần 1: Ngôn ngữ C

Trong tuần thứ hai của khóa học, bạn sẽ đi sâu vào C, một ngôn ngữ lập trình cấp thấp.

Bạn sẽ học những kiến thức cơ bản về lập trình như hàm, điều kiện, biểu thức boolean, vòng lặp và biến.

Đối với bài tập, bạn sẽ tạo một chương trình xuất ra một kim tự tháp với các ký tự dấu thăng giống như cuối một màn chơi trong trò chơi Super Mario.

Tuần 2: Giới thiệu về Mảng (Array)

Bạn sẽ tiếp tục học về ngôn ngữ C và tìm hiểu các chủ đề như cách chương trình của bạn biên dịch, gỡ lỗi, mảng, ký tự, chuỗi và đối số dòng lệnh.

Đối với bài thực hành, bạn sẽ viết một chương trình mã hóa Caesar, và đối với bài tập, bạn sẽ làm một thử thách kiểu scrabble.

Tuần 3: Giới thiệu về Thuật toán (Algorithms)

Trong tuần thứ ba, bạn sẽ học về các loại tìm kiếm khác nhau (tuyến tính và nhị phân) và các loại sắp xếp khác nhau (selection và bubble), cũng như đệ quy.

Bạn cũng sẽ học về ký hiệu big O, có thể khá khó hiểu nhưng là một khái niệm quan trọng trong Khoa học máy tính. May mắn thay, khóa học cung cấp các video ngắn bổ sung về các khái niệm khó hơn, cung cấp một giải thích chi tiết hơn với các ví dụ.

Tuần 4: Bộ nhớ Máy tính (Computer Memory)

Tuần thứ tư tập trung vào bộ nhớ, bao gồm các chủ đề như con trỏ, địa chỉ, phân bổ bộ nhớ và giải phóng bộ nhớ, phát hiện rò rỉ bộ nhớ và giải thích cách một stack overflow xảy ra.

Bài thực hành và bài tập liên quan đến việc thao tác các tệp âm thanh và hình ảnh.

Tuần 5: Cấu trúc Dữ liệu

Trong tuần cuối cùng lập trình bằng C, bạn sẽ học cách con trỏ có thể được sử dụng để lưu trữ địa chỉ trong bộ nhớ cho danh sách liên kết.

Bài thực hành củng cố kiến thức về con trỏ của bạn, và bài tập yêu cầu tạo một chương trình kiểm tra chính tả. Đây là một bài tập đặc biệt khó khăn và bạn nên dành thời gian để hiểu các tệp khởi đầu được cung cấp trước khi bắt đầu.

Tuần 6: Học các kiến thức cơ bản về Python

Tuần thứ sáu đánh dấu sự chuyển đổi từ C sang Python, một ngôn ngữ lập trình phổ biến và dễ học hơn so với C. Bạn sẽ làm các bài tập yêu cầu dịch các chương trình đã viết bằng C sang Python.

Tuần 7: SQL và Cơ sở Dữ liệu Quan hệ

Trong tuần thứ bảy, bạn sẽ học về cơ sở dữ liệu quan hệ và SQL (Ngôn ngữ Truy vấn Có cấu trúc), sử dụng SQLite để thực hiện các truy vấn trên dòng lệnh và trong Python.

Bài tập là một thử thách thú vị, khi bạn phải giải quyết một sự việc bí ẩn để tìm ra ai đã đánh cắp con vịt CS50 thông qua một loạt các truy vấn SQL!

Tuần 8: HTML, CSS và JavaScript

Tuần thứ tám bao gồm các kiến thức cơ bản về internet và web, bao gồm HTML, CSS và JavaScript ở phía client.

Đối với bài tập, bạn sẽ tạo một trang chủ về bản thân.

Tuần 9: Flask

Trong tuần thứ chín, bạn sẽ học về Flask, một framework Python được sử dụng để xây dựng các ứng dụng web. Bạn sẽ học về các chủ đề như forms, layouts và templating sử dụng Jinja, các yêu cầu POST và GET, và cách gửi email từ một ứng dụng Flask. Bạn cũng sẽ đi qua quá trình xây dựng một ứng dụng full-stack.

Đối với bài tập, bạn sẽ thử thách kỹ năng của mình bằng cách triển khai một ứng dụng tài chính full-stack, kết hợp tất cả những gì bạn đã học trong khóa học. Đây là một dự án đầy thách thức nhưng bổ ích, mang lại cho bạn trải nghiệm thực tế về việc xây dựng một ứng dụng web thực tế.

Tuần 10: Bài giảng Tổng kết

Không có bài tập trong tuần này. Có một giảng viên khách mời và phần tổng kết từ Giáo sư Malan.

Dự án tốt nghiệp

Phần cuối cùng của khóa học là dự án tốt nghiệp. Yêu cầu là:

"Xây dựng một thứ gì đó bạn quan tâm, giải quyết một vấn đề thực tế, ảnh hưởng đến cộng đồng của bạn, hoặc thay đổi thế giới."Đề bài rất mở, để bạn có thể tự do chọn bất kỳ ngôn ngữ lập trình và dự án nào mà bạn thích. Bạn cũng sẽ phải ghi lại một video ba phút trình bày ứng dụng của mình.

Lợi ích của việc tham gia CS50 là gì?

  • Các bài giảng có chất lượng cao, về cả nội dung và sản xuất. Giáo sư Malan rất nhiệt tình và đam mê giảng dạy Khoa học máy tính và Lập trình. Các ví dụ trực quan trên sân khấu và trên các màn hình tương tác rất hữu ích để hiểu các khái niệm khó.
  • Các bài tập được cấu trúc tốt và cung cấp các video hướng dẫn chi tiết, các thông số kỹ thuật và code khởi đầu với các chú thích để giúp bạn hoàn thành các nhiệm vụ. Bạn cũng có thể kiểm tra code của mình để xem liệu nó có đáp ứng tất cả các yêu cầu trước khi nộp không.
  • Thiết lập môi trường phát triển tích hợp (IDE) của bạn rất dễ dàng, nhờ vào phiên bản sửa đổi của GitHub Codespaces, cho phép bạn lập trình trong trình duyệt.
  • Thư viện CS50 là một tài nguyên hữu ích với tài liệu tuyệt vời. Thư viện cung cấp các hàm như get_string, yêu cầu người dùng nhập một chuỗi trong giao diện dòng lệnh (CLI). Những hàm này hỗ trợ bạn rất nhiều trong những tuần đầu của khóa học, giúp bạn tập trung làm quen với ngôn ngữ lập trình.
  • Đối với một số bài tập, có hai lựa chọn: "cảm thấy ít thoải mái hơn" và "cảm thấy thoải mái hơn." Điều này cho phép bạn chọn mức độ khó phù hợp với mình.
  • Khóa học được thiết kế để xây dựng kiến thức từ các bài giảng và bài tập trước đó. Bạn sẽ bắt đầu với C, một ngôn ngữ cấp thấp, sau đó chuyển sang cách triển khai các thứ tương tự bằng Python và JavaScript vào cuối khóa học.
  • Có một cộng đồng CS50 trực tuyến lớn và hoạt động trên các nền tảng khác nhau như Facebook, Twitter, Discord và LinkedIn, nơi bạn có thể kết nối với các sinh viên khác và nhận được sự giúp đỡ với các bài tập và bài thực hành.
  • Khóa học miễn phí và có sẵn cho bất kỳ ai có máy tính và kết nối internet.

Nhược điểm của CS50 là gì?

Khóa học đầy thách thức, với rất nhiều những kiến thức mới khó khăn. Tôi đã phải đọc thêm về các chủ đề mà tôi không quen/thoải mái. Hầu hết mọi người không hoàn thành khóa học, nhưng ngay cả khi bạn không hoàn thành, bạn vẫn có thể hưởng lợi từ những gì bạn học được. Theo lời của Giáo sư Malan: "Điều cuối cùng quan trọng trong khóa học này không phải là ở đâu so với các bạn cùng lớp mà là bạn ở đâu so với chính mình khi bắt đầu."

Tóm tắt:

CS50 là một khóa học toàn diện và được đánh giá cao, cung cấp một nền tảng vững chắc trong Khoa học máy tính.

Là một lập trình viên Front end tự học không có bằng cấp về Khoa học máy tính, tôi thấy rằng khóa học là một cách tuyệt vời để lấp đầy các lỗ hổng kiến thức và củng cố hiểu biết của tôi về các kiến thức cơ bản trong lĩnh vực này.

Các bài giảng hấp dẫn và được sản xuất tốt, và các bài tập thách thức nhưng mang lại cơ hội quý giá để áp dụng những gì bạn đã học.

Khóa học bao gồm một loạt các chủ đề, giúp giới thiệu về Khoa học máy tính một cách tốt nhất. Tổng thể, đây là một khóa học nổi bật và là một trong những trải nghiệm học tập trực tuyến tốt nhất mà tôi từng có.

Tôi hy vọng bạn thấy bài viết này hữu ích và nó đã giúp bạn quyết định xem có nên tham gia CS50 hay không.

Nếu bạn đang gặp khó khăn khi tự mình học CS50 và cần tìm kiếm sự giúp đỡ, đăng ký ngay khoá học giúp chinh phục chứng chỉ CS50 cùng CoderSchool

Khoá học của CoderSchool có gì đặc biệt?

  • Học theo nhóm cùng 2 chuyên gia, tập trung giải quyết các bài tập Advance, trao đổi kinh nghiệm làm việc tại các Big Tech trên thế giới.
    • Minh Hodler - Software Engineer @ Amazon, Thạc sĩ Computer Science @ Northeastern University. Sở hữu kênh Youtube hơn 50k follower
    • Hải Đặng - Software Engineer @ Microsoft, với kinh nghiệm hơn 1000 giờ giảng dạy tại các trường ĐH Mỹ
  • Gặp gỡ Mentor 1-1 hàng tuần, giải đáp chuyên sâu trong suốt quá trình học.
  • Trợ giảng hỗ trợ trả lời những câu chưa thể hỏi trên lớp, hoặc muốn hỏi ngoài giờ học, đảm bảo tiến độ.

> Tìm hiểu thêm TẠI ĐÂY

Kiểm tra độ phù hợp với ngànhKiểm tra độ phù hợp với ngành

Bạn còn thắc mắc về chương trình học?

Tham gia ngay 45 phút định hướng cùng Mentor tại CoderSchool hoàn toàn miễn phí

Get a full refund within 7 days if you’re not happy with the course. If you don’t get a job within 6 months of completion, you’ll receive a full refund.

Đăng ký