CS50 - Introduction to computer science: khóa học khoa học máy tính từ Yale và Harvard

Kéo thử 20-30 reviews đầu tiên về khóa học CS50 - introduction to computer science, một điều vô cùng ngạc nhiên là không chỉ các review đều cho điểm tối đa 5*, mà 100% các reviews đều có những lời bình luận tốt đẹp về khóa học dù ngắn hay dài. Tại sao một khóa học giới thiệu căn bản lại có thể thu hút một số lượng review đông đảo và tích cực đến thế.

Đó cũng là câu hỏi mà mình đã đặt ra trước khi tham gia khóa học. Và sau khóa học, điều tổng kết ngắn gọn nhất mà mình có thể rút ra được là: the best course with the best contents, supporters, teachers and community. Học thì phải vui, nhưng không phải khóa học nào làm được điều đó, nhưng ở CS50, đó thực sự là một nơi mà những người lần đầu tiên tìm đến với computer science sẽ thực sự cảm thấy thú vị. Bài viết này của mình sẽ giới thiệu về khóa học và những cảm nhận cá nhân, hy vọng bạn nào đó có thể cảm thấy hứng thú và đăng ký tham gia học

  1. Giáo trình: Trải dài qua 11 tuần học, học viên sẽ được cung cấp kiến thức từ nền tảng đến nâng cao.
  • Mở đầu bằng việc giới thiệu về pseudocode (mô tả giải thuật) và scratch (làm game trên những block có sẵn). Bằng trí tưởng tượng phong phú, người học lập trình có thể nhanh chóng tạo ra những trò chơi ngay lập tức chỉ bằng cách sắp xếp các block.
  • 3-4 tuần tiếp theo, học viên sẽ được giới thiệu đến ngôn ngữ nền tảng nhất C, kiến thức nền tảng: cấu trúc dữ liệu và giải thuật, cách bộ nhớ máy tính được sử dụng.
  • Tiếp đến, là những kiến thức về lập trình web như giao tiếp HTTP, ngôn ngữ server Python, cơ sở dữ liệu SQL, framework Flask, ngôn ngữ front-end Javascript
  • Những bài giảng cuối cùng giới thiệu sơ qua về AI, Machine Learning, lý giải cách thức mà con người dùng công nghệ để có thể nhận diện số, khuôn mặt hay đưa ra gợi ý bán hàng (như trên Amazon)

Tại sao một khóa học lại có thể bao hàm nhiều kiến thức như thế? Liệu việc học có giống như cưỡi ngựa xem hoa, học rồi quên chẳng hiểu gì cả. Đây cũng chính là một lý do mà mình thực sự thích thú với hệ thống bài tập của CS50.

  1. Bài tập: Trong suốt 11 tuần học, học viên được yêu cầu phải hoàn thành 8 problems.
  • Ở tuần học đầu tiên, học viên làm quen với lập trình thông qua scratch, và được yêu cầu làm 1 game bất kì.
  • Từ tuần thứ 2, học viên bắt đầu làm quen với ngôn ngữ C. Từ những bài tập đơn giản như: kiểm tra số thẻ có đúng quy chuẩn và xem đó là thẻ loại nào (visa, master...):
$ ./credit
Number: 3782-822-463-10005
Retry: foo
Retry: 378282246310005
AMEX

giải mã mật thư

$ ./crack 50fkUxYHbnXGw
rofl

tới những bài toán sắp xếp lại board cho đúng thứ tự

$ ./fifteen 3
"WELCOME TO GAME OF FIFTEEN"

6  7  4

5  8  1

2  3  _

Tile to move:

tới khôi phục lại hình ảnh trong thẻ nhớ bị hỏng (bằng cách nhận diện cấu trúc byte), tìm chữ viết trong tấm ảnh bị nhiễm sắc thể lạ (thay đổi cấu trúc RGB) hay kiểm tra spelling trong một đoạn văn bản.

  • Từ tuần học thứ 6, học viên bắt đầu giải quyết các bài tập lập trình phần mềm hay web dùng ngôn ngữ Python, SQL và Javascript, điển hình như: chương trình nhận biết tweets on tweeter là positive, negative hay neutual. Học viên được hướng dẫn liên kết api với tweets, lấy dữ liệu, phần tích và trả kết quả phân tích bằng đồ thị
$ ./tweets @cs50
 0 hello, @world
 1 I love you, @world
-1 I hate you, @world
...

chương trình mua bán giao dịch chứng khoán. Học viên lấy dữ liệu thật từ trang Yahoo Finance và tạo sàn giao dịch trên website và cuối cùng là chương trình kết hợp google search và google map, để hiển thị tin tức cập nhật nhất tại một địa danh bằng cách click vào 1 địa danh đó trên google.

