Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
2 | C S 4 S 1 - 2 0 1 7
Khung chương trình phân môn Khoa học máy tính (CS -
Computer Science) trong môn Tin học của Anh quốc
Bùi Việt Hà, công ty Công nghệ Tin học Nhà trường.
Như chúng ta đã biết kiến thức môn Tin học trong trường phổ thông sẽ được phân
tách thành 3 hướng 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).
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.
Để các giáo viên Tin học của Việt Nam hiểu được ý nghĩa và nắm bắt được những
thay đổi cơ bản sẽ diễn ra với môn Tin học trong thời gian tới (sau năm 2018), tôi sẽ
biên dịch Khung chương trình phân môn Khoa học máy tính của Anh quốc, chương
trình này nằm trong chương trình khung tổng thế môn tin học của nước Anh.
Tài liệu này vô cùng hữu ích cho các giáo viên đang giảng dạy Tin học trong các nhà
trường phổ thông tại Việt Nam. Các giáo viên tin học cần biết trước để chuẩn bị tự
trang bị kiến thức lõi về CNTT cho mình để có thể giảng dạy được Tin học trong
chương trình mới.
Lưu ý rằng Khung chương trình Khoa học máy tính của Anh quốc có thể hơi nặng so
với chương trình môn Tin học của Việt Nam (tôi nghĩ chắc chương trình của Việt
Nam sẽ bằng khoảng 1/3 chương trình này). tuy nhiên các giáo viên cần trang bị nhiều
kiến thức hơn mới có thể giảng dạy tốt được. Trong mọi trường hợp, tài liệu này sẽ rất
cần thiết cho mỗi giáo viên của Việt Nam.
Sau đây là chương trình khung phân môn Khoa học máy tính của nước Anh.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
3 | C S 4 S 1 - 2 0 1 7
KHUNG CHƯƠNG TRÌNH MÔN TIN HỌC, PHÂN MÔN
KHOA HỌC MÁY TÍNH (Anh quốc)
Mục lục 1. Tầm quan trọng và đặc thù của Khoa học máy tính trong nhà trường ....................... 4
1.1. Khoa học máy tính là một môn học chuẩn .......................................................... 5
1.2. Khoa học máy tính là môn học STEM ................................................................ 5
1.3. So sánh định hướng CS - Khoa học máy tính và IT - Ứng dụng CNTT ............. 6
2. Các khái niệm chính của định hướng Khoa học máy tính ......................................... 8
2.1. Ngôn ngữ, máy tính, tính toán ............................................................................. 8
2.2. Dữ liệu số và biểu diễn dữ liệu ............................................................................ 8
2.3. Tương tác và truyền thông ................................................................................... 9
2.4. Thiết kế và trừu tượng hóa .................................................................................. 9
2.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 ........................ 10
3. Tư duy máy tính: năng lực tư duy quan trọng nhất của CS ..................................... 11
3.1. Trừu tượng hóa: mô hình, phân rã và tổng quát ................................................ 12
3.2. Lập trình ............................................................................................................ 13
4. 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 .......................................................................................................... 16
4.1. Thuật toán .......................................................................................................... 17
Lớp 1, 2, 3 ................................................................................................................. 17
Lớp 4, 5 ..................................................................................................................... 17
THCS ........................................................................................................................ 18
THPT ........................................................................................................................ 18
4.2. Lập trình ............................................................................................................ 18
Lớp 1, 2, 3 ................................................................................................................. 18
Lớp 4, 5 ..................................................................................................................... 19
THCS ........................................................................................................................ 19
THPT ........................................................................................................................ 20
4.3. Dữ liệu ............................................................................................................... 20
Lớp 1, 2, 3 ................................................................................................................. 20
Lớp 4, 5 ..................................................................................................................... 20
THCS ........................................................................................................................ 21
THPT ........................................................................................................................ 21
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
4 | C S 4 S 1 - 2 0 1 7
4.4. Máy tính ............................................................................................................. 22
Lớp 1, 2, 3 ................................................................................................................. 22
Lớp 4, 5 ..................................................................................................................... 22
THCS ........................................................................................................................ 23
THPT ........................................................................................................................ 23
4.5. Truyền thông và mạng Internet ......................................................................... 23
Lớp 1, 2, 3 ................................................................................................................. 23
Lớp 4, 5 ..................................................................................................................... 23
THCS ........................................................................................................................ 24
THPT ........................................................................................................................ 24
4.6. Các chuyên mục nâng cao ................................................................................. 25
5. 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 ............................................................................................................... 26
1. Tầm quan trọng và đặc thù của Khoa học máy tính trong nhà
trường
Phân môn "Khoa học máy tính" là môn học dạy các nguyên tắc lý thuyết và thực hành
cho mô hình tính toán máy tính và các ứng dụng của mô hình này. Lõi của môn học
này là khái niệm tư duy máy tính hay tư duy thuật toán. Đây là mô hình tư duy lõi,
cơ bản nằm bên dưới các khái niệm quen thuộc như phần mềm, phần cứng máy tính.
Mô hình tư duy này sẽ cung cấp các khung kiến thức để giải quyết các bài toán, vấn
đề nảy sinh. Đi cùng mô hình tư duy này là 1 tập hợp các kiến thức lõi, cơ bản về lý
thuyết cũng như thực hành, kỹ năng, năng lực phân tích, mô phỏng và giải quyết vấn
đề.
Khoa học máy tính đi sâu vào tìm hiểu cách làm việc và vận hành của máy tính và các
hệ thống máy tính, tìm hiểu các máy tính và chương trình được thiết kế và lập trình
như thế nào. Học sinh sẽ được tiếp cận với các hệ thống tính toán theo mọi khía cạnh,
có thể cần hoặc không cần có máy tính. "Tư duy máy tính" sẽ có ảnh hưởng đến cả
các lĩnh vực khoa học khác như sinh học, hóa học, ngôn ngữ, tâm lý học, kinh tế và
thống kê. Cũng chính tư duy đó sẽ giúp học sinh có thể giải các bài toán, giải quyết
vấn đề, thiết kế hệ thống, sản phẩm và hiểu được sức mạnh cũng như giới hạn, hạn
chế của con người và máy móc. Chính tư duy đó sẽ là yêu cầu kỹ năng, năng lực mà
mỗi học sinh cần hiểu và nắm bắt được dù chỉ một phần của nó. Nếu có các kỹ năng,
tư duy, suy luận như "máy tính" thì các học sinh này sẽ hiểu tốt hơn và có nhiều cơ
hội hơn trong việc tiếp thu các công nghệ "dựa trên máy tính" (computer-based
technology) và sẽ được chuẩn bị tốt hơn khi trở thành công dân tương lai trong xã hội
hiện đại.
Khoa học máy tính là môn học thực hành, trong đó rất khuyến khích sự dũng cảm và
sáng tạo. Học sinh được học các nguyên tắc, lý thuyết hàn lâm của môn học và
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
5 | C S 4 S 1 - 2 0 1 7
khuyến khích ứng dụng sáng tạo để hiểu và mô phỏng được thế giới thực xung quanh
các em. Sự kết hợp hài hòa giữa lý thuyết, thực hành và sáng tạo sẽ làm cho môn học
này trở nên vô cùng hấp dẫn, giúp các học sinh có thể tạo ra được các sản phẩm vừa
có ích ("Nó chạy rồi!") vừa trí tuệ ("Nó quá đẹp!").
1.1. Khoa học máy tính là một môn học chuẩn
Trước hết cần khẳng định luôn, phân môn Khoa học máy tính trong môn Tin học mới
là một môn khoa học chuẩn theo đúng nghĩa.
Khái niệm môn khoa học chuẩn được đặc trưng bởi các yếu tố sau:
- Kiến thức chuẩn. Có một tập hợp các ý tưởng, khái niệm và khung lý thuyết để có
thể triển khai các ý tưởng, khái niệm đó.
- Tập hợp các phương pháp lý luận và kỹ năng chuẩn. Có đủ một tập hợp các
phương pháp lý luận, kỹ thuật và kỹ năng để giải được các bài toán, vấn đề nảy sinh
của kiến thức.
- Tư duy và phương pháp làm việc chuẩn. Có tư duy và các phương pháp làm việc
riêng để thế giới của kiến thức sẽ khác biệt với các môn học chuẩn khác.
- Thời gian dài. Kiến thức của môn học không bị lạc hậu nhanh với thời gian.
- Không quá phụ thuộc vào công nghệ đặc thù. Kiến thức của môn học đủ tổng quát
để không phụ thuộc vào các công nghệ đặc thù nào.
Phân môn Khoa học máy tính có đủ các đặc tính trên. Chú ý rằng cả 2 phân môn,
hướng còn lại là IT và DL của Tin học đều không hội tụ đủ các đặc tính trên.
Phân môn Khoa học máy tính có đầy đủ các phương pháp, lý luận và lý thuyết nền
tảng (ví dụ lý thuyết tính toán, …), và được phổ biến rộng rãi cùng rất nhiều ý tưởng
và khái niệm kèm theo (ví dụ khái niệm CSDL quan hệ, ….). Phân môn này (CS) có
cả một tập hợp các phương pháp, kỹ năng, kỹ thuật để giải quyết vấn đề. Tư duy khoa
học máy tính khác biệt hẳn so với các khoa học khác, ví dụ như toán học, vật lý, hóa
học. Các ý tưởng, khái niệm, lý luận nền tảng của khoa học máy tính đã ổn định hơn
20 năm trở lại đây và sẽ ổn định lâu dài nữa. Và cuối cùng tất cả các phương pháp kỹ
thuật và kỹ năng chính của khoa học máy tính đều phát triển độc lập với các công
nghệ đặc thù mới phát sinh sau này.
1.2. Khoa học máy tính là môn học STEM
Khoa học máy tính là môn học mang đặc tính STEM rõ nhất, môn học này có nhiều
điểm chung nhất với đồng thời các thành phần khác của STEM như Kỹ nghệ
(Engineering), Toán học (Mathematics), Khoa học (Science) và Công nghệ
(Technology).
- 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à
khoa học.
- Trọng tâm của Khoa học máy tính là "tư duy máy tính", có cơ sở lý luận hàn lâm
nền tảng kết hợp thực nghiệm và đánh giá, đo đạc số liệu một cách khoa học.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
6 | C S 4 S 1 - 2 0 1 7
- Lõi của Khoa học máy tính 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.
Hơn nữa Khoa học máy tính còn có ứng dụng rất sâu trong tất cả các lĩnh vực STEM
khác như chúng ta vẫn biết rõ điều đó.
Có thể nói tư duy máy tính, các nguyên tắc cơ bản của tính toán, các cơ sở lý thuyết
giải quyết vấn đề dựa trên máy tính là chìa khóa dẫn đến thành công của các nhánh
khoa học khác như kỹ nghệ, kinh doanh và thương mại trong thế kỷ 21.
1.3. So sánh định hướng CS - Khoa học máy tính và IT - Ứng dụng CNTT
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.
a) 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.
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
cách hiệu quả, sáng tạo các hệ thống ứng
dụng CNTT có sẵn vào nhu cầu công
việc cụ thể. Ví dụ:
- Sử dụng các phần mềm có sẵn để tạo ra
các dữ liệu, thông tin phục vụ nhu cầu cụ
thể như học tập, vui chơi, giải trí.
- Thiết kế và cài đặt các hệ thống thông
tin dữ liệu dựa trên các ứng dụng CNTT
có sẵn để tạo ra được các hệ thống trợ
giúp công việc.
Định hướng CS trong môn Tin học được
mô tả bởi các tính chất quan trọng sau:
1- Là 1 tập hợp ý tưởng, quan niệm
thống nhất, chặt chẽ, logic của 1 môn
học. Ví dụ các quan niệm như Chương
trình; Thuật toán; Cấu trúc dữ liệu; Kiến
trúc hệ thống.
2- Là 1 tập hợp các kỹ thuật, kỹ năng
logic chặt chẽ, có phát triển từ thấp đến
cao. Ví dụ kỹ thuật lập trình, thuật toán,
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
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
7 | C S 4 S 1 - 2 0 1 7
IT - CNTT và ứng dụng CS - Khoa học máy tính
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.
b) 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ế
nào.
Hệ thống máy tính được hoạt động, làm
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.
Tập trung, quan tâm đến sự phát triển
của hệ thống hướng tới nhu cầu người sử
dụng.
Tập trung, quan tâm đến tư duy thuật
toán, đến cách mà vấn đề có thể phân rã
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
mềm, hệ thống đã có để đáp ứng nhu cầu
hiện tại.
Quan tâm đến việc thiết kế các hệ thống,
phần mềm mới.
Nhấn mạnh việc lựa chọn, đánh giá sử
dụng phần mềm trong công việc.
Nhấn mạnh đến các nguyên lý và kỹ
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ợ
hoạt động của con người hay tự động
hóa hoạt động của con người.
Các ứng dụng thực tế cần được xây dựng
thông qua các tư duy của "máy tính".
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.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
8 | C S 4 S 1 - 2 0 1 7
2. 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.
2.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
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).
2.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:
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
9 | C S 4 S 1 - 2 0 1 7
- 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.
2.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.
2.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ố
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
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
10 | C S 4 S 1 - 2 0 1 7
đế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.
2.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
ả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?
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
11 | C S 4 S 1 - 2 0 1 7
3. 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:
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
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.
“… 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.”
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
12 | C S 4 S 1 - 2 0 1 7
3.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
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.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
13 | C S 4 S 1 - 2 0 1 7
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
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 đó.
3.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à
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
14 | C S 4 S 1 - 2 0 1 7
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).
+ 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.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
15 | C S 4 S 1 - 2 0 1 7
- 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?
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.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
16 | C S 4 S 1 - 2 0 1 7
- 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.
4. 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
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ô
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
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
17 | C S 4 S 1 - 2 0 1 7
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.
4.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?)
- 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.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
18 | C S 4 S 1 - 2 0 1 7
- 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ử.
4.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).
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
19 | C S 4 S 1 - 2 0 1 7
- 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.
- 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.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
20 | C S 4 S 1 - 2 0 1 7
+ 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.
4.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.
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.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
21 | C S 4 S 1 - 2 0 1 7
- 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ố.
- 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).
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
22 | C S 4 S 1 - 2 0 1 7
- 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ố.
4.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.
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.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
23 | C S 4 S 1 - 2 0 1 7
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).
- 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.
4.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.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
24 | C S 4 S 1 - 2 0 1 7
- 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.
+ 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.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
25 | C S 4 S 1 - 2 0 1 7
4.6. Các chuyên mục nâng cao
Các chuyên mục nâng cao này sẽ tập trung vào giai đoạn THPT và dành cho học sinh
các lớp chuyên.
1. Thuật toán
• Số học trên các trường modular
• Băm
• Các thuật toán phân tán.
• Các thuật toán tối ưu và cảm tính; các giải thuật dạng "đủ tốt" ví dụ thuật toán
di truyền, thuật toán SA (simulated annealing).
• Phương pháp Monte Carlo.
• Hệ thống tự học (learning system).
• Mô phỏng sinh học; mạng nơron; automat tế bào; ….
• Các thuật toán đồ họa (ví dụ quay mô hình 3D).
2. Lập trình
• Sử dụng thành thạo lập trình đệ qui.
• Lập trình mô phỏng thời gian thực.
• Người máy.
• Biết sử dụng các ngôn ngữ lập trình hướng đối tượng, bậc cao khác.
• Phát triển ứng dụng thực tế.
• Phát triển trên các môi trường khác nhau.
• Lập trình dựa trên SDK và phần cứng.
• Lập trình mã nguồn mở.
3. Dữ liệu
• Đồ thị của mảng và thuật toán duyệt trên cây nhị phân.
• Con trỏ và mảng động.
• Xử lý dữ liệu lớn.
• Xử lý dữ liệu động (đặc biệt dữ liệu trên Internet).
• Biểu diễn con trỏ động.
4. Máy tính và thiết bị
• Ngắt và các hệ thống thời gian thực.
• Hệ thống đa vi xử lý (multiprocessor system).
• Quản lý bộ nhớ caches.
• Các vấn đề bất định.
5. Truyền thông và Internet
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
26 | C S 4 S 1 - 2 0 1 7
• Mã hóa không đối xứng
• Trao đổi key.
6. Tương tác người - máy (HCI - Human Computer Interative)
• Hiểu sự quan trọng của giao diện tương tác; Máy tính tương tác với người
dùng.
• Thiết kế giao diện tương tác đơn giản.
5. 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à).
- 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.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
27 | C S 4 S 1 - 2 0 1 7
- 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.
- 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.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
28 | C S 4 S 1 - 2 0 1 7
- 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ệ.
- 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.
Khung chương trình phân môn Khoa học máy tính (Anh quốc)
29 | C S 4 S 1 - 2 0 1 7
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.