You are on page 1of 5

1.

GIỚI THIỆU
Computational Thinking (CT) là một bộ kĩ năng vừa xuất hiện trong thời đại máy tính
gần đây. Nhưng không nên nhầm lẫn khi thấy tên của nó, nó không chỉ giúp giải quyết những
bài toán liên quan tới khoa học máy tính (Mặc dù trong lĩnh vực này nó phát huy hiệu quả cao
nhất và là kĩ năng bắt buộc với những ), mà nó giúp giải quyết nhiều vấn đề phức tạp trong
rất nhiều lĩnh vực khác nhau. Để tóm tắt, CT giải quyết vấn đề bằng các bước:
- Decomposition: Chia nhỏ vấn đề cần giải quyết thành nhiều vấn đề khác nhỏ hơn.
- Pattern recognition: Xem xét cẩn thận vấn đề, xem chúng ta đã gặp một vấn đề khác giống
hoặc tương tự trong quá khứ hay chưa.
- Abstraction: Tổng quát hóa vấn đề - bỏ đi những gì không quan trọng.
- Algorithms: Tạo lập kế hoạch, từng bước giải quyết vấn đề.

Sau đây tôi xin đi sâu vào từng bước, giải thích và nêu rõ các bước đó đồng thời nêu
ra những ví dụ trong cả một vấn đề cụ thể thuộc ngành khoa học máy tính (KHMT).
2. CÁC BƯỚC CỦA COMPUTATIONAL THINKING
2.1 Decomposition
Decomposition là bước đầu tiên khi tiếp cận vấn đề. Nó không chỉ giúp bài toán nhìn
đơn giản hơn nhiều - Việc này có tác dụng cả về tâm lí và thực tế. Về tâm lí, nó giúp chúng
ta bình tĩnh để nhìn nhận vấn đề, tránh việc "hoảng" khi vấn đề đó quá phức tạp. Về thực tế,
nó giúp quản lí vấn đề dễ dàng và hiệu quả hơn khi sang những bước tiếp theo.

Trong KHMT, khi chúng ta muốn tạo một con robot có thể giao tiếp với người khác.
Ta cần phải chia nó thành hai việc hiển nhiên, là tạo một con robot, và tạo một con AI có thể
trò chuyện, thực hiện cử động. Nhưng việc này quá hiển nhiên và decomposition sẽ không
giúp ta nhiều lắm ở đây. Chúng ta phải đặt những câu hỏi : Ta còn có thể phân tiếp những
việc đó ra nữa hay không, và có nên phân tiếp nữa hay không, phân ra như thế nào ? Sau khi
đặt những câu hỏi đó ta có những nhận định: Làm một con robot là một việc quá chung chung,
chúng ta cần nhìn nhận lại vấn đề và đưa ra một số cách phân: Làm khung của con robot; làm
bộ phận để nó di chuyển được; "tay" của robot có thể cầm nắm; phần mặt có thể cười, buồn,
nháy mắt như con người; khớp để thực hiện những hành động phức tạp; làm "trái tim", tức là
phần mạch để robot hoạt động theo ý muốn; Tạo một con AI có thể trò chuyện và thực hiện
cử động cũng là một vấn đề chung chung, đặt những câu hỏi phía trên ta còn phân được ra
những vấn đề: một phần AI riêng để phân tích lời nói của chúng ta và "hiểu" được lời nói đó;
AI để xử lí và cho ra một câu thoại phù hợp; AI để cho ra những cử động phù hợp; AI để cho
ra cảm xúc phù hợp. Như vậy chúng ta đã phân được những vấn đề rất cụ thể để sẵn sang qua
bước tiếp theo.

WALL·E, một bộ phim khá hay về robot và cũng là một cách tưởng tượng sinh động về ví dụ
2. 2 Pattern Recognition
Pattern Recognition là bước tiếp theo, trong bước này ta xem thử một vấn đề nào đó
có trùng lặp hay liên quan tới những vấn đề khác (có thể trong chính vấn đề lớn ta đang xem
xét, hay trong những vấn đề trước đây của bản thân và người khác), từ đó tận dụng được
những cái chính mình hoặc người khác đã làm, hoặc phân nhóm những việc có liên quan với
nhau để tiện làm hơn. Việc này giúp giảm đáng kể thời gian làm việc vì chúng ta không còn
phải làm những vấn đề lặp lại nữa, điều này còn giúp chúng ta không cảm thấy chán.

Trở lại với con robot chúng ta đang làm dở phía trên, chúng ta tiếp tục tự hỏi những
câu như sau: Sau khi quan sát, thì chúng ta có thấy những gì chung hay lặp lại không? Đã có
ai (kể cả chính mình) đã làm những đó chưa?. Trả lời những câu hỏi trên, chúng ta tiếp tục có
những nhận xét: Về phần robot, những phần khớp tay, chân có cấu tạo khá giống nhau, nên
ta không cần phải suy nghĩ cách lắp từng cái; tay trái và tay phải, chân trái và chân phải khá
tương tự nhau nên ta có thể cho chúng về một nhóm; Về phần AI, những phần code điều khiển
tay, chân khá giống nhau - ta có thể gom chúng lại thành một chương trình chung; phần điều
khiển cơ mặt cũng tương tự như điều khiển tay, chân nên cũng cho vào nhóm đó. Sau khi thực
hiện Pattern Recognition, ta có thể hình dung được một số phần mà mình đã làm (Giả sử như
trước đây tôi đã làm một mô hình robot, thì tôi có thể mường tượng lại cách làm và ứng dụng
ở đây) và sau đó là chia nhóm những việc có liên quan tới nhau, ta được những phần sau: Về
robot, ta có: nhóm chi (bao gồm tay, chân); phần thân; phần đầu; phần cơ, khớp (bao gồm
những phần có thể cử động được: khớp tay, khớp chân, cơ miệng, mắt); phần dây điều khiển
các khớp; phần trang trí. Về AI: AI xử lí tiếng nói thành ý nghĩa; AI dựa vào ý nghĩa để quyết
định cử động (cơ, khớp); AI dùng ý nghĩa để phản hồi thành lời nói. Tới đây chúng ta cảm
giác như đã rất gần một con robot. Nhưng vẫn có cái gì đó rất phức tạp ở đây đúng không?

