Tóm tắt. Dạy học thuật toán cho học sinh (HS) có vai trò quan trọng trong việc rèn
luyện cho HS các thao tác tư duy và các kĩ năng giải quyết vấn đề trong khoa học
và trong thực tiễn. Bài báo đưa ra một quan điểm về tư duy thuật toán và các cấp
độ tư duy thuật toán, từ đó đề xuất một cách tiếp cận mới trong dạy học thuật toán
qua ý tưởng tinh chế thuật toán thành các phiên bản khác nhau, dựa trên các cấp độ
làm mịn và điều kiện cụ thể.
11 trang |
Chia sẻ: thanhle95 | Lượt xem: 187 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Phương pháp tinh chế - Một cách tiếp cận mới trong dạy học thuật toán cho học sinh ở trường phổ thông, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
JOURNAL OF SCIENCE OF HNUE
Educational Science - Mathematics, 2013, Vol. 58, pp. 197-207
This paper is available online at
PHƯƠNG PHÁP TINH CHẾ - MỘT CÁCH TIẾP CẬNMỚI TRONG DẠY HỌC
THUẬT TOÁN CHO HỌC SINH Ở TRƯỜNG PHỔ THÔNG
Nguyễn Chí Trung∗, Hồ Cẩm Hà
Khoa Công nghệ Thông tin, Đại học Sư Phạm Hà Nội
∗Email: trungnc@hnue.edu,vn
Tóm tắt. Dạy học thuật toán cho học sinh (HS) có vai trò quan trọng trong việc rèn
luyện cho HS các thao tác tư duy và các kĩ năng giải quyết vấn đề trong khoa học
và trong thực tiễn. Bài báo đưa ra một quan điểm về tư duy thuật toán và các cấp
độ tư duy thuật toán, từ đó đề xuất một cách tiếp cận mới trong dạy học thuật toán
qua ý tưởng tinh chế thuật toán thành các phiên bản khác nhau, dựa trên các cấp độ
làm mịn và điều kiện cụ thể.
Từ khóa: Tinh chế, thuật toán, học sinh phổ thông.
1. Đặt vấn đề
Bàn về tư duy, Pascal cho rằng “Tư duy tạo nên sự cao cả của con người”; Descartes
nói: “Tôi tư duy tức là tôi tồn tại”; Emerson nói: “Tư duy là hạt giống của hành động”;
H.Poincaré dùng hình ảnh “Tư duy là một tia sáng giữa đêm tối. Nhưng chính tia sáng ấy
là tất cả”. Bàn về dạy học, rèn luyện tư duy, Phạm Văn Đồng nói: “Điều chủ yếu không
phải là nhồi nhét một mớ kiến thức hỗn độn mà là phương pháp suy nghĩ, phương pháp
nghiên cứu, phương pháp học tập, phương pháp giải quyết vấn đề”. Theo ngạn ngữ cổ Hy
lạp thì “Dạy học không phải là rót kiến thức vào một chiếc thùng rỗng mà là thắp sáng
lên những ngọn lửa”.
Theo Lê Hải Yến [4], mục tiêu của bậc học phổ thông là hình thành và phát triển
được nền tảng tư duy của HS trong thời đại mới, bao gồm nhóm kiến thức, kĩ năng cơ bản
của các môn học phổ thông; nhóm các kĩ năng tư duy và nhóm các phẩm chất nhân cách
và đạo đức. Trong đó, các kĩ năng tư duy có thể kể đến như biết cách suy luận, phát hiện,
giải quyết vấn đề, biết cách học, cách tự học, có tư duy sáng tạo, ... Thông qua dạy kiến
thức và kỹ năng để đạt được mục tiêu hình thành và phát triển năng lực tư duy - trí tuệ của
HS, thông qua việc dạy và học tư duy, chúng ta sẽ tạo được nền móng trí tuệ - cách suy
nghĩ để giải quyết các vấn đề trong thực tiễn sau này cho mỗi HS khi bước vào đời. Vậy,
mục tiêu quan trọng bậc nhất của quá trình dạy và học là giúp cho HS phát triển được tư
duy.
Việc rèn luyện và phát triển tư duy cho HS đặc biệt thích hợp đối với dạy học môn
Toán và dạy học môn Tin học ở bậc phổ thông. Theo Nguyễn Bá Kim [1], quá trình dạy
197
Nguyễn Chí Trung, Hồ Cẩm Hà
học môn Toán có thể tạo điều kiện cho HS kiến tạo tri thức phương pháp với hai loại
phương pháp khác nhau về bản chất, đó là những phương pháp là các thuật giải (ví dụ như
giải phương trình bậc hai) và những phương pháp có tính chất tìm tòi (ví dụ như phương
pháp tổng quát của Pôlya để giải bài tập toán học). Theo Hồ Sĩ Đàm và các cộng sự [5],
môn tin học ở bậc phổ thông “nhằm cung cấp cho HS những kiến thức phổ thông về ngành
khoa học tin học, hình thành và phát triển khả năng tư duy thuật toán, năng lực sử dụng
các thành tựu của ngành khoa học này trong học tập và trong các lĩnh vực hoạt động của
mình sau này."
Bài báo đề xuất một hướng rèn luyện và phát triển tư duy cho HS thông qua việc
giới thiệu một cách tiếp cận mới trong dạy học thuật toán, được gọi là phương pháp tinh
chế, để dạy học thuật toán cho một số bài toán của môn Toán được dạy tường minh thuật
giải, và đặc biệt là các bài toán, thuật toán của môn Tin học trong trường phổ thông. Cách
tiếp cận này trước hết dựa trên ý tưởng làm mịn dần [2] nhưng được chi tiết hóa thành các
phiên bản khác nhau của thuật toán. Chi tiết đến mức độ nào, hay nói cách khác, thuật
toán cần được mô tả qua bao nhiêu phiên bản, mỗi phiên bản được thể hiện như thế nào,
những điều này được căn cứ vào những yếu tố như mục tiêu chương trình, chuẩn kiến thức
kĩ năng, thời lượng, đối tượng HS.
2. Nội dung nghiên cứu
2.1. Khái niệm thuật toán trong khoa học và ở trường phổ thông
Từ nhiều nghiên cứu về sự hình thành và phát triển khái niệm thuật toán, ví dụ như
của Dimitris Samaras [7], Robb Koether [8], và Yiannis [9], ta có thể tóm tắt rằng thuật
toán là một khái niệm có nguồn gốc từ toán học và được hình thành từ định nghĩa trực
giác đến định nghĩa hình thức một cách chính xác. Các định nghĩa hình thức và chính xác
về thuật toán đều dựa vào máy Turing hoặc luận đề Church-Turing. Các định nghĩa này dù
được trình bày dưới dạng trực quan hoặc bằng các kí hiệu, ngôn ngữ toán học, nhưng đều
rất dài dòng và phức tạp.
Nhiều nhà toán học và nhà khoa học máy tính có xu hướng phát biểu khái niệm
thuật toán ẩn đi những mô tả chính xác và phức tạp của ngôn ngữ toán học để tiệm cận
với đa số đối tượng có khả năng hiểu và thực hiện được thuật toán. Ví dụ, hướng đến
đối tượng HS, để dạy học giải toán bằng qui tắc tựa thuật giải, Nguyễn Bá Kim [1] định
nghĩa: “Thuật giải theo nghĩa trực giác được hiểu là như một dãy hữu hạn những chỉ dẫn
thực hiện một cách đơn trị, kết thúc sau một số hữu hạn bước và đem lại kết quả là biến
đổi thông tin vào của một lớp bài toán thành thông tin ra mô tả lời giải của lớp bài toán
đó”. Hướng đến đối tượng là những người lập trình và cuối cùng là máy tính, Chung-Yang
Huang và các cộng sự [10] đã định nghĩa: “Một thuật toán là một danh sách có thứ tự
các chỉ dẫn được chỉ ra chính xác để thực hiện một công việc hay giải quyết một bài toán.
Nó có thể được mô tả trong ngôn ngữ tự nhiên, giả mã, sơ đồ, hoặc thậm chí trong ngôn
ngữ lập trình.” Trong định nghĩa của Huang, bốn cách biểu diễn thuật toán đã được chỉ
ra. Cách biểu diễn cuối cùng hướng trực tiếp đến máy tính, và điều này được Knuth [11]
nhấn mạnh “Một thể hiện riêng của thuật toán được gọi là một chương trình giống như
198
Phương pháp tinh chế - một cách tiếp cận mới trong dạy học thuật toán...
chúng ta dùng từ dữ liệu để chỉ một thể hiện riêng của thông tin”.
Hướng đến đối tượng là HS, để dạy học thuật toán và lập trình, các nhà giáo dục và
khoa học máy tính đưa ra khái niệm thuật toán xuất phát từ khái niệm bài toán trong tin
học như sau:
Khái niệm bài toán: Trong phạm vi tin học, “bài toán” là một việc nào đó ta muốn
máy tính thực hiện.
Ta có thể mở rộng khái niệm bài toán trên đây sang lớp bài toán của môn toán được
dạy tường minh thuật giải. Cụm từ “một việc nào đó” có thể được hiểu là các bài toán của
riêng tin học và của chung hai lĩnh vực toán học và tin học. Hai trường hợp đầu trong ví
dụ dưới đây minh họa những việc là những bài toán mà ta cần quan tâm:
A. Hãy in lên màn hình một dòng chữ chuyển động: thuộc bài toán của riêng tin học.
B. Hãy giải bất phương trình bậc nhất ax + b ≤ 0: thuộc bài toán của toán học và
tin học.
C. Hãy chứng minh tổng các góc trong một tứ giác bằng 360 độ: thuộc bài toán của
toán học.
D. Yêu cầu tập lái xe ô tô trên địa hình thực tế: không thuộc bài toán của toán học
hoặc tin học.
Khái niệm thuật toán: Thuật toán để giải một bài toán là một dãy hữu hạn các
thao tác được sắp xếp theo một trình tự xác định sao cho khi thực hiện dãy thao tác ấy, từ
Input của bài toán, ta nhận được output cần tìm.
Khái niệm thuật toán trên đây hàm ý nhấn mạnh việc chỉ ra tường minh cách tìm
Output của bài toán. Cách tìm ra Output đó không nhất thiết phải thể hiện như một bài
làm chứng minh chặt chẽ tính đúng đắn của lời giải bài toán. Nói cách khác, tính đúng
đắn của thuật toán, nếu cần thiết phải được chứng minh riêng và thường được giải thích ở
bước tìm ý tưởng thuật toán.
Ví dụ 1: Xét thuật toán dưới đây giải bài toán Chọn cuộc họp: “Cho C là một tập
hợp gồm n cuộc họp, cùng thuê một phòng họp lớn. Thời điểm bắt đầu và thời điểm kết
thúc của mỗi cuộc họp được biết trước. Hãy tìm một tập S gồm nhiều cuộc họp được
cho thuê nhất. Biết rằng tại một thời điểm, phòng họp chỉ cho phép một cuộc họp được
diễn ra.”.
Bước 1: Sắp xếp các cuộc họp trong C thành một dãy theo thứ tự tăng dần của thời
điểm kết thúc;
Bước 2: Khởi tạo S = ∅;
Bước 3: Lặp các bước sau đây khi C 6= ∅:
Bước 3.1. Chọn x là cuộc họp đầu tiên trong C có thời điểm kết thúc sớm nhất;
Bước 3.2. Loại cuộc họp x ra khỏi C;
Bước 3.3. Nếu cuộc họp x không có chung thời điểm họp với bất kì cuộc họp
nào trong S thì thêm cuộc họp x vào cho S;
Bước 4. Đưa ra kết quả S.
199
Nguyễn Chí Trung, Hồ Cẩm Hà
Mặc dù thuật toán trên đây đưa ra được Output S từ Input C, và thuật toán trong
trường hợp này là đúng đắn (tức là S gồm nhiều cuộc họp nhất được bố trí cho thuê),
nhưng bản thân thuật toán không được xem là một lời giải mà trong đó bao gồm việc
chứng minh chặt chẽ tính đúng đắn của kết quả. Ta có thể coi thuật toán như một lời giải
(của một bài toán) đã được lược bỏ đi rất nhiều giải thích chi tiết về tính đúng đắn của nó.
2.2. Các quan điểm về tư duy thuật toán và ý nghĩa của việc rèn luyện tư
duy thuật toán
Việc tìm kiếm những phương pháp dạy học thuật toán cho HS trở nên rất quan
trọng. Những phương pháp này nhằm rèn luyện cho HS tư duy thuật toán, mà tư duy thuật
toán, theo Nguyễn Bá Kim [1], nó “góp phần phát triển những năng lực trí tuệ chung như
phân tích, tổng hợp, khái quát hóa, ... và hình thành những phẩm chất của con người mới
như tính ngăn nắp, kỷ luật, tính phê phán và thói quen tự kiểm tra,...”. Mặt khác, Gerald
Futschek [6] đã khẳng định: “Tư duy thuật toán là chìa khóa để hiểu khoa học máy tính”,
còn mục đích của khoa học máy tính là phục vụ con người giải quyết các bài toán trong
hầu hết các lĩnh vực của đời sống xã hội. Vậy ý nghĩa quan trọng của việc rèn luyện tư
duy thuật toán cho HS là bồi dưỡng cho các em kĩ năng giải quyết vấn đề trong khoa học
và trong thực tiễn.
Có nhiều quan niệm về tư duy thuật toán. Nguyễn Bá Kim [1] gián tiếp nêu khái
niệm tư duy thuật toán khi cho rằng việc phát triển tư duy thuật giải cho HS là nhằm rèn
luyện cho HS năm loại hoạt động: (i) Thực hiện những hoạt động theo một trình tự xác
định phù hợp với một thuật giải cho trước; (ii) Phân tích một hoạt động thành những hoạt
động thành phần được thực hiện theo một trình tự xác định; (iii) Mô tả chính xác quá trình
tiến hành một hoạt động; (iv) Khái quát hóa một hoạt động trên những đối tượng riêng lẻ
thành một hoạt động trên một lớp đối tượng; và (v) So sánh những con đường khác nhau
cùng thực hiện một công việc và phát hiện con đường tối ưu. Còn Gerald Futschek [6] thì
cho rằng: Tư duy thuật toán là sự kết nối các năng lực của tư duy theo cách nào đó để hiểu
và xây dựng được thuật toán, bao gồm:
1) Năng lực phân tích bài toán đã cho.
2) Năng lực xác định chính xác bài toán.
3) Năng lực tìm ra các thao tác cơ bản tương ứng với bài toán đã cho.
4) Năng lực xây dựng một thuật toán chính xác giải bài toán đã cho bằng cách sử
dụng các thao tác cơ bản.
5) Năng lực tư duy về tất cả các trường hợp bình thường và đặc biệt có thể xảy ra
của một bài toán.
6) Năng lực nâng cao hiệu quả của một thuật toán.
Gerald đã chọn bài toán “Tìm đường trong mê cung” để phân tích quá trình tìm ra
thuật toán đúng đắn thông qua quá trình tối ưu hóa “cách đi” (thao tác cơ bản) để thoát
khỏi mê cung. Định nghĩa của Gerald được chúng tôi vận dụng và phát triển thành một
cách tiếp cận mới trong dạy học và rèn luyện tư duy thuật toán cho HS [3].
200
Phương pháp tinh chế - một cách tiếp cận mới trong dạy học thuật toán...
2.3. Khái niệm tư duy thuật toán dựa trên khái niệm tác nhân
Khái niệm mới về tư duy thuật toán được dựa trên những nhận định sau đây:
Thứ nhất: Tư duy thuật toán thể hiện năng lực trí tuệ giải quyết vấn đề theo một
qui trình xác định. Bởi việc xây dựng thuật toán thực chất là tạo ra một bản thiết kế qui
trình giải bài toán, được mô tả bằng một dãy các thao tác mà theo đó đối tượng thực hiện
thuật toán sẽ tiến hành để thu được Output từ Input. Qui trình này thường gồm ba phần:
Nhận thông tin vào (Input); Xử lí thông tin đã nhận để giải quyết yêu cầu bài toán; và đưa
ra thông tin cần tìm (Output).
Thứ hai: Khi mô tả các chỉ dẫn trong các định nghĩa thuật toán, hoặc mô tả các
thao tác cơ bản trong định nghĩa tư duy thuật toán trên đây của Gerald ở các thuật toán cụ
thể, ta sẽ thấy có những đối tượng hiểu được ngay các chỉ dẫn trong thuật toán, và ngược
lại, có những đối tượng không hình dung được chúng. Nói cách khác, một thao tác được
xem là thao tác cơ bản đối với đối tượng này, nhưng nó có thể là một thao tác phức tạp đối
với đối tượng khác. Chẳng lại như thuật toán trong ví dụ 1 trên đây, thao tác ở bước 1 sẽ
được xem là một thao tác cơ bản nếu HS đã được học thuật toán sắp xếp. Ngược lại nếu
các em chưa được học thuật toán này thì thao tác đó mặc dù phát biểu là dễ hiểu nhưng
việc thực hiện nó một cách tường minh là khó hiểu và phức tạp.
Như vậy việc mô tả thuật toán luôn phải gắn liền với đối tượng có khả năng hiểu
được thuật toán và thực hiện được nó, ta gọi đối tượng này là tác nhân. Dưới đây là phát
biểu chính thức khái niệm về tác nhân và tư duy thuật toán.
Khái niệm tác nhân: Tác nhân có thể là con người, máy tính, hay bất kì một “máy”
nào có khả năng hiểu và thực hiện được thuật toán.
Khái niệm tư duy thuật toán: Tư duy thuật toán là sự kết hợp các năng lực để tìm
ra cách giải quyết vấn đề theo một qui trình xác định, hướng đến một tác nhân tương ứng.
“Cách giải quyết vấn đề” ở đây có thể dựa trên năm hoạt động rèn luyện tư duy thuật
giải của Nguyễn Bá Kim [1], hoặc dựa trên việc rèn luyện sáu năng lực xây dựng thuật
toán theo các thao tác cơ bản của Gerald Futschek [6], hoặc dựa trên quy trình phát hiện
các loại thao tác trong quá trình mô tả thuật toán của chúng tôi [3], hoặc dựa trên qui trình
tinh chế dần thành các phiên bản mô tả thuật toán được đề xuất trong nghiên cứu này.
2.4. Các cấp độ tư duy thuật toán
Biểu diễn một thuật toán thực chất là biểu diễn tri thức giải quyết vấn đề, thể hiện
năng lực tư duy thuật toán. Việc biểu diễn này có thể được chia thành các cấp độ tăng dần
như sau:
1) Cấp độ thực hiện: HS hiểu ý tưởng thuật toán, biểu diễn lại được thuật toán cho
trước, hiểu được nó hoạt động như thế nào, và có thể thực hiện được thuật toán.
2) Cấp độ chuyển giao: HS không những đạt được cấp độ thực hiện thuật toán, mà
còn có thể biểu diễn lại thuật toán ở các phiên bản thích hợp để truyền đạt lại cho tác nhân
hiểu và thực hiện thuật toán đó.
3) Cấp độ thiết kế: HS không những đạt được cấp độ chuyển giao thuật toán, mà
201
Nguyễn Chí Trung, Hồ Cẩm Hà
còn có thể cải tiến, hoặc hơn nữa, có thể sáng tạo thuật toán mới để giải quyết bài toán.
Ba cấp độ tư duy trên đây không hoàn toàn giao nhau khác rỗng và có thể có những
cấp độ trung gian. Trong quá trình biểu diễn thuật toán, HS luôn phải bám sát vào ý tưởng
thuật toán, có thể điều chỉnh lại ý tưởng thuật toán để nó đầy đủ, đúng đắn hơn; có thể diễn
đạt lại thuật toán cho người khác hiểu và thực hiện; có thể phát hiện những điều chỉnh và
bổ sung cần thiết vào mô tả thuật toán trước đó để nó hoàn thiện hơn. Vậy ở mọi cấp độ
đều đòi hỏi phải biểu diễn được thuật toán. Việc biểu diễn thuật toán ở cấp độ thấp có thể
liên quan đến các cấp độ cao hơn.
2.5. Phương pháp tinh chế trong dạy học thuật toán cho học sinh
phổ thông
Như đã được đề cập trong phần giới thiệu, tinh chế là phương pháp dạy học thuật
toán dựa trên ý tưởng “làm mịn” nhưng được chi tiết hóa thành các phiên bản khác nhau.
Mỗi phiên bản thuật toán thể hiện một cấp độ làm mịn hoặc thể hiện một sự nâng cấp
(hiệu chỉnh hay cải tiến) phiên bản trước đó. Việc lựa chọn các phiên bản nào để dạy một
thuật toán được quyết định bởi một bộ yếu tố xác định (phương pháp làm mịn được giới
thiệu chi tiết [2]).
Thuật toán có thể biểu diễn bằng một trong các hình thức sau đây:
1) Nêu ý tưởng: Thuật toán được mô tả bằng ngôn ngữ tự nhiên ở mức độ phát biểu
ý tưởng thuật toán.
2) Mô tả: Thuật toán được mô tả bằng ngôn ngữ tự nhiên ở mức độ biểu diễn theo
phương pháp liệt kê từng bước hoặc sơ đồ khối.
3) Giả mã: Thuật toán được mô tả bằng ngôn ngữ gần giống với ngôn ngữ lập trình
ở mức độ mô phỏng chương trình.
4) Chương trình: Thuật toán được mô tả bằng một ngôn ngữ lập trình cụ thể và cùng
với việc tổ chức dữ liệu, nó tạo thành một chương trình thực hiện được trên máy tính.
Mặc dù tại một cấp độ làm mịn, thuật toán có thể được biểu diễn bằng một trong
các hình thức nêu trên, nhưng các hình thức biểu diễn này đòi hỏi mức độ suy nghĩ, tìm tòi
khác nhau để thể hiện thuật toán. Do đó, việc chuyển một thể hiện thuật toán từ hình thức
mô tả đến một thể hiện thuật toán ở hình thức giả mã, và cuối cùng là hình thức chương
trình thường phải qua nhiều phiên bản thuật toán và thể hiện sự nâng dần về mức độ tư
duy. Đây là một quá trình tinh chế. Đặc biệt, phiên bản nâng cấp một thuật toán (cải tiến
hiệu quả, cải tiến thuật toán) đòi hỏi một mức độ tư duy cao hơn và thể hiện rõ nhất của ý
nghĩa “tinh chế”. Quá trình tinh chế này dựa trên hai nguyên tắc sau đây:
1) Tinh chế tương đương: Các phiên bản mới hạn chế dần ngôn ngữ tự nhiên, tăng
dần các biểu diễn toán học, rồi hạn chế dần các biểu diễn toán học để tăng dần các biểu
diễn cú pháp của giả mã hoặc ngôn ngữ lập trình.
2) Tinh chế từ trên xuống: Nguyên tắc này dựa trên ý tưởng từng bước phân tích bài
toán thành những bài toán con đơn giản hơn. Mỗi bài toán con trong bước tiếp theo lại có
thể được phân tích thành các bài toán con đơn giản hơn nữa. Quá trình này được tiếp tục
202
Phương pháp tinh chế - một cách tiếp cận mới trong dạy học thuật toán...
cho đến khi thu được tập các bài toán sơ cấp (dễ giải hoặc đã biết cách giải). Như vậy,
phiên bản thuật toán tại một bước nào đó có thể bao gồm một số thao tác được mô tả ngắn
gọn nhưng chung chung, chưa biết rõ ràng nó được thực hiện như thế nào. Những thao tác
này sẽ được chi tiết hóa dần ở các phiên bản thuật toán trong các bước tiếp theo.
Bộ tham số và cách xác định
Trước hết ta tìm hiểu những yếu tố ảnh hưởng quyết định đến hiệu quả dạy học
các môn khoa học, trong đó có môn toán, công nghệ, và lập trình ở một số nước trên thế
giới. Steve Higgins và cộng sự (Trung tâm Giáo dục Phổ thông, Đại học Newcasle, Anh)
[12] đã khẳng định rằng hiệu quả dạy và học chịu ảnh hưởng quyết định bởi bốn yếu tố
chính, trong đó yếu tố “hệ thống và qui trình” bao gồm: Năng lực nhận thức của người
học; Thái độ, hành vi của người dạy; và Kế hoạch dạy học. Fabio Alivernini và các cộng
sự (viện Đào tạo và Giáo dục Quốc gia, Ý) [13] đã chỉ ra rằng hiệu quả học tập khoa học
của HS liên quan mật thiết với năm yếu tố: Nơi sinh; Giới tính; Tài liệu học tập ở nhà; Sự
tự tin trong học khoa học; và Khả năng nhận thức ở trường học. Jeannie Oakes (Đại học
Canifornia, Mỹ) [14] đã xây dựng mô hình Rand gồm sáu nhân tố ảnh hưởng đến hiệu
quả học tập, đó là: Kiến thức cơ bản hiện có của HS; Thái độ học tập; Chất lượng trường
phổ thông; Trình độ người thầy; Chất lượng dạy học; và Kết quả đã đạt được trước đó ở
môn toán. Susan Wiedenbeck (Đại học Drexel, IreLand) và các cộng sự [15] đã quan tâm
đến câu hỏi: Tại sao một số HS học lập trình dễ dàng và nhanh chóng, trong khi các HS
khác thì ngược lại?. Các tác giả đã đề xuất mô hình hai nhân tố ảnh hưởng đến việc học
lập trình của HS, đó là tính tự khả (self-efficacy) được định nghĩa bởi Bandura [16] và mô
hình trí tuệ (mental model) được định nghĩa bởi Norman [17]. Bandura cho rằng tự khả
như là sự tự đánh giá về khả năng tổ chức và thực hiện một qui trình cần thiết để đạt được
một dạng thiết kế cách thực hiện một nhiệm vụ cho trước trong một lĩnh vực riêng biệt.
Normal cho rằng mô hình trí tuệ như là sự thể hiện ở bên trong trí tuệ của con người về
các đối tượng và các hệ thống thực. Các mô hình trí tuệ có vai trò quan trọng trong việc
gỡ rối một qui trình khi nó gặp sai sót, vì chúng hỗ trợ lí giải và định vị các lỗi có thể xảy
ra. Theo nhóm nghiên cứu của Canas [18], mô hình trí tuệ của một người lập trình có thể
bao gồm: Hiểu cách một chương trình thực hiện; Hiểu phương pháp chung để giải quyết
các bài toán bằng lập trình; Biết cấu trúc của một chương trình và các hàm; Nắm được cú
pháp và ngữ nghĩa của một ngôn ngữ lập trình cụ thể.
Qua sự tìm hiểu trên đây, ta thấy có nhiều quan điểm