You are on page 1of 35

2017

Lịch sử môn Tin học của Việt Nam

Scratch:
Đề ra kỳ này
LỊCH SỬ MÔN TIN HỌC CỦA VIỆT NAM
Bùi Việt Hà, Công ty Công nghệ Tin học Nhà trường

I. LỊCH SỬ ĐƯA TIN HỌC VÀO NHÀ TRƯỜNG VIỆT NAM


Như chúng ta đã biết những chiếc máy tính thực sự đầu tiên trên thế giới ra đời vào
những năm 1950 của thế kỷ trước. Các máy tính điện tử thế hệ đầu tiên sử dụng bóng
điện tử và công nghệ analog. Thời kỳ đó chắc chắn không phải sinh viên nào học
chuyên ngành này cũng có thể tiếp cận được những chiếc máy đó. Mỗi máy tính thời
kỳ đó to như 1 tòa nhà. Ngành khoa học liên quan đến máy tính thì xuất hiện trước
đó.
Vào những năm 70 của thế kỷ trước bắt đầu xuất hiện những máy tính mini (hay còn
gọi là mainframe). Các máy tính này nhỏ hơn (như 1 cái bàn nhỏ). Điểm đặc biệt của
các máy tính này là bắt đầu có hệ điều hành chạy như 1 phần mềm độc lập. Thời kỳ
này khoa học máy tính đã phát triển rất mạnh trong rất nhiều các trường đại học trên
thế giới. Tại Việt Nam các trường đại học lớn như BKHN đã có các khoa toán tinh,
toán điều khiển. Máy tính mainframe IBM đã có trong 1 số cơ sở tại Sài Gòn.
Thời điểm quyết định nhất là vào đầu những năm 1980 khi chiếc máy tính PC đầu tiên
ra đời với hệ điều hành DOS. Lần đầu tiên mỗi người dân được nhìn thấy và có thể sử
dụng các máy tinh của riêng mình. Cũng vào thời kỳ này khoa học máy tính đã phát
triển rực rỡ, các hệ thống mạng máy tính ra đời đã kết nối tất cả các máy tính lớn trên
toàn thế giới. Thời kỳ này cũng xuất hiện những ngôn ngữ lập trình bậc cao phù hợp
cho việc dạy cho HS phổ thông như Basic, Algol, Pascal, C. Và người ta bắt đầu nghĩ
đến việc đưa tin học xuống nhà trường phổ thông. Tại Việt Nam học sinh các lớp
chuyên toán bắt đầu được làm quen và học lập trình Pascal.
Năm 1989, lần đầu tiên thế giới tổ chức cuộc thi IOI - thi Olympic Tin học quốc tế lần
thứ nhất. Việt Nam có 3 học sinh tham gia và ngay lập tức có 1 giải nhì. Các năm tiếp
sau đó Việ Nam đều tham gia và có giải IOI. Một trong các em học sinh đạt giải 3 IOI
những năm đó nay là Hiệu trưởng trường Đại học Công nghệ, ĐHQGHN.
Vào những năm 1990, Bộ GD&ĐT bắt đầu tổ chức viết SGK tin học cho cấp THPT.
Ban đầu chỉ có lập trình Pascal, nhưng sau đó Bộ đã nhanh chóng mở rộng ra phần
kiến thức Hệ điều hành, và sau đó bổ sung phần Cơ sở dữ liệu, Mạng máy tính và
Soạn thảo văn bản. Đầu những năm 2000, học sinh cấp THPT của Việt Nam chính
thức được học môn Tin học, không muộn hơn so với thế giới.
Vào những năm cuối thế kỷ 20, các khoa CNTT trong các trường Đại học của Việt
Nam phát triển bùng nổ. Thường là xuất phát từ khoa Toán, bộ môn Toán, sau đó đổi
thành Toán - Tin, sau đó đổi thành CNTT.
Vào khoảng năm 2000-2002, Bộ GD&ĐT đã ban hành 1 chương trình Tin học tự chọn
cho cấp THCS. NXBGD cấp tốc viết SGK và bắt đầu từ những năm 2007-2008, học
sinh cấp THCS bắt đầu được học môn Tin học (tự chọn) với các module kiến thức
tương đối rời rạc như Làm quen máy tính, hệ điều hành, soạn thảo văn bản, phần mềm
học tập, lập trình Pascal, mạng Internet và trình chiếu.

2|CS4S 3(5)-2017
Khoảng năm 2008-2010, SGK Tin học cho Tiểu học ra đời như 1 môn học tự chọn với
các module kiến thức như làm quen máy tính, tập chuột, học gõ bàn phím bằng 10
ngón, học vẽ, học soạn thảo, phần mềm học tập, LOGO, ....
Như vậy cho đến hiện nay môn Tin học đã phủ kín toàn bộ các cấp học từ Tiểu học,
THCS, THPT nhưng vẫn là những module rời rạc, không liên thông vì chưa là môn
học bắt buộc với cấp 1 và 2. Các nhược điểm này không chỉ có ở Việt Nam mà có ở
tất cả các nước trên thế giới. Theo 1 công bố của Bộ GD Anh quốc nếu cứ tiếp tục dạy
Tin học như hiện nay thì nên đóng cửa môn Tin học lại.
Vào khoảng năm 2010-2012, một số nhà giáo dục tại Anh và Mỹ đã đề xuất 1 chương
trình cải cách triệt để việc dạy Tin học trong nhà trường. Có thể nói việc cải cách này
như 1 cuộc cách mạng. Theo cách thay đổi này, môn Tin học sẽ có 1 cái tên mới, nội
dung mới, liên thông, chặt chẽ, logic, xuyên suốt từ lớp 1 đến lớp 12.

II. CẤU TRÚC VÀ NỘI DUNG MÔN TIN HỌC HIỆN THỜI
Như vậy cho đến khoảng năm 2008, môn Tin học trong nhà trường Việt Nam đã hình
thành với toàn bộ chương trình và SGK phủ kín từ lớp 3 đến 12. Tuy nhiên chương
trình cho cấp Tiểu học và THCS là tự chọn, điều đó có nghĩa là không phải tất cả HS
đều được học môn học này liên tục từ lớp 3 đến lớp 12.
Có thể điểm qua toàn bộ các module kiến thức chính của môn Tin học trong trường
phổ thông của Việt Nam là:
Tiểu học THCS THPT
Cấu trúc máy tính. Máy tính, hệ điều hành. Máy tính, hệ điều hành.
Tập chuột, tập gõ bàn Mạng Internet. Mạng máy tính. Mạng
phím. Soạn thảo văn bản. Internet.
Học vẽ. Bảng tính. Soạn thảo văn bản.
Học nhạc. Trình chiếu. Lập trình Pascal.
Soạn thảo văn bản. Lập trình Pascal. CSDL Access.
LOGO Phần mềm học tập.
Phần mềm học tập.

Lưu ý rằng chương trình môn học này tại các nước khác trên thế giới cũng gần tương
tự như vậy.
Trong 1 tài liệu của các chuyên gia giáo dục Anh quốc (cuốn shutdown or restart), các
tác giả đã phân tích sự tụt hậu của chương trình môn Tin học tại nước Anh như sau
(tóm tắt):
- Rời rạc, không liên thông, không liền mạch.
- Không đủ cơ sở vật chất hỗ trợ giảng dạy.
- Không khoa học hoặc rất khó xác định tính khoa học chặt chẽ và mạch chính của
kiến thức.
- GV dạy không hứng thú, không có động lực để học thêm, đào sâu thêm kiến thức.

3|CS4S 3(5)-2017
- HS học nhàm chán vì kiến thức công nghệ bị lạc hậu với thực tế.
Chú thích thêm:
- Tại nước Anh tên môn học này gọi là ICT và được coi là 1 cái tên không hợp lý vì
nó rất dễ nhầm lẫn với tên 1 hệ thống thông tin.
- Riêng ở VN, môn Tin học trong suốt thời gian qua là môn phụ, không thi ở bất cứ
cấp học nào, vì vậy HS và GV càng không có động lực để học, dạy môn học này.
Do vậy môn Tin học đứng trước thách thức rất lớn là cần thay đổi. Nhưng thay đổi
như thế nào? Theo hướng nào? Thay đổi để làm sao khắc phục được các khuyết điểm
trên? Tất cả những vấn đề đó đều rất rất khó giải quyết. Không phải các chuyên gia,
các nhà giáo không biết những điều trên, họ biết hết nhưng lực bất tòng tâm. Vấn đề
lớn nhất là công nghê liên quan đến CNTT, ICT phát triển quá nhanh, trong khi khoa
học lõi của ngành này lại không thể hoặc chưa thể đưa xuống dạy cho HS từ nhỏ tuổi.
Một trong những tài liệu đầu tiên đề cập tới vấn đề này là cuốn sách Shutdown or
restart mà tôi nhắc đến ở trên. Cuốn này được viết năm 2012 và là tiền đề để nước
Anh là quốc gia đầu tiên thực hiện cuộc cách mạng thay đổi hoàn toàn môn Tin học
trong nhà trường. Trong cuốn sách đó, lần đầu tiên các chuyên gia đã phân loại chính
xác 3 hướng nội dung chính của kiến thức Tin học trong trường học. Việc phân loại
này sẽ giúp các nhà quản lý và chuyên gia GD hiểu rõ hơn và định hướng được tương
lai của môn học này. Phân loại nội dung trong cuốn sách đó như sau:
Toàn bộ kiến thức cần học của Tin học sẽ được chia làm 3 nhóm chính:
1. CS (computer science): Khoa học máy tính.
2. IT (infomation technology): CNTT và ứng dụng.
3. DL (digital literacy): Học vấn số hóa phổ thông.
Tóm tắt như sau.
CS - Khoa học máy tính: Xử lý số, tư duy giải quyết vấn đề, thiết lập chương trình,
thuật toán, tư duy máy tính.
IT - CNTT và ứng dụng: Sử dụng công nghệ xử lý số, phần mềm để ứng dụng và tạo
ra các sản phẩm số. Ví dụ đồ họa, phim, ảnh, ứng dụng trong các công việc đời sống.
DL - Học vấn số hóa phổ thông: Các kỹ năng cơ bản, tối thiểu cần có trong thời đại số
hóa, ví dụ: Kỹ năng sử dụng chuột, gõ bàn phím; Soạn thảo văn bản, bảng tính, trình
chiếu; Khai thác Internet. Sử dụng thư điện tử và mạng xã hội.
Chú ý: Trong 3 hướng trên chỉ có CS là nội dung có tính khoa học chặt chẽ nhất, liên
thông, liên tục, không bị lạc hậu nhanh với công nghê. Cũng theo sách trên, CS phải là
hướng trọng tâm nhất, quan trọng nhất trong định hướng môn Tin học tương lai.
Chúng ta cùng phân loại lại các nội dung đã có trong chương trình môn Tin học hiện
nay:
1. Tiểu học
Cấu trúc máy tính (IT).
Tập chuột, tập gõ bàn phím (DL).

4|CS4S 3(5)-2017
Học vẽ (IT).
Học nhạc (IT).
Soạn thảo văn bản (DL).
LOGO (CS).
Phần mềm học tập (IT)
2. THCS
Máy tính, hệ điều hành (CS).
Mạng Internet (DL).
Soạn thảo văn bản (DL).
Bảng tính (DL).
Trình chiếu (DL).
Lập trình Pascal (CS).
Phần mềm học tập (IT).
3. THPT
Máy tính, hệ điều hành (CS).
Mạng máy tính. Mạng Internet (DL).
Soạn thảo văn bản (DL).
Lập trình Pascal (CS).
CSDL Access (IT).
Như vậy trong chương trình môn Tin học hiện nay, phần lớn kiến thức được dạy cho
HS là mảng IT và DL, mảng kiến thức lõi nhất là CS hầu như không có. Điều này lý
giải vì sao môn Tin học không trở thành môn học quan trọng và hấp dẫn HS và GV
như thời gian qua.
Nhưng liệu có thể thay đổi được điều đó trong tương lai không? Câu trả lời sẽ có trong
các phần tiếp theo.
III. Môn Tin học sẽ phải thay đổi như thế nào
Chúng ta đã biết định hướng kiến thức môn Tin học trong tương lai được chia làm 3
nhóm sau:
1. Khoa học máy tính (CS - Computer Science).
2. CNTT và ứng dụng (IT - Information Technology).
3. Kỹ năng số hóa phổ thông (DL - Digital Literacy).
Trong phần trước tôi cũng phân tích chương trình môn Tin học hiện nay so sánh với 3
định hướng trên, qua đó sơ bộ đánh giá những điểm tụt hậu của chương trình môn Tin
học hiện nay.

