Một cách cụ thể, luận án đưa ra một số cách tiếp cận mới trong dạy học giải bài tập toán theo thuật toán ở một số nội dung của môn Toán và dạy học các thuật toán giải các bài toán dựa và
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI
-
NGUYỄN CHÍ TRUNG
PHÁT TRIỂN TƯ DUY THUẬT TOÁN CHO HỌC SINH
THÔNG QUA DẠY HỌC THUẬT TOÁN
Ở TRƯỜNG TRUNG HỌC PHỔ THÔNG
LUẬN ÁN TIẾN SĨ KHOA HỌC GIÁO DỤC
HÀ NỘI - 2015
Trang 2LUẬN ÁN TIẾN SĨ KHOA HỌC GIÁO DỤC
Chuyên ngành: Lý luận và phương pháp dạy học bộ môn toán
Mã số: 62 14 01 11
NGƯỜI HƯỚNG DẪN KHOA HỌC
1: PGS.TS Lê Khắc Thành 2: PGS.TS Hồ Cẩm Hà
HÀ NỘI - 2015
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan đây công trình nghiên cứu do chính tôi thực hiện Các kết quả nghiên cứu đƣợc trình bày trong luận án là trung thực, khách quan và chƣa đƣợc công bố bởi bất kỳ tác giả nào hay ở bất cứ công trình nào khác Các thông tin trích dẫn trong luận án này đều đƣợc chỉ rõ nguồn gốc
Tác giả
Nguyễn Chí Trung
Trang 4LỜI CẢM ƠN
Tôi muốn tỏ lòng biết ơn đến rất nhiều người, với nhiều cách khác nhau đã giúp
đỡ Tôi hoàn thành luận án này Trước hết, tôi xin chân thành cảm ơn PGS.TS Lê Khắc Thành và PGS.TS Hồ Cẩm Hà – các thầy cô trực tiếp hướng dẫn và động viên Tôi trong suốt quá trình nghiên cứu luận án
Chân thành cảm ơn GS.TS Bùi Văn Nghị, và các Thầy cô thuộc bộ môn Lý luận
và Phương pháp dạy học toán, khoa Toán Tin, trường Đại học Sư phạm Hà nội, đã
có những góp ý quí báu trong suốt quá trình sinh hoạt tại bộ môn, để luận án được hoàn thiện tốt hơn Tôi chân thành cảm ơn GS.TSKH Nguyễn Bá Kim và các thầy
cô trong Hội đồng bộ môn đã giúp chọn tên luận án phù hợp, phản ánh đúng nội dung nghiên cứu Tôi chân thành cảm ơn PGS.TS Vũ Quốc Chung đã hướng dẫn tôi trong giai đoạn hoàn thiện luận án để luận án có chất lượng tốt hơn
Trân trọng cảm ơn Quý phòng ban và Quý trường Đại học Sư phạm Hà nội đã hỗ trợ toàn bộ kinh phí đào tạo cũng như tạo nhiều điều kiện thuận lợi cho Tôi trong thời gian học tập và hoàn thành chương trình tiến sỹ
Chân thành cảm ơn các thầy cô của bộ môn Lý luận và Phương pháp dạy học, Ban chủ nhiệm khoa Công nghệ thông tin đã cho phép và tạo điều kiện thuận lợi cho tôi được học chương trình tiến sỹ Chân thành cảm ơn các thầy cô trong khoa, các bạn bè đồng nghiệp và các em sinh viên đã chia sẻ và động viên cho tôi trong thời gian học tập
Đặc biệt nhất, trong luận án này tôi xin dành sự biết ơn đến gia đình nhất là vợ và các con đã sát cánh chia sẻ trong suốt thời gian nghiên cứu luận án
Trang 5BẢNG CÁC CỤM TỪ VIẾT TẮT
CNTT Công nghệ thông tin
TongBiet Tổng điểm đánh giá mức độ nhận biết
TongHieu Tổng điểm đánh giá mức độ thông hiểu
TongPTTH Tổng điểm đánh giá mức độ phân tích, tổng hợp TongVDung Tổng điểm đánh giá mức độ vận dụng
XLBiet Xếp loại mức độ nhận biết
XLHieu Xếp loại mức độ thông hiểu
XLPTTH Xếp loại mức độ phân tích, tổng hợp
XLVD Xếp loại mức độ vận dụng
Trang 6MỤC LỤC
MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Mục tiêu nghiên cứu 2
3 Nhiệm vụ nghiên cứu 2
3.1 Nghiên cứu lý luận 2
3.2 Nghiên cứu thực tiễn 2
3.3 Đề xuất giải pháp 3
3.4 Thực nghiệm sư phạm 3
4 Đối tượng nghiên cứu 3
5 Phạm vi nghiên cứu 3
6 Phương pháp nghiên cứu 4
6.1 Nghiên cứu lý luận 4
6.2 Khảo sát điều tra thực tiễn 4
6.3 Nghiên cứu trường hợp 4
6.4 Thực nghiệm sư phạm 4
6.5 Thống kê Toán học 4
7 Giả thuyết khoa học 4
8 Các luận điểm bảo vệ và đóng góp của luận án 5
8.1 Về mặt lý luận 5
8.2 Về mặt thực tiễn 5
9 Cấu trúc và tóm tắt nội dung của luận án 5
CHƯƠNG 1 CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN VỀ VIỆC DẠY HỌC THUẬT TOÁN 7
1.1 SỰ HÌNH THÀNH KHÁI NIỆM THUẬT TOÁN 7
1.1.1 Nguồn gốc của từ thuật toán 7
1.1.2 Sự hình thành khái niệm thuật toán trong Toán học 7
1.1.3 Khái niệm thuật toán trong Khoa học máy tính 10
1.1.4 Khái niệm thuật toán được dạy ở trường phổ thông 13
1.2 CÁC TÍNH CHẤT CỦA THUẬT TOÁN 14
1.2.1 Các tính chất cơ bản của thuật toán 14
1.2.2 Các tính chất mở rộng 15
1.3 TỔNG QUAN VỀ NHỮNG CÁCH TIẾP CẬN DẠY HỌC THUẬT TOÁN 19
1.3.1 Dạy học thuật toán trong một số nội dung Toán học 19
Trang 71.3.2 Dạy học thuật toán thông qua các câu đố và câu đố giống như trò chơi
19
1.3.3 Dạy học thuật toán bằng phương pháp trực quan hóa thuật toán 20
1.3.4 Dạy học thuật toán theo hướng phát triển tư duy thuật toán 21
1.3.5 Dạy học thuật toán theo các mức trừu tượng của tư duy thuật toán 26
BÌNH LUẬN 28
1.4 THỰC TIỄN DẠY HỌC THUẬT TOÁN Ở TRƯỜNG TRUNG HỌC PHỔ THÔNG 28
1.4.1 Nghiên cứu, khảo sát thực tiễn dạy học thuật toán 28
1.4.2 Kết quả khảo sát điều tra tình hình học thuật toán 29
1.4.3 Thực tế dạy học thuật toán trong môn Toán và môn Tin học 31
1.4.4 Đánh giá và đề xuất 33
KẾT LUẬN CHƯƠNG 1 34
CHƯƠNG 2 CÁC BIỂU HIỆN VÀ CÁC CẤP ĐỘ CỦA SỰ PHÁT TRIỂN TƯ DUY THUẬT TOÁN 35
2.1 KHÁI NIỆM TƯ DUY THUẬT TOÁN 35
2.1.1 Những căn cứ để đề xuất khái niệm tư duy thuật toán 35
2.1.2 Khái niệm tác nhân và khái niệm tư duy thuật toán 36
2.2 CÁC BIỂU HIỆN CỦA SỰ PHÁT TRIỂN TƯ DUY THUẬT TOÁN TRONG GIẢI BÀI TẬP TOÁN THEO THUẬT TOÁN 37
Bài toán về các chất dinh dưỡng 38
2.2.1 Hiểu bài toán 38
2.2.2 Hiểu hướng giải quyết giải bài toán 40
2.2.3 Hiểu thuật toán giải bài toán 41
2.2.4 Thực hiện được thuật toán giải bài toán 43
2.2.5 Xây dựng được thuật toán tương đương 44
2.2.6 Đánh giá được thuật toán 45
2.2.7 Cải tiến thuật toán hoặc xây dựng được thuật toán mới 46
2.3 CÁC BIỂU HIỆN CỦA TƯ DUY THUẬT TOÁN TRONG GIẢI BÀI TOÁN DỰA VÀO CÁC CÔNG CỤ TÍNH TOÁN TỰ ĐỘNG 46
2.3.1 Xác định bài toán 47
2.3.2 Hiểu ý tưởng thuật toán 48
2.3.3 Hiểu thuật toán 50
2.3.4 Thực hiện được thuật toán 54
2.3.5 Xây dựng được thuật toán tương đương 56
2.3.6 Đánh giá được thuật toán 57
Trang 82.3.7 Cải tiến được thuật toán hoặc thiết kế được thuật toán mới 58
2.4 CÁC CẤP ĐỘ CỦA SỰ PHÁT TRIỂN TƯ DUY THUẬT TOÁN 58
2.4.1 Ý nghĩa của việc xác định các cấp độ tư duy thuật toán 58
2.4.2 Các cấp độ tư duy thuật toán 59
2.4.3 Những biểu hiện của các cấp độ tư duy thuật toán 60
2.4.4 Ví dụ minh họa về các cấp độ tư duy thuật toán 61
KẾT LUẬN CHƯƠNG 2 68
CHƯƠNG 3 MỘT SỐ TIẾP CẬN MỚI TRONG DẠY HỌC PHÁT TRIỂN TƯ DUY THUẬT TOÁN CHO HỌC SINH TRUNG HỌC PHỔ THÔNG 70
3.1 PHƯƠNG PHÁP THAO TÁC HÓA TRONG DẠY HỌC THUẬT TOÁN 70
3.1.1 Phương pháp chia để trị và mô đun hóa thuật toán 70
3.1.2 Phương pháp thao tác hóa trong dạy học thuật toán 77
3.1.3 Sự phát triển tư duy thuật toán trong dạy học thuật toán theo phương pháp thao tác hóa 89
3.2 PHƯƠNG PHÁP LÀM MỊN DẦN TRONG DẠY HỌC THUẬT TOÁN 91
3.2.1 Khái niệm phương pháp làm mịn dần trong dạy học thuật toán 91
3.2.2 Tổng quan về các cách tiếp cận làm mịn dần 92
3.2.3 Quá trình làm mịn dần từ ngoài vào 92
3.2.4 Phân biệt “mô đun thuật toán” và “gói thuật toán” 98
3.2.5 Sự phát triển tư duy thuật toán trong dạy học thuật toán theo phương pháp làm mịn dần từ ngoài vào 98
3.3 PHƯƠNG PHÁP TINH CHẾ TRONG DẠY HỌC THUẬT TOÁN 100
3.3.1 Giới thiệu phương pháp tinh chế và các khái niệm liên quan 100
3.4.2 Nguyên tắc tinh chế dựa trên ngôn ngữ và sự phát triển của tư duy thuật toán 103
3.4.3 Tinh chế tương đương theo từng bước của quá trình xây dựng thuật toán 105
3.4.5 Sự phát triển của tư duy thuật toán trong quá trình tinh chế tương đương 109
3.4.6 Tinh chế nâng cấp 111
3.4.7 Sự phát triển tư duy thuật toán trong quá trình tinh chế nâng cấp 116
KẾT LUẬN CHƯƠNG 3 117
CHƯƠNG 4 THỰC NGHIỆM SƯ PHẠM 119
Trang 94.1 MỤC ĐÍCH, PHƯƠNG PHÁP ĐÁNH GIÁ VÀ QUI TRÌNH THỰC
NGHIỆM 119
4.1.1 Mục đích, mục tiêu và nhiệm vụ của thực nghiệm sư phạm 119
4.1.2 Phương pháp đánh giá trong thực nghiệm sư phạm 119
4.2 QUI TẮC MÃ HÓA VÀ QUI ĐỔI ĐIỂM 121
4.2.1 Qui đổi và mã hóa điểm bài kiểm tra - đánh giá tổng kết 121
4.2.2 Qui đổi và mã hóa điểm bài tập nhóm - Đánh giá ngang hàng và tự đánh giá 122
4.2.3 Qui đổi và mã hóa điểm từ phiếu khảo sát 123
4.3 THỰC NGHIỆM 1 124
4.3.1 Giới thiệu thực nghiệm 124
4.3.2 Kết quả đánh giá bài tập nhóm 125
4.3.3 Kết quả làm bài kiểm tra 128
4.3.4 Kết quả đánh giá về phương pháp dạy học của GV 130
4.3.5 Kết luận thực nghiệm 1 133
4.4 THỰC NGHIỆM 2 134
4.4.1 Giới thiệu thực nghiệm 2 134
4.4.2 Kết quả đánh giá bài tập nhóm và bài kiểm tra 134
4.4.3 Kết quả đánh giá về phương pháp dạy học của giáo viên 140
4.5 ĐỀ XUẤT VÀ KIẾN NGHỊ 142
4.5.1 Về việc dạy học thuật toán ở trường trung học phổ thông 142
4.5.2 Về điều chỉnh một số nội dung của học phần PPDH chuyên ngành môn Tin học 142
KẾT LUẬN CHƯƠNG 4 143
KẾT LUẬN 144
CÁC CÔNG TRÌNH CỦA TÁC GIẢ 147
TÀI LIỆU THAM KHẢO 148
Trang 10DANH MỤC CÁC VÍ DỤ
Ví dụ 1 1 Dãy Fibonacii 14
Ví dụ 1 2 So sánh hai thuật toán sắp xếp 15
Ví dụ 1 3 Hệ phương trình đại số tuyến tính 17
Ví dụ 1 4 Công thức tính tích phân không sử dụng được 17
Ví dụ 2 1 Chọn các cuộc họp 35
Ví dụ 2 2 Hiểu rõ bài toán 38
Ví dụ 2 3 Phát biểu được bài toán tổng quát 39
Ví dụ 2 4 Đưa ra được đầy đủ công cụ và hướng giải quyết bài toán 40
Ví dụ 2 5 Hiểu rõ thuật toán 41
Ví dụ 2 6 Vận dụng được thuật toán 43
Ví dụ 2 7 Xây dựng được thuật toán tương đương 44
Ví dụ 2 8 Chỉ ra được hạn chế và ưu điểm của thuật toán 45
Ví dụ 2 9 Tìm hướng giải khác cho bài toán 46
Ví dụ 2 10 Phát biểu được bài toán tổng quát và tổ chức tốt dữ liệu 47
Ví dụ 2 11 Hiểu rõ ý tưởng thuật toán 48
Ví dụ 2 12 Hiểu rõ thuật toán 50
Ví dụ 2 13 Áp dụng và mô phỏng thuật toán 54
Ví dụ 2 14 Xây dựng được phiên bản mô tả mới cho thuật toán 56
Ví dụ 2 15 Đánh giá tính chất và hiệu quả của thuật toán 57
Ví dụ 2 16 Phát hiện sai sót và cải tiến thuật toán 58
Ví dụ 2 17 Xác định tham số để các nghiệm của phương trình bậc hai thỏa mãn một hệ thức cho trước 62
Ví dụ 2 18 So sánh một số với các nghiệm của phương trình bậc hai 65
Ví dụ 3 1 Tìm các số đặc trưng của mẫu số liệu 72
Ví dụ 3 2 Tìm các số đặc trưng của các mẫu số liệu: Dùng sơ đồ khối 75
Ví dụ 3 3 Thuật toán tìm số trung bình tổng quát 78
Ví dụ 3 4 Tìm phương trình đường thẳng – Bài toán 1 (Hình học lớp 10) 81
Ví dụ 3 5 Tìm phương trình đường thẳng – Bài toán 2 (Hình học lớp 10) 86
Ví dụ 3 6 Làm mịn từ ngoài vào một lần 93
Ví dụ 3 7 Tinh chế theo từng bước của quá trình xây dựng thuật toán 105
Ví dụ 3 8 Tinh chế nâng cấp 112
Ví dụ 3 9 Về cách ước lượng, đánh giá hiệu quả thuật toán 113
Trang 11DANH MỤC CÁC BẢNG
Bảng 1 1 Bảng thống kê tổng hợp 29
Bảng 1 2 Thống kê mô tả (Descriptive Statistics) 30
Bảng 1 3 Mô tả tần suất (Frequency table) 30
Bảng 1 4 Giá trị các thang đo theo từng đối tƣợng học sinh 31
Bảng 1 5 Báo cáo các giá trị trung bình của các thang đo nhận thức 31
Bảng 4 1 Qui tắc qui đổi điểm của một bài tập trong đề kiểm tra 122
Bảng 4 2 Bảng qui tắc qui đổi điểm của bài tập nhóm 123
Bảng 4 3 Bảng qui đổi điểm sang các thang đo khảo sát 124
Bảng 4 4 Thống kê kết quả bài tập nhóm của các lớp thực nghiệm 125
Bảng 4 5 Thống kê kết quả bài tập nhóm của các lớp đối chứng 126
Bảng 4 6 Bảng tổng hợp: So sánh kết quả làm bài tập nhóm giữa các lớp thực nghiệm và các lớp đối chứng 127
Bảng 4 7 Thống kê kết quả làm bài kiểm tra của các lớp thực nghiệm 128
Bảng 4 8 Thống kê kết quả làm bài kiểm tra của các lớp đối chứng 129
Bảng 4 9 Bảng tổng hợp: So sánh kết quả làm bài kiểm tra giữa các lớp thực nghiệm và các lớp đối chứng 130
Bảng 4 10 Điểm trung bình đánh giá PPDH của GV 131
Bảng 4 11 Kiểm định giả thuyết thống kê 132
Bảng 4 12 Thống kê kết quả bài tập nhóm của các lớp thực nghiệm 135
Bảng 4 13 Thống kê kết quả làm bài kiểm tra của các lớp thực nghiệm 136
Bảng 4 14 Thống kê kết quả bài tập nhóm của các lớp đối chứng 137
Bảng 4 15 Thống kê kết quả làm bài kiểm tra của các lớp đối chứng 138
Bảng 4 16 Bảng tổng hợp: So sánh kết quả làm bài tập nhóm giữa các lớp thực nghiệm và các lớp đối chứng 139
Bảng 4 17 Bảng tổng hợp: So sánh kết quả làm bài kiểm tra giữa các lớp thực nghiệm và các lớp đối chứng 139
Bảng 4 18 Điểm trung bình đánh giá PPDH của GV 140
Bảng 4 19 Kiểm định giả thuyết thống kê 141
Trang 12DANH MỤC CÁC HÌNH VẼ VÀ BIỂU ĐỒ
Hình 1 1 Tìm cách đi qua mê cung 24
Hình 1 2 Vừa đi vừa đánh dấu 25
Hình 1 3 Thuật toán giải quyết vấn đề của Luay Nakhleh 26
Hình 2 1 Miền nghiệm của hệ điều kiện và tập các phương án của bài toán 41 Hình 2 2 Các giao điểm của các đường thẳng được tính bởi thuật toán 55
Hình 2 3 Đồ thị hàm bậc hai trong trường hợp có hai nghiệm 67
Hình 3 1 Một số mô đun thuật toán giải bài toán tính các số đặc trưng 77
Hình 3 2 Sơ đồ thuật toán P ở dạng “thô” 94
Hình 3 3 Sơ đồ thuật toán Q 95
Hình 3 4 Sơ đồ thuật toán P ở dạng mịn (cách 1) 96
Hình 3 5 Sơ đồ thuật toán P ở dạng mịn (cách 2) 97
Hình 3 6 Dãy cần sắp xếp được chia thành 2 đoạn 110
Hình 3 7 Chuyển phần tử nhỏ nhất về đầu dãy con 112
Biều đồ 4 1 Biểu đồ biểu diễn số lượng và tỉ lệ HS nhóm lớp thực nghiệm đạt các cấp độ tư duy thuật toán đối với bài tập nhóm và bài tập 125
Biều đồ 4 2 Biểu đồ biểu diễn số lượng và tỉ lệ HS nhóm lớp đối chứng đạt các cấp độ tư duy thuật toán đối với bài tập nhóm 126
Biều đồ 4 3 So sánh chuẩn tư duy thuật toán giữa nhóm lớp thực nghiệm và nhóm lớp đối chứng 128
Biều đồ 4 4 Biểu đồ biểu diễn số lượng và tỉ lệ HS các lớp thực nghiệm đạt các cấp độ tư duy thuật toán đối với bài kiểm tra 128
Biều đồ 4 5 Biểu đồ biểu diễn số lượng và tỉ lệ HS các lớp đối chứng đạt các cấp độ tư duy thuật toán đối với bài kiểm tra 129
Biều đồ 4 6 Biểu đồ biểu diễn số lượng và tỉ lệ HS nhóm lớp thực nghiệm đạt các cấp độ tư duy thuật toán đối với bài tập nhóm 135
Biều đồ 4 7 Biểu đồ biểu diễn số lượng và tỉ lệ HS các lớp thực nghiệm đạt các cấp độ tư duy thuật toán đối với bài kiểm tra 136
Biều đồ 4 8 Biểu đồ biểu diễn số lượng và tỉ lệ HS nhóm lớp đối chứng đạt các cấp độ tư duy thuật toán đối với bài tập nhóm 137
Biều đồ 4 9 Biểu đồ biểu diễn số lượng và tỉ lệ HS nhóm lớp đối chứng đạt các cấp độ tư duy thuật toán đối với bài kiểm tra 138
Biều đồ 4 10 So sánh chuẩn tư duy thuật toán giữa nhóm lớp thực nghiệm và nhóm lớp đối chứng 140
Trang 13MỞ ĐẦU
1 Lý do chọn đề tài
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, nguyên thủ tướng 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 (2008), 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 là 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 của quá trình dạy và học là giúp cho HS phát triển được tư duy
Hồ Sỹ Đàm và các cộng sự (2006) đã khẳng định mục tiêu trên đây trong dạy học môn Tin học bậc học phổ thông và nhấn mạnh: Mục tiêu của môn Tin học là “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" Nguyễn Bá Kim (2009) đã đề cập đến ―dạy học qui tắc phương pháp” trong dạy học môn Toán, cụ thể là dạy thuật giải và những qui tắc tựa thuật giải Dạy thuật giải nhằm dạy cho HS kiến tạo tri thức, đặc biệt là tri thức phương pháp Đây là một nội dung rất quan trọng, vì nó dạy cho HS tư duy thuật giải, hay nói rộng hơn
là dạy HS phương pháp tiếp cận giải quyết một vấn đề một cách khoa học Ở môn
Toán, có những tri thức phương pháp là các thuật giải và qui tắc tựa thuật giải được
chương trình qui định dạy tường minh Ở môn Tin học, tất cả các bài toán đều được dạy tường minh thuật toán Có thể nói rằng thuật toán là phương pháp giải quyết
Trang 14vấn đề lấy nền tảng là Toán học, được phát triển mạnh mẽ trong ngành Khoa học máy tính, và nó trở thành mối quan tâm của cả hai phạm trù Toán học và Tin học
Vậy thuật toán là nội dung dạy học mà nó mở ra nhiều cơ hội nhất để rèn luyện và
phát triển tư duy nói chung và tư duy thuật toán nói riêng cho HS
Trong những năm gần đây, dạy học theo định hướng phát triển năng lực đã trở
thành xu hướng chính đối với nhiều nước trên thế giới, đặc biệt là các nước phát triển thuộc OECD (Organisation for Economic Co-operation and Development-Tổ chức hợp tác và phát triển kinh tế) Dạy học thuật toán có thể xem như góp vai trò đáng kể trong dạy học định hướng phát triển năng lực giải quyết vấn đề Bởi lẽ, dạy học thuật toán hưởng ứng mục tiêu đào tạo hình mẫu con người có năng lực tự quyết và có khả năng ứng xử và giải quyết các vấn đề trong khoa học và thực tiễn Với sự đảm bảo của Toán học, thuật toán trong lĩnh vực Khoa học máy tính bồi dưỡng cho HS phương pháp tư duy hiệu quả trong học tập những môn học khác ở trường phổ thông, nhất là trong những kiến thức tích hợp và liên môn với Toán và Tin học
Với những lý do trên, chúng tôi chọn đề tài “Phát triển tư duy thuật toán cho HS thông qua dạy học thuật toán ở trường trung học phổ thông” để nghiên cứu
2 Mục tiêu nghiên cứu
Mục tiêu của luận án là đề xuất được một số cách tiếp cận trong dạy học thuật toán nhằm phát triển tư duy thuật toán cho HS trong dạy học môn Toán và môn Tin
học Một cách cụ thể, luận án đưa ra một số cách tiếp cận mới trong dạy học giải bài tập toán theo thuật toán ở một số nội dung của môn Toán và dạy học các thuật toán giải các bài toán dựa vào máy tính thuộc lĩnh vực của môn Tin học Những
cách tiếp cận này nhằm thúc đẩy và hướng dẫn HS tư duy đúng đắn và hiệu quả trong giải quyết vấn đề, tức là nhằm phát triển tư duy thuật toán cho HS
3 Nhiệm vụ nghiên cứu
3.1 Nghiên cứu lý luận
Nghiên cứu các vấn đề sau đây:
- Khái niệm thuật toán ở góc độ Toán học và Khoa học máy tính
- Khái niệm thuật toán được dạy ở môn Tin học trong trường phổ thông
- Các tính chất và đánh giá hiệu quả thuật toán
- Những xu hướng dạy học thuật toán hiện nay ở trong nước và trên thế giới
3.2 Nghiên cứu thực tiễn
Trang 15Khảo sát và đánh giá chất lượng dạy học thuật toán và lập trình trong môn Tin học ở một số trường phổ thông Đánh giá thực tế dạy học thuật toán trong môn Toán Từ các điều tra và đánh giá trên, đưa ra các đề xuất phương hướng nâng cao hiệu quả dạy học thuật toán
- Xây dựng hệ thống các thang đo tư duy thuật toán, bao gồm các biểu hiện của
sự phát triển tư duy thuật toán và các cấp độ tư duy thuật toán
3.4 Thực nghiệm sư phạm
- Vận dụng cách tiếp cận dạy học thuật toán đã đề xuất để dạy học một số tiết thực nghiệm sư phạm
- Thiết kế bộ công cụ đánh giá kết quả thực nghiệm sư phạm
- Sử dụng phần mềm phân tích dữ liệu thực nghiệm để đưa ra các đánh giá và
đề xuất
4 Đối tượng nghiên cứu
Đối tượng nghiên cứu của luận án là quá trình dạy học thuật toán ở trường THPT mà thực chất là quá trình giáo dục thông qua dạy học thuật toán ở trường
THPT Quá trình dạy học bao gồm việc dạy (hoạt động và giao lưu của thầy) và việc học (hoạt động và giao lưu của HS) với đối tượng chiếm lĩnh là nội dung thuật toán, còn bản thân việc học là đối tượng điều khiển của việc dạy Quá trình giáo
dục nhằm mục tiêu chủ đạo của việc dạy học phát triển tư duy thuật toán, thể hiện ở chỗ GV không những chỉ dạy HS kiến tạo được các tri thức về thuật toán mà còn cho HS nắm được những phương thức tư duy như tư duy ngữ nghĩa, tư duy cú pháp, tư duy ngôn ngữ và đặc biệt là tư duy thuật toán
5 Phạm vi nghiên cứu
Về phạm vi lý thuyết, luận án tập trung nghiên cứu về lý luận và phương pháp
dạy học thuật toán ở trường phổ thông
Về phạm vi đối tượng, luận án hướng đến lớp đối tượng HS đại trà lớp 10 và lớp
11 THPT, trong đó có một số nội liên quan đến đối tượng HS khá
Trang 16Về phạm vi nội dung, luận án nghiên cứu những bài toán của môn Toán có thể
giải tổng quát theo thuật toán và những bài toán của môn Tin học được xây dựng thuật toán thuận lợi cho lập trình để giải quyết trên máy tính
6 Phương pháp nghiên cứu
6.1 Nghiên cứu lý luận
Nghiên cứu lý luận bao gồm nghiên cứu những bài báo, tạp chí và sách về cách
tiếp cận dạy học thuật toán, và các tài liệu liên quan như tâm lý học, giáo dục học, sách giáo khoa và sách giáo viên
Phân tích tài liệu lý luận trên đây để hoàn thành nhiệm vụ của đề tài
So sách quốc tế dựa trên cơ sở đánh giá, so sánh tài liệu, cách tiếp cận dạy học
thuật toán ở trong nước và trên thế giới
Phân tích tiên nghiệm trong nghiên cứu lý luận dựa vào lịch sử hình thành khái
niệm thuật toán và các cách tiếp cận dạy học thuật toán khác nhau để dự kiến những hiện tượng có thể có của HS khi học thuật toán Từ đó kiểm nghiệm hiện tượng đó trong thực nghiệm sư phạm về cách tiếp cận dạy học thuật toán được đề xuất
6.2 Khảo sát điều tra thực tiễn
Khảo sát - điều tra thực tiễn dạy học thuật toán hiện nay ở chương trình Tin học
lớp 10 và lớp 11, THPT, để phát hiện những thuật lợi và khó khăn trong việc dạy học thuật toán, giúp thu thập thông tin sinh động cho nghiên cứu
6.3 Nghiên cứu trường hợp
Dạy học một số nội dung về thuật toán Trao đổi với GV, theo dõi, ghi chép những trường hợp này để xây dựng những tiêu chuẩn đánh giá, đo lường các kết quả điều tra cụ thể Trên cơ sở đó phân tích, đánh giá dựa trên phần mềm
6.4 Thực nghiệm sư phạm
Thiết kế bài tập nhóm, bài kiểm tra và phiếu trắc nghiệm
Xây dựng các thang đo tư duy thuật toán để đo chất lượng dạy và học thuật toán Tiến hành thực nghiệm kết quả nghiên cứu
Phân tích số liệu thu thập được trên phần mềm để đưa ra đánh giá và đề xuất
6.5 Thống kê Toán học
Thống kê Toán học ở đây dựa trên lý thuyết xác xuất thống kê và phân tích dữ
liệu trong nghiên cứu giáo dục Kết quả của phân tích dữ liệu là những số liệu về thống kê mô tả và những kết luận về thống kê suy luận Những kết quả này được sử dụng để đánh giá những cách tiếp cận mới trong dạy học thuật toán của thực nghiệm sư phạm
7 Giả thuyết khoa học
Trang 17Nếu có cách tiếp cận mới, phù hợp trong dạy học thuật toán ở trường THPT thì
HS sẽ được phát triển tư duy thuật toán và được nâng cao hiệu quả học tập thuật toán Nói một cách đầy đủ hơn, HS được phát triển tư duy thuật toán trong việc
hiểu, thực hiện, đánh giá, chuyển giao và xây dựng thuật toán Với cách tiếp cận
mới, tư duy thuật toán được phân tích thành các cấp độ với các đánh giá tương ứng, làm căn cứ cho việc tổ chức dạy học đem lại hiệu quả hơn trong dạy học thuật toán cho HS
8 Các luận điểm bảo vệ và đóng góp của luận án
8.1 Về mặt lý luận
Luận án có những đóng góp sau đây về mặt khoa học:
Đề xuất được hệ thống lí luận cho những cách tiếp cận phù hợp trong dạy học thuật toán cho HS ở trường THPT, nhằm phát triển tư duy thuật toán và nâng cao hiệu quả học tập thuật toán Hệ thống lí luận này bao gồm:
- Những khái niệm nền tảng bao gồm: tác nhân, tư duy thuật toán, những biểu hiện và các cấp độ của sự phát triển tư duy thuật toán, mô tả thuật toán ở hai mức thủ công và điều khiển
- Phương pháp thao tác hóa trong dạy học thuật toán và các khái niệm liên quan như mô đun thuật toán, thủ tục và hàm
- Phương pháp làm mịn dần trong dạy học thuật toán
- Phương pháp tinh chế trong dạy học thuật toán và các khái niệm liên quan như nguyên tắc tinh chế dựa trên ngôn ngữ, độ phức tạp của biểu diễn thuật toán
8.2 Về mặt thực tiễn
Luận án có những đóng góp sau đây về mặt thực tiễn:
- Đề xuất một hướng tiếp cận mới trong dạy học thuật toán ở trường THPT, góp phần rèn luyện cho HS tư duy giải quyết các vấn đề trong dạy học môn Toán và môn Tin học
- Đóng góp một xu hướng mới trong đào tạo sinh viên sư phạm Tin học nói riêng, lĩnh vực Toán - Tin nói chung trong trường Đại học Sư phạm Hà Nội
9 Cấu trúc và tóm tắt nội dung của luận án
Ngoài một số phần như mở đầu, kết luận, và tài liệu tham khảo, luận án gồm 4 chương sau đây:
Chương 1: Cơ sở lý luận về thực tiễn
- Về cơ sở lý luận: Trình bày nguồn gốc của từ thuật toán, khái niệm thuật toán
trong quá trình hình thành thuật toán trong Toán học và trong Khoa học máy
Trang 18tính, các tính chất của thuật toán Lịch sử vấn đề nghiên cứu cũng được giới thiệu chi tiết, bao gồm các xu hướng dạy học thuật toán hiện nay ở trong nước
và trên thế giới
- Về cơ sở thực tiễn: Trình bày kết quả khảo sát, điều tra tình hình học tập thuật
toán hiện nay ở một số trường THPT
Chương 2: Các biểu hiện và các cấp độ của sự phát triển tư duy thuật toán
- Đề xuất các khái niệm cơ sở như tác nhân, tư duy thuật toán,
- Trình bày các biểu hiện của sự phát triển tư duy thuật toán theo hai mức mô tả thuật toán: mức độ thủ công (giải bài toán theo thuật toán) và mức độ điều khiển (giải bài toán dựa vào máy tính)
- Đưa ra các cấp độ của sự phát triển tư duy thuật toán
Chương 3: Một số cách tiếp cận mới trong dạy học thuật toán ở trường THPT
- Đề xuất ba cách tiếp cận mới trong dạy học thuật toán, bao gồm: Thao tác hóa, Làm mịn dần và Tinh chế
- Chỉ ra sự thúc đẩy và cách đánh giá sự phát triển tư duy thuật toán trong từng cách tiếp cận dạy học thuật toán
Chương 4: Thực nghiệm sư phạm
- Trình bày mục đích và phương pháp thực nghiệm sư phạm
- Trình bày các công cụ cho thực nghiệm và cách qui đổi, mã hóa điểm số để thuận lợi cho xử lý dữ liệu thực nghiệm dựa trên phần mềm và để qui về các thang đo sự phát triển tư duy thuật toán
- Các kết quả của các đợt thực nghiệm
- Phân tích, đánh giá và đưa ra các đề xuất
Trang 19CHƯƠNG 1 CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN VỀ VIỆC
DẠY HỌC THUẬT TOÁN 1.1 SỰ HÌNH THÀNH KHÁI NIỆM THUẬT TOÁN
1.1.1 Nguồn gốc của từ thuật toán
Theo Steven C Althoen & Robert J Bumcrot (1988), từ "thuật toán" (algorithm)
có nguồn gốc từ tên gọi Mohamed ibn Musa al-Khowarizmi, nhà Toán học cổ đại người Trung Á, người đã phát minh ra tập các qui tắc để thực hiện các phép toán cộng, trừ, nhân, và chia các số thập phân Vào năm 1857, quyển sách đại số của ông bắt đầu được dịch sang chữ Latin Trong bản dịch tiếng Anh, từ al-Khowarizmi (hoặc al-Khwarizm, nguyên bản Latin là “al-Khwârizmî”) được phát âm là
"algoritmi" và sau này được nhiều người gọi là algorithm
Một điều thú vị là Steven và Robert giải thích tên gọi “Mohamed ibn Musa Khowarizmi” nghĩa là Mohamed, con trai của Musa, đến từ huyện Khowarizmi - nước Cộng hòa xã hội chủ nghĩa Xô-Viết (Liên-Xô cũ) của người Kazakh, Turkmen, và Uzbek Tuy nhiên Donald E Knuth (1980) cho rằng phần tên gọi al-Khwârizmî lại không chứng minh được ông sinh ra ở Khwarizm Vì công việc nghiên cứu của ông diễn ra ở Baghdad, ở nơi mà một số nhà khoa học vẫn gọi là
al-“Ngôi nhà thông thái” (“House of Wisdom”) của Caliph al-Ma’mun - nhà tài trợ nổi tiếng cho các nhà nghiên cứu khoa học, đã từng mời nhiều người đến khóa học của ông để tuyển chọn và mở rộng những tài năng trên thế giới Nhà sử học al-Tabari đã thêm từ "al-Qutrubbulli" vào tên của al-Khwârizmî, là có ý đề cập đến huyện Qutrubbulli gần Baghdad Do đó, Knuth nghĩ rằng al-Khwârizmî được sinh ra ở Khwarizm và sống phần lớn cuộc đời ở Qutrubbull sau được triệu tập tới Baghdad của Caliph, nhưng sự thật có thể sẽ không bao giờ được biết đến
1.1.2 Sự hình thành khái niệm thuật toán trong Toán học
Theo Dimitris Samaras (2009), thuật toán có vai trò quan trọng trong Toán học Các tài liệu Toán học cổ điển đã bao gồm các mô tả về các thuật toán giải quyết các
nhiệm vụ khác nhau như: tìm số nguyên tố, tìm ước số chung lớn nhất của hai số nguyên Khái niệm thuật toán không được định nghĩa chính xác cho đến tận thế kỉ
20 Trước thế kỉ 20, các nhà Toán học chỉ có một khái niệm trực giác (intuitive notation) về cái gọi là thuật toán Khái niệm trực giác về thuật toán không đủ để có
một cái nhìn sâu hơn về việc hiểu thuật toán Năm 1900, tại hội nghị Toán học quốc
tế ở Paris, nhà Toán học David Hilbert đã đưa ra 23 bài toán nổi tiếng, mà theo ông
Trang 20đây là những hướng nghiên cứu Toán học lý thú cho các nhà Toán học thế giới ở
thế kỷ 20 Trong đó, yêu cầu của bài toán thứ 10 là “hãy tìm một qui trình bao gồm một số hữu hạn bước thực hiện mà nó cho phép xác định một phương trình
Diophante có nghiệm nguyên hay không”1 Tại thời điểm này, Hilbert đã không sử dụng thuật ngữ “thuật toán” mà sử dụng cụm từ “qui trình với một số hữu hạn các bước thực hiện” (cụm từ này thể hiện khái niệm trực giác về thuật toán) Trong phát biểu của mình, Hilbert đã giả định rằng “thuật toán” để kiểm tra là đã tồn tại, ta chỉ
cần tìm ra nó Nhưng đến nay chúng ta đã biết không tồn tại một thuật toán mà nó
có thể trả lời được câu hỏi “một đa thức cho trước có nghiệm nguyên hay không” Khái niệm trực giác về thuật toán đã không có tác dụng trong việc chỉ ra không tồn tại thuật toán để giải bài toán thứ 10 của Hilbert Việc cung cấp khái niệm “không
tồn tại một thuật toán để giải một bài toán đã cho” đòi hỏi phải có định nghĩa chính thức về thuật toán
Năm 1936, Alonzo Church và Alan Turing đã đề xuất định nghĩa hình thức cho
khái niệm thuật toán (formal definitions for the concept of algorithm) (xem
Goldberg, 2012) Church đã sử dụng một hệ thống khái niệm gọi là phép toán ( calculus) để định nghĩa khái niệm thuật toán, còn Turing dùng máy Turing để định
-nghĩa khái niệm thuật toán2 Cả hai định nghĩa này đều tương đương và khá phức tạp, vì nó được phát biểu dài dòng và sử dụng các thuật ngữ và kí hiệu Toán học Lý
thuyết của Church và Turing được tổng kết lại trong luận đề Church-Turing Luận
đề này khẳng định mọi hàm Toán học tính được thì cũng có thể dùng các máy Turing để tính, và do đó cho phép định nghĩa các khái niệm như sự tính được của
hàm hay thuật toán Các định nghĩa hình thức khác về thuật toán đã được nhiều tác giả đề xuất như Kleene sử dụng các hàm truy hồi (recursive functions), Markov sử
dụng các qui tắc đạo hàm và gọi chúng là thuật toán chuẩn (normal algorithm) Về
mặt bản chất, các định nghĩa này đều tương đương với nhau và tương đương với máy Turing
1 Nguyên bản tiếng Anh bài toán thứ 10 của Hilbert: “Given a Diophantine equation with any number of
unknown quantities and with rational integral numerical coefficients: To devise a process according to which
it can be determined in a finite number of operations whether the equation is solvable in rational integers.”
(Xem Barry Mazur (2010), “Hilbert’s Tenth Problem and Elliptuc Curves”, in Expository Articles - Notes for
Basic Notations talk, Department of Mathematics, University of Harvard)
2
Máy Turing là một mô hình về thiết bị xử lý các ký tự, tuy đơn giản, nhưng có thể thực hiện được tất cả
các thuật toán máy tính Máy Turing được xây dựng không dành cho việc trực tiếp chế tạo ra máy tính, mà là dành cho các thí nghiệm tưởng tượng để tìm hiểu về các giới hạn của việc tính toán trên máy móc Các máy Turing đã được Alan Turing trình bày vào năm 1936
Trang 21Yiannis N Moschovakis (2001) đã cho rằng: Khi các thuật toán được định nghĩa
một cách chính xác (rigorously) thì chúng được nhận ra bởi một máy trừu tượng, là
mô hình Toán học của máy tính, đôi khi được lí tưởng hóa bằng cách thêm vào một
“bộ nhớ không giới hạn” Yiannis đã trình bày định nghĩa thuật toán theo cách đệ qui (recursive definitions) để giao cho mô hình máy thực hiện sự cài đặt (implementations), mô hình này cũng được xem là một kiểu của thuật toán1 Tuy nhiên, định nghĩa thuật toán của Yiamis, cũng như của nhiều nhà Toán học thuần túy, vẫn là một định nghĩa hết sức Toán học, khó hiểu và có một khoảng cách xa so với một định nghĩa thuật toán mà sự mô tả nó tiệm cận với sự cài đặt trên các máy tính để thực hiện
Andreas R Blass & Yuri Gurevichz (2003) đã mô tả về quá trình “truy tìm” để hiểu và định nghĩa khái niệm thuật toán, bắt đầu với luận đề Church – Turing, rồi giới thiệu một số các cách tiếp cận tương phản với Church và Turing và cuối cùng
là một số khám phá mới như hình thức hóa các khái niệm thuật toán tuần tự (sequential algorithms), thuật toán song song (parallel algorithms) và thuật toán phân tán (distributed algorithms) Andreas và Yuri cho biết có những bằng chứng thực nghiệm không ủng hộ luận đề Church-Turing và các tác giả cho rằng luận đề Church-Turing là một bước tiến lớn tới sự hiểu biết thuật toán, nhưng nó chưa trực tiếp giải quyết vấn đề “thuật toán là gì”2
Theo Andreas R Blass & Yuri Gurevichz (2007), công việc đi tìm bản chất của định nghĩa thuật toán lại được nỗ lực quan tâm vào năm 1953 bởi Andrei N Kolmogorov mà quan điểm thuật toán của ông được trình bày lại như sau:
- Một qui trình của thuật toán được chia ra thành các bước và độ phức tạp của
nó được giới hạn trước Giới hạn này độc lập với Input và trạng thái hiện tại của việc tính toán
- Mỗi bước của thuật toán thực hiện ngay một sự biến đổi trực tiếp trạng thái hiện tại
Trang 22- Biến đổi này áp dụng chỉ một phần của trạng thái và không biến đổi phần còn lại của trạng thái
- Qui trình của thuật toán thực hiện cho đến khi hoặc bước tiếp theo không thể xảy ra hoặc có dấu hiệu đã đạt được lời giải
Với quan điểm trên, Kolmogorov đã đề xuất một mô hình tính toán mới và cùng với Vladimir A Uspensky, mô hình này được phát triển thành một mô hình tổng quát hơn cho máy Turing và khắc phục những hạn chế của máy Turing nguyên gốc
Kết luận 1
- 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
- Máy Turing được xem là một định nghĩa hình thức cho khái niệm thuật toán,
có thể được trình bày dưới dạng trực quan hoặc Toán học hình thức, nhưng khá dài dòng và phức tạp
- Hầu hết các định nghĩa hình thức và chính xác hiện nay về khái niệm thuật toán đều tương đương với nhau và cùng xuất phát từ luận đề Church – Turing hoặc mô hình máy Kolmogorov
1.1.3 Khái niệm thuật toán trong Khoa học máy tính
Robert Sedgewick (1946) đã gián tiếp đề cập đến khái niệm thuật toán ở góc độ lập trình như sau: "Khi viết một chương trình máy tính, ta thường cài đặt một phương pháp đã được nghĩ ra trước đó để giải quyết một vấn đề Phương pháp này thường độc lập với một máy tính cụ thể sẽ được dùng, nó hầu như thích hợp như
nhau cho nhiều máy tính" Từ "thuật toán" được dùng trong Khoa học máy tính để
mô tả một phương pháp giải bài toán thích hợp cho việc cài đặt như là các chương trình máy tính1 Thuật toán là "chất liệu" ("stuff") của Khoa học máy tính: chúng là đối tượng nghiên cứu trung tâm trong nhiều, nếu không nói là hầu hết, các lĩnh vực của Tin học" Quan điểm về thuật toán của Robert không đi ngược lại các định
nghĩa hình thức đúng đắn về thuật toán như đã đề cập trên đây, và cũng giống như các nhà Khoa học máy tính khác, Robert lược bỏ các thuật ngữ phức tạp của Toán học, để lột tả một cách dễ hiểu rằng một thuật toán một khi nó được mô tả bởi một
người làm về Khoa học máy tính thì nó phải đủ gần gũi tựa như giả mã (pseudo code), cũng như đủ độ dễ chuyển đổi sang một mã nguồn (source code) nào đó
không phụ thuộc vào phần cứng máy tính
1 Nguyên bản: The term algorithm is universally used in computer science to describe problem-solving
methods suitable for implementation as computer programs.
Trang 23Cùng quan điểm với Robert, Donald E Knuth (1975) định nghĩa: ―Một thuật toán là một dãy xác định các qui tắc mà nó cho biết sẽ thực hiện như thế nào để tạo
ra thông tin output từ thông tin input đã cho trong một số hữu hạn các bước.1‖ Đặc biệt, Knuth đã cho rằng ―Một thể hiện riêng của thuật toán được gọi là một chương trình, cũng giống như chúng ta dùng từ ―dữ liệu‖ để chỉ một thể hiện riêng của
―thông tin‖ Donald E Knuth (1980) đã mất một thời gian dài để trả lời câu hỏi:
―Vai trò thực sự của khái niệm thuật toán trong khoa học Toán học là gì?‖, ―Khoa học máy tính và mối quan hệ của nó với Toán học là gì?‖ Trong nhiều năm, Knuth
đã thuyết phục các đồng nghiệp rằng Khoa học máy tính là nguyên nhân chính dẫn đến nhu cầu cần phải nghiên cứu thuật toán, và đã có những người không đồng ý
với quan điểm của ông Nguyên nhân của sự bất đồng quan điểm này đơn giản là có
rất nhiều định nghĩa thuật toán Knuth cho rằng, thuật toán bao gồm tất cả các khái niệm về những qui trình được xác định rõ ràng, chứa đựng cấu trúc dữ liệu được thao tác, cũng như chứa đựng các cấu trúc tuần tự các phép toán được thực hiện
Trở lại với al-Khwârizmî, nhà khoa học nổi tiếng thế kỉ 19 mà tên gọi của ông là nguồn gốc của từ “thuật toán” Donald E Knuth (1980) bình luận rằng: Nếu gọi các thuật toán là các qui tắc đại số mà al-Khwârizmî phát minh, để thực hiện các phép toán cộng, trừ, nhân và chia, thì các thuật toán này đã bỏ qua rất nhiều giải thích chi tiết một cách Toán học, kể cả khi chúng được viết bởi chính al-Khwârizmî!
Những nhà Toán học và Khoa học máy tính, đặc biệt là các nhà Khoa học máy tính thuần túy, thường đưa ra các khái niệm chính thức về thuật toán theo cách trực quan và hướng đến đối tượng “hiểu được”, đồng thời có khả năng “thực hiện được” thuật toán Steven C Althoen & Robert J Bumcrot (1988) đã đưa ra một định nghĩa
khá đơn giản: "Một thuật toán là một danh sách các bước chỉ dẫn để giải quyết một bài toán cụ thể‖2 Ví dụ, công thức làm bánh bao từ bột yến mạch là một thuật toán
đơn sơ, là bản đồ chỉ đường" Ngược lại, Leonard Soicher & Franco Vivaldi (2004)
đã đưa ra định nghĩa một cách thận trọng như sau: “Một cách không chính thức, một thuật toán là một dãy xác định các chỉ dẫn rõ ràng để thực hiện một nhiệm vụ cụ thể”3 Karlheinz Essl (2007), người sáng tạo phương pháp “Soạn nhạc theo thuật
toán” (“Algorithmic Compositon”), đã định nghĩa thuật toán như sau: “Một thuật toán có thể được định nghĩa như là một tập xác định trước các chỉ dẫn để giải quyết
1
Nguyên bản: An algorithm is a precisely-defined sequence of rules telling how to produce specified
output information from given input information in a finite number of steps.
2 Nguyên bản: An algorithm is a step-by-step list of instructions for solving a particular problem
3
Nguyên bản: Informally, an algorithm is a finite sequence of unambiguous instructions to perform a
specific task
Trang 24một vấn đề cụ thể trong một số giới hạn các bước Thuật toán có thể thay đổi từ một dãy các phép toán số học đơn giản đến sự kết hợp các thủ tục phức tạp hơn, sử dụng nhiều chỉ dẫn hơn từ Khoa học máy tính như dựa trên nguyên tắc ngữ pháp,
đệ quy và suy luận xác suất.”1 Piotr Fulmanski (2008) đã định nghĩa ―Trong Toán học và trong Khoa học máy tính, thuật toán là một danh sách xác định, có thứ tự các thao tác được định nghĩa rõ ràng, cần đến để thực hiện một nhiệm vụ nào đó‖2
Chung-Yang Huang et al (2009) đã đưa ra định nghĩa thuật toán hướng trực tiếp
đến máy tính, là đối tượng thực hiện thuật toán, một cách rõ ràng rằng: ―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‖3
João Fernando Peixoto Ferreira (2010) đã giải thích câu nói nôm na “Toán học là
thuật toán” một cách tự nhiên như sau: “Khi ta nói rằng Toán học là thuật toán một cách tự nhiên, không có nghĩa là thuật toán dùng để giải toán Ở đây, chúng tôi muốn nói rằng các nguyên tắc và kĩ thuật được phát triển để xây dựng và giải quyết những vấn đề thuật toán có thể được sử dụng để giải quyết nhiều vấn đề Toán học‖4, và ông đã định nghĩa ―Một thuật toán là một dãy xác định các chỉ dẫn mà nó
có thể được thực hiện một cách hệ thống trong lời giải bài toán đã cho‖5
1 Nguyên bản: An algorithm can be defined as a predetermined set of instructions for solving a specific
problem in a limited number of steps Algorithms can range from a mere succession of simple arithmetical operations to more complex combinations of procedures, utilising more involved constructions from computer science such as rule-based grammars, recursion and probabilistic inference.
2 Nguyên bản: In mathematic and computer science, algorithm mean finite, ordered sequence of clearly
defined actions, needed to perform some task.
3
Nguyên bản: An algorithm is a sequence of well-defined instructions for completing a task or solving a problem It can be described in a natural language, pseudocode, a flowchart, or even a programming language
4Nguyên bản: When we say that mathematics is algorithmic in nature, we do not mean that we have an algorithm to
do mathematics Instead, we want to say that the principles and techniques that have been developed to formulate and solve algorithmic problems can be used to solve many mathematical problems.
5Nguyên bản: An algorithm is a finite sequence of instructions that can be systematically executed in the solution of
a given problem.
Trang 25- Một thuật toán không được xem là một lời bài toán bao gồm cả việc chứng minh tính đúng đắn của lời giải Nói cách khác, có thể xem thuật toán là một lời giải tóm tắt cho một bài toán, lược bỏ đi rất nhiều các giải thích chi tiết
1.1.4 Khái niệm thuật toán được dạy ở trường phổ thông
Luận án cho rằng khái niệm thuật toán được phát biểu trong Tin học lớp 10 - SGK (2006) đảm bảo được sự chính xác tuyệt đối Định nghĩa thuật toán được dựa trên khái niệm bài toán trong Tin học, cụ thể 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" Trong định nghĩa bài toán được nêu ở trên, cụm từ "một việc nào đó" bao gồm các bài toán giải được theo thuật toán thuộc lĩnh vực Toán học và bao gồm các bài toán của riêng Tin học
Ví dụ xét những việc sau đây:
1 Hãy in lên màn hình một dòng văn bản
5 Hãy tập lái xe ô tô trên hiện trường không thuộc “bài toán” của
Toán học hoặc Tin học
Định nghĩa 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ự nhất định sao cho khi thực hiện dãy thao tác ấy, từ Input (là dữ liệu vào của bài toán), ta nhận được output (là dữ liệu ra của bài toán) cần tìm"
Định nghĩa trên đây nhấn mạnh dãy “thao tác” phải đảm bảo hai tính chất: (1)
tính hữu hạn để đảm bảo thuật toán phải dừng lại sau một số bước thực hiện, và (2) tính có qui tắc để đảm bảo các chỉ dẫn (các thao tác) trong thuật toán được viết theo
một qui định nhất quán về cách mô tả, biểu diễn chúng
Định nghĩa về thuật toán được nêu trên đây hàm ý nhấn mạnh việc chỉ ra một qui trình rõ ràng và chính xác để tìm ra kết quả (output) từ dữ liệu vào (input) của bài toán Định nghĩa này còn ngụ ý thuật toán không bị đòi hỏi phải giải quyết các yêu cầu định tính của các bài toán trong Toán học (ví dụ như chứng minh sự tồn tại hay
Trang 26không tồn tại lời giải của bài toán) mà nhiệm vụ chính của thuật toán là thực hiện các yêu cầu định lượng với tốc độ nhanh nhất chấp nhận được (ví dụ tìm số hạng thứ một nghìn của dãy Fibocacii trong thời gian không quá 10 giây)
Ví dụ 1 1 Dãy Fibonacii
Nhà Toán học Fibonacii đã phát hiện ra qui luật sinh sản của loài thỏ như sau: Số thỏ ở hai thế hệ đầu tiên qui ước là 1 (thỏ bố và thỏ mẹ), còn số thỏ từ thế hệ thứ 3 trở đi bằng tổng số thỏ ở hai thế hệ ngay trước đó Vậy số lượng thỏ của các hệ liên tiếp tạo thành một dãy đặc biệt (gọi là dãy Fibonacii) có dạng: 1, 1, 2, 3, 5, 8, 13,
21, 34, Vấn đề đặt ra là với một số n cho trước nào đó, hãy tìm số hạng thứ n của
dãy Fibonacii
Ở góc độ Toán học, bài toán này giải được (tồn tại nghiệm) Cụ thể, nếu gọi f(n)
là số lượng thỏ ở thế hệ thứ n thì f(n) có thể tính được theo công thức qui nạp sau
2 ( ) 1 (
2 1
1 )
(
n khi n
f n
f
n n
khi n
f
Tuy nhiên, người làm toán chỉ có thể dừng lại ở việc thành lập được công thức trên đây, chứ không thể trong thời gian vài giây trả lời được số hạng thứ 100 của dãy Fibonacii cụ thể bằng bao nhiêu Trả lời được câu hỏi định lượng đó trong thời
gian vài giây là nhiệm vụ của Tin học Nếu thuật toán tính f(n) dựa vào công thức qui nạp Toán học trên thì nó được gọi là thuật toán đệ qui Chương trình cài đặt
thuật toán đệ qui thường đòi hỏi chi phí rất cao về bộ nhớ máy tính và thời gian
thực hiện Do đó, Tin học thường tìm kiếm một thuật toán khác, gọi là thuật toán lặp, tốn ít thời gian và bộ nhớ hơn để tính f(n) với n không nhỏ, thậm chí khá lớn
1.2 CÁC TÍNH CHẤT CỦA THUẬT TOÁN
Có thể chia các tính chất của một thuật toán thành hai nhóm: các tính chất cơ bản
và các tính chất mở rộng
1.2.1 Các tính chất cơ bản của thuật toán
Các tính chất cơ bản của thuật toán bao gồm: (1) Tính dừng, (2) Tính xác định, (3) Tính đúng đắn, (4) Tính luôn tồn tại Input, Output, (5) Tính phổ dụng, và (6) Tính hiệu quả Trong chương trình Tin học phổ thông, HS được dạy chính thức ba tính chất đầu tiên của thuật toán đó là tính dừng, tính xác định và tính đúng đắn Tuy nhiên GV có thể giới thiệu ba tính chất còn lại, đó là tính luôn tồn tại Input, Output; tính phổ dụng; và tính hiệu quả Tính luôn có Input/Output được nhắc đến
như một sự ngầm định Tính phổ dụng được nhắc đến để nhấn mạnh một thuật toán
Trang 27nên giải quyết những bài toán tổng quát thay vì giải quyết những bài toán riêng lẻ
Riêng tính hiệu quả của thuật toán được giới thiệu rất hạn chế ở bậc học phổ thông
và nó chủ yếu được đề cập đến đối với những thuật toán và chương trình mà chúng
dễ nhận ra cách tổ chức lại dữ liệu tốt hơn, hoặc có cách cải tiến thuật toán một cách
tự nhiên để chương trình chạy nhanh hơn Việc đánh giá một thuật toán “tốt hơn” so với thuật toán khác dựa vào những đánh giá trực quan, dưới đây là một ví dụ:
Ví dụ 1 2 So sánh hai thuật toán sắp xếp
Hai thuật toán cho trong bảng dưới đây đều thể hiện thuật toán sắp xếp tăng dần dãy số a 1 , a 2 , , a n cho trước theo phương pháp sắp xếp chọn trực tiếp Hãy đánh
giá, so sánh hai thuật toán này
Bước 1 Với mỗi i nhận giá trị từ 1 đến
n-1 thực hiện các công việc sau:
Bước 1.1 Khởi gán k i;
Bước 1.2 Với mỗi j nhận giá trị từ
i+1 đến n, nếu a j < a k thì gán lại k j;
Bước 1.3 Nếu k ≠ i thì đổi giá trị của
ai và aj cho nhau như sau:
1.2.2 Các tính chất mở rộng
1.2.2.1 Tính hiệu quả của thuật toán được đo bởi độ phức tạp thuật toán
Thời gian thực hiện thuật toán (runing time of algorithm) và độ phức tạp thuật toán (complexity of algorithm) được Aho A.V., Hopcroft J.E & Ullman J.D (1974)
đề cập chi tiết trong cuốn sách nổi tiếng với tựa đề “Thiết kế và phân tích thuật toán” (The Design and Analysic of Computer Algorithm) Những vấn đề này được các tác giả trình bầy lại trong “Cấu trúc dữ liệu và thuật toán” (Data Structures and Algorithms) theo cách thuận lợi cho việc đánh giá hiệu quả của các thuật toán mà
chúng được cài đặt trên các ngôn ngữ lập trình bậc cao (xem Aho A.V., Hopcroft
Trang 28J.E & Ullman J.D., 1983) Theo các tác giả, thời gian thực hiện thuật toán được
biểu diễn như một hàm T(n) của kích thước dữ liệu đầu vào n, ví dụ T(n) = C.n2
với
C là hằng số1 Hàm T(n) được tính bằng số lần thực hiện các thao tác sơ cấp (hay các phép tính cơ bản) trong thuật toán Các phép tính cơ bản bao gồm bốn loại: (1) Lời gọi thủ tục và hàm; (2) Câu lệnh gán; (3) Phép tính số học; (4) Phép toán logic
và phép toán so sánh
Hiệu quả của thuật toán được đánh giá dựa vào hàm thời gian thực hiện thuật
toán trong trường hợp dữ liệu đầu vào ở trạng thái “xấu nhất” (worst case running
time) Ví dụ, để kiểm tra xem có hay không một phần tử nào đó trong một dãy gồm
n số, hiệu quả của thuật toán tìm kiếm tuần tự từ đầu dãy đến cuối dãy được đánh
giá trong trường hợp dữ liệu đầu vào xấu nhất, đó là dãy số mà phần tử cần tìm nằm
ở cuối dãy hoặc không có trong dãy Khi đó, thuật toán phải thực hiện nhiều nhất
các phép so sánh giá trị cần tìm với các số trong dãy Dãy số có n phần tử nên số phép so sánh là n và do đó, thời gian thực hiện thuật toán là T(n) = n
Hiệu quả của thuật toán còn được đánh giá dựa vào độ tăng (growth rate) của
hàm thời gian thực hiện thuật toán Nó được biểu thị qua khái niệm “big-O” Cụ thể
như sau: Thời gian thực hiện thuật toán T(n) được gọi là có bậc không quá g(n), kí hiệu T(n) = O(g(n)), nếu tồn tại hằng số dương C và số không âm n0 sao cho T(n) ≤ C.g(n) với mọi n ≥ n0 Khi đó hàm g(n) được xem là độ phức tạp của thuật toán đang xét Đôi khi ta cũng nói “thuật toán có độ phức tạp (hoặc độ tăng) cỡ g(n)” Ví
dụ, nếu thời gian thực hiện thuật toán là T(n) = 5n2
+ 12n + 9, với n là độ lớn của dữ liệu đầu vào, thì T(n) ≤ 5n2 + 12n2 + 9n2 T(n) ≤ 26n2 với n > 0 Vậy nếu đặt g(n) = n2, C = 26, n0 = 0, thì T(n) ≤ C.g(n) với n > n0 hay T(n) = O(n 2) Do đó, độ
phức tạp thuật toán là cỡ n2, hoặc thuật toán có “độ phức tạp bình phương” Thông
thường, một thuật toán có thể có các độ phức tạp sau đây: hằng số (C) , logarit
(log2n), tuyến tính (n), bậc hai (n2), bậc ba (n3), đa thức (nk), và hàm mũ (a n )
Việc đánh giá hiệu quả thuật toán thông qua độ phức tạp (hay độ tăng của hàm thời gian thực hiện thuật toán) được giới thiệu một cách hệ thống ở bậc đại học Ở bậc phổ thông, hiệu quả thuật toán thường đánh giá trực tiếp thông qua hàm thời
gian thực hiện thuật toán, ví dụ, “hiệu quả thuật toán” là T(n) = 5n2
+ 12n + 9 Tính hiệu quả của thuật toán còn được đánh giá một cách trực quan dựa trên tính khả thi hoặc dựa trên phân tích tính ổn định của thuật toán Đặng Quang Á (2009)
1 Với khái niệm này, thời gian thực hiện thuật toán phụ thuộc vào chính thuật toán chứ không phụ thuộc vào các yếu tố bên ngoài như tốc độ máy tính và chất lượng của chương trình dịch (chương trình cài đặt thuật toán thành chương trình thực hiện được trên máy tính)
Trang 29đã đưa ra hai tình huống điển hình và thú vị minh họa các thuật toán không hiệu quả
vì vi phạm tính khả thi và tính ổn định như dưới đây:
1.2.2.2 Tính khả thi của thuật toán
Một thuật toán đảm bảo tính khả thi nếu nó thực hiện được trong một thời gian chấp nhận được đối với người dùng
Ví dụ 1 3 Hệ phương trình đại số tuyến tính
Cho hệ phương trình đại số tuyến tính
,
b
trong đó A là ma trận vuông cấp n với định thức khác 0
Về lý thuyết có thể giải hệ trên bằng công thức Cramer:
,
i i
trong đó det A,còn i nhận được từ bằng cách thay cột thứ i bởi cột tự do b
Nhưng việc tính toán ra nghiệm bằng số cụ thể lại là một việc không đơn giản Theo
công thức (2) cần phải tính n +1 định thức cấp n Mỗi định thức là tổng của n! số hạng, mỗi số hạng là tích của n thừa số Do vậy, để tính mỗi số hạng cần thực hiện n-1 phép nhân Như vậy, tất cả số phép tính nhân cần thực hiện trong (2) là Q = n!(n+1)(n-1) Giả sử n = 20 Khi đó Q9.70731020 Nếu tốc độ của máy tính là
100 triệu phép tính/giây thì thời gian để thực hiện khối lượng tính toán trên là
mà thực tế khoa học và công nghệ đòi hỏi phải giải các hệ phương trình đại số tuyến tính cỡ hàng vạn, hàng triệu hoặc hơn thế nữa Vì thế, cần phải nghiên cứu đề xuất các phương pháp hiệu quả để có thể giải được các hệ thống phương trình cỡ lớn
1.2.2.3 Tính ổn định của thuật toán
Một thuật toán gọi là ổn định nếu sai số tính toán (do máy tính làm tròn số) không bị khuếch đại trong quá trình tính
Ví dụ 1 4 Công thức tính tích phân không sử dụng được
Giả sử cần tính tích phân
)1(
1 1
Trang 30Ta được:
Ngoài ra ta có
.3679.0
1)1( 1
0 1
1 1
0
Từ đây ta thu được công thức truy hồi (qui nạp) tính I n về mặt lý thuyết:
Về mặt thực tế, công thức trên đây được thực hiện trên máy tính đã không cho
kết quả mong muốn khi n lớn Lập trình trên ngôn ngữ Pascal (chương trình sử dụng kiểu số thực với độ chính xác gấp đôi), ta nhận được dãy giá trị tích phân từ I 1 đến I 25 như bảng kết quả sau (liệt kê theo từng hàng):
Kết quả giảm dần từ 0.3679 (khi n = 1) đến 0.0555 (khi n = 16) Kết quả sau đó
(các số in đậm) thay đổi thất thường và giá trị tuyệt đối tăng rất nhanh Điều này hoàn toàn không phù hợp với lý thuyết vì theo lý thuyết thì I n0 khi n do đó
Hiện tượng kết quả tính toán I nnêu trên là sự không ổn định của thuật toán: sai
số ban đầu khi tính I 1 = 1/e 0.3679 đã bị khuyếch đại trong quá trình tính
Nguyên nhân: Thay vì I 1 = 1/ e, ta thu được~I1I1 , trong đó là sai số Giả sử
các tính toán tiếp theo không mắc phải sai số Với n = 2 ta được:
Thu được ~I2với sai số ~I2 I2 2 Tương tự, ở bước thứ n thay cho giá trị đúng n
I ta thu được giá trị gần đúng I~n với sai số ~I n I n n! Do đó, dù có bé thì khi
n đủ lớn, sai số vẫn đủ lớn và ta không thể nhận được giá trị chấp nhận được là gần
đúng cho I n Vậy ta có thể kết luận rằng công thức tính tích phân I n mặc dù rất đẹp mắt, nhưng lại không sử dụng được trong tính toán thực tiễn
1 1
0
1 1
n
I
.3679.0
,2,1
1
1 0
) 2 1 ( ) ( 2 1
~ 2 1
~
2 1
1 1
2 I I I I
I
Trang 311.3 TỔNG QUAN VỀ NHỮNG CÁCH TIẾP CẬN DẠY HỌC THUẬT TOÁN
1.3.1 Dạy học thuật toán trong một số nội dung Toán học
Judith Gal-Ezer & Orna Lichtenstein (1996) đã phát triển nghiên cứu của Donald
E Knuth (1980), khẳng định mối quan hệ mật thiết giữa tư duy thuật toán và tư duy Toán học, đồng thời đề xuất phương pháp dạy học kiến thức về tập hợp trong Toán học dựa trên thuật toán và thông qua đó hình thành cho HS thuật toán
João F Ferreira et al (2011) cho rằng mặc dù các thuật toán tự nhiên chiếm một phần lớn trong Toán học nhưng những kỹ năng cần thiết để trình bày một cách hệ thống và giải quyết các bài toán theo thuật toán không được thiết lập là một phần
của giáo dục Toán học Đặc biệt là logic, đó là trung tâm để phát triển thuật toán,
hiếm khi được dạy một cách rõ ràng tại các cấp học trước đại học và nó được coi là trừu tượng trong Toán học Do đó, thuật toán không cần phải được giảng dạy như là một chủ đề độc lập Từ nhận xét này, các tác giả đề nghị giới thiệu cho HS THPT các nguyên lý tính toán và kỹ thuật giải quyết các bài toán theo thuật toán nhờ hỗ trợ bởi logic tính toán Hơn nữa các tác giả đã dùng các bài toán vui để truyền đạt các nguyên lý và dùng các công cụ phần mềm, phân tích Alloy và Netlogo để làm sinh động mô hình
1.3.2 Dạy học thuật toán thông qua các câu đố và câu đố giống như trò chơi
Đại diện cho các nghiên cứu về phương pháp câu đố và trò chơi trực quan, là
Anany Levitin (2005) Tác giả đề nghị sử dụng rộng rãi các câu đố và các câu đố giống như trò chơi trong việc giảng dạy, phân tích thuật toán Để minh họa cho ý
tưởng này, tác giả lấy ví dụ là những câu đố cổ điển của Toán học vui Các ví dụ
này minh họa tất cả các khía cạnh của phân tích thuật toán Hơn nữa, tác giả đã nêu
ra những thuận lợi trong việc sử dụng câu đố trong giảng dạy phân tích thuật toán là:
- Các câu đố tác động tới cách nghĩ về thuật toán của HS bằng một mức độ khái quát hơn, tách rời giữa lập trình và các ngôn ngữ máy tính
- Các câu đố cho ta thấy các chiến lược thiết kế thuật toán Nó được xem như một công cụ giải quyết vấn đề rất hữu dụng ở những nơi cách xa Khoa học máy tính
- Giải câu đố giúp HS phát triển óc sáng tạo và kĩ năng giải quyết vấn đề Đây
là phẩm chất mà bất cứ nhà Khoa học máy tính tương lai nào cũng nên cố gắng đạt được
Trang 32- Câu đố luôn luôn thu hút sự tham gia của HS hơn Nó làm cho HS làm việc chăm chỉ hơn qua những vấn đề giao cho họ
Trong cách tiếp cận dạy học thuật toán này, Anany Levitin đặc biệt nhấn mạnh
các tính chất quan trọng của thuật toán như tính bất biến và tính khả thi
1.3.3 Dạy học thuật toán bằng phương pháp trực quan hóa thuật toán
Đại diện cho các nghiên cứu về phương pháp trực quan hóa thuật toán, là Sahar
S Shabanah et al (2010) Theo các tác giả, cấu trúc dữ liệu và các thuật toán là các chủ đề nền tảng quan trọng trong giáo dục Khoa học máy tính Tuy nhiên, chúng thường rất phức tạp và khó hiểu Vì vậy, cần một chiến lược học tập mới, mang lại lợi ích từ trò chơi máy tính phổ biến và hứa hẹn giúp HS hiểu được các thuật toán tốt hơn Giải pháp ở đây là thiết kế trò chơi máy tính để giúp HS hình dung được thuật toán Để giảng dạy một thuật toán, một trò chơi giáo dục trên máy tính, được gọi là "trò chơi thuật toán", phải là một trò chơi mô phỏng hành vi của thuật toán một cách trực quan và biểu thị bằng đồ họa các đặc trưng của cấu trúc dữ liệu của thuật toán Nhóm tác giả đã trình bày các nội dung sau đây:
- Duyệt lại lịch sử của trò chơi máy tính được sử dụng trong giáo dục và những chức năng, đặc điểm mà một trò chơi giáo dục phải đạt được
- Tham gia trò chơi giáo dục khuyến khích các hình thức hoạt động tích cực
như quan sát, phản hồi, thay đổi, xây dựng và trình bày
- Sự trực quan hóa trò chơi thuật toán đảm bảo các đặc trưng: Cuốn hút HS
học thuật toán, tạo động lực cho HS vượt qua thử thách và kiến tạo kiến thức (hiểu thuật toán)
- Các bước phát triển một công cụ phát triển trò chơi để thỏa mãn những đặc
điểm nêu trên
Để có thể thực hiện được phương pháp trực quan hóa thuật toán thông qua trò chơi giáo dục của nhóm Sahar S Shabanah, cần phải tạo ra được các trò chơi tương ứng cho từng thuật toán từ các phần mềm công cụ phát triển trò chơi, và hiểu được những khái niệm cơ bản như “thuộc tính trò chơi”, các “mô-đun cơ bản của trò chơi” và các “yếu tố thiết kế trò chơi”
Phương pháp trực quan trong dạy học thuật toán được nhóm Tomasz Müldner & Elhadi Shakshuki (2004) nâng lên ở mức độ cao hơn nhằm bồi dưỡng các cấp độ trừu tượng trong tư duy thuật toán cho sinh viên ngành Khoa học máy tính Điều này sẽ được giới thiệu kĩ hơn những nội dung tiếp theo
1.3.4 Dạy học thuật toán theo hướng phát triển tư duy thuật toán
Trong số hiếm những người nghiên cứu sâu về chủ đề dạy học thuật toán cho
HS phổ thông có lẽ phải kể đến Vương Dương Minh (1996) với luận án ―Phát triển
Trang 33tư duy thuật toán cho HS trong khi dạy học các hệ thống số ở trường phổ thông‖
Tác giả đã nghiên cứu PPDH thuật toán trên các hệ thống số ở trường phổ thông Trước hết tác giả đưa ra định nghĩa trực giác nhưng chính xác về thuật toán như
sau: “Thuật giải là một qui tắc chính xác và đơn trị một số hữu hạn những thao tác
sơ cấp theo một trình tự xác định trên đối tượng sao cho sau một số hữu hạn thao tác đó ta thu được kết quả mong muốn” Dựa trên định nghĩa này, các bài toán số
học và các bài toán giải bằng phương pháp số ở trường phổ thông được tác giả chỉ
ra các bước đơn trị và xác định (thuật thoán) để giải quyết Trong luận án và bài báo của mình, Vương Dương Minh (1990, 1996) đã đưa ra hệ thống các tư tưởng chủ đạo về phát triển tư duy thuật giải trong môn Toán như sau:
(1) Rèn luyện cho HS các hoạt động tư duy thuật giải trong khi và nhằm vào thực hiện những yêu cầu Toán học
(2) Gợi động cơ và hướng đích cho các hoạt động tư duy thuật giải bao gồm:
- Gợi động cơ và hướng đích mở đầu các hoạt động tư duy thuật giải;
- Gợi động cơ và hướng đích trong khi tiến hành các hoạt động tư duy thuật giải
- Gợi động cơ kết thúc hoạt động tư duy thuật giải
(3) Truyền thụ cho HS những tri thức phương pháp về tư duy thuật giải trong khi
tổ chức, điều khiển tập luyện các hoạt động tư duy thuật giải
(4) Phân bậc các hoạt động
Bùi Văn Nghị, Vương Dương Minh, Nguyễn Anh Tuấn (2005) đã đơn giản hóa khái niệm thuật toán để tiệm cận với thuật toán giải bài toán trên máy tính như sau:
―Thuật toán được hiểu như một quy trình mô tả những chỉ dẫn rõ ràng và chính xác
để người (hay máy) thực hiện một loạt thao tác nhằm đạt được mục đích đặt ra hay giải một lớp bài toán nhất định‖ Từ định nghĩa này, các tác giả nêu ra các đặc điểm
của thuật toán, có thể được tóm tắt như sau:
- Đó là một dãy hữu hạn các bước sắp xếp theo một trình tự nhất định
- Mỗi bước là một thao tác sơ cấp, có thể là một thuật toán đã biết Các bước
rõ ràng, thao tác chính xác
- Có tính kết thúc và tính phổ dụng
Theo các tác giả, ―Tư duy thuật toán là cách suy nghĩ để nhận thức, để giải quyết vấn đề một cách có trình tự (sắp xếp lần lượt, thứ tự trước sau)‖
Trang 34Nguyễn Bá Kim (2009) đã trình bày khá rõ ràng một số vấn đề cơ bản về thuật giải1
, về các qui tắc tựa thuật giải, và về rèn luyện tư duy thuật giải trong dạy học giải một số bài toán Các qui tắc tựa thuật giải được xem là một loại tri thức phương pháp đặc biệt và hữu hiệu trong giải toán với ba cấp độ tăng dần (có thể
xem chi tiết trong Nguyễn Bá Kim, 2009)
Về khái niệm thuật giải và qui tắc tựa thuật giải: Nguyễn Bá Kim (2009) đưa
ra một phát biểu trực quan về thuật giải như sau: “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 đó” Theo tác giả, ngoài thuật giải, còn có những qui tắc tựa thuật giải và chúng rất có hiệu lực trong việc chỉ dẫn hành động và giải toán ―Qui tắc tựa thuật giải được hiểu là một dãy hữu hạn những chỉ dẫn thực hiện theo một trình tự xác định nhằm 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 bài toán đó‖ Khác với
thuật giải, qui tắc tựa thuật giải không đảm bảo chắc chắn sau một số hữu hạn bước thì đem lại kết quả là lời giải của lớp bài toán; kết quả thực hiện sau mỗi chỉ dẫn có thể không đơn trị; và mỗi chỉ dẫn trong qui tắc có thể chưa mô tả hành động một cách xác định
Về khái niệm tư duy thuật toán: Nguyễn Bá Kim (2009) 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 5 loại hoạt động sau đây:
(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) 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
Trong “Tiếp cận nhiều mặt vào hoạt động lập trình”, Lê Khắc Thành (2008) đã trình bày tiếp cận lập trình dựa trên phương diện thuật toán Theo tác giả, 5 loại hoạt
1
“Thuật toán” và “thuật giải” là hai cách dịch khác nhau của từ “algorithm” Tuy nhiên một số nhà khoa
học Việt Nam cho rằng “thuật giải” (hay “giải thuật”) là mở rộng của khái niệm “thuật toán” để chấp nhận
tính gần tối ưu (ví dụ thuật toán tham lam), tính gần đúng (ví dụ các thuật toán xấp xỉ) và đặc biệt là tính đa
trị tại mỗi bước thực hiện thuật toán (ví dụ giải thuật ngẫu nhiên và “qui tắc tựa thuật giải” trong giải toán)
Trang 35động trên đây biểu thị mối quan hệ chặt chẽ giữa thuật toán và tư duy thuật toán Trong đó, để phát triển tư duy thuật toán, tác giả cho rằng cần tập luyện cho HS những khả năng sau đây:
(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) Mô tả chính xác quá trình tiến hành một hoạt động;
(iii) 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;
(iv) Cải tiến thuật giải để tiết kiệm thời gian chạy máy hoặc tiết kiệm bộ nhớ Bên cạnh đó, tác giả đã chỉ ra các bước xây dựng thuật toán và nhấn mạnh việc tìm nhiều thuật toán cho một bài toán; phân tích hoạt động thành những hoạt động thành phần và đánh giá thuật toán
Nhóm các tác giả trên thế giới nghiên cứu về dạy học phát triển tư duy thuật toán có thể kể đến Parsons (2006) và Gerald Futsche (2006) Parsons đã có một đề xuất rèn luyện tư duy thuật toán cho người học, trong khi không phát biểu tường minh khái niệm về tư duy thuật toán Gerald Futsche đã đề cập trực tiếp đến khái niệm tư duy thuật toán (Algorithmic Thinking) Theo Gerald Futsche, tư duy thuật toán là một trong những năng lực quan trọng nhất cần đạt được trong nền giáo dục
Tin học, nó có thể phát triển độc lập từ việc học lập trình Tác giả 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 tính chính xác của 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 giải chính xác 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
Hai năng lực đầu tiên giúp HS thực hiện tốt nhiệm vụ “Xác định bài toán” Các năng lực còn lại giúp HS hiểu và làm tốt nhiệm vụ “Mô tả thuật toán” Trong đó,
năng lực 3 và 4 được xem là những năng lực tìm ra các thao tác cơ bản để mô tả
thuật giải bài toán, năng lực 5 và 6 được xem là những năng lực tư duy giúp HS xây dựng được một thuật toán đảm bảo tính đúng đắn và tính hiệu quả
Gerald đề nghị nên dùng các bài toán khó nhưng phát biểu bài toán dễ hiểu để rèn luyện tư duy thuật toán cho ngươi học, và nhằm giúp HS hiểu được các khái
Trang 36niệm cơ bản gắn kết với thuật toán như: Tính chính xác (correctness), tính dừng (termination), tính hiệu quả (efficiency/determinism), tính song song (parallelism)
Để minh họa cho quan điểm của mình, Gerald Futsche đã chọn bài toán “Tìm đường trong mê cung‖ Yêu cầu của bài toán này là chỉ ra một thuật toán để theo đó một người đi qua được mê cung từ một lối vào (start) đến một lối ra (goal) đã cho nào
đó
Hình 1 1 Tìm cách đi qua mê cung
Gerald Futsche 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 dần các thao tác cơ bản biểu thị “cách đi” thoát khỏi mê cung Quá
trình này có thể tóm tắt qua các bước sau đây:
Bước 1: Phân tích bài toán
Bài toán được xác định 3 nhiệm vụ cần giải quyết, đó là:
- Tìm đường đi ra khỏi mê cung,
- Tìm đường đi xuyên qua mê cung, hoặc
- Tìm đường đi đến một vị trí cụ thể nào đó bên trong mê cung
Các nhiệm vụ trên dẫn đến một nhiệm vụ chung đó là:
- Tìm đường đi từ vị trí A tới vị trí B (Nhiệm vụ chung)
Bước 2: Xác định thao tác cơ bản thứ nhất: ―Đi theo hành lang bên trái‖
Tại bước này, tác giả phân tích để chứng tỏ thao tác cơ bản “Đi theo hành lang
bên trái” có thể là lời giải bài toán, nghĩa là cách đi đó có thể xuất phát từ lối vào và thoát khỏi mê cung bằng một lối ra xác định Bên cạnh đó, tác giả cũng đưa ra ví dụ
về những mê cung mà cách đi theo hành lang bên trái không thể thoát khỏi mê cung
vì đi vào đường cụt, trong khi có đường ra khỏi mê cung không bằng cách đi đó
Bước 3: Xác định thao tác cơ bản thứ hai : ―Đi theo hành lang ngẫu nhiên‖
Bước 3 này nhằm giải quyết hạn chế của cách đi cứng nhắc bằng cách cho phép
đi theo các hành lang một cách ngẫu nhiên Tuy nhiên cách đi này lại quá tốn kém
về mặt chi phí bộ nhớ và thời gian, do sự bùng nổ cấu hình tất cả các cách đi và có thể gặp phải bế tắc mới do nó không kiểm tra được hành lang đã đi qua và dẫn đến
Trang 37đi quanh quẩn trong một dãy các hành lang khép kín
Bước 4: Xác định thao tác cơ bản thứ ba: ―Vừa đi vừa đánh dấu‖
Dựa trên ưu điểm và hạn chế của cách đi theo hành lang ngẫu nhiên, tác giả đề xuất thuật toán “Cuộn len của Ariadne” nhằm đánh dấu những hành lang đã đi qua
để tránh bị đi quẩn trong các chu trình trong mê cung Thuật toán “Cuộn len của
Ariadne” đã đưa ra được lời giải đúng đắn (xem Hình 1 2)
Hình 1 2 Vừa đi vừa đánh dấu
Bản chất của thuật toán “Cuộn len của Ariadne” chính là bản chất của thuật toán Backtracking quen thuộc để giải quyết lớp bài toán “quay lui vét cạn” Đó là những bài toán có đặc trưng nghiệm gồm nhiều thành phần, mỗi thành phần có một tập các khả năng để chọn lựa Tại mỗi bước của thuật toán, một khả năng chưa được xét sẽ được chọn là thành phần tiếp theo của nghiệm Quá trình này sẽ dẫn đến hai khả năng: (1) Chọn được thành phần nghiệm cuối cùng và kết thúc thuật toán; (2) Bế
tắc, tức là không thể chọn được thành phần thứ k tiếp theo của nghiệm Khi đó thuật toán “quay lui” về thành phần nghiệm trước đó, nghĩa là hủy bỏ thành phần thứ k-1 vừa chọn, chọn lại thành phần thứ k-1 khác trong tập các khả năng dành cho nó, trước khi “đi tiếp” đến thành phần thứ k Nếu tập khả năng của thành phần thứ k-1
đã được xem xét hết thì thuật toán lại cho phép “quay lui” về thành phần nghiệm
thứ k-2 để chọn lại Như vậy khả năng “quay lui” giúp thuật toán xem xét tất cả các
khả năng cho các thành phần nghiệm ở các bước trước để tìm thành phần nghiệm ở bước hiện tại Do đó, thuật toán có thể chứng minh được tính vô nghiệm (ví dụ mê cung không có đường ra) vì nó có thể xem xét mọi khả năng cho tất cả các thành phần của nghiệm
Cùng với Gerald Futschek, Luay Nakhleh (2012a, 2012b) đã đề xuất các bước tư
duy để tìm ra thuật giải cho một bài toán như Hình 1 3
Trang 38Hình 1 3 Thuật toán giải quyết vấn đề của Luay Nakhleh
1.3.5 Dạy học thuật toán theo các mức trừu tượng của tư duy thuật toán
Một số khái niệm của Khoa học máy tính đã được các nhà khoa học nghiên cứu ở góc độ giáo dục, ví dụ như Hammond M., Rogers P (2007) đã điều tra khái niệm máy tính được dạy như thế nào từ bậc tiểu học đến bậc trung học Đặc biệt, công
trình nghiên cứu của Jacob Perrennet (2005) và Jacob Perrennet et al (2010) tập
trung vào khái niệm thuật toán trong giáo dục đại học, giống như cách làm của
nhóm Haberman B & Averbuch H., Ginat D (2005)
Nhóm Tomasz Müldner & Elhadi Shakshuki (2004) đã đề xuất mô hình giải thích thuật toán gắn liền với các mức trừu tượng trong tư duy thuật toán để dạy học
thuật toán cho riêng sinh viên ngành Khoa học máy tính Theo các tác giả, thuật toán được giải thích ở các mức trừu tượng khác nhau theo chiều từ trên xuống dưới
và gắn liền với một xu hướng lập trình cụ thể (lập trình hướng đối tượng) Với kiểu lập trình này, có hai mức trừu tượng chính trong tư duy thuật toán: mức đặc tả đối
Sai
Hoànthành (Done)
Tốt (Good)
(1) Chính xác (correct)?
(2) Hiệu quả (efficient)?
(3) Dễ dàng thực thi (easy to
implement)?
(4) ?
(1) Chính xác (correct)?
(2) Hiệu quả (efficient)?
Trang 39tượng và mức đặc tả các hành vi của đối tượng Ở mức đặc tả đối tượng, người học
phải hiểu và định nghĩa được lớp đối tượng, bao gồm việc mô tả các vùng dữ liệu và
mô tả các hành vi của đối tượng bằng các tên hàm trong dạng khai báo tổng quát Ở mức đặc tả hành vi của đối tượng, người học phải hiểu và định nghĩa được các hàm của lớp đối tượng Quá trình định nghĩa những hàm này có thể phát sinh những hàm mới để chi tiết hóa những thao tác nhỏ trong từng hành vi của đối tượng Do đó,
giữa hai mức này, có những mức trừu tượng trung gian Như vậy, các mức trừu tượng trong tư duy thuật toán ở đây có thể được hiểu là các mức tư duy trong việc hiểu và mô tả từng mức trừu tượng của thuật toán
Nhóm của Jacob Perrenet (2005) cho rằng Khoa học máy tính có thể được mô tả như một khoa học trừu tượng và trừu tượng được coi là một nguyên tắc cơ bản và cần thiết trong giải quyết bài toán Khoa học máy tính và phát triển phần mềm Do
đó, chìa khóa cho sự thành công trong tính toán nằm trong khả năng thực hiện
những tư duy trừu tượng (abstract thinking) và thể hiện kỹ năng trừu tượng (abstraction skills) Jacob Perrenet et al (2010) đã định nghĩa: “Trừu tượng là mang đến một cấp độ tổng hợp cao hơn từ một cách nhìn (phát biểu, mô hình, luận thuyết) để có thể áp dụng chung đối với nhiều trường hợp hơn” Định nghĩa này
được chấp nhận bởi các nhân viên từ nhiều ngành kỹ thuật, bao gồm cả ngành Khoa học máy tính Nó được sử dụng để mô tả các cấp độ trừu tượng của tư duy và hành động trong một loạt các lĩnh vực khác nhau Từ định nghĩa này, nhóm Jacob Perrenet et al (2010) đề xuất bốn cấp độ trừu tượng trong tư duy thuật toán của
sinh viên tương ứng với bốn cấp độ trừu tượng của thuật toán như sau:
Cấp độ thực hiện: thuật toán là một hoạt động cụ thể trên một máy tính đặc
biệt cụ thể, thời gian thực hiện của nó được xác định bởi máy tính
Cấp độ chương trình: thuật toán là một quá trình, mô tả bởi một ngôn ngữ
lập trình có thể thực thi, thời gian thực hiện phụ thuộc vào dữ liệu đầu vào
Cấp độ đối tượng: thuật toán không liên kết với một ngôn ngữ lập trình cụ
thể, nó có thể được xem như một đối tượng (so với quá trình) Trong khi xây dựng cấu trúc dữ liệu và các thuộc tính bất biến được sử dụng, các thuộc tính như tính dừng và “đơn thể” (module thuật toán) có liên quan, thời gian thực hiện thuật toán được xét trong thuật toán là hàm của dữ liệu đầu vào
Cấp độ bài toán: thuật toán có thể được xem như một hộp đen; Ở góc độ
“cho một bài toán, kiểu thuật toán nào là phù hợp với nó?” thì các bài toán có thể phân loại bằng các thuật toán phù hợp, mỗi bài toán có một độ phức tạp riêng
Trang 40BÌNH LUẬN
Phương pháp sử dụng thuật toán để dạy một số nội dung của môn Toán như ý kiến của nhóm João F Ferreira et al (2011) có lẽ không phù hợp với tinh thần giảm tải kiến thức cho phổ thông Hơn nữa nó không nhấn mạnh vào việc tìm ra phương pháp riêng để dạy học thuật toán cho HS phổ thông
Phương pháp sử dụng câu đố và những câu đố giống như trò chơi của Anany Levitin (2005) là một phương pháp hay, vì nó có thể tạo ra cho HS sự hứng thú khi học thuật toán Song những loại câu đố đó thường khó, không phù hợp với nội dung dạy học những thuật toán cơ bản ở trường phổ thông Việt Nam
Phương pháp trực quan hóa thuật toán tuy là một ý tưởng tuyệt vời trong việc cuốn hút HS học thuật toán một cách tự nhiên và cũng rèn luyện cho HS các hoạt động tích cực trong học tập Tuy nhiên nó lại không thành công nhiều trong việc rèn luyện tư duy trừu tượng Phương pháp trực quan hóa thuật toán bằng mô hình giải thích thuật toán - AE của Tomasz Müldner & Elhadi Shakshuki (2004) là một cách rất tốt để giúp người học hiểu được những tính chất nâng cao của thuật toán, tuy nhiên phương pháp này cũng gặp phải những khó khăn về việc thiết kế phần mềm
đồ họa để mô phỏng thuật toán
Có thể nói rằng quan điểm về những năng lực tư duy thuật toán của Gerald Futsche (2006) và những hoạt động rèn luyện tư duy giải thuật của Nguyễn Bá Kim (2009) và Lê Khắc Thành (2009) là thống nhất với nhau, hỗ trợ bổ sung cho nhau Nhưng có lẽ không nên chỉ sử dụng những bài toán khó để rèn luyện tư duy thuật
toán cho HS Bốn cấp độ trừu tượng trong tư duy thuật toán (cấp độ thực hiện, cấp
độ chương trình, cấp độ đối tượng, và cấp độ bài toán) mà nhóm Jacob Perrenet (2010) đã chỉ ra khá thuyết phục Song, trong nghiên cứu của mình, các tác giả không chỉ ra rõ ràng một “khung công việc” cụ thể để rèn luyện cho sinh viên các cấp độ trừu tượng này khi dạy học thuật toán Hơn nữa đây là những đòi hỏi cao về mặt tư duy trừu tượng đối với sinh viên ở đại học Để có thể vận dụng tư tưởng của những cấp độ này trong dạy học thuật toán ở trường phổ thông, cần có những điều chỉnh phù hợp và nên phát biểu lại các cấp độ đó một cách dễ hiểu hơn nữa
1.4 THỰC TIỄN DẠY HỌC THUẬT TOÁN Ở TRƯỜNG TRUNG HỌC PHỔ THÔNG
1.4.1 Nghiên cứu, khảo sát thực tiễn dạy học thuật toán
1.4.1.1 Mục tiêu của nghiên cứu, khảo sát
Khảo sát thực tiễn dạy học thuật toán ở các trường THPT được chú ý tiến hành bên trong đề tài “Khảo sát thực trạng dạy học lập trình ở một số trường THPT”