Bắt đầu học lập trình như thế nào – Giới thiệu khóa học CS50

[Cập nhật ngày 21.7.2016] Đã có phiên bản tiếng Việt của CS50 từ kienhoc (tuy nhiên chưa đầy đủ), địa chỉ khóa học tại đây

Bạn muốn học lập trình nhưng chưa có kiến thức gì về lập trình? Khi bạn tra google cụm từ “Tự học lập trình” thì lại tìm thấy 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 rất rất thú vị nhưng lại không biết bắt đầu như thế nào?

Bạn đã học lập trình nhưng cảm thấy lập trình quá khó hay đang gặp khó khăn trong việc học? Hay là bị đuối hơn các bạn khác trong việc làm việc với các ngôn ngữ lập trình? Hay bạn có thể viết một chương trình nhưng thực sự chưa hiểu bản chất của công việc mình đang làm?

Bạn đã học giỏi lập trình, nhưng bạn muốn có một cơ hội để tiếp xúc với một môi trường giáo dục tiên tiến bậc nhất thế giới, hay để hiểu sâu sắc hơn về những thứ mình được học. Hay đơn giản chỉ là để thách thức bản thân về những kiến thức mà bạn đã biết?

Vậy CS50 chính xác là những gì mà bạn đang tìm kiếm.

CS50 là gì?

CS50 là khóa học nhập môn ngành học Khoa học máy tính của Đại học Havard, dành cho những sinh viên chưa có hoặc đã có kinh nghiệm học lập trình từ trước. Đây là một khóa học sơ cấp mà đứng đầu bởi giáo sư David J. Malan. Học sinh, sinh viên học CS50 sẽ được dạy cách suy nghĩ lô gíc, xây dựng tư duy thuật toán và giải quyết các vấn đề một cách hiệu quả. Các chủ đề giảng dạy bao gồm trừu tượng hóa, các thuật toán, các cấu trúc dữ liệu cơ bản, đóng gói, quản lý tài nguyên, bảo mật, phát triển web và phần mềm. Các ngôn ngữ được sử dụng là C, PHP, Javascript + SQL, CSS, HTML. Các bài tập trong khóa học đều là các vấn đề thực tế gần gũi với mỗi chúng ta như game, tài chính, thế giới tự nhiên, điều tra tội phạm…

Bạn sẽ học được gì?

– Hiểu biết rộng và sâu sắc về Khoa học máy tính và lập trình

– Học cách suy nghĩ một cách “thuật toán” và giải quyết các vấn đề lập trình một cách hiệu quả

– Được học những khái niệm như trừu tượng hóa, các thuật toán, các cấu trúc dữ liệu cơ bản, đóng gói, quản lý tài nguyên, bảo mật, phát triển web và phần mềm

– Làm quen với các ngôn ngữ lập trình C, PHP, Javascript + SQL, CSS, HTML. Mà đặc biệt là ngôn ngữ lập trình C.

– Tham gia một cộng đồng sôi động nhiệt tình gồm rất nhiều người ở mọi cấp độ kinh nghiệm

– Xây dựng phát triển và thuyết trình về bài tập lớn của bạn cho bạn bè của mình.

Đó là đoạn giới thiệu mà mình dịch nhanh từ edX (Nơi cung cấp khóa học miễn phí, các bạn có thể tìm thấy link ở dưới đây). Vậy đoạn giới thiệu đó có làm bạn cảm thấy phấn khích và muốn bắt tay vào học ngay lập tức? Hay nó làm bạn hơi sợ, dè chừng vì nó dạy quá nhiều thứ? Bạn hãy yên tâm đi và đừng lo gì cả bởi vì khóa học này được thiết kế dành cho tất cả mọi người có độ tuổi từ 8 đến trên 70 tuổi, và tới 78% số người tham gia khóa học này không có chút kinh nghiệm nào về lập trình trước đó, điều đó có nghĩa là nếu bạn chưa biết gì về lập trình gì may mắn rằng, bạn không cô đơn. Bản thân mình khi bắt đầu học CS50 cũng không hề biết chút nào về lập trình trước đó.