5|CS4S 3(5)-2017
Bây giờ chúng ta sẽ cùng nhau phân tích và tìm hiểu sâu hơn về 3 nhóm (hướng, phân
loại) nội dung trên. Từ đó sẽ xác định được hướng đi của môn Tin học trong tương lai.
Các phân tích sau đây không phải là mặc định tự nhiên có, mà nó được tích lũy, định
hình sau 1 thời gian dài triển khai giảng dạy môn Tin học trên thực tế. Việc phát hiện
và tách nội dung kiến thức môn Tin học thành 3 hướng như trên (CS, IT, DL) là:
1. Kỹ năng số hóa phổ thông (DL - Digital Literacy).

Có thể hiểu đơn giản Kỹ năng số hóa phổ thông (DL) là các kỹ năng cơ bản giúp học
sinh có thể sử dụng máy tính và các thiết bị máy tính tương ứng một cách an toàn,
hiệu quả. Nếu so sánh với môn học tiếng Việt (hay ngoại ngữ) chẳng hạn thì DL sẽ
tương ứng với các kỹ năng đọc, viết tối thiểu ban đầu. Còn nếu so sánh với môn Toán
thì DL sẽ là các kỹ năng đọc, đếm số cơ bản.
Vậy có thể liệt kê các kỹ năng tối thiểu cần có của mỗi học sinh đối với môn Tin học
sẽ là:
- Kỹ năng thực hành chuột, gõ bàn phím.
- Kỹ năng sử dụng máy tính đơn giản.
- Kỹ năng soạn thảo văn bản.
- Kỹ năng trình chiếu.
- Kỹ năng dùng bảng tính để thiết lập dữ liệu đơn giản.
- Kỹ năng tra cứu Internet, nhận và gửi thư điện tử.
- Kỹ năng sử dụng các dịch vụ mạng xã hội đơn giản.
Nhóm Kỹ năng số hóa phổ thông (DL) không phải là kiến thức mà chỉ đơn giản là
tập hợp các kỹ năng tối thiểu mà mỗi học sinh cần biết.
Các bạn lưu ý rằng những "kỹ năng" tối thiểu nêu ở trên có rất nhiều trong chương
trình môn Tin học hiện thời như là những "kiến thức" tin học cơ bản. Điều này trong
tương lai phải dần loại bỏ.
2. Sự khác nhau giữa 2 định hướng CS và IT

Chúng ta vừa tìm hiểu nhóm thứ nhất, DL - kỹ năng số hóa phổ thông. 2 nhóm còn lại
(CS, IT) thì khó phân biệt hơn vì chúng đều là những kiến thức thực sự của môn Tin
học, được dạy trên khắp tất cả các quốc gia. Để hiểu rõ hơn 2 định hướn này chúng ta
bắt đầu bằng việc so sánh giữa chúng.
2.1. So sánh định hướng nội dung giữa CS và IT
Bảng sau so sánh phần kiến thức, nội dung dự kiến của 2 hướng CS và IT. Phần nội
dung này chỉ là phác thảo tạm thời, chưa chính thức và đầy đủ. Mục đích của các bảng
này để chúng ta cảm nhận được sự khác nhau rõ rệt giữa 2 hướng nội dung này mà từ
xưa đến nay ít để ý đến.

6|CS4S 3(5)-2017
IT - CNTT và ứng dụng CS - Khoa học máy tính
Định hướng này bao gồm sử dụng một Định hướng CS trong môn Tin học được
cách hiệu quả, sáng tạo các hệ thống ứng mô tả bởi các tính chất quan trọng sau:
dụng CNTT có sẵn vào nhu cầu công 1- Là 1 tập hợp ý tưởng, quan niệm
việc cụ thể. Ví dụ: thống nhất, chặt chẽ, logic của 1 môn
- Sử dụng các phần mềm có sẵn để tạo ra học. Ví dụ các quan niệm như Chương
các dữ liệu, thông tin phục vụ nhu cầu cụ trình; Thuật toán; Cấu trúc dữ liệu; Kiến
thể như học tập, vui chơi, giải trí. trúc hệ thống.
- Thiết kế và cài đặt các hệ thống thông 2- Là 1 tập hợp các kỹ thuật, kỹ năng
tin dữ liệu dựa trên các ứng dụng CNTT logic chặt chẽ, có phát triển từ thấp đến
có sẵn để tạo ra được các hệ thống trợ cao. Ví dụ kỹ thuật lập trình, thuật toán,
giúp công việc. kiểm thử, sửa lỗi chương trình.
3- Có 1 hệ thống tư duy độc lập, riêng
biệt của môn học. Ví dụ tư duy máy tính,
tư duy thuật toán, tư duy giải quyết vấn
đề, ….
4- Có tính chất bền vững với thời gian.
Chú ý rằng tính chất này không thể đúng
với IT vì CNTT phát triển rất nhanh nên
không có 1 hệ thống nào bền vững với
thời gian.
5- Hệ thống lý thuyết độc lập với công
nghệ. Ví dụ hệ thống các ngôn ngữ lập
trình, thuật toán, …. đều độc lập với kỹ
thuật và công nghệ cụ thể.
5 đặc điểm trên xác định hướng nội dung
của nhánh nội dung CS trong môn Tin
học.

2.2. So sánh định hướng tổng quát giữa CS và IT


Cả 2 hướng CS, IT đều mang ý nghĩa kiến thức cơ bản trong mô hình môn Tin học
của tương lai. Nhưng giữa chúng có sự khác biệt đáng kể, thậm chí ngược nhau, bù trừ
cho nhau. Bảng sau phác thảo sự khác nhau cơ bản đó giữa 2 hướng nội dung CS và
IT.
IT - CNTT và ứng dụng CS - Khoa học máy tính
Hệ thống máy tính được sử dụng như thế Hệ thống máy tính được hoạt động, làm
nào. việc như thế nào.
Con người là trung tâm của môn học. Máy tính là trung tâm của môn học.

7|CS4S 3(5)-2017
IT - CNTT và ứng dụng CS - Khoa học máy tính
Tập trung, quan tâm đến sự phát triển Tập trung, quan tâm đến tư duy thuật
của hệ thống hướng tới nhu cầu người sử toán, đến cách mà vấn đề có thể phân rã
dụng. thành các bài toán, vấn đề nhỏ hơn để
giải quyết.
Quan tâm đến việc sử dụng các phần Quan tâm đến việc thiết kế các hệ thống,
mềm, hệ thống đã có để đáp ứng nhu cầu phần mềm mới.
hiện tại.
Nhấn mạnh việc lựa chọn, đánh giá sử Nhấn mạnh đến các nguyên lý và kỹ
dụng phần mềm trong công việc. thuật của hệ thống, phần mềm. Lập trình
luôn đóng vai trò trung tâm của các vấn
đề quan tâm.
Hệ thống ứng dụng CNTT phải hỗ trợ Các ứng dụng thực tế cần được xây dựng
hoạt động của con người hay tự động thông qua các tư duy của "máy tính".
hóa hoạt động của con người. Thông qua tư duy này chúng ta sẽ hiểu
được thế giới tự nhiên như bản chất nó
có, nhưng theo cách tư duy riêng của
chúng ta, thông qua máy tính.
Định hướng ứng dụng, nghề nghiệp. Định hướng chuyên nghiệp, hàn lâm.

3. Định hướng kiến thức CS - Khoa học máy tính có tính chất STEM rất
điển hình

Trong 3 định hướng trên của môn Tin học, chỉ có duy nhất CS - Khoa học máy tính
là có tính chất STEM rất điển hình. Sau đây là các lý do:
- Hướng kiến thức này dựa trên một hệ thống cơ sở lý luận toán học chặt chẽ, logic và
hoàn thiện.
- Trọng tâm của CS là phần kiến thức lập trình, một kỹ năng đòi hỏi quá trình thiết kế,
xây dựng, kiểm thử và đánh giá các tiêu chuẫn kỹ thuật.
- Khoa học máy tính yêu cầu và có liên quan rất nhiều đến sự hiểu biết, ứng dụng,
đánh giá các công nghệ của nhiều chuyên ngành khác nhau.
- Khoa học máy tính là khoa học gắn liền với thực nghiệm và đo đạc số liệu một cách
khoa học.
4. Quan hệ giữa CS, IT và DL

Qua những phân tích trên chúng ta tạm thời đi đến 1 số kết luận sau:
- Nhóm DL - kỹ năng số hóa phổ thông không nằm trong danh mục kiến thức môn
Tin học, mà chỉ là những yêu cầu, kỹ năng tối thiểu nhất mà mỗi HS cần biết để có thể
bắt đầu học các kiến thức chính của Tin học một cách an toàn, hiệu quả nhất. Các kỹ
năng này cần được trang bị cho HS ngay từ cấp Tiểu học, ngay từ lớp 1, cố gắng kết

8|CS4S 3(5)-2017
thúc trong giai đoạn THCS. HS có thể được trang bị các kỹ năng này ngoài giờ lên
lớp, ở gia đình, trong các tiết ngoại khóa.
Tuy nhiên khác với nhiều môn học khác, các kỹ năng này sẽ được học xen kẽ với các
nhóm kiến thức còn lại của Tin học.
- CS và IT là 2 mảng kiến thức bắt buộc cần dạy cho HS ngay từ cấp Tiểu học, ngay
từ lớp 1. Hai nhóm kiến thức này là độc lập với nhau, gần như bổ sung cho nhau và có
nhiều cách tiếp cận, định hướng khác nhau hoàn toàn. Giáo viên Tin học cần hiểu rõ
điều này khi giảng dạy. Các chuyên gia thiết kế chương trình môn Tin học cần vạch rõ
những sự khác biệt này giữa 2 hướng trên trong quá trình thiết kế của mình.
- Các mạch kiến thức DL và IT có thể chồng lấn nhau, phụ thuộc vào thực tế cơ sở
vật chất máy tính trong nhà trường, thực tế triển khai và trình độ giáo viên.
5. Phân môn Khoa học máy tính (CS - Computer Science) trong môn Tin
học

Như vậy chắc chắn sẽ hình thành khái niệm, hay phân môn Khoa học máy tính trong
lòng môn Tin học của tương lai.
Tương lai. kiến tức môn Tin học trong trường phổ thông sẽ được phân tách thành 3
hướng (phân môn) chính:
1. Khoa học máy tính (CS - Computer Science).
2. CNTT và ứng dụng (IT - Information Technology).
3. Kỹ năng số hóa phổ thông (DL - Digital Literacy).
Khoa học máy tính
CS

Kỹ năng số hóa
Ứng dụng CNTT -
IT DL phổ thông
truyền thông

Trong đó, chắc tất cả đều hiểu: phân môn Khoa học máy tính sẽ làm quan trọng nhất,
đóng vai trò trung tâm, cốt lõi của môn Tin học.
Trong 3 hướng này, IT và DL là những nội dung mà giáo viên Tin học hiện nay vẫn
đang giảng dạy, do đó sẽ không có gì bỡ ngỡ. Riêng hướng CS là hoàn toàn mới và
hoàn toàn khác biệt so với hiện nay.
Do vậy để có thể đáp ứng nhu cầu tương lai của môn Tin học, các giáo viên tin cần
phải thay đổi rất nhiều, tự trang bị cho mình những kiến thức cần thiết, đặc biệt với
nhánh kiến thức (phân môn) Khoa học máy tính của môn Tin học trong tương lai.
Hiện nay Bộ GD & ĐT vẫn đang hoàn thiện khung chương trình đổi mới giáo dục sau
năm 2018 nên chưa thể biết rõ cụ thể các thay đổi chi tiết của môn Tin học. Tuy vậy
căn cứ vào xu thế chung của thế giới có thể dự đoán được 1 phần những thay đổi này.

9|CS4S 3(5)-2017
Để các giáo viên Tin học có thể hình dung trước những gì sẽ thay đổi trong tương lai
đối với môn Tin học, tôi sẽ lược dịch nhanh khung Chương trình phân môn Khoa học
máy tính (CS - Computer Science) trong Chương trình môn Tin học hiện tại của nước
Anh. Anh là quốc gia đi tiên phong trong việc đổi mới hoàn toàn chương trình môn
Tin học theo hướng phân loại rõ ràng và đưa nội dung Khoa học máy tính vào nhà
trường phổ thông ngay từ bậc Tiểu học.

