Day 1: Mình Chọn CS50 Để Bắt đầu - Tuần 0 về Scratch (Khóa CS50).
Theo đúng lộ trình thì mình sẽ bắt đầu học khóa CS50's Introduction to Computer Science của Harvard trên nền tảng EDX. Vậy là chặng đường Lập Trình Từ ZERO bắt đầu từ hôm nay.
Như mình có đề cập từ ban đầu lộ trình học của mình ở Day 0 sẽ là như sau:
Và cứ như những gì đã vạch ra mà tiến hành. Những bước chân đầu tiên luôn là khó khăn nhất cho nên mình cần sự bền bỉ và cam kết. Mỗi ngày mình sẽ cố gắng giành ra ít nhất 2 tiếng để học kiến thức mới và 1 tiếng để tổng hợp lại lên chính trang web này để mục phần lưu lại và chia sẻ kiến thức mình đã tiếp thu.
Giới thiệu lí do và tổng quan về khóa học CS50:
Lí do: Sau khi tham khảo 7749 nguồn từ Youtube và từ những người bạn có chuyên môn trong ngành thì mình quyết định chọn CS50 - Introduction to Computer Science - Giới Thiệu Khoa Học Máy Tính để bắt đầu. Vì đây là khóa học có thể nói là giành cho tất cả mọi người để có những nền tảng cơ bản nhất về khoa học máy tính. (Cái này mình chỉ mới nghe còn sau vài tháng nữa mình sẽ thực sự nhìn và cảm nhận sẽ chia sẻ sau).
Tổng quan CS50:
CS50 là khóa học dài 12 tuần hoàn toàn miễn phí về nhập môn ngành học Khoa học máy tính của Đại học Havard.
Giáo sư David J. Malan giảng dạy từ những khái niệm cơ bản nhất
Dành cho đối tượng mới bắt đầu học lập trình và kể cả đã có kinh nghiệm.
Trong khóa học này bạn sẽ học được cách tư duy máy tính, xây dựng tư duy thuật toán và logic 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.
Mình đã đăng kí khóa học CS50 này trên EDX (một nền tảng giáo dục trực tiếp) và cùng học TUẦN 0 về chủ đề SCRATCH.
Đây là tấm hình mà bạn sẽ gặp rất nhiều trong khóa học này để diễn giải computational thinking - tư duy máy tính:
Input → something here → Output = Đầu vào → quy trình gì đó → Đầu ra
Mình đã học được: (Mình sẽ chia sẻ với ý tưởng là sau này mình nhìn lại mình hiểu và như một ghi chú kiến thức cho chính bản thân mình)
Máy tính sử dụng một hệ thống gọi là binary (hệ nhị phân) còn được gọi tên thân thuộc hơn là bit. Bit hiểu là số 0 hoặc là số 1.
Bởi vì máy tính chỉ hiểu số 0 và số 1 nên sẽ rất khác với ngôn ngữ hằng ngày mà chúng ta được biết. Số 0 quy định là tắt và số 1 là bật. Và trong máy tính có hằng triệu thậm chí là hàng tỷ các transistors được bật và tắt theo 1 quy luật nào đó.
Máy tính thường dùng 8 bit để chứa một số và ví dụ 00000101 (hệ nhị phân) là số 5 (hệ thập phân).
Vậy thì ký tự abc thông thường cũng được biểu đạt bằng số 0 và 1 chứ?
→ Đúng là như vậy, có bộ mã ký tự chung được quy ước gọi là ASCII (American Standard Code for Information Interchange - Chuẩn mã trao đổi thông tin Hoa Kỳ) - ASCII quy định mối tương quan giữa kiểu bit số với ký hiệu/biểu tượng trong ngôn ngữ viết, vì vậy cho phép các thiết bị số liên lạc với nhau và xử lý, lưu trữ, trao đổi thông tin hướng ký tự.)
Tương tự thì emoji, bảng màu RBG, hình ảnh và video sẽ được biến đổi theo một quy tắc nào đó dựa trên bit (số 0 và số 1) để máy tính hiểu được.
Giới thiệu về thuật toán - algorithms:
Bạn sẽ học được bài toán kinh điển và để lại ấn tượng trong mình nhiều nhất: tìm kiếm tên một người trong cuốn danh bạ 1000 trang. Vậy bạn sẽ tìm kiếm cái tên đó như thế nào?
Lật từng trang?
Lật 2 trang mỗi lần?
Hay là xé đôi một nữa và vứt đi phần không có?
Và đây là câu trả lời: bạn sẽ sẽ cái tên cần tìm nằm bên trái hay bên phải và vứt đi 1 nửa của vấn đề và tiếp tục lặp lạ cho tới thì tìm tới cái trang có cái tên cần tìm.
Cách để thể hiện thời gian tìm kiếm vấn đề trên qua 3 cách để dễ hình dung sẽ được biểu thị dưới dạng biển đồ như sau:
Cách thứ 1 sẽ tốn nhiều thời gian nhất, cách thứ 2 tiết kiệm 1 nửa thời gian và cách thứ 3 tiết kiệm thời gian hơn rất nhiều lần.
→ mỗi cách trên có thể gọi là mỗi thuật toán và hình trên mô tả về Big O - mô tả mối liên hệ giữa số lượng phần tử đầu vào và số lượng operation – thời gian chạy, hoặc số lượng bộ nhớ mà thuật toán cần sử dụng. Nói đơn giản hơn là “độ phức tạp của thuật toán”.
Pseudocode - Mã Giả: là một mô tả dạng plain text của một đoạn code hoặc thuật toán - hay đơn giản là thuật toán viết dưới dạng theo ngôn ngữ con người.
Pseudocode - mã giả: được cho là có 2 ưu điểm khi bạn muốn viết 1 chương trình:
Trình bày được tư duy logic giải quyết vấn đề rõ ràng
Cho phép những người khác đọc code và hiểu bạn đang muốn code cái gì và cách thức hoạt động của cách làm đó.
SCRATCH - một ngôn ngữ lập trình do MIT phát triển
Phần này mình chỉ xem cách GS David trình bày chứ không có note lại.
GS David sẽ hướng dẫn những câu lệnh cơ bản trên phần mình scratch trên nền tảng cloud và giới thiệu một số trò chơi có thể lập trình được từ scratch.
Mình là GÀ VND, cùng đồng hành laptrinhtuZERO với mình nhé!