Kinhnghiemlaptrinh
78% người tham gia chưa có kinh nghiệm về lập trình
Bankhonghecodon
Bạn không hề cô đơn

Thêm một chút về CS50 và edX

Khóa học CS50 được giảng dạy tại giảng đường của Đại học Harvard, và là khóa học bắt buộc của ngành học Khoa học máy tính và một số ngành khác của trường này. Tuy nhiên, một điều thật tuyệt vời là không chỉ có những sinh viên xuất sắc đến từ Đại học Havard mới được học khóa học này mà hiện tại CS50 đã được cung cấp miễn phí trên edX. Thế còn edX là gì? edX là một nền tảng phi lợi nhuận ra đời là thành quả của sự hợp tác giữa ĐH Havard và MIT, cung cấp rất nhiều các khóa học trực tuyến (miễn phí), liên kết với rất nhiều trường Đại học nổi tiếng (ví dụ ĐH Havard, ĐH UC Berkeley, ĐH Boston, ĐH Kyoto..) và các tổ chức (ví dụ: Microsoft, Linux Foudation, ACCA, W3C…) (xem chi tiết tại đây). Toàn bộ nội dung của khóa học CS50 được giảng dạy khuôn viên ĐH Havard sẽ được đăng tải trên edX. Điều đó có nghĩa là bạn so với các bạn sinh viên ĐH Havard, ngoài việc các bạn ý ngồi trong giảng đường học, thì không có bất cứ một sự khác biệt nào cả.

Để đăng ký khóa học bạn hãy truy cập vào địa chỉ sau https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#! Bạn sẽ cần đăng ký một tài khoản trên edX trước đó. Có ba lựa chọn khi bạn tham gia khóa học đó là trả phí (bạn sẽ nhận được giấy chứng nhận khi hoàn thành khóa học), miễn phí (bạn cũng sẽ nhận được một giấy chứng nhận, gọi là Honor Code, miễn phí nhưng không “xịn” như khi bạn trả phí, nôm na là nó không được verify), hoặc bạn có thể tham gia học bất cứ lúc nào nhưng không lấy giấy chứng nhận. Bản thân mình khuyên mọi người nên học theo cách thứ hai vì nó vừa kinh tế mà lại tạo động lực để mình học 😀

Một số chia sẻ cá nhân

Mình muốn chia sẻ với mọi người một số điều tản mạn của bản thân mình khi mình tham gia khóa học này. Mình biết đến CS50 (và edX) từ một người anh họ vào khoảng thời gian vừa thi xong đại học (Khoảng hè năm 2013). Khi mình mới được chia sẻ thì bản thân mình cũng hào hứng, nhưng cũng chưa biết nó là gì. Và khi mình mới bắt đầu tìm hiểu thì mình … cũng không hiểu mấy :)), một phần là do chưa biết gì về lập trình và tiếng Anh còn kém. Nên thời gian đầu khá là sợ hãi và không biết tiếp theo phải làm gì. Tuy nhiên, khi mình thực sự bắt đầu học thì mọi chuyện lại khác. Nó mở ra cho mình như cả một chân trời mới vậy. Khóa học rất thú vị và đặc biệt là giảng viên thầy David J, Malan dạy rất hay và vui tính. Rất nhiều kiến thức mình học được nhưng không hề khô khan hay khó tiếp nhận mà rất tự nhiên, tất cả đều xuất phát từ thực tế. Ví dụ như việc biểu diễn hệ nhi phân qua các bóng đèn, sự cần thiết của nhị phần trong máy tính. Hay giải thích thuật toán là gì, tầm quan trọng của thuật toán qua một ví dụ rất thú vị về tìm kiếm một số điện thoại trong quyển danh bạ điện thoại rất dày. Mình còn được học cách lập trình cho một trò chơi đơn giản mà chỉ dùng mỗi chuột (Scratch). Học CS50 không chỉ để biết thêm các kiến thức về lập trình mà nó còn đem lại cho mình một niềm vui rất lớn.

DavidJMalan