IV. KHUNG CHƯƠNG TRÌNH MÔN TIN HỌC, PHÂN MÔN


KHOA HỌC MÁY TÍNH (Anh quốc)
1. Các khái niệm chính của định hướng Khoa học máy tính
Đây là những khái niệm, thuật ngữ, định nghĩa, vấn đề chính của phân môn Khoa học
máy tính. Các vấn đề ở đây được nhóm và phân loại theo hướng chung, tổng quát. Có
5 nhóm khái niệm chính như sau.
- Ngôn ngữ, máy tính, tính toán.
- Dữ liệu số và biểu diễn dữ liệu.
- Tương tác và truyền thông.
- Thiết kế và trừu tượng hóa.
- Các mô hình mở.
Chúng ta sẽ cùng tìm hiểu chi tiết hơn các nhóm khái niệm này.
1.1. Ngôn ngữ, máy tính, tính toán

Nhóm này bao gồm các khái niệm sau:


(a) Ngôn ngữ lập trình
Ngôn ngữ lập trình ở đây được hiểu là các ngôn ngữ lập trình từ bậc thấp đến bậc cao
được sử dụng rộng rãi trên toàn thế giới hiện nay. Các chuyên gia giải quyết các bài
toán của mình bằng cách viết code chương trình trên 1 ngôn ngữ lập trình nào đó. Vậy
có thể hình dung Ngôn ngữ lập trình chính là "ngôn ngữ" của Khoa học máy tính.
Những ngôn ngữ lập trình kéo thả mới nhất như Scratch, Code.org, Snap, Kodu, …
cũng được xếp vào nhóm Ngôn ngữ lập trình.
(b) Thuật toán
Thuật toán được hiểu là các phương pháp để giải quyết vấn đề trong môi trường máy
tính, khoa học máy tính. Thuật toán được thể hiện bằng chương trình và được viết
bằng các ngôn ngữ lập trình khác nhau. Các phương pháp giải bằng thuật toán là một
trong những nội dung kiến thức quan trọng nhất của Khoa học máy tính.
(c) Máy tính toán
Máy tính toán được hiểu là các bộ máy, thiết bị trực tiếp thực hiện các công việc tính
toán, xử lý số, … Ví dụ điển hình của máy tính toán là CPU. Máy tính toán cũng có
thể được thiết lập ảo, ví dụ các Máy ảo Java, Máy tính ảo, …. Các môi trường lập

10 | C S 4 S 3 ( 5 ) - 2 0 1 7
trình, chạy chương trình trực tiếp, ví dụ như Scratch, cũng được coi là các máy tính
toán.
(d) Mô hình tính toán
Có các mô hình tính toán như tính toán tuần tự (tại 1 thời điểm chỉ thực hiện được 1
lệnh) hoặc tính toán song song (tại 1 thời điểm có thể thực hiện đồng thời nhiều lệnh).
1.2. Dữ liệu số và biểu diễn dữ liệu

Một trong những thông số quan trọng của các máy tính là cách thức chúng có thể lưu
trữ và xử lý dữ liệu số lớn, nhanh, an toàn như thế nào. Các khái niệm liên quan đến
lĩnh vực này bao gồm:
- Dữ liệu được thể hiện như thế nào, ví dụ thể hiện bằng số, chữ, mẫu hình ảnh, âm
thanh, video, …
- Dữ liệu được lưu trữ và kết xuất như thế nào, ví dụ các khái niệm liên quan như nén
dữ liệu; kiểm tra lỗi; mã hóa và giải mã thông tin.
- Dữ liệu được tổ chức như thế nào, theo cấu trúc gì, ví dụ như retational database.
- Các dữ liệu, số đo analog (ví dụ nhiệt độ, áp suất, mật độ ánh sáng, âm thanh) được
biến đổi sang dữ liệu số (digital data) như thế nào.
1.3. Tương tác và truyền thông

Máy tính về bản chất là các thiết bị có tương tác hoặc là các thiết bị hỗ trợ tương tác,
truyền thông giữa người - người hoặc người - máy tính hoặc giữa các máy tính với
nhau. Các khái niệm chính trong lĩnh vực này bao gồm:
- Hầu hết các chương trình đều được xây dựng trên cơ sở các quá trình có phản ứng
(reactive processes). Cụ thể là các hành động (action) được thực hiện dựa trên sự
kiện (event). Mô hình nhỏ nhất của các quá trình này đều có mẫu chung là đầu vào
 xử lý  đầu ra (input  process  output).
- Các quá trình phản ứng như vậy được thiết kế và chạy rất khác nhau trong các hệ
thống khác nhau, có thể chạy vô hạn và cũng có thể dừng theo điều khiển.
- Máy tính và thiết bị kết nối, nói chuyện với nhau thông qua giao thức (protocols), ví
dụ TCP/IP hoặc HTTP thông qua các HTML tags.
- Dữ liệu truyền thông trên các giao thức đó có thể hỗ trợ các chuyển mạch gói và
định tuyến (packet switching and routing). Dữ liệu giao tiếp được chứng thực
(authentication) và bảo mật tính riêng tư (privacy).
- Mạng máy tính (network) là một tập hợp máy tính được kết nối để chia sẻ dữ liệu,
tài nguyên và thiết bị dùng chung. Internet là mạng máy tính toàn cầu lớn nhất hiện
nay.
1.4. Thiết kế và trừu tượng hóa

Trừu tượng hóa (abstraction) là một kỹ thuật rất cơ bản trong quá trình thiết kế, hay
được dùng trong khoa học máy tính khi cần xử lý các hệ thống lớn, phức tạp, có nhiều
tham số. Ý tưởng cơ bản của kỹ thuật trừu tượng hóa là làm ẩn đi những tham số

11 | C S 4 S 3 ( 5 ) - 2 0 1 7
phụ, những công đoạn xử lý, tính toán không quan trọng, mà chỉ cần tập trung
vào các tham số chính nhất, các tính năng quan trọng nhất. Khái niệm trừu tượng
hóa và các kiến thức có liên quan sẽ là một trong những trọng tâm quan trọng của
phân môn Khoa học máy tính trong nhà trường. Chúng ta hãy cùng xét chi tiết hơn.
- Phần cứng máy tính. Chúng ta đều biết rằng về phần cứng máy tính sẽ bao gồm các
thành phần (phần cứng) được ghép nối với nhau (thông qua các kết nối gọi là giao
diện). Ví dụ: bo mạch chủ, CPU lõi, ổ chứng SATA, RAM, ….
- Phần mềm máy tính. Mỗi phần mềm bao giờ cũng được xây dựng từ các lớp trừu
tượng hóa. Ví dụ như kỹ thuật xây dựng các hàm số và thủ tục, được biên dịch và kết
nối thông qua các giao diện. Hay một ví dụ khác khi phần mềm có lời gọi dữ liệu SQL
đến các CSDL quan hệ thực chất là các lệnh đã được trừu tượng hóa, giấu đi các chi
tiết xử lý dữ liệu phức tạp bên trong.
- Mô phỏng mô hình thực tế. Khi mô phỏng các mô hình thực tế chúng ta luôn phải
thực hiện quá trình trừu tượng hóa, bỏ đi các chi tiết, tham số không quan trọng.
- Giao diện (interface). Thiết kế giao diện phần mềm là một ví dụ rõ nữa về khái niệm
trừu tượng hóa. Khi thiết kế giao diện, chúng ta đã bỏ đi tất cả các chi tiết, chỉ để lại
các kết nối dữ liệu quan trọng nhất trên giao diện.
- Khi thiết kế mô hình và làm việc trên mô hình (modelling), thực chất chúng ta đang
làm việc trên kết quả của việc trừu tượng hóa, chỉ làm việc với các tính năng chính mà
bỏ qua các chi tiết.
- Tất cả các quá trình chúng ta vẫn thực hiện trên thực tế như sắp xếp, phân hoạch,
phân loại chính là một dạng của quá trình trừu tượng hóa.
1.5. Các mô hình mở rộng hơn của máy tính và khoa học máy tính

Các hệ thống máy tính hiện nay đóng vai trò rất lớn và là trung tâm của thời đại công
nghệ số hiện đại. Không chỉ có bản thân các hệ thống máy tính, khoa học máy tính
đóng vai trò cầu nối và kết nối với thế giới xung quanh chúng ta. Do vậy phân môn
Khoa học máy tính sẽ có quan hệ rất chặt chẽ với các hệ thống, mô hình mở rộng, lớn
hơn trong xã hội và thế giới tự nhiên xung quanh. Sau đây là một vài vấn đề nảy sinh.
(1) Các vấn đề liên quan đến trí tuệ và ý thức nhân tạo.
Hiện nay khoa học máy tính có hẳn một ngành nghiên cứu gọi là trí tuệ nhân tạo.
Những vấn đề, câu hỏi là liệu con người có thể tạo ra các robot có thể suy nghĩ, trí tuệ,
có nhận thức như con người được hay không.
(2) Mô phỏng hiểu biết về thế giới xung quanh chúng ta.
Khoa học máy tính sẽ giúp con người có thể nhìn ra xa hơn xung quanh, quan sát và
mô phỏng thế giới rộng lớn các vì sao, hành tinh, ngược về điểm bắt đầu của vũ trụ,
hoặc có thể mô tả cấu trúc toàn bộ DNA của con người. Khoa học máy tính sẽ còn có
rất nhiều ứng dụng khác nữa kết nối con người với thế giới xung quanh.
(3) Sáng tạo và bản quyền trí tuệ.
Các vấn đề về sáng tạo và bản quyền trí tuệ này sinh do sự phát triển nhanh của công
nghệ giúp việc sao chép, thể hiện trực tuyến các tác phẩm văn học, nghệ thuật, phim

12 | C S 4 S 3 ( 5 ) - 2 0 1 7
ảnh, ca nhạc trở nên rất dễ dàng. Một câu hỏi được đặt ra là có thể các họa sĩ, nghệ sĩ
có thể hoạt động sáng tác theo "tư duy máy tính" được không? Vấn đề về tác quyền,
bản quyền trí tuệ phần mềm cũng là một câu hỏi lớn. Vai trò của phần mềm tự do mã
nguồn mở trong vấn đề này?
(4) Các vấn đề đạo đức và tinh thần.
Cuối cùng là các câu hỏi, vấn đề liên quan đến đạo đức, nhân phẩm, tinh thần của con
người khi sử dụng máy tính, phần mềm, dữ liệu và chia sẻ chúng trên mạng xã hội.
Khoa học máy tính có thể đóng góp gì vào việc ngăn chặn sự xuống cấp đạo đức, vi
phạm nhân phẩm, tinh thần của xã hội trong lĩnh vực khai thác và sử dụng máy tính
được hay không?
2. Tư duy máy tính: năng lực tư duy quan trọng nhất của CS
Trong phần này sẽ mô tả các năng lực tư duy và kỹ năng cơ bản của học sinh cần nắm
vững trong phân môn khoa học máy tính. Hay nói cách khác phần này sẽ mô tả những
điều mà học sinh cần nắm được, làm được, thực hành được và hiểu rõ sau khi học
phần kiến thức Khoa học máy tính của môn Tin học. Xuyên suốt có thể nói 1 câu:
năng lực tư duy chính của Khoa học máy tính là Tư duy máy tính (computational
thinking).
Trước khi đi vào chi tiết các vấn đề chúng ta cùng tìm hiểu xuất xứ của khái niệm Tư
duy máy tính (computational thinking).
Người đầu tiên nhắc đến cụm từ này là Seymour Papert (29/2/1928 – 31/7/2016),
giáo sư toán đại học MIT đồng thời là tác giả của phần mềm và ngôn ngữ lập trình
LOGO, trong khi muốn đưa việc giảng dạy thuật toán bằng phần mềm này cho học
sinh nhỏ tuổi.
Tác giả GS Jeannette Wing (hiện là phó chủ tịch Microsoft) là người đầu tiên đưa ra
định nghĩa của khái niệm này (tư duy máy tính), như sau:
“… the thought processes involved in formulating problems and their solutions so that the
solutions are represented in a form that can be effectively carried out by an information-
processing agent”.
“The solution can be carried out by a human or machine, or more generally, by
combinations of humans and machines.”
tạm dịch:
"… là các quá trình tư duy bao gồm cả mô tả và lời giải bài toán sao cho lời giải có
thể được thực hiện một cách hiệu quả bởi các tác tử xử lý thông tin".
"Lời giải phải (và có thể) được thực hiện bởi con người hoặc máy tính, hoặc tổng quát
hơn, bởi sự kết hợp (đồng thời) con người và máy tính".
Như vậy tư duy máy tính chính là kỹ năng rất cơ bản để chúng ta có thể hiểu, biết
một cách có lý, logic về thế giới xung quanh dựa trên sức mạnh của máy tính.
Tư duy máy tính ở đây cần được hiểu là nói về khả năng con người có thể làm, chứ
không phải máy tính có thể làm. Ví dụ khi nhắc đến tư duy máy tính người ta thường