2.3 Abstraction
Tới đây chúng ta trả lời một câu hỏi cực kì quan trọng: Chúng ta muốn làm cái gì?
Điều này rất quan trọng vì nó giúp chúng ta tập trung vào những gì quan trọng và loại được
những yếu tố thừa. Việc này giúp vấn đề trở nên tổng quát hơn và dễ dàng giải quyết hơn
trước khi chúng ta thực sự giải quyết nó.
Trở lại với việc làm robot, ta sẽ trả lời câu hỏi trên. Tôi đã làm vậy và nhận ra rằng, tôi
thực sự không cần một con robot có thể thực hiện cử động phức tạp theo lời nó, hay có cử chỉ
mặt, từ đó tôi bỏ đi được một số phần không cần thiết: khớp mặt và các bộ phận trên mặt:
miệng, mắt; phần tay, khớp tay; phần AI để thực hiện cử động. Từ đó tôi chỉ còn những phần
cơ bản: phần chân; phần thân; phần đầu (đơn giản hơn, không cần có mắt hay miệng); phần
điều khiển chân; phần AI phân tích tiếng nói và phản hồi bằng tiếng nói.
Trước khi qua phần tiếp theo tôi muốn làm sáng tỏ một việc, tại sao ta phải cần cân
nhắc tất cả các trường hợp của robot, sau đó mới bỏ đi những gì chúng ta không cần, nó rườm
rà hơn nhiều so với việc chỉ chú tâm vào trọng tâm của con robot ngay từ đầu. Đó là bởi vì
việc tôi trình bày ở đây chỉ là một ví dụ đơn giản, và phần lớn những vấn đề ta phải giới quyết
rất phức tạp, và vì nó phức tạp, ta không hoàn toàn nắm được những gì ta cần ngay từ đầu,
nên rất dễ bỏ sót những chi tiết nhỏ, và những chi tiết nhỏ đó có thể ảnh hưởng tới toàn bộ
vấn đề, việc phân tích mọi vấn đề nhỏ rồi bỏ qua những chi tiết không liên quan giúp ta hạn
chế việc bỏ sót này. Đây cũng là điểm mạnh của CT.

Các phần của WALL·E sau 3 bước (Nguồn : https://www.coroflot.com/Doodle_Monkey/Wall-E-DVD-Case)

2.4 Algorithms
Qua những bước trước ta đã có những phần cụ thể, đây là lúc chúng ta lên kế hoạch để
thực hiện những phần đó. Để làm điều này ta trả lời câu hỏi: Ta sẽ thực hiện những phần đó
như thế nào, và theo thứ tự nào?
Algorithms, nói cách khác, là chiến thuật từng bước cụ thể mà ta sẽ thực hiện những
phần đó. Có những phương pháp biểu diễn Algorithms như ngôn ngữ tự nhiên, mã giả hoặc
lưu đồ.
Việc làm robot đã đi tới phần kết (của kế hoạch) rồi. Tất nhiên mỗi người sẽ có một
chiến thuật khác nhau nhưng tôi sẽ nêu chiến thuật của tôi ở đây: Tôi nhận thấy nếu làm xong
AI thì sẽ không có chỗ để kiểm tra tính đúng sai (chạy ổn trên máy không có nghĩa sẽ chạy
ổn trên robot, đó là hai môi trường khác nhau, nếu tôi làm xong robot mà phát hiện AI không
hoạt động, tôi sẽ phải mở lại con AI mà tôi đã gán mác "đã hoàn thành" để sửa, khá phiền và
mất thời gian) nên tôi sẽ làm robot trước, khi làm robot tôi sẽ làm phần thân đầu tiên, sau đó
tới chân, tay và đầu, lắp bộ dẫn động vào chân nối tới thân, sau đó làm phần đầu, rồi kiểm tra
xem nó có giữ thăng bằng được được không, có đủ chỗ để lắp bộ điều khiển không, kéo thử
bộ dẫn động xem nó có vướng không. Tới phần AI, tôi làm phần tiếp nhận và xử lí tiếng nói
trước, kiểm tra xem nó có đúng không, sau đó mới tời phần cho ra câu thoại và tiếp tục kiểm
tra. Sau khi đã hoàn tất việc kiểm tra trên máy, chúng ta tiến hành việc ghép phần robot và AI
với nhau, rồi tiếp tục kiếm tra tổng thể. Sau khi kiểm tra tổng thể hoàn tất, chúng ta đã hoàn
thành việc giải quyết vấn đề.
3. KẾT LUẬN
Qua những gì tôi vừa nói, mong mọi người có thêm kiến thức về một bộ kĩ năng cần
thiết này và ứng dụng được nó vào cả KHMT và trong đời sống.
4. THAM KHẢO:
Ý tưởng: https://www.thetech.org/sites/default/files/techtip_computationalthinking_v3.pdf

You might also like