Một điểm đặc biệt khác đó là khi xem các video khóa học, thầy Malan dạy và tương tác với các bạn sinh viên luôn, tạo cho mình một cảm giác như chúng ta đang ngồi tại giảng đường của ĐH Havard vậy. Nhưng không chỉ là cảm giác, bạn hoàn toàn có thể tương tác với các bạn khác không chỉ ở Havard mà còn là tất cả các bạn học sinh, sinh viên đang tham gia CS50 trên toàn thế giới qua group thảo luận chung ở trên facebook hay Stack Exchange, Reddit… Thật tuyệt phải không nào.

cs50_hall

Một điểm rất thiết thực đó là khóa học đã giúp đỡ mình rất nhiều trong việc học các môn học trên trường của mình. Mà cụ thể ở đây là các môn Tin học cơ sở 4, Lập trình nâng cao, Cấu trúc dữ liệu và giải thuật, thậm chí cả Lập trình hướng đối tượng nữa. CS50 truyền đạt kiến thức cho mình một cách tự nhiên nhất và nhờ đó mình cũng kiếm được điểm kha khá ở những môn này 😛

Một số khó khăn khi học CS50

TiengAnhKhoQua

Khó khăn đầu tiên đó là Tiếng Anh. Vì khóa học được giảng dạy bằng tiếng Anh nên là một rào cản lớn cho nhiều bạn muốn tham gia học. Nhưng các bạn đừng quá buồn, vì tiếng Anh được dùng trong khóa học khá là dễ hiểu. Cộng thêm với việc thầy Malan nói khá là dễ nghe, clear nên việc tiếp thu cũng không thách thức lắm. Tuy nhiên dù là thách thức thì cũng chẳng sao vì đằng sau mỗi thách thức đều là các cơ hội đúng không? 😛 Bản thân mình lúc đầu học cũng suýt bỏ vì vấn đề này, nhưng dần dần thì nghe tiếng Anh cũng quen hơn. Với lại các video đều có sub cả nên đối với các bạn hay xem phim thì OK thôi. Đây là kinh nghiệm cá nhân của mình khi học, đó là các bạn nên chuẩn bị một quyển sổ nhỏ, vừa nghe vừa theo dõi, xem sub nếu có từ tiếng Anh nào mới thì hãy ghi vào rồi tra nghĩa. Nếu có quá nhiều từ tiếng Anh trong một đoạn thì bạn hãy cứ nghe hết đi để ghi tất cả các từ mới vào, sau đó tra nghĩa chúng rồi lại xem lại đoạn đấy một lần nữa. Chắc chắn là một đến hai tuần đầu việc học – tra từ mới sẽ mất rất nhiều thời gian nhưng dần dần các từ mới cũng chỉ có thế và bạn sẽ quen với việc nghe giảng thôi.

Lazy

Khó khăn thứ hai, theo mình cũng là khó khăn lớn nhất khi tham gia khóa học này đó là … lười. Vâng, chính là nó, chính là bệnh lười các bạn ạ. Mặc dù biết là khóa học rất hay, rất thú vị nhưng một khóa học miễn phí, không có áp lực gì nhiều học cũng được mà không học cũng chẳng sao sẽ khiến cho chúng ta trì hoãn, thậm chí trì hoãn vô tận việc học. Bạn thử nghĩ xem sau một tuần học tập làm việc mệt mỏi, bạn có một buổi tối thứ sáu rảnh rỗi thì bạn sẽ chọn việc ngồi học lập trình (mà không học cũng chẳng sao) hay ngồi xem tập tiếp theo của Game of Thrones, hay Arrow, hay Flash, hay Agent of SHIELD, hay The Voice, hay Fast and Furious 7 mới ra HD (mà không xem là không có được) hay làm vài ba ván game giải trí đầu óc (mà bạn xứng đáng có sau một tuần dài dằng dẵng). Đó là khó khăn lớn nhất mà mình trải qua từ khi biết đến CS50. Làm gì vào thời gian rảnh là quyền hạn và quyết định của mỗi người. Và quyết định đó thường là đi chơi điện tử :)))