13 | C S 4 S 3 ( 5 ) - 2 0 1 7
nhắc đến các khả năng suy nghĩ và làm việc logic, có tính (tối ưu) thuật toán, có thể
lặp lại và có thể trừu tượng hóa.
Trong mô hình phân môn Khoa học máy tính của Tin học, tư duy máy tính cần được
trang bị cho học sinh ngay từ cấp Tiểu học.
Các năng lực, kỹ năng cơ bản của tư duy máy tính bao gồm:
- Trừu tượng hóa.
- Lập trình.
Chúng ta sẽ cùng tìm hiểu chi tiết các kỹ năng trên.
2.1. Trừu tượng hóa: mô hình, phân rã và tổng quát

Khi sử dụng tư duy máy tính để giải quyết 1 bài toán thì vấn đề khó khăn nhất khi độ
phức tạp và độ lớn dữ liệu của bài toán tăng lên. Khi làm 1 bài toán với ít dữ liệu
hoặc số liệu nhỏ thì việc giải khá dễ dàng. Nhưng khi qui mô, độ phức tạp của bài toán
tăng lên thì việc giải sẽ vô cùng khó khăn. Tư duy quan trọng nhất khi giải quyết các
bài toán phức tạp chính là quá trình trừu tượng hóa. Quá trình này có thể được thể
hiện rất đa dạng, dưới nhiều kiểu, dạng khác nhau như mô hình hóa, phân rã thành các
vấn đề nhỏ hơn, hoặc tổng quát hóa một số tham số để mở rộng phạm vi áp dụng.
Trong tất cả các trường hợp, điểm cột lõi là phải giấu đi các chi tiết phức tạp. Xét 1
vài ví dụ:
- Khi thiết kế các tuyến xe buýt 1 sao cho tối ưu trong 1 thành phố, người ta thường
giấu đi tất cả các thông số kỹ thuật và yêu cầu chỉ tiết, chỉ để lại các thông tin cơ bản
nhất, ví dụ 1 bản đồ các đường phố chính.
- Khi đưa ra cho người dùng 1 hàm số đơn giản, ví dụ tính căn bậc 2 của 1 số, hàm
sqrt(x), người thiết kế đã giấu đi các thuật toán phức tạp bên trong của hàm số này khi
tính gần đúng căn bậc 2 của 1 số thực dương x. Người dùng không cần biết tất cả chi
tiết bên trong của hàm số này.
(1) Mô hình hóa (modelling)
Mô hình hóa là quá trình xây dựng một biểu diễn của một vấn đề của thế giới thực,
một hệ thống hoặc một trạng thái quan trọng cần thiết cho một mục đích nào đó. Khi
thực hiện mô hình bao giờ cũng cần lấy ra các thông tin, đặc tính quan trọng nhất của
mô hình thực tế để đưa vào mô hình và bỏ qua các chi tiết ít quan trọng khác.
Ví dụ của mô hình hóa rất nhiều: thiết lập 1 bản đồ đường phố; thiết lập bản đồ địa
hình 1 khu vực trên trái đất; mô phỏng 1 thí nghiệm ảo; mô tả sự chuyển động của con
lắc; ….
Mỗi mô hình được xây dựng có những mục đích khác nhau, đó đó bản thân khái niệm
mô hình và biểu diễn của chúng cũng rất đa dạng, khác nhau.
Một bài toán có thể cần nhiều mô hình. Ví dụ khi thiết kế 1 Website thì cần các mô
hình như: mô hình phân tích bản đồ liên kết website; mô hình thể hiện font chữ cho
các tiêu đề; mô hình thể hiện và phân bổ các thông tin chính trên trang.
Một ví dụ khác khi thiết kế mô hình mô phỏng một hệ thống nào có của thực tế, ví dụ
mô hình Trái Đất quay xung quanh Mặt Trời, mô hình các hành tinh trong hệ Mặt
14 | C S 4 S 3 ( 5 ) - 2 0 1 7
Trời. Trong các mô hình này chỉ giữ lại 1 số ít thông tin quan trọng ví dụ như quĩ đạo
chuyển động, tốc độ chuyển động, … còn lại các thông tin khác sẽ được bỏ qua.
(2) Phân rã (decomposing)
Phân rã là quá trình chuyển, đưa 1 bài toán lớn thành các bài toán nhỏ hơn (và do đó
dễ hơn) để giải. Khi giải xong các bài toán con này thì gộp lại sẽ thu được lời giải bài
toán lớn. Để hình dung đơn giản chúng ta xét 1 ví dụ bài toán chuẩn bị 1 bữa cơm.
Chúng ta sẽ phân rã bào toán này thành các bài toán, công việc nhỏ hơn như:
1- Chuẩn bị gạo - nấu cơm.
2- Chuẩn bị rau - luộc rau.
3- Chuẩn bị các món có chất đạm - làm trứng, thịt.
Khi cả 3 công việc con trên đã hoàn thành thì toàn bộ bài toán chuẩn bị 1 bữa cơm
cũng xong.
Chú ý: các bài toán con (subproblem) cũng có thể lại được phân rã 1 lần nữa thành các
bài toán nhỏ hơn nữa. Ví dụ công việc 3 ở trên có thể phân rã thành 2 việc nhỏ nữa:
rán trứng và kho thịt.
Một ví dụ khác của khái niệm phân rã là bài toán xử lý dữ liệu thống kê dân số của
một khu vực. Người ta đã phân loại thông tin dân số theo các nhóm như thông tin cá
nhân; thông tin vị trí địa lý và các thông tin nghề nghiệp khác. Việc xử lý dữ liệu sẽ
được phân rã thành các bài toán nhỏ hơn khi phân tích riêng các nhóm dữ liệu.
Quá trình phân rã bài toán trong khoa học máy tính đóng vai trò rất quan trọng. Việc
phân rã liên tục được gọi là đệ qui (recursive). Quá trình thực hiện giải bài toán bằng
cách phân rã được gọi là quá trình giải quyết vấn đề từ trên xuống dưới (top-down).
Với rất nhiều bài toán, việc phân rã thành các bài toán con chính là một phần của lời
giải bài toán này. Tuy nhiên nhiều khi cần hiểu ý tưởng phát triển lời giải ngay từ đầu,
mà không cần hoặc chưa cần tiến hành quá trình phân rã bài toán. Ví dụ nhìn vào 1 sơ
đồ khối làm việc của các cấu thành hệ thống (ví dụ 1 hệ thống gồm các máy tính chủ,
máy trạm, hub, máy in với các sơ đồ kết nối giữa chúng) sẽ giúp chúng ta hiểu ngay
hệ thống mà chưa cần tiến hành bất cứ quá trình phân rã nào.
(3) Tổng quát hóa (generalising) và phân loại hóa (classifying)
Tổng quát hóa cũng là 1 phương pháp để giải quyết các vấn đề của sự phức tạp của
vấn đề cần giải quyết. Khi có quá nhiều các dữ liệu, các ví dụ mẫu, tham số, … làm
cho bài toán cần giải trở nên quá phức tạp thì khi đó quá trình tổng quát hóa sẽ có ý
nghĩa. Ví dụ đơn giản nếu chúng ta cần phải thực hiện các công việc cụ thể là vẽ 1
vòng tròn bán kính 3, một vòng tròn khác bán kính 5 và 1 vòng tròn nữa bán kính 7.
Khi đó chúng ta sẽ cố gắng thiết lập một qui trình vẽ vòng tròn với bán kính R bất
kỳ, gọi nó là 1 thủ tục (hay hàm số) với tham số là bán kính R. Khi đó chỉ cần gọi thủ
tục này với các tham số R bằng 3, 5, 7 là xong. Với cách làm như trên, rất nhiều đoạn
chương trình riêng rẽ có thể được viết 1 lần, được kiểm thử 1 lần, viết tài liệu 1 lần và
được hiểu 1 lần.
Một ví dụ khá rõ của phân loại hóa là khả năng của các ngôn ngữ lập trình hướng đối
tượng cho phép tạo ra các lớp. Các lớp cha sẽ mô tả các tính năng chung của đối

15 | C S 4 S 3 ( 5 ) - 2 0 1 7
tượng hiện thời, ví dụ như màu sắc đối tượng. Trong khi đó các lớp con sẽ mô tả các
thuộc tính riêng biệt (ví dụ hình dạng vuông, tam giác hay tròn).
Quá trình tổng quát là quá trình tìm ra các đặc tính chung của mẫu, từ đó sẽ kiểm soát
được một phần sự phức tạp của hệ thống bằng cách chia sẻ các tính chất chung đó.
2.2. Lập trình

Khoa học máy tính tất nhiên rộng hơn lập trình. Tuy nhiên lập trình là quá trình then
chốt, cơ bản nhất và quan trọng nhất của khoa học máy tính. Giảng dạy, truyền đạt kỹ
năng lập trình tốt sẽ rèn luyện, cổ vũ sự sáng tạo, tư duy logic, kỹ năng giải quyết vấn
đề, thái độ lao động chăm chỉ. Rèn luyện lập trình tốt sẽ thúc đẩy cá nhân sáng tạo và
biết cách làm việc trong môi trường nhóm. Tư duy lập trình sẽ giúp học sinh biết trừu
tượng hóa, tổng quát hóa các vấn đề trong cuộc sống, từ đó tạo ra được các kỹ năng
đặc biệt để giải quyết vấn đề.
Trong phân môn Khoa học máy tính, học sinh cần học để biết, nắm vững các yêu cầu
sau liên quan đến lập trình.
(1) Thiết kế và viết chương trình
a. Mỗi học sinh cần được có điều kiện thực hiện liên tục để thực hiện các công việc
thiết kế, viết chương trình, dịch, chạy, kiểm thử và sửa lỗi các chương trình chạy
được (executable programs). Thời gian để thực hiện các công việc trên có thể khác
nhau với từng lứa tuổi và điều kiện thực tế, nhưng bắt buộc phải liên tục. Ở đây
"chương trình chạy được" được hiểu theo nghĩa rộng, phụ thuộc vào công cụ, phần
mềm và ngôn ngữ mà học sinh được học.
Ví dụ các công việc sau đều có thể gọi là lập trình.
- Thiết lập chương trình bởi các ngôn ngữ nhỏ, riêng biệt, ví dụ qui trình điều khiển
robot, lắp ráp LEGO, điều khiển Rùa trong LOGO.
- Các ngôn ngữ kéo thả ví dụ Scratch, Kodu, Alice, Snap, ….
- Các ngôn ngữ bậc cao dạng "văn bản" như Pascal, C, C++, Java, C#, PHP, Python,
Visual Basic, JavaScript, …
- Công thức tính toán trong bảng tính.
Trong mọi trường hợp, điều quan trọng là các khái niệm, kỹ năng tư duy lập trình,
thuật toán chứ không phải bản chất của ngôn ngữ lập trình hay chương trình dịch.
b. Không những chỉ là điều kiện thực hiện viết chương trình, mà khả năng hiểu và
giải thích được chương trình mới là quan trọng nhất. Học sinh nhất thiết phải học
và làm được điều sau đây.
- Thiết kế và viết chương trình sẽ cần phải hiểu được:
+ Tính tuần tự (sequencing): các lệnh phải được thực hiện tuần từ, lệnh này sau 1
lệnh khác.
+ Sự lựa chọn (selection): có thể thực hiện theo cách này hoặc cách khác, ví dụ lệnh
if-then-elsse. Trong ngôn ngữ và tư duy lập trình hay gọi điều này là rẽ nhánh.
+ Khả năng lặp lại (repetition): lặp có điều kiện, lặp vô hạn và lặp chính nó (đệ qui).

