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ó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ể.

pdf11 trang | Chia sẻ: thanhle95 | Lượt xem: 56 | Lượt tải: 0download
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