Liệt kê để thấy được, những gì mà học viên trong khóa CS50 phải làm thật sự rất nhiều, khó và đều là những bài tập thực tế rất thú vị. Để học sinh có thể theo sát và hoàn thành bài tập, mỗi problems đều có đề bài chi tiết dài từ 1-2 trang A4, đi kèm theo các video walkthrough hướng dẫn (10' - 30'. Hơn thế nữa, học sinh không yêu cầu phải hoàn thành 1 project từ đầu đến cuối, nhiều bài học sinh đã có sẵn framework chiếm 20-50% số dòng code và được yêu cầu đọc hiểu và hoàn thành bài tập đó.

Thật sự, bằng việc đưa ra những bài tập thực tế, tách lọc đoạn code học sinh có thể làm, CS50 đã giúp cho người học ngay lập tức hình dung được về các sản phẩm mình có thể làm trong tương lai, tạo sự kích thích trong học tập. Mặc dù chỉ làm 1 phần đoạn code, nhưng với việc bỏ ra từ 10-12h cho mỗi bài assignment, hoàn thành bài tập cũng là một việc đây tự hào với mỗi học viên.

  1. Cấu trúc bài giáo trình Để hoàn thành khóa học với nội dung lớn thật không dễ dàng, nhưng ở CS50, với tài liệu học tập đa dạng và đáp ứng được các nhu cầu khác nhau. Việc học đã trở nên dễ dàng hơn phần nào.
  • Video clip: mỗi tuần học bao gồm 2 video clips dài khoảng 1h bởi David Malan. Với cách truyền đạt hấp dẫn và những bài giảng tương tác cao với học viên, những ví dụ minh họa cụ thể rất dễ hiểu. Những kiến thức rất khó hiểu lại trở nên đơn giản và dễ nhớ. Tuy thế, đối với nhiều bạn có kiến thức vững, việc nghe 2h chỉ để nắm bắt một vài kiến thức có thể sẽ hơi tốn thời gian.
  • Slides và notes: giải pháp cho những bạn muốn lướt qua nội dung bài giảng (slide) hay những vấn đề được đề cập, các ví dụ minh họa chi tiết đều được ghi lại rõ ràng, từng bước trong notes.
  • Short clips: các bài giảng chi tiết hơn về những vấn đề liên quan hoặc chuyên sâu không được đề cập ở lớp học, như merge sort, binary search, dynamic memory allocation...
  • Seminars: giới thiệu thêm kiến thức bời các bạn sinh viên tham gia khóa học, gồm rất nhiều chủ đề khác nhau từ giới thiệu về git, git hub, cho tới data science cùng python pandas hay tìm hiểu về chrome extensions...
  • Forum: Được xây dựng trên nền tảng giống với stackoverflow, forum cho phép học viên tự đặt câu hỏi và giúp các bạn khác trả lời câu hỏi. Điểm khác biệt ở CS50 là sẽ luôn có các bạn supporters (những người đã hoàn thành và đăng ký trợ giúp khóa học) liên tục tìm kiếm và giải đáp các thắc mắc.

Mặc dù các slides, notes hay short clips là không bắt buộc, nhưng mình highly recommend các bạn xem thêm để bổ sung kiến thức trên lớp, mở rộng hiểu biết và cũng giúp giải quyết bài tập dễ dàng hơn. Việc không tận dụng tối đa các tài liệu học cũng khiến việc học của mình khó hơn nhiều trong giai đoạn đầu. 4. Chi phí: 0 -> $100 Đây là một khóa học mở nên bất cứ ai đều có thể đăng ký tham gia học miễn phí. Nếu như bạn muốn nhận được verified certificate từ edX, bạn sẽ cần phải trả một mức phí tương đối cao là $100. Tuy nhiên, bạn có thể xin trợ cấp từ edX với diện nghèo (thường học viên Việt Nam khá dễ dàng được nhận), số tiền bạn phải đóng chỉ còn $10.

  1. Nhận xét:
  • "There is no such thing like free lunch". Với một khối lượng kiến thức lớn như vậy, thời gian cần thiết để đầu tư cho khóa học cũng không ít tạo nào. Với thời gian trung bình làm mỗi bài assignment khoảng 10h, thời gian nghe video chính 2h, nghe short clips 1h. Học viên cần dành khoảng 120h để hoàn thành khóa học.
  • Với những bạn không theo đuổi con đường IT, mà chỉ muốn tìm hiểu xem thế giới công nghệ như thế nào. Các bạn hoàn toàn có thể dành 20h để nghe các video clips siêu thú vị từ người thầy David Malan
  • Đây cũng là khóa học mình nghĩ là những nhà làm giáo dục có thể thao khảo, để biết thêm cấu trúc và phương pháp giảng dạy. Tại sao 1 khóa học online lại nhận được nhiều sự yêu mến đến thế.

Hy vọng bài review của mình sẽ giúp cho các bạn mới tìm đến Computer Science hiểu rõ hơn về khóa học CS50, và mình highly recommend mọi người đăng ký tham gia, nhưng hãy chuẩn bị tinh thần thật tốt để tham gia trận đánh sắp đến 😄