16 | C S 4 S 3 ( 5 ) - 2 0 1 7
+ Khả năng trừu tượng hóa (abstraction): có thể tạo ra các khái niệm "trừu tượng"
để có thể dùng lại nhiều lần. Ví dụ thông qua khả năng tạo thủ tục và hàm số với tham
số.
+ Khả năng tạo tương tác trực tiếp với bên ngoài thông qua việc trao đổi vào/ra files
(input/output).
- Tìm và sửa được lỗi trong chương trình.
- Phân tích kỹ lưỡng và sâu sắc chương trình, biết được chương trình dẫn đến kết quả
đúng hay sai, kết quả chương trình có thỏa mãn yêu cầu đề ra hay không.
- Mô tả được thiết kế, ý nghĩa các lệnh (coding), biến nhớ, thủ tục, hàm số và trình
bày lại cho mọi người cùng biết.
(2) Cơ chế trừu tượng hóa
Sử dụng hiệu quả cơ chế trừu tượng hóa khi viết chương trình (ví dụ sử dụng hàm số,
thủ tục, lớp đối tượng, …) đóng vai trò trung tâm và quan trọng nhất khi xử lý các vấn
đề có độ phức tạp lớn. Ví dụ thiết kế các thủ tục chính là quá trình trừu tượng hóa
bằng cách giấu đi các tính toán cụ thể, phức tạp bên trong thông qua một giao diện
đơn giản bên ngoài.
Các quá trình trừu tượng hóa này có thể lồng nhau, chồng lớp lên nhau. Ví dụ: Thủ tục
vẽ hình vuông sẽ gọi các thủ tục vẽ một đoạn thẳng; thủ tục tô màu 1 điểm pixel trên
mặt phẳng sẽ phải gọi thủ tục lấy địa chỉ bộ nhớ của điểm với tọa độ (x, y) trên mặt
phẳng.
Khi sử dụng quá trình trừu tượng hóa bằng cách tạo ra các thủ tục của riêng mình,
hoặc sử dụng các thư viện thủ tục của người khác, học sinh cần hiểu rõ và thành thạo
công việc này. Sau đây là một ví dụ minh họa.
+ Cần nhận ra khi cần phải viết các đoạn chương trình bị lặp lại giống nhau. Ví dụ
lệnh vẽ 1 đường tròn bán kính 7 và 1 đường tròn khác bán kính 5.
+ Thiết kế một thủ tục để tổng quát hóa công việc lặp lại đó. Ví dụ thiết lập thủ tục vẽ
đường tròn bán kính R.
+ Thay thế các đoạn chương trình lặp lại trên bằng cách gọi thủ tục vừa khởi tạo sau
khi thay thế các tham số bằng các giá trị cụ thể, ví dụ R = 7 và R = 5. Quá trình thay
thế đoạn chương trình bằng thủ tục chính là quá trình trừu tượng hóa sau khi áp dụng
các mẫu. Việc thiết kế thủ tục chính là thiết kế các mẫu để được dùng lại nhiều lần.
Ở mức độ cao hơn, việc thiết kế các mẫu để được sử dụng lặp lại nhiều lần khi giải
quyết bài toán đóng vai trò trung tâm của rất nhiều các lớp bài toán. Ví dụ:
+ Khi chúng ta thiết kế chương trình, sử dụng các "mẫu" như biến nhớ, bản ghi, mảng,
danh sách, cây dữ liệu, bảng hash.
+ Các mẫu ở mức cao hơn nữa như: chia để trị, hàng đợi, sắp xếp, tìm kiếm, quay lui,
đệ qui, client/server, bộ nhớ đệm, qui hoạch động, …
(3) Kiểm thử và sửa lỗi chương trình
Khi một chương trình gặp lỗi thì ta phải làm gì để sửa lỗi?

17 | C S 4 S 3 ( 5 ) - 2 0 1 7
Máy tính thường rất lạ, kỳ ảo (nhiều người lập trình vẫn nói vui là trong máy tính có
ma). Máy tính thường hay đưa ra các kết quả kỳ lạ, sai be bét, vô cùng khó hiểu trước
khi nó hoạt động chính xác theo yêu cầu đúng của chương trình.
Thông qua lập trình, học sinh cần phải học được các cơ hội, khả năng và kỹ năng để
có thể tự dự đoán, tìm lỗi và sửa lỗi chương trình. Một số yêu cầu sau là cần thiết cho
công việc này:
- Đọc và hiểu tài liệu của chương trình.
- Giải thích được một đoạn chương trình sẽ chạy như thế nào, hoặc có thể không làm
việc như thế nào.
- Có thể "thực hiện", "chạy" chương trình bằng suy luận (chay), không cần máy tính,
ví dụ chỉ dùng bút và giấy trắng.
- Phân tách, cô lập lỗi bằng các công cụ như tìm vết và kiểm thử.
- Bổ sung thêm chú thích cho các dòng lệnh để làm cho chương trình dễ hiểu hơn.
- Viết bổ sung các đoạn chương trình có nhiệm vụ riêng để tìm lỗi bên trong chương
trình. Thông thường các lỗi này thuộc về logic nội tại của bài toán, lỗi logic, lỗi phá
vỡ tính đồng bộ, nhất quán của chương trình hoặc dữ liệu.
- Tìm được các đoạn code tạo ra lỗi của chương trình.
- Thiết lập và lựa chọn các bộ dữ liệu, bộ test có thể tạo ra lỗi.
Trong chương trình khoa học máy tính dành cho học sinh phổ thông không yêu cầu
học sinh nắm được hay trở thành các nhà viết phần mềm, sản phẩm phần mềm chuyên
nghiệp. Ví dụ các công việc mang tính chuyên nghiệp như viết phân tích yêu cầu đầu
vào, mô tả chức năng thiết kế, tài liệu sản phẩm, kế hoạch kiểm thử, …. sẽ không cần
trang bị cho học sinh.
3. Phân loại kiến thức học sinh cần biết của phân môn Khoa học
máy tính trong trường phổ thông
Trong các phần trên tôi đã viết phần 1, 2 của Khung chương trình phân môn Khoa học
máy tính cho các nhà trường nước Anh.
Phần 1 mô tả các khái niệm cơ bản, định hướng chính của phân môn Khoa học máy
tính trong nhà trường phổ thông (của Anh quốc, không phải Việt Nam).
Phần 2 mô tả những kỹ năng, năng lực mà học sinh cần nắm vững, làm được đối với
phân môn Khoa học máy tính.
Phần này sẽ mô tả chi tiết các nội dung kiến thức học sinh cần được học, cần biết, nắm
vững sau mỗi giai đoạn học tập, được phân loại theo từng nhóm kiến thức. Chúng tôi
sẽ chuyển tương đương sang các cấp học của nhà trường Việt Nam để mọi người dễ
hình dung.
Đây là phần nội dung quan trọng nhất của Đề cương vì nó mô tả chi tiết những kiến
thức định hướng năng lực mà học sinh cần biết sau mỗi giai đoạn học tập, Cách mô tả
này chính là mô tả theo mô hình ĐỊNH HƯỚNG NĂNG LỰC, hoàn toàn mới,
không phải mô hình ĐỊNH HƯỚNG NỘI DUNG mà chúng ta vẫn quen biết. Mô

18 | C S 4 S 3 ( 5 ) - 2 0 1 7
hình ĐỊNH HƯỚNG NỘI DUNG thường mô tả theo các phần, chương, bài hoặc
theo các modules (module mẹ, module con). Còn mô hình ĐỊNH HƯỚNG NĂNG
LỰC thì sẽ liệt kê những yêu cầu mà học sinh cần biết, cần nắm vững và làm được
sau mỗi giai đoạn. Với kiểu mô tả chương trình theo mô hình ĐỊNH HƯỚNG NĂNG
LỰC thì phần nội dung giảng dạy cụ thể sẽ do các giáo viên hoàn toàn chủ động
giảng dạy theo đề cương, giáo án của riêng mình, hoặc theo bộ SGK mà mình đã lựa
chọn.
Trong mô hình giáo dục phổ thông của Anh quốc được chia làm 4 giai đoạn (stage).
Có thể tạm thời tương ứng với mô hình phổ thông của Việt Nam như sau:

Anh quốc Việt Nam (hiện nay) Việt Nam (sau 2018)
Giai đoạn 1 (Stage 1) Các lớp từ 1 đến 2 Các lớp từ 1 đến 3
Giai đoạn 2 (Stage 2) Các lớp 3, 4, 5 Các lớp 4, 5
Giai đoạn 3 (Stage 3) Các lớp THCS Các lớp từ 6 đến 10
Giai đoạn 4 (Stage 4) Các lớp THPT Các lớp 11, 12

Chú ý: Theo mô hình giáo dục phổ thông mới của Việt Nam sau năm 2018 thì Giai
đoạn 3 của Anh quốc có thể tương đương với các lớp học từ 6 đến 10 của Việt Nam.
Vì theo mô hình nền giáo dục Anh, giai đoạn 4 là bắt đầu phân hóa mạnh theo đúng
mô hình các lớp 11, 12 của mô hình GD Việt Nam.

Toàn bộ nội dung kiến thức phần Khoa học máy tính sẽ được chia thành 6 nhóm sau.
- Thuật toán.
- Lập trình.
- Dữ liệu.
- Máy tính và thiết bị.
- Truyền thông và mạng Internet.
- Các chuyên mục nâng cao khác.
Sau đây là mô tả chi tiết.
3.1. Thuật toán

Học sinh cần hiểu được thế nào là thuật toán, và thuật toán được dùng để làm gì.
Lớp 1, 2, 3

- Thuật toán là một dãy các lệnh dùng để thực hiện một nhiệm vụ nào đó, các lệnh này
được xác định trước. Ví dụ thuật toán dùng để trả lời cho câu hỏi: nấu cơm như thế
nào? (bằng cách nào?)

19 | C S 4 S 3 ( 5 ) - 2 0 1 7
- Thuật toán có thể được biểu diễn rất đơn giản, ví dụ có thể viết lên bảng hoặc trên
giấy.
- Các công việc, hoạt động hàng ngày cũng có thể coi là thuật toán. Thuật toán có thể
thực hiện bởi con người hoặc máy tính.
- Thuật toán mô tả cho máy tính thực hiện cần viết chính xác hơn so với các bước
thuật toán cho con người thực hiện.
- Các bước của thuật toán có thể lặp lại và có thể chia thành các bước nhỏ hơn.
Lớp 4, 5

- Thuật toán có thể biểu diễn bằng sơ đồ (ví dụ sơ đồ khối) hoặc sử dụng các lệnh có
qui tắc viết đặc biệt (ví dụ lệnh điều khiển rùa của LOGO).
- Các lệnh của thuật toán có thể có tính năng lựa chọn / rẽ nhánh (if) hoặc lặp (loops).
- Thuật toán có thể chia (phân rã) thành các thành phần con (thủ tục con), mỗi thành
phần như vậy có thuật toán riêng của mình.
- Thuật toán luôn phải được bắt đầu một cách rõ ràng, dễ hiểu, chính xác để tránh tối
đa lỗi có thể phát sinh.
- Thuật toán luôn được thiết kế và phát triển dựa trên một kế hoạch và (có thể) được
kiểm tra. Nếu gặp lỗi khi kiểm tra, thuật toán có thể được điều chỉnh lại.
- Sẽ (có thể) dễ dàng hơn nếu có thể thực hiện việc lên kế hoạch, kiểm thử và điều
chỉnh các thành phần con độc lập của một thuật toán.
THCS

- Thuật toán là một dãy các lệnh chính xác để giải một bài toán, vấn đề cho trước.
- Một bài toán cụ thể có thể được giải bằng nhiều thuật toán khác nhau.
- Sự lựa chọn thuật toán để giải một bài toán cụ thể sẽ phụ thuộc vào các yếu tố sau
theo yêu cầu của lời giải: độ phức tạp của chương trình; thời gian thực hiện; bộ nhớ sử
dụng; yêu cầu dữ liệu; dữ liệu đầu vào và đầu ra theo yêu cầu.
- Cần thiết sự chính xác của cả thuật toán và tổ chức dữ liệu khi giải một bài toán. Ví
dụ cần cả các kiểm tra
THPT

- Sự lựa chọn thuật toán đúng cần phải phụ thuộc cả vào cấu trúc dữ liệu và bản thân
các giá trị cần tính toán của dữ liệu.
- Học sinh cần biết và làm quen với 1 số thuật toán quen thuộc, nổi tiếng. Ví dụ các
thuật toán sắp xếp, tìm kiếm.
- Thuật toán cần được thiết kế sao cho có thể dễ dàng xem lại, đánh giá, kiểm tra và
sửa lại nếu có lỗi.
- Các thuật toán khác nhau sẽ có các hành vi, tính chất, đặc trưng thuộc tính khác nhau
trên cùng một bài toán hoặc trên cùng 1 bộ dữ liệu kiểm thử.

20 | C S 4 S 3 ( 5 ) - 2 0 1 7
3.2. Lập trình

