Chương 1 CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN VỀ ĐÁNH NĂNG LỰC GIẢI THUẬT CỦA SINH VIÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. Tổng quan vấn đề nghiên cứu Trong phần này, luận án tập trung nghiên cứu hai nội dung: 1) Nghiên cứu về năng lực giải thuật ngành công nghệ thông tin; 2) Đánh giá năng lực giải thuật của sinh viên ngành công nghệ thông tin. Những nghiên cứu về năng lực giải thuật của sinh viên ngành Công nghệ thông tin Các nghiên cứu về NLGT của SV ngành CNTT khá đa dạng, thể hiện ở nhiều khía cạnh khác nhau như: Năng lực xác định vấn đề; năng lực phân tích giải thuật; năng lực xây dựng nội dung giải thuật; năng lực đánh giá giải thuật và năng lực tối ưu hóa GT. Các NLGT được đề cập ở hai vấn đề chính dưới đây 1.
Năng lực giải thuật dựa trên mô hình tư duy tính toán (Computational thinking) Theo Anderson, tư duy tính toán là một cách giải quyết vấn đề, thiết kế hệ thống và hiểu hành vi của con người bằng cách sử dụng các khái niệm cơ bản của khoa học máy tính. Tư duy tính toán cần được xem như một năng lực trí tuệ tổng quát hơn, được định nghĩa theo cách có thể chuyển giao giúp mọi người hiểu và giải quyết các vấn đề phức tạp, các thành phần của mô hình tư duy tính toán gồm: 1) Phân chia vấn đề (Decomposition); 2. Nhận dạng mẫu (Pattern Recognition); 3. Thiết kế giải thuật (Algorithm Design); 5.
Tư duy đệ quy và lặp lại (Iterative and Recursive Thinking) [32]. Theo Hübscher Younger, Teresa và cộng sự, trong nghiên cứu về “Học tập mang tính xây dựng và hợp tác về thuật toán”, dựa trên kết quả khảo sát và thử nghiệm về hệ thống trực quan hóa các giải quyết các bài tập dựa trên các NLGT để tạo ra các cách trình bày thuật toán mang tính giải thích (biểu diễn thuật toán hợp tác của sinh viên để tự học nâng cao). Các NLGT được trình bày trong nghiên cứu: năng lực xác định nội dung; năng lực phân tích nội dung thuật toán; năng lực tư duy tính toán; năng lực đánh giá kết quả sử dụng thuật toán để giải quyết vấn 10 đề. Nghiên cứu cho thấy sự khác biệt rõ nét về cách giải quyết một vấn đề trên cơ sở thuật toán cho kết quả nhanh và chính xác hơn so với việc thiết lập kế hoạch giải quyết vấn đề trên văn bản giấy “truyền thống” [70].
Các nghiên cứu của Wing, Jeannette M, Axmedova, Nilufa; Barr, David, Harrison về “Tư duy tính toán và năng lực giải thuật trong khoa học máy tính”, “Phân tích lý thuyết về năng lực giải thuật của sinh viên sư phạm công nghệ thông tin” đề cập đến các năng lực cơ bản nhất để giải quyết nhiệm vụ bằng thuật toán không chỉ áp dụng cho khoa học máy tính nói chung mà còn đóng vai trò quan trọng để giải quyết vấn đề chính xác, khoa học, nhờ vào các năng lực thành phần của NLGT. Các thành phần của NLGT được tác giả đề cập bao gồm: Năng lực tư duy tính toán; năng lực xác định vấn đề; năng lực phân tích giải thuật và dữ liệu; năng lực thiết kế lập trình và năng lực đánh giá kết quả sau khi thực thi thuật toán để giải quyết một nhiệm vụ đã đặt ra. Ngoài ra các tác giả còn đề cập đến các năng lực khác tác động đến NLGT của SV như: năng lực tư duy giải thuật (năng lực thuật toán phụ trợ; năng lực xác định thuộc tính thuật toán; năng lực triển khai thuật toán) các năng lực này là những phẩm chất thích hợp để giải quyết một phạm vi nhất định của các vấn đề [34],[39],[113],[114]. Các nghiên cứu của Bean, Nathan; Csernoch, Mária; Selby, Cynthia; Csernoch, Mária, János; Sherman, Mark và Martin, Fred; García.P, FJ, Reimann; Baker, Jamie J; Doleck, Tenzin, Bazelais và cộng sự; Yadav, Aman, Good, với nhiều khía cạnh nghiên cứu về “tư duy thuật toán thiết kế phần mềm”; “tư duy tính toán trong lập trình”; “mối quan hệ giữa giải thuật và tư duy tính toán” “Năng lực công nghệ thông tin trong xã hội thuật toán số”, đề cập đến mối quan hệ giữa năng lực tư duy tính toán trong toán – tin và NLGT, tư duy giải thuật trong việc tạo ra các sản phẩm phần mềm đều phải tuân theo những quy trình chặt chẽ của tư duy tính toán và tư duy giải thuật.
Các nghiên cứu có đồng quan điểm cho rằng NLGT là rất quan trọng đối với SV ngành CNTT [40],[50],[98],[99][57],[35], [53],[116]. Nghiên cứu về NLGT của SV ngành CNTT tiếp tục có các nghiên cứu chi tiết hơn nhằm định hình các năng lực chuyên sâu về giải thuật với các nghiên cứu 11 của: Baranova. EV, Simonova; Portelas, Rémy; Sadykova, OV và Il'bahtin ; Lodi, Michael và Martini, Simone; Abd Elrahman, Ahmed, Karassyova L.N và cộng sự; Smagulov.N; với các công bố nghiên cứu về các chủ đề: “Phát triển năng lực giải thuật của sinh viên toán học thông qua nguồn lực số”; “Phát triển năng lực số và năng lực giải thuật và lập trình” “Giải thuật trong môi trường tham số hóa liên tục” “Định nghĩa về tư duy giải thuật” “Tư duy giải thuật quan điểm và cách tiếp cận giữa Papert và Wing”, đề cập đến “Khái niệm về năng lực giải thuật của SV thông qua CNTT và truyền thông. Năng lực giải thuật được xác định bởi các tiêu chí: Năng lực hiểu biết về các tính chất và bản chất của thuật toán; Năng lực sở hữu các kỹ thuật và phương tiện để thực hiện giải thuật; Năng lực lập trình thuật toán; Năng lực vận dụng kỹ năng giải thuật trong toán học và khả năng ứng dụng trong thực tiễn.
Nghiên cứu này đề cập đến các NLGT là bộ phận cấu thành của năng lực CNTT và truyền thông. Nghiên cứu của Smagulov.Zh và Karaseval.N, khi đánh giá NLGT của SV ngành CNTT, cũng đồng quan điểm về NLGT là một bộ phận cấu thành ở người học ngành CNTT. Các năng lực thành phần của NLGT bao gồm: Năng lực hiểu bản chất thuật toán; Năng lực tư duy tính toán; Năng lực xác định vấn đề và nội dung cấu trúc dữ liệu; Năng lực giải thuật; Năng lực đánh giá giải thuật [37],[93],[97],[82],[30],[100].T; Moylan, Rachel và Code, Jillianne, Ritter, Frauke và Bernhard, công bố các nghiên cứu về “Phát huy năng lực của SV trong sư phạm tin học bằng việc kết hợp nhiều ngôn ngữ và tư duy thuật toán”; “Phát triển năng lực giải thuật của sinh viên sư phạm”; “Khung năng lực kỹ thuật số của sinh viên CNTT qua lăng kính năng lực giải thuật” cũng có những quan điểm thống nhất coi tư duy giải thuật là một phần của tư duy tính toán được vận dụng ngày càng rộng rãi để tạo ra các kết quả nghiên cứu nhờ NLGT. Với quy trình gồm 03 bước: Mô tả tóm tắt và phân tích vấn đề; thiết kế thuật toán; kiểm tra giải pháp.
Dựa vào các bước trên, NLGT có thể được vận dụng dựa trên các giải pháp thuật toán chạy trên máy tính để giải quyết các nhiệm vụ trong thực tiễn một cách nhanh chóng [73],[86],[95]. 12 Các nghiên cứu trong nước cũng đã công bố những kết quả nghiên cứu và triển khai trong thực tiễn đào tạo SV ngành CNTT. Việc xác định NLGT của SV có xuất phát điểm từ khoa học máy tính và cơ sở lý thuyết toán về tư duy tính toán. Nguyễn Bá Kim, đưa ra quan niệm về “Tư duy giải thuật” là một dạng tư duy toán học có liên hệ chặt chẽ với việc thực hiện các thao tác tư duy, được sắp xếp theo một trình tự nhất định mà kết quả là giải quyết được nhiệm vụ đặt ra bao gồm các năng lực thành phần như: 1) 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, đặc biệt là quy trình thể hiện một thuật giải mà người học đã được biết một cách tường minh hoặc ẩn tàng; 2) Phân tích một hoạt động thành những hoạt động thành phần và sắp xếp lại theo một trình tự xác định; 3) Mô tả chính xác quá trình tiến hành một hoạt động với một số hữu hạn bước theo trình tự nhất định; 4) Khái quát hóa 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; 5) 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.
Tư duy giải thuật góp phần quan trọng vào việc hình thành các kỹ năng tư duy tính toán và năng lực giải thuật (NLGT) trong khoa học máy tính [13]. Các nguyên cứu của Nguyễn Chí Trung, Nguyễn Đức Thành: “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”; “Vận dụng tư duy thuật toán vào việc xác định vấn đề trong xây dựng thuật toán và giải các bài tập hình học không gian bằng NLGT” bao gồm xác định vấn đề; xây dựng nội dung giải quyết bài toán; thực hiện giải toán bằng thuật toán; đánh giá kết quả bằng tư duy thuật toán. Nghiên cứu cũng chỉ ra tư duy giải thuật góp phần quan trọng vào việc hình thành NLGT bao gồm: năng lực xây dựng giải pháp cho vấn đề; chứng minh tính đúng đắn của giải pháp và phân tích sự phức tạp của các giải pháp điều đó đều thể hiện nó như là một thuật toán hay chính là NLGT [23],[27]. Phan Tấn Quốc, Phan Thị Kim Loan, Trương Tấn Khoa, nghiên cứu “Khảo sát các thuật toán định hướng khoa học máy tính môn tin học chương trình giáo dục phổ thông mới”, ngoài các năng lực cần đạt được về lập trình cơ bản; ngôn 13 ngữ lập trình; kỹ thuật lập trình thì một trong những năng lực quan trọng của người học đó là năng lực phân tích và giải thuật bằng các thuật toán để phân tích, đánh giá mức độ phức tạp của các quy tắc trong quá trình thực hiện lập trình [21].
Nguyễn Thu Hương, nghiên cứu “Ứng dụng ILA trong lựa chọn định hướng chuyên ngành cho sinh viên khoa Công nghệ thông tin” đã tổng quan khá chi tiết về vai trò của phân tích cấu trúc dữ liệu, vận dụng NLGT được sử dụng rộng rãi đặc biệt là phân lớp dữ liệu đã được nhiều nhà nghiên cứu tiến hành nghiên cứu và thực nghiệm trong rất nhiều lĩnh vực: Giáo dục, Y tế, Kỹ thuật… Trong nghiên cứu này với việc sử dụng thuật giải học quy nạp - Inductive Learning Algorithm (ILA) chỉ ra phân nhóm NLGT của SV như: thuật toán khai phá dữ liệu Logistic Regression, Naive Bayes; giải thuật rừng ngẫu nhiên học từ dữ liệu để rút trích các học phần; đánh giá dự đoán kết quả học tập của người học bằng kỹ thuật khai phá dữ liệu. Kết quả nghiên cứu đóng góp quan trọng trong dự báo kết quả người học bằng kỹ thuật khai phá dữ liệu [11].