Hì, mình đùa đấy, để khắc phục vấn đề này các bạn có thể lập ra một vài nhóm, rủ vài bạn của mình tự học với nhau, như vậy sẽ có động lực hơn là học một mình.

Chúc mừng sinh nhật thầy David J. Malan

BSN

Hôm nay là sinh nhật thầy David J. Malan, các bạn học sinh khắp nơi trên thế giới gửi lời chúc đến thầy trong group facebook của khóa học. Mình thì chưa có cơ hội được gặp thầy, cũng chẳng vẽ đẹp hay làm cái gì, mà chúc suông thì cũng nhàm, thôi làm bài viết gọi là giới thiệu về CS50 vậy :v Dù sao cũng chúc thầy luôn có sức khỏe tốt, ngày càng được nhiều người yêu mến và đạt thêm nhiều thành công nữa. À, thầy bảo Havard free thêm khóa CS51 thì em ngàn lần đội ơn thầy :v

Lời cuối

Lời cuối, mình rất mong sau bài viết này sẽ có thêm nhiều bạn học CS50, nhiều bạn yêu thích lập trình hơn, mình rất vui khi mình có thể giúp đỡ được các bạn phần nào.

PS: Nếu mọi người rảnh để lại lời bình để mình hoàn thiện nhé. Xin chân thành cảm ơn mọi người.

Một suy nghĩ 18 thoughts on “Bắt đầu học lập trình như thế nào – Giới thiệu khóa học CS50

  1. He tieng anh minh nghe kha tot va do to mo kha cao nen khong co tro ngai may! Tren youtube cung co nhieu bai giang cua thay! Noi chung la moi thu tro nen thu vi khi hoc voi thay nay! Nice article by the way:)

    Đã thích bởi 1 người

  2. Mình cũng đang muốn tìm hiểu về lập trình. Mình hoàn toàn là một tờ giấy trắng. Lớn tuổi rồi. Tiếng Anh cũng kém nữa. Nhưng mà nghe bạn nói xong cũng thấy hào hứng hơn ròi. Cảm ơn bạn nhiều

    Thích

    1. Chúc bạn sẽ sớm gặt hái được thành công trong lập trình nhé. Nếu bạn cần giúp đỡ, hỏi han hay email mình, mình không chắc chắn sẽ giải quyết được nhưng mình sẽ cố gắng.

      Thân.

      Đã thích bởi 1 người

      1. email của a là gì nhỉ? hay e có thể liên hệ vs a bằng cách nào, em cũng mới học và có gặp chút khó khăn khi sử dụng cs50.ide mong muốn hỏi a chút, em cảm ơn a trước.

        Thích

  3. chào bạn mình có gặp một số khó khăn trong quá trình học do kiến thức về máy tính và lập trình, ko biết bạn có thể giúp mình không? thanks in advance!

    Thích

  4. Cảm ơn bạn về những chia sẻ. Trong khi đang phân vân thì đọc được những dòng khích lệ của bạn, sẽ là động lực để mình cố gắng sắp xếp thời gian tham gia khóa học.
    Thân mến.

    Thích

  5. ❤ Cảm ơn bạn vì chia sẻ này nha ^^ Mình mới mò vào CS50 nhưng chưa rõ như thế nào, search google thì ra bài viết của bạn đầu tiên. Đọc xong thì chút ít có thêm động lực để đk khóa học nà.

    Thích

  6. Cảm ơn anh đã chia sẻ những kiến thức rất hay về kinh nghiệm và những khó khăn khi học trên CS50. Hi vọng những gì anh chia sẻ ở trên sẽ giúp em phần nào trong việc học những khóa lập trình trên CS50. Em mới biết anh và blog của anh thông qua 1 bài viết trên blog GotIt.

    Thích

    1. Cảm ơn Sơn. Chúc em thu lượm được nhiều kiến thức bổ ích để làm tiền đề cho việc học tập và công việc sau này. Happy coding!

      Thích

Gửi phản hồi cho Thuỳ Giang Hủy trả lời