Học sinh cần biết lập trình tối thiểu một ngôn ngữ.
Lớp 1, 2, 3

- Máy tính (ở đây "máy tính" được hiểu bao gồm cả các thiết bị như bộ vi xử lý, hoặc
các thiết bị có thể điều khiển như robot, máy games, PCs) được điều khiển bằng dãy
các lệnh.
- Một chương trình máy tính giống như phần thuyết minh của một câu chuyện. Nhiệm
vụ của máy tính là thực hiện theo đúng thuyết minh đó. Máy tính không tự sáng tạo,
thực hiện theo các lệnh của thuyết minh đó một cách chính xác tuyệt đối.
- Một bài toán cụ thể có thể được thực hiện bằng cách tạo ra chương trình trên máy
tính để giải bài toán đó. Các máy tính có thể cho phép người dùng tự tạo cho riêng
minh các chương trình.
- Máy tính có thể nhận các dữ liệu đầu vào (input), sau đó thực hiện một dãy các lệnh
có sẵn trong máy tính, và đưa kết quả ra (output).
- Các chương trình đều có thể có các lệnh (nhóm lệnh) trùng nhau (lệnh lặp).
Lớp 4, 5

- Một chương trình máy tính là một dãy các lệnh được viết ra để thực hiện (giải) một
nhiệm vụ (bài toán) nào đó.
- Ý tưởng xây dựng một chương trình là thiết lập 1 dãy các lệnh được viết bằng một
ngôn ngữ lập trình nào đó (ví dụ Scratch).
- Có một số cơ chế (qui định) cho phép chọn lệnh thực hiện dựa trên giá trị của một
vài dữ liệu nào đó. Ví dụ lệnh if … then trong Scratch.
- Có một số cơ chế (qui định) cho phép thực hiện lặp lại một dãy lệnh, và sử dụng giá
trị của một số dữ liệu để điều khiển số lần lặp của dãy lệnh được lặp này. Ví dụ các
lệnh repeat, repeat until, … trong Scratch.
- Chương trình có thể mô hình và mô phỏng thực hiện để trả lời cho câu hỏi "Nếu xảy
ra điều này thì sao?" (what if?).
- Chương trình có thể được thiết lập bằng các công cụ kéo thả (visual). Một chương
trình có thể được thực hiện với các kiểu dữ liệu khác nhau. Chương trình có thể sử
dụng nhiều loại lệnh điều khiển khác nhau. Ví dụ các lệnh chọn (rẽ nhánh) hay tạo thủ
tục.
- Chương trình sẽ được phát triển dựa trên kế hoạch xây dựng và kiểm thử (test). Nếu
kiểm thử bị sai thì chương trình sẽ được sửa lại cho đúng.
- Cách mà một chương trình sẽ chạy như thế nào (thể hiện như thế nào) cần được lên
kế hoạch trước.
- Một chương trình được viết tốt có nghĩa là nó sẽ thuyết minh tốt cho người đọc và
cho chương trình chạy, theo nghĩa cả dòng lệnh (code) và tài liệu cho con người có thể
đọc.

21 | C S 4 S 3 ( 5 ) - 2 0 1 7
- Một trang web được xây dựng bằng các lệnh HTML (HTML script) để hiển thị nội
dung trên trang. Các trình duyệt cũng có thể hiển thị bởi các lệnh lập trình khác.
- Máy tính có thể lập trình sao cho nó sẽ trả lời (phản ứng) một cách "thông minh" bởi
các dữ liệu đầu vào (input).
THCS

- Chương trình là một dạng hoạt động để giải toán (problem-solving activity). Sẽ có
nhiều chương trình khác nhau cùng để giải 1 bài toán.
- Biến nhớ và gán giá trị cho biến nhớ.
- Chương trình có thể làm việc với nhiều dạng, kiểu dữ liệu khác nhau, ví dụ số tự
nhiên, ký tự, xâu ký tự.
- Biết sử dụng hợp lý các phép toán và logic để điều khiển lệnh nào sẽ được thực hiện
và thực hiện theo thư tự nào.
+ Biết cách sử dụng phép toán logic AND, OR, NOT.
+ Biết cách phép tính phủ định sẽ ảnh hưởng thế nào đến các phép tính khác, ví dụ
NOT(a>b) = a<=b.
- Trừu tượng hóa bằng cách thiết lập hàm số và thủ tục (biết cách định nghĩa và cách
gọi lệnh), trong đó:
+ Hàm và thủ tục có thể chứa tham số.
+ Lập trình thực hiện nhiều lởi gọi hàm (thủ tục).
- Biết viết tài liệu mô tả và giải thích chương trình chạy như thế nào.
- Hiểu được sự khác nhau giữa lỗi của chương trình do cú pháp lệnh, và lỗi chương
trình do lập trình sai ý nghĩa (mục đích). Biết cách tìm được và sửa cả 2 loại lỗi
chương trình này.
THPT

- Có thể tính toán trực tiếp các biểu thức logic (không dùng máy tính).
- Sử dụng mảng 2 chiều (hoặc cao hơn).
- Lập trình bằng ngôn ngữ lập trình bậc thấp. [* chú ý: ở VN thì điều này nên thay
bằng biết lập trình bằng ngôn ngữ lập trình bậc cao.]
- Lập trình cho thủ tục gọi chính nó (đệ qui), có thể nhiều mức gọi lồng nhau. Trìu
tượng hóa lớp này trên lớp khác.
- Chương trình có thể đọc và ghi dữ liệu từ tệp, ra tệp.
- Viết tài liệu mô tả kết quả lập trình và giải thích chương trình sẽ chạy như thế nào.
3.3. Dữ liệu

Mỗi học sinh cần hiểu máy tính biểu diễn dữ liệu như thế nào.

22 | C S 4 S 3 ( 5 ) - 2 0 1 7
Lớp 1, 2, 3

- Thông tin có thể được lưu trữ và tương tác dưới nhiều dạng, ví dụ số, chữ, hình ảnh,
phim.
- Máy tính sử dụng chuyển đổi (công tắc) nhị phân (on/off) để lưu trữ thông tin. Có
thể hiểu đơn giản, máy tính dùng 2 chữ số 0, 1 để lưu trữ thông tin.
- Với hệ số đếm nhị phân có thể trả lời nhiều thông tin quan trọng. Ví dụ: có mặt hay
vắng mặt, đồng ý hay phản đối, cao hay thấp, nam hay nữ, đen hay trắng, ….. Số nhị
phân có thể dùng cho việc ra quyết định.
Lớp 4, 5

- Thông tin tương tự có thể thể hiện nhiều lần.


- Nhập môn về hệ đếm nhị phân (thể hiện tên, đối tượng, ý tưởng bằng dãy các chữ số
0 và 1).
- Sự khác nhau giữa hằng số và tham biến trong chương trình.
- Sự khác nhau giữa dữ liệu và thông tin.
- Dữ liệu có cấu trúc được lưu trữ dưới dạng bảng với các hàng và cột. Dữ liệu trong
bảng có thể sắp xếp theo thứ tự. Bảng dữ liệu có thể được tìm kiếm để trả lời theo các
dạng câu hỏi khác nhau. Tìm kiếm dữ liệu trong bảng có thể theo một hoặc nhiều cột.
- Dữ liệu có thể chứa lỗi và nó ảnh hưởng đến quá trình tìm kiếm và các kết luật của
công việc tìm kiếm đó. Lỗi có thể được giảm bớt hoặc loại bỏ bằng các công cụ kiểm
tra và xác nhận.
- Thông tin cá nhân cần được nhập chính xác, lưu trữ bảo mật, hạn chế sử dụng với
các mục đích khác nhau và cần được đối xử tôn trọng.
THCS

- Nhập môn tính toán nhị phân (bằng tay, không dùng máy tính).
- Biểu diễn (nhị phân) của:
+ Số nguyên không dấu.
+ Chữ. (Ví dụ: mỗi ký tự được biểu diễn bằng 1 mẫu bit. Biểu diễn chỉ mang tính hình
thức, ví dụ các mẫu ASCII, ký hiệu Morse).
+ Âm thanh. Ví dụ cả 2 loại: chuyển đổi từ dạng tương tự sang dạng số (analogue 
digital), ví dụ WAV, và dạng tự do MIDI.
+ Hình ảnh (ví dụ bitmap) và video.
- Nhiều loại đối tượng khác nhau có thể được biểu diễn như nhau, hoặc như các
chuyên gia vẫn nói "ý nghĩa của một mẫu bít nằm trong mắt của người tạo ra nó". Ví
dụ một dãy bit có thể là biểu diễn của một tệp ảnh BMP, hoặc một tệp bảng dữ liệu;
một số nhị phân 8-bit có thể là biểu diễn của một ký tự hoặc là biểu diễn của một số.

23 | C S 4 S 3 ( 5 ) - 2 0 1 7
- Thông tin trong thế giới thực mà chúng ta nhìn thấy khác với cách mà máy tính xử
lý, do vậy cần sự chuyển đổi theo cả 2 chiều. Ví dụ cần biết âm thanh wav sẽ được
chuyển đổi sang dạng MP3 như thế nào và ngược lại.
- Thông tin trên thực tế có rất nhiều cách thể hiện trên máy tính. Ví dụ một bài hát có
thể thể hiện trên máy tính như sau:
+ Hình ảnh chụp của bản nhạc bài hát.
+ Tệp MIDI ghi lại các nốt nhạc.
- Tệp WAV hoặc MP3 ghi lại thể hiện thực của bài hát.
- Các thể hiện khác nhau của thông tin trong máy tính để đạt các mục đích khác nhau.
Ví dụ với mục đích dễ tìm kiếm, chỉnh sửa, tiết kiệm dung lượng, bảo mật.
THPT

- Hệ hexadecimal.
- Bù 2 của số nguyên có dấu (two’s complement signed integers).
- Xử lý xâu ký tự.
- Nén dữ liệu. Các thuật toán nén dữ liệu lossless và lossy (ví dụ nén JPEG).
- Các vấn đề khi sử dụng biểu diễn nhị phân:
+ Vấn đề định lượng: biểu diễn nhị phân không thể thể hiện các tín hiệu tương tự
(analogue) một cách hoàn toán chính xác. Ví dụ các hình ảnh màu xám chỉ có thể có
16, 256 hoặc các mức cao hơn màu xám, nhưng không thể thể hiện chính xác một số
hữu hạn màu xám.
+ Vấn đề tần số mẫu: biểu diễn nhị phân không thể biểu diễn được tính liên tục theo
không gian và thời gian. Ví dụ hình ảnh có thể chứa nhiều điểm, ít hoặc nhiều hơn,
nhưng không thể liên tục.
+ Vấn đề biểu diễn phân số.

3.4. Máy tính

Mỗi học sinh cần biết và hiểu được các cấu thành chính tạo nên một hệ thống máy
tính và chúng có chức năng gì, quan hệ với nhau như thế nào.
Lớp 1, 2, 3

- Máy tính bao gồm các thiết bị điện tử và lưu trữ dãy các lệnh điều khiển.
- Các máy tính thường nhận thông tin vào và xử lý rồi đưa thông tin ra, ví dụ các máy
tính PC, điện thoại thông minh, máy tính bảng.
- Hiện nay có rất nhiều thiết bị cũng có máy tính bên trong. Ví dụ bên trong máy lạnh,
điều hòa, quạt, tivi có chứa các máy tính nhỏ và có thể điều khiển được bằng dãy lệnh.

24 | C S 4 S 3 ( 5 ) - 2 0 1 7
Lớp 4, 5

- Máy tính là các thiết bị có thể chạy được chương trình.


- Phần mềm ứng dụng chính là các chương trình máy tính được thiết kế để thực hiện
các yêu cầu của người sử dụng.
- Hệ điều hành là một phần mềm đặc biệt dùng để điều khiển quan hệ giữa các phần
mềm ứng dụng và phần cứng máy tính.
- Cả 2 loại phần mềm ứng dụng và hệ điều hành đều lưu trữ và sử dụng dữ liệu, ví dụ
bộ nhớ và hệ thống tệp (file system).
- Tất cả những điều trên cũng đúng với cả các thiết bị có máy tính nhúng bên trong (ví
dụ máy ảnh số, điện thoại thông minh) và máy tính cá nhân.
- Có rất nhiều hệ điều hành và phần mềm ứng dụng có thể cài đặt phù hợp trên cùng
một hệ thống phần cứng.
- Người dùng (con người) có thể ngăn chặn hoặc tìm ra, sửa được lỗi của máy tính (ví
dụ thiết bị có 1 bộ phận nào đó bị hỏng, hoặc thiết bị nhiễm virus).
- Có nhiều vấn đề xã hội, đạo đức liên quan đến việc sử dụng máy tính trong cuộc
sống của chúng ta.

THCS

- Máy tính là các thiết bị có thể chạy được chương trình.


- Máy tính là các thiết bị chuyên dụng (có thể được thiết kế để thực hiện rất nhiều
công việc và bài toán khác nhau).
- Không phải mọi thiết bị tính toán đều là máy tính theo đúng nghĩa. Ví dụ các máy
tính bỏ túi có chức năng tính toán nhưng không phải là máy tính.
- Cấu trúc cơ bản của máy tính: CPU, bộ nhớ (RAM, đĩa cứng), input/output (ví dụ
chuột, bàn phím).
- Máy tính chạy rất nhanh, và càng ngày càng nhanh (theo định luật Moore).
- Máy tính có khả năng "dường như là" thực hiện nhiều công việc cùng một lúc. Có
thể dễ dàng chuyển đổi từ 1 công việc này sang công việc khác.

THPT

- Các cổng logic: AND/OR/NOT. Mạch logic. Khái niệm thanh ghi. [* phần kiến thức
này quá nâng cao, không cần thiết đưa vào nhà trường].
- Kiến trúc Von Neumann: CPU, bộ nhớ, địa chỉ, chu kỳ thực hiện lệnh, các lệnh cấp
thấp. Mã Assembly. [* phần kiến thức này nâng cao, không cần thiết phải đưa vào nhà
trường].
- Chương trình dịch và thông dịch (chỉ cần biết khái niệm, không cần biết cấu trúc bên
trong của các chương trình này).
25 | C S 4 S 3 ( 5 ) - 2 0 1 7
- Hệ điều hành (điều khiển phần mềm nào chạy và hệ thống files) và các máy tính ảo.

3.5. Truyền thông và mạng Internet

Mỗi học sinh cần hiểu được các nguyên tắc chính (bên trong, nằm dưới) của việc
truyền dữ liệu trên mạng Internet.
Lớp 1, 2, 3

- World Wide Web chứa vô cùng nhiều thông tin và dữ liệu.


- Trình duyệt là chương trình dùng để xem các trang web.
- Mỗi website có một tên duy nhất.
- Nhập địa chỉ website để vào xem website đó. Khi vào 1 website có thể xem các trang
web khác bằng cách nháy lên các đường link.
Lớp 4, 5

- Mạng Internet là một tập hợp các máy tính được kết nối, chia sẻ chung một cách trao
đổi thông tin. Internet không phải là web, và web không phải là Internet.
- Các kết nối máy tính mạng Internet sử dụng nhiều thiết bị công nghệ (ví dụ dây nối
mạng, dây nối điện thoại, wifi, điện thoại di động, …).
- Mạng Internet hỗ trợ nhiều dịch vụ khác nhau (ví dụ Web, e-mail, VoIP).
- Quan hệ giữa các khái niệm: máy chủ web, trình duyệt web, website, trang web.
- Khuôn dạng của URLs.
- Vai trò của các máy tìm kiếm giúp người dùng tìm được các trang web theo ý muốn.
Cơ sở (cơ bản) của cơ chế tìm kiếm thông tin trên Internet.
- Các vấn đề về an toàn và bảo mật thông tin, dữ liệu dưới góc độ kỹ thuật.
THCS

- Mạng máy tính là một tập hợp các máy tính cùng làm việc với nhau.
- Sự hiểu biết cơ bản về cơ chế khi người dùng gửi yêu cầu tới 1 trang web (web page)
trong phần mềm trình duyệt.
+ Trình duyệt và máy chủ trao đổi thông điệp qua lại với nhau trên nền mạng Internet.
+ Trong thông điệp đó có thông tin gì? (yêu cầu http, HTML).
+ Cấu trúc 1 trang web: HTML, style sheets, liên kết, tài nguyên.
+ Máy chủ sẽ làm những việc gì? (tìm file và gửi trả lại).
+ Trình duyệt làm những việc gì? (dịch thông tin từ file được gửi về, thể hiện trên
màn hình, tìm và thể hiện nhiều thứ khác nữa).
- Dữ liệu được truyền trên Internet như thế nào?
+ Đóng gói dữ liệu và chuyển mạch gói dữ liệu.

26 | C S 4 S 3 ( 5 ) - 2 0 1 7
+ Giao thức đơn giản: ngôn ngữ giao tiếp đơn giản giữa 2 máy tính. Ví dụ: giao thức
của radio bao gồm các "over", "out"; giao thức ack/nack; giao thức ethernet; ….
- Máy tìm kiếm làm việc như thế nào và làm thế nào để tìm kiếm hiệu quả. Các câu
lệnh tìm kiếm nâng cao sử dụng phép toán boolean.

THPT

- Mô hình Client/Server.
- Địa chỉ MAC, địa chỉ IP, dịch vụ Domain Name, khái niệm cookies.
- Một vài giao thức thực tế. Ví dụ telnet dùng để kết nối với máy chủ HTTP.
- Định tuyến (routing).
- Khóa chết (deadlock) và livelock.
- Thông tin thừa và sửa lỗi thông tin.
- Mã hóa và an toàn thông tin.
3.6. Các chuyên mục nâng cao

Phần này sẽ bỏ qua vì không cần thiết.


4. Yêu cầu kiểm tra, đánh giá năng lực của nhánh Khoa học máy
tính đối với từng cấp học phổ thông
Các yêu cầu kiểm tra, đánh giá kiến thức và năng lực học sinh theo chương trình này
sẽ được mô tả bằng việc thể hiện khả năng của học sinh theo các mức. Các mức được
đánh số từ 1 đến 8.
Yêu cầu cụ thể của các cấp học theo mức được mô tả trong bảng sau. Trong đó cột thứ
2 (mức độ có thể đạt) chỉ ra yêu cầu phần lớn học sinh phải đạt được. Cột 3 (mức độ
cần đạt cho đại trà) chỉ ra yêu cầu bắt buộc cho tất cả.
Phạm vi cấp học Mức độ có thể đạt Mừc độ cần đạt cho đại trà
Lớp 1, 2 (Stage 1) Mức độ 1 - 3 Mức độ 2
Lớp 3, 4, 5 (Stage 2) Mức độ 2 - 5 Mức độ 4
THCS (Stage 3) Mức độ 3 - 7 Mức độ 5
THPT (Stage 4) Mức độ 5 - 8 Mức độ 6

Sau đây là mô tả chi tiết các mức thể hiện khả năng, năng lực của học sinh theo phân
môn Khoa học máy tính.
Mức 1.

- Học sinh có thể nói chuyện về các công việc, hoạt động hàng ngày của mình (trên
lớp, ở nhà).

27 | C S 4 S 3 ( 5 ) - 2 0 1 7
- Học sinh có thể sắp xếp thứ tự các hình ảnh theo một yêu cầu nào đó.
- Học sinh hiểu và nhận ra được rằng có rất nhiều thiết bị, máy tính xung quanh có
khả năng thực hiện các lệnh bằng cách phát tín hiệu cho nó.
- Học sinh có thể thiết lập các lệnh đơn giản để điều khiển thiết bị chơi, robot, games
đơn giản.
Mức 2.

- Học sinh có thể kể và vẽ ra các công việc, hoạt động hàng ngày của mình.
- Học sinh có thể lên kế hoạch và sau đó thực hiện các kế hoạch của mình giống như
điều khiển các robot đồ chơi.
- Học sinh có thể tự giải các bài toán đơn giản sử dụng lập trình cho robot trò chơi.
- Học sinh có thể phân loại được một tập hợp nhỏ các dữ liệu.
Mức 3.

- Học sinh có thể tìm ra được các công việc tương tự nhau trong bảng các công việc
hàng ngày của mình.
- Học sinh lên được 1 kế hoạch công việc bao gồm 1 dãy các lệnh cần thực hiện có thứ
tự (không có lặp và rẽ nhánh).
- Học sinh thiết lập được một dãy các lệnh để thực hiện một yêu cầu, công việc.
- Học sinh có thể mở rộng, phát triển và làm tốt hơn dãy các lệnh của mình.
- Học sinh thể hiện dữ liệu một cách có hệ thống và dễ hiểu.
Mức 4.

- Học sinh có thể phân tích được và thể hiện dãy các lệnh và sự kiện bằng ký hiệu.
- Học sinh phân biệt được các dạng khác nhau của dữ liệu: chữ, số, lệnh.
- Học sinh hiểu được vì sao cần chú ý rất cẩn thận và chính xác cú pháp của các lệnh
khi thực hiện chương trình.
- Học sinh có thể thực hiện được chương trình có các lệnh lựa chọn (rẽ nhánh) và lặp.
- Học sinh có thể tự "suy nghĩ, suy luận" trên một thuật toán và dự đoán được kết quả.
- Học sinh có thể biểu diễn được dữ liệu dưới dạng có cấu trúc và phù hợp để chạy
chương trình.
Mức 5.

- Học sinh đã bắt đầu có thể phân tích và phân rã một bài toán cần giải thành các bài
toán nhỏ hơn và mô tả, thể hiện cách làm đó.
- Học sinh có thể phân tích và thể hiện thuật toán để giải quyết 1 bài toán.
- Học sinh biết cách làm tốt chương trình lên bằng cách thay đổi, bổ sung các biến nhớ
trong chương trình.

28 | C S 4 S 3 ( 5 ) - 2 0 1 7
- Học sinh có thể thiết lập, tự điều chỉnh các lệnh của chương trình, và chỉ ra được tính
hiệu quả của các lệnh trong chương trình của mình. Học sinh có thể tiếp thu các góp ý,
phê bình, phân tích về lệnh và có thể sửa chữa, thay đổi lại để làm cho chương trình
tốt lên.
- Học sinh biết cách tạo ra các thủ tục không có tham số dùng trong chương trình của
mình. Học sinh có thể tự xử lý bằng tay các xâu ký tự và lựa chọn kiểu dữ liệu hợp lý
cho chương trình của mình.
- Học sinh có thể thiết kế chương trình sử dụng mảng 1 chiều.
Mức 6.

- Học sinh hiểu và mô tả được một số thuật toán phức tạp hơn, ví dụ các thuật toán tìm
kiếm, sắp xếp.
- Học sinh có thể vẽ sơ đồ khối để mô tả các thành phần của chương trình.
- Học sinh có thể thành thạo sử dụng kỹ thuật phân rã chương trình thành các bài toán
nhỏ hơn và sử dụng chúng trong chương trình của mình.
- Học sinh có thể nhận ra sự tương tự trong bài toán của mình và thiết lập mô hình bài
toán tổng quát mà mô hình đó có thể áp dụng cho bài toán hiện thời với 1 số thay thế
dữ liệu tham số phù hợp.
- Học sinh biết cách tạo ra giao diện để thực hiện việc dự đoán và đánh giá chương
trình bằng cách thay đổi các bộ dữ liệu, từ đó có thể làm tốt hơn chương trình của
mình.
- Học sinh có khả năng viết các chương trình ngắn một cách độc lập. đồng thời biết
tìm sửa lỗi (debug).
- Học sinh biết cách tạo hàm số và thủ tục có tham số dùng trong các chương trình của
mình. Biết sử dụng thành thạo mảng 1 chiều.
- Học sinh có thể thiết kế và sử dụng dữ liệu có cấu trúc 2 chiều (2D).
Mức 7.

- Học sinh có thể mô tả và thực hiện được một số thuật toán cơ bản và hiểu được tính
hiệu quả của chúng. Ví dụ các thuật toán tìm kiếm, sắp xếp, thuật toán xoay rubik, ….
- Học sinh thành thạo trong việc phân rã một bài toán lớn thành các bài toán, vấn đề
nhỏ hơn và sử dụng các bài toán con đó trong nhiều trường hợp tương tự khác.
- Học sinh có thể nhận biết sự tương tự của một số bài toán tương đối phức tạp để tạo
ra mô hình tổng quát, và sau khi thay thế một số thông số để giải các bài toán này.
- Học sinh có thể sử dụng các modules đã được xây dựng sẵn để thiết kế một hệ thống
của riêng mình.
- Học sinh có thể tự thiết kế hệ thống thông tin, dữ liệu phức tạp bao gồm cả CSDL
quan hệ.

29 | C S 4 S 3 ( 5 ) - 2 0 1 7
- Học sinh có thể lựa chọn và sử dụng các bộ công cụ lập trình thích hợp trong công
việc của mình, biến đổi các yêu cầu ở bất kỳ dạng hay ngôn ngữ nào về ngôn ngữ
chính của mình.
- Học sinh có thể cảm nhận và đánh giá các lợi thế và yếu điểm của một ngôn ngữ lập
trình, từ đó trên cơ sở các chương trình đã thực hiện, học sinh có thể dự đoán được
chất lượng của các chương trình trong tương lai.
- Học sinh có thể lập trình trên một ngôn ngữ lập trình dạng "văn bản" và thực hiện
các công việc như câu trên. Học sinh có thể viết tài liệu và mô tả chương trình của
mình sẽ chạy như thế nào. Học sinh có thể sửa lỗi trực tiếp trên mô tả này.
- Học sinh có thể phân tích các bộ dữ liệu phức tạp, sử dụng chúng trong chương trình
và đơn giản hóa dữ liệu này.
Mức 8.

- Học sinh có thể tự độc lập chọn cho mình một ngôn ngữ lập trình thích hợp, sử dụng
chúng cho bài toán của mình một cách tương đối dễ dàng.
- Học sinh có thể nhận biết sự tương tự của một số bài toán khá phức tạp để tạo ra mô
hình tổng quát, và sau khi thay thế một số thông số để giải các bài toán này.
- Học sinh có thể tự viết chương trình cho người khác sử dụng và có nhiều phương
pháp, cách tìm sửa lỗi (debug) tiên tiến.
- Học sinh có thể phân tích, sử dụng và đơn giản hóa các cấu trúc dữ liệu phức tạp
bằng nhiều cách, ví dụ, chuẩn hóa chúng.
- Học sinh hiểu và có thể trình bày quan hệ giữa các vấn đề phức tạp trên thực tế và
thuật toán, logic, ảo hóa thông qua (bằng) lập trình.

VI. LỊCH SỬ MÔN TIN HỌC. PHẦN KẾT


Như vậy chúng ta có thể đi đến 1 kết luận: Môn Tin học sẽ thay đổi.
Nhưng Tin học sẽ thay đổi như thế nào? Điều này còn chưa ai biết, tất cả còn phụ
thuộc vào rất nhiều yếu tố, trong đó có Chương trình Giáo dục Phổ thông mới đang
được Bộ GD&DT đưa ra cho nhân dân góp ý kiến.
Tuy nhiên căn cứ vào tình tình thực tế đang diễn ra ở Việt Nam cũng như trên thế giới
có thể dự đoán 1 số điều chắc chắn sau đây.
1. Môn tin học sẽ là bắt buộc

Hiện nay mặc dù chưa được thông qua chính thức, nhưng dựa trên những thông tin có
được từ Khung Chương trình GDPT mới và xu thế của thế giới thì chắc chắn Tin học
sẽ là môn học bắt buộc trong trường phổ thông, xuyên suốt từ các cấp Tiểu học,
THCS và THPT. Tin học sẽ là môn học ngang bằng với các môn học khác.
Có thể tóm tắt sơ bộ về khung môn học này như sau.
- Với các cấp Tiểu học, THCS, Lớp 10 thì Tin học sẽ là môn học BẮT BUỘC CÓ
PHÂN HÓA. Điều này có nghĩa: môn học Tin học là bắt buộc. Nội dung của môn học
30 | C S 4 S 3 ( 5 ) - 2 0 1 7
này sẽ luôn có 2 phần: Phần Cơ bản (hay tối thiểu) và sẽ là bắt buộc và Phần nâng cao
sẽ do các nhà trường và học sinh lựa chọn học hay không.
- Từ lớp 11, 12, môn học Tin học sẽ tách làm 2 môn: Tin học ứng dụng và Khoa học
máy tính. Cả 2 môn học này sẽ ngang bằng với tất cả các môn học khác. 2 môn học là
TỰ CHỌN BẮT BUỘC, có nghĩa là học sinh có thể chọn học hoặc không, nếu đã
chọn thì sẽ bắt buộc. Chú ý với cấp THPT là phân hóa nên sẽ là "học gì thi nấy" nên
nếu học sinh chọn môn Tin học thì sẽ thi môn này.
Chú ý thêm là với THPT các môn tự chọn bắt buộc bao gồm: Giáo dục kinh tế và
pháp luật, Lịch sử, Địa lý, Vật lý, Hóa học, Sinh học, Khoa học máy tính, Tin học ứng
dụng, Thiết kế và Công nghệ, Mỹ thuật, Âm nhạc, Chuyên đề học tập.
Như vậy từ năm học 2018-2019 trở đi Tin học sẽ là môn học chính thức trong trường
phổ thông, nhà nước bắt buộc sẽ có biên chế cho GV tin học và bắt buộc phải đầu tư
cho nhà trường để GV có đủ điều kiện giảng dạy môn học này.
Các GV Tin học cần chuẩn bị ngay từ bây giờ cho những thay đổi này.
2. Chương trình môn Tin học sẽ thay đổi căn bản.

Chắc chắn chương trình môn Tin học sẽ có các thay đổi rất cơ bản so với hiện nay.
Như tôi đã trình bày trong các phần trên, nội dung môn học này sẽ được phân loại khá
rõ ràng theo 3 hướng (nội dung và năng lực):
1. Khoa học máy tính (CS - Computer Science).
2. CNTT và ứng dụng (IT - Information Technology).
3. Kỹ năng số hóa phổ thông (DL - Digital Literacy).
Trong 3 định hướng này, 2 nhánh sau là IT và DL đã khá quen thuộc với giáo viên tin
học trong nhà trường Việt Nam vì chương trình môn Tin học của chúng ta từ xưa đến
nay hầu hết tập trung vào 2 hướng này.
Chỉ có hướng CS: Khoa học máy tính là hoàn toàn mới.
Với hướng CS - Khoa học máy tính, chương trình chắc chắn sẽ hoàn toàn mới, các
GV cần chuẩn bị ngay từ bây giờ, nếu không sẽ không đủ khả năng để chuẩn bị cho
trương trình mới bắt đầu từ năm học 2018-219. Phần chương trình Khoa học máy tính
các GV có thể tham khảo Khung chương trình phân môn Khoa học máy tính của Anh
quốc mà tôi đã trình bày trong các bài viết trước.
Theo cảm nhận của tôi, thực trạng hiện nay GV Tin học của chúng ta còn rất yếu và
thiếu kiến thức trong phân môn Khoa học máy tính này. GV cần tự giác tự đọc sách,
tự học để chuẩn bị cho định hướng mới này. Một số nội dung chính của phần kiến này
là:
- Thuật toán.
- Ngôn ngữ lập trình,
- Dữ liệu và biểu diễn dữ liệu.
- Máy tính, cấu trúc máy tính và thiết bị.
- Mạng máy tính, giao tiếp, truyền thông.
31 | C S 4 S 3 ( 5 ) - 2 0 1 7
Riêng ngôn ngữ lập trình, Pascal sẽ không còn là ngôn ngữ được khuyến khích. Thay
vào đó là các ngôn ngữ kéo thả ví dụ Scratch, với ngôn ngữ bậc cao sẽ là Python, C,
C++, Java, …
3. Môn Tin học sẽ còn phải thay đổi liên tục để đáp ứng nhu cầu phát
triển mạnh mẽ của khoa học công nghệ, định hướng STEM và CMCN 4.0.

Chắc tất cả chúng ta vẫn hàng ngày được nghe thấy những từ, cụm từ như STEM,
CMCN 4.0. Đó không phải là những thứ xa vời, mà chúng đang trực tiếp bị ảnh
hưởng bởi những xu thế không thể đảo ngược đó.
Mặc dù Chương trình Khung các môn học của Chương trình Giáo dục PT mới sẽ được
thông qua trong tháng 9 năm nay, nhưng chắc chắn riêng môn Tin học sẽ còn có có
điều chỉnh, thay đổi theo thời gian (không như các môn học khác).
Theo dự đoán của tôi thì thời gian trước mắt trong Khung CT mới, thị phần của phân
môn CS - Khoa học máy tính có thể sẽ chiếm không nhiều trong tổng thế, nếu so sánh
với 2 định hướng kia là IT và DL. Nhưng trong tương lai chắc chắn phân môn CS sẽ
ngày càng đóng vai trò quan trọng và sẽ được điều chỉnh, mở rộng trong khung
chương trình môn Tin học mới. Các giáo viên cần nắm vững điểm này để chuẩn bị
hành trang, kiến thức cho riêng mình.
Hiện nay theo tôi biết, ở các quốc gia phát triển, việc chuẩn bị đón đầu xu thế phát
triển của STEM và CMCN 4.0 đang đặt ra thành các vấn đề rất lớn, nghiêm trọng của
Giáo dục trong các nước đó. Ví dụ tại nước Mỹ thậm chí đã thành lập 1 ủy ban Quốc
gia về Giáo dục để chuẩn bị đối phó với các thay đổi của CMCN 4.0.
4. Các giáo viên Tin học đóng vai trò quyết định trong toàn bộ thay đổi
này

Trong tất cả những thay đổi trên, môn Tin học sẽ thay đổi, chương trình sẽ thay đổi,
đầu tư vào môn học này sẽ thay đổi, nhưng điều quan trọng nhất vẫn là con người.
Các giáo viên Tin học sẽ đóng vai trò quyết định trong toàn bộ quá trình thay đổi này.
Nếu các Giáo viên của chúng ta vẫn tư duy như cũ, không chịu thay đổi mình, không
chịu tự học hỏi những nội dung, kiến thức mới thì việc áp dụng Chương trình Giáo
dục PT mới sẽ thất bại với môn Tin học. Tất cả phụ thuộc vào đội ngũ giáo viên tin
học hiện hành trong nhà trường của Việt Nam chúng ta.

32 | C S 4 S 3 ( 5 ) - 2 0 1 7
Scratch:
Đề ra kỳ này
Chuyên mục này sẽ có thường xuyên trên CS4S. Đề ra kỳ này bao gồm các bài tập. lý
thuyết cũng như thực hành, liên quan đến phân môn Khoa học máy tính trong nhà
trường. Sẽ có các phần Đề bài và Lời giải. Riêng các bài tập lập trình sẽ được ghi rõ
yêu cầu cần làm trên ngôn ngữ cụ thể nào.

Bài 4. Công cụ vẽ đường tròn. THCS, THPT


Thiết lập chương trình có chức năng sau:
Trên màn hình có các nút màu sắc để chọn màu. Bên phải là thanh trượt để điều khiển
giá trị bán kính R.
Người dùng có thể chọn màu hoặc thay đổi R.
Thao tác của chương trình như sau: nháy 1 điểm trên màn hình sẽ vẽ 1 hình tròn có
tâm là điểm vừa nháy, bán kính R và với màu sắc đang chọn.

33 | C S 4 S 3 ( 5 ) - 2 0 1 7
Bài 5. Chạy thi maraton. Tiểu học, THCS.

Trên màn hình ban đầu có 1 trọng tài và 2 bạn học sinh như trên hình. Khi bắt đầu
chơi, trọng tài nói chuẩn bị, và sau đó hô "Bắt đầu". Hai bạn sẽ chạy từ trái sang phải
(với vận tốc ngẫu nhiên). Đến cạnh phải thì dừng lại. Phía trên có đồng hồ đo thời
gian của 2 người chơi. Sau khi kết thúc, trọng tài sẽ tuyên bố tên người thắng cuộc.

Bài 6. Con gì ăn cái gì? THCS, THPT

34 | C S 4 S 3 ( 5 ) - 2 0 1 7
Trên màn hình bên trái là các con Mèo, Khỉ, Ngựa. Bên phải là Táo, Chuối và Cây.
Mỗi con chỉ ăn 1 thứ mà thôi: Khỉ ăn Chuối, Mèo ăn Táo, Ngựa ăn Cây.
Chương trình chơi như sau:
Người dùng lần lượt phải dùng chuột kéo thả các con vật ở bên trái sang đúng vị trí
thức ăn của nó ở bên phải.
- Nếu kéo thả không đúng (chưa tới hoặc nhầm) thì con vật sẽ kêu "Sai rồi" và chạy về
chỗ cũ.
- Nếu kéo thả đúng vị trí thì con vật sẽ dính vào thức ăn của mình và kêu "Ngon quá".
- Trò chơi kết thúc khi người chơi kéo thả đúng cả 3 con Mèo, Khỉ, Ngựa.

35 | C S 4 S 3 ( 5 ) - 2 0 1 7

You might also like