TỔNG QUAN VỀ VẤN ĐỀ NGHIÊN CỨU
Vấn đề dạy và học ngôn ngữ lập trình Pascal trong trường THPT
Vào đầu những năm 1970, giáo sư Niclaus Wirth giới thiệu Ngôn ngữ lập trình Pascal, một ngôn ngữ nổi bật với nhiều ưu điểm vượt trội so với các ngôn ngữ cấp cao khác Trong suốt quá trình phát triển, Pascal đã trở thành một công cụ mạnh mẽ, được ứng dụng rộng rãi trong lĩnh vực giảng dạy và lập trình chuyên nghiệp vào những năm 80.
Pascal là ngôn ngữ lập trình bậc cao có các đặc điểm [1]:
Ngôn ngữ lập trình với định kiểu mạnh mẽ yêu cầu mọi biến và hằng chỉ được gán giá trị đúng kiểu dữ liệu của chúng, ngăn chặn việc gán giá trị từ kiểu dữ liệu khác Sự chặt chẽ trong việc định kiểu này giúp lập trình viên phải luôn đảm bảo tính tương thích giữa các biểu thức, từ đó rèn luyện tư duy logic một cách hiệu quả.
Là một ngôn ngữ thể hiện tư duy lập trình có cấu trúc được thể hiện trên 3 mặt:
Cấu trúc dữ liệu là nền tảng quan trọng, cho phép lập trình viên phát triển từ dữ liệu đơn giản đến các cấu trúc phức tạp hơn.
Cấu trúc lệnh trong lập trình cho phép người lập trình viên nhóm các lệnh chuẩn lại với nhau, đặt chúng giữa hai từ khóa Begin và End, tạo nên một ngôn ngữ phức tạp hơn được gọi là lệnh hợp thành hay lệnh ghép.
Cấu trúc chương trình được tổ chức theo dạng cây phân cấp, cho phép chia nhỏ thành các chương trình con, mỗi chương trình con đảm nhiệm một nhiệm vụ cụ thể Cách tổ chức này giúp lập trình viên giải quyết từng phần một cách hiệu quả và hỗ trợ nhiều người tham gia lập trình, mỗi người có thể phụ trách một số khối riêng biệt.
Là ngôn ngữ lập trình rất gần với ngôn ngữ tự nhiên (tiếng Anh) nên mã Pascal trở nên rất sáng sủa, dễ hiểu và dễ sửa chữa
Ngày nay, Pascal không còn phổ biến trong lập trình chuyên nghiệp, nhưng vẫn được sử dụng rộng rãi trong giảng dạy, đặc biệt cho những người mới bắt đầu học lập trình Ngoài ra, Pascal cũng là ngôn ngữ chính thức trong kỳ thi Olympic Tin học quốc tế.
Bộ Giáo dục và Đào tạo đã đưa ngôn ngữ lập trình Pascal vào chương trình học Tin học Đại cương cho các khối ngành Khoa học Tự nhiên, đặc biệt là Công nghệ Thông tin, và là môn học bắt buộc cho học sinh lớp 11 trên toàn quốc Môn học này đã phát huy những ưu điểm vốn có, nhưng cũng nhận được nhiều phản hồi từ người học trong quá trình triển khai.
Nội dung bài tập trong chương trình Tin học lớp 11 chủ yếu tập trung vào các khía cạnh tính toán và toán học, thiếu sự liên kết với thực tiễn Điều này khiến học sinh thường không nhận thức rõ ràng về mục đích của lập trình, chỉ xem nó như một công cụ để thực hiện các phép toán với con số.
Học sinh thường gặp khó khăn trong việc hình dung các ứng dụng thực tế của lập trình nếu chỉ dựa vào lý thuyết từ sách giáo khoa Một câu hỏi phổ biến mà họ đặt ra là lập trình Pascal có thể được ứng dụng ra sao trong cuộc sống thực.
Học sinh gặp khó khăn trong việc kiểm tra tính chính xác của bài làm lập trình, vì mặc dù lý thuyết có thể đúng, nhưng thực tế có thể xuất hiện những trường hợp không chính xác trong từng ngữ cảnh cụ thể.
Học sinh hiện nay thường tìm hiểu các ngôn ngữ lập trình phổ biến như Java, C++, và Python Theo TIOBE Index, một trang chuyên thống kê nhu cầu tuyển dụng lập trình viên từ 25 công cụ tìm kiếm lớn như Google và YouTube, Pascal chỉ đứng thứ 17 về độ phổ biến tính đến tháng 11 năm 2015 Điều này cho thấy việc lựa chọn Pascal để giảng dạy có thể không thu hút được sự quan tâm lâu dài của học sinh trong việc học tập và nghiên cứu.
Để giải quyết những khó khăn mà học sinh gặp phải trong việc học ngôn ngữ lập trình, tôi đã nghiên cứu và phát triển phần mềm hỗ trợ dạy và học ngôn ngữ lập trình Pascal cho học sinh Trung học phổ thông Mục tiêu của phần mềm là tạo ra sự tương tác giữa người học và môn học, từ đó khuyến khích tính tích cực và chủ động trong quá trình học tập ngôn ngữ lập trình Pascal.
Phát biểu bài toán
Phần mềm nghiên cứu là một trang web thay thế cho trình soạn thảo Pascal như Turbo Pascal và Free Pascal, hỗ trợ người học trong việc sử dụng ngôn ngữ lập trình Pascal Trang web cho phép người học thực hành và biên dịch các bài tập Pascal ngay trên giao diện, với hệ thống đưa ra lời chúc mừng và cộng điểm khi chương trình đạt yêu cầu Người học có thể xem lại và chỉnh sửa bài tập nhiều lần, nhưng chỉ lần đầu tiên đạt yêu cầu mới được tính điểm.
Trang web cho phép người dùng nhập mã Pascal, sau đó phân tích mã này để sinh ra các ca kiểm thử Chương trình sẽ trả về kết quả đúng hoặc sai; nếu đúng, hệ thống sẽ mở khóa để người học tiếp tục làm bài tập kế tiếp Ngược lại, nếu kết quả sai, người học cần chỉnh sửa mã Pascal của mình, và quá trình này sẽ lặp lại cho đến khi đạt được kết quả đúng.
Xây dựng Hệ thống gồm những bước cơ bản sau:
Xây dựng trình soạn thảo pascal trên trang web
Thiết kế kiểm thử mã pascal của người dùng đã nhập để đưa ra những phản hồi thích hợp
Xây dựng tài liệu hỗ trợ học tập ngôn ngữ lập trình Pascal từ nguồn tài nguyên mở
1.2.2 Những khó khăn thách thức
Pascal là một ngôn ngữ lập trình có cấu trúc mệnh lệnh, hiện nay chủ yếu được sử dụng trong giảng dạy Kể từ năm 2000, Pascal đã ngừng được hỗ trợ phát triển, dẫn đến việc ngôn ngữ này gần như không còn được ứng dụng trong ngành công nghiệp phần mềm.
Pascal gặp khó khăn do thiếu thư viện hỗ trợ kiểm thử chương trình, đặc biệt so với C/C++ Các nghiên cứu và giải pháp kiểm thử cho Pascal rất hạn chế, vì vậy tôi đã tiến hành nghiên cứu giải pháp kiểm thử chương trình Pascal theo cách thủ công, với mỗi loại bài toán yêu cầu hình thức kiểm thử khác nhau.
Hướng tiếp cận
Bối cảnh giáo dục hiện nay đã thay đổi, yêu cầu việc dạy và học không chỉ tập trung vào phát triển tư duy mà còn chú trọng đến cảm xúc, thái độ và kỹ năng Để xây dựng phần mềm giáo dục, tôi đã nghiên cứu các mô hình giáo dục trực tuyến nhằm cung cấp chương trình học cá nhân hóa Bên cạnh đó, tôi cũng tìm hiểu nguồn học liệu mở cho các hoạt động sư phạm và các trò chơi tương tác, giả lập chất lượng cao để hỗ trợ thực hành cho học sinh Từ những nghiên cứu này, tôi đã tiếp cận mô hình học tập của codehunt.
Code Hunt là trò chơi trực tuyến giúp người chơi học viết mã lệnh Java và C# thông qua chiến thuật trò chơi hóa hấp dẫn Phương pháp này thu hút người học mới, cho phép họ khám phá các khối lệnh lập trình đơn giản, trong khi những người có kinh nghiệm hơn có thể phát triển chiến lược giải quyết vấn đề Trang web cung cấp các bài tập tương tác cùng với hỗ trợ bằng văn bản và video ngắn, giúp học sinh tham gia vào các hoạt động học tập chủ động, từ đó nắm bắt các khái niệm và kỹ năng cơ bản về lập trình và thuật toán.
Kết luận chương
Trong chương này, tôi đã phân tích những thách thức trong việc dạy và học ngôn ngữ lập trình Pascal Dựa trên các vấn đề quan trọng, tôi đề xuất giải pháp và phương pháp nghiên cứu để phát triển một trang web hỗ trợ việc dạy và học Pascal Tiếp theo, tôi sẽ nghiên cứu một số lý thuyết và mô hình học tập đã được áp dụng thành công trong lĩnh vực giáo dục.
1 https://www.codehunt.com/, https://code.org/ , https://www.codecademy.com/, http://www.dreambox.com/, https://www.knewton.com/, https://www.khanacademy.org/
2 http://www.curriki.org/, https://learnzillion.com/, http://betterlesson.com/, https://www.gooru.org
3 https://www.explorelearning.com/, http://www.simcity.com/en_US/simcityedu, http://mw.concord.org/
TỔNG QUAN VỀ CODE HUNT VÀ ỨNG DỤNG TRONG DẠY HỌC PASCAL
Tổng quan về Code Hunt
2.1.1 Giới thiệu về Code Hunt
Năm 2014, Microsoft ra mắt trò chơi trực tuyến Code Hunt, một nền tảng giúp người chơi học viết mã lệnh bằng ngôn ngữ Java hoặc C# Với chiến thuật trò chơi hóa độc đáo, Code Hunt đã thu hút hơn 150.000 người chơi trên toàn cầu, trong đó 99% người chơi quay lại trong tuần tiếp theo Trò chơi này thách thức người chơi suy luận và giải quyết các bài toán bí ẩn dựa trên các trường hợp thử nghiệm (Unit test), yêu cầu họ đưa ra giải pháp chính xác cho từng trường hợp đầu vào và đầu ra.
2.1.2 Chức năng của Code Hunt
Code Hunt là một trò chơi tương tác cung cấp nhiều lĩnh vực và cấp độ khác nhau, trong đó người chơi viết mã lệnh Java hoặc C# trong một cửa sổ tương tự như trình soạn thảo (IDE) để thực hiện các công thức hoặc thuật toán từ các câu đố (Puzzle) của chương trình.
Chức năng câu đố cung cấp cho người chơi các tham số đầu vào cùng với kết quả tương ứng Người chơi cần kiểm tra tính chính xác của giải pháp bằng cách nhấn vào nút “CAPTURE CODE” Khi nút này được nhấn, hệ thống sẽ thực hiện các sự kiện liên quan.
1 Mã lệnh của người chơi sẽ được gửi đến máy chủ trên nền điện toán đám mây
2 Máy chủ sẽ biên dịch mã lệnh (cung cấp tùy chọn chuyển đổi mã Java sang C# và ngược lại)
3 Máy chủ sẽ phân tích mã lệnh và so sánh với thuật toán đặt ra
4 Kết quả được trả về và hiện thị cho người chơi
Hình 2.1 Màn hình chính của Code Hunt
Chức năng phân tích mã cung cấp thông báo lỗi và gợi ý về thuật toán dưới dạng bộ đầu vào, kết quả thực tế và kết quả kỳ vọng của chương trình Nhiệm vụ của người chơi là tìm ra thuật toán hoặc viết mã tương đương để đảm bảo rằng mỗi bộ đầu vào cho kết quả phù hợp với kỳ vọng, giúp người chơi chiến thắng cấp độ này.
Hình 2.2 Các lĩnh vực của Code Hunt
Code Hunt tổ chức các lĩnh vực theo chủ đề mà người chơi cần khám phá, bao gồm toán tử số học, vòng lặp, câu điều kiện, thuật toán và nhiều chủ đề lập trình khác Mỗi lĩnh vực có những câu đố được sắp xếp theo độ khó tăng dần Sau khi hoàn thành một cấp độ, người chơi sẽ được chuyển sang cấp độ khó hơn Hệ thống chỉ mở khóa lĩnh vực đầu tiên, yêu cầu người chơi phải vượt qua tất cả các cấp độ trong lĩnh vực này trước khi được chuyển sang lĩnh vực tiếp theo.
Khi hoàn thành một cấp độ trong Code Hunt, người chơi sẽ được đánh giá kỹ năng thông qua điểm số từ 1 đến 3, phản ánh độ tinh gọn của mã lệnh Điểm 1 chỉ ra giải pháp dài dòng, điểm 2 là mức trung bình, và điểm 3 thể hiện giải pháp ngắn gọn Mục tiêu của việc đánh giá này là khuyến khích người chơi cải thiện mã lệnh của mình Điểm số cuối cùng sẽ được tính bằng cách nhân điểm đánh giá với giá trị cụ thể của từng cấp độ Người chơi có thể theo dõi tiến bộ của mình qua tổng điểm tích lũy và bảng xếp hạng 15 người có điểm cao nhất.
2.1.3 Kiến trúc của Code Hunt
Code Hunt là một hệ thống điện toán đám mây trên Windows Azure, phục vụ người chơi qua trang web www.codehunt.com thông qua một ứng dụng front-end tương tác Khi đăng nhập, người chơi được ủy quyền qua Windows Azure Active Directory Access Control với các nhà cung cấp định danh như Microsoft, Facebook, Google và Yahoo Khi tham gia vào các cấp độ, chức năng xử lý hệ thống (back-end) được thực hiện tại api.codehunt.com, sử dụng giao tiếp API REST để phân tích chương trình và lưu trữ dữ liệu người dùng trong Windows Azure Store Dữ liệu người dùng được xác thực theo chuẩn OAuth (Open Authorization).
Hình 2.3 Kiến trúc của Code Hunt
Chức năng front-end và back-end được tối ưu hóa để mở rộng, cho phép tăng cường số lượng nhân phục vụ, đáp ứng nhu cầu không giới hạn về số lượng người dùng đăng nhập.
Ứng dụng mô hình Code Hunt trong dạy học Pascal
2.2.1 Chiến thuật trò chơi hóa (Gamification)
Nghiên cứu của Lee và Hammer chỉ ra rằng chiến thuật trò chơi hóa trong giáo dục ảnh hưởng đến ba yếu tố tâm lý quan trọng của người học: nhận thức, cảm xúc và vị trí xã hội.
Trò chơi thường được cấu trúc thành một hệ thống phức tạp với các quy tắc mà người chơi khám phá qua những hoạt động thử nghiệm lặp đi lặp lại Người chơi cần quan sát kết quả, lập kế hoạch di chuyển tiếp theo và thực hiện các kế hoạch đó Mục tiêu của họ trong thời gian ngắn là đánh bại từng cấp độ mà họ đã trải nghiệm.
Trò chơi hướng dẫn người chơi qua quá trình chủ động, giữ họ tham gia vào các nhiệm vụ ngày càng khó hơn Thiết kế trò chơi cần cung cấp thách thức phù hợp với kỹ năng của người chơi, đồng thời tăng dần độ khó và kỹ năng Những thách thức này và mục tiêu cụ thể thúc đẩy người học vượt qua, chính là mục đích của chiến thuật trò chơi hóa Trò chơi cung cấp nhiều cách để đạt thành công, cho phép học sinh chọn lựa mục tiêu phụ trong các nhiệm vụ lớn hơn, từ đó hỗ trợ động lực và sự tham gia của họ.
Chiến thuật trò chơi hóa trong giáo dục có khả năng thay đổi cách nhìn của học sinh về việc học Thay vì chỉ làm theo yêu cầu mà không hiểu rõ lợi ích lâu dài, học sinh sẽ được khuyến khích tự đặt câu hỏi về cách vượt qua các cấp độ học tập Phương pháp này cung cấp cho người học sự rõ ràng, nhiệm vụ cụ thể và hứa hẹn phần thưởng ngay lập tức, thay vì những lợi ích mơ hồ trong tương lai Trong các trò chơi được thiết kế tốt, việc giải quyết vấn đề thường đi kèm với những thách thức khó khăn hơn, tạo động lực cho người học.
Trò chơi mang đến một loạt cảm xúc mạnh mẽ, từ sự tò mò đến thất vọng, đồng thời cung cấp trải nghiệm cảm xúc tích cực như lạc quan và niềm tự hào Quan trọng hơn, trò chơi giúp người chơi kiên trì vượt qua những trải nghiệm tiêu cực và biến chúng thành tích cực Qua việc thử nghiệm lặp đi lặp lại, người học chấp nhận thất bại như một phần của quá trình học hỏi, rút ra bài học từ mỗi lần thất bại Trò chơi duy trì mối quan hệ tích cực với sự thất bại nhờ vào chu kỳ phản hồi nhanh chóng và mức điểm thưởng thấp Trong môi trường học đường, phần thưởng thường cao và khó đạt được, dẫn đến chu kỳ phản hồi kéo dài, khiến học sinh có ít cơ hội để thử nghiệm và phải đối mặt với áp lực trong các kỳ thi.
Chiến thuật trò chơi hóa giúp người chơi phục hồi sau thất bại, coi thất bại là một phần thiết yếu của quá trình học tập Phương pháp này rút ngắn chu kỳ phản hồi và cung cấp phần thưởng nhỏ, khuyến khích người chơi đánh giá khả năng của bản thân Nó tạo ra một môi trường khuyến khích nỗ lực và sự thành thạo, nơi người chơi học cách nhìn nhận thất bại như một cơ hội, thay vì cảm thấy bất lực và sợ hãi.
Tham gia vào trò chơi giúp người chơi trải nghiệm nhiều nhân vật và vai trò khác nhau, từ đó khám phá khả năng của bản thân Chiến thuật trò chơi hóa mang lại uy tín xã hội và công nhận thành tích một cách công khai, thông qua các nhân vật mới với nhiều thành tích đáng kể, khuyến khích người chơi suy nghĩ khác về tiềm năng của mình.
Kết hợp yếu tố trò chơi vào giáo dục sẽ khuyến khích học sinh tham gia tích cực vào các hoạt động lớp học Điều này giúp giáo viên có thêm công cụ để đánh giá và hỗ trợ học sinh, tạo ra một môi trường học tập vui vẻ và truyền cảm hứng tích cực cho các em.
Chiến thuật trò chơi hóa ban đầu được áp dụng để củng cố và ghi nhớ kiến thức trong bài học Tuy nhiên, theo thời gian, nó đã được nghiên cứu và phát triển để có thể thay thế hoàn toàn nội dung học tập, nhằm nâng cao sự nhận biết, tác động tích cực đến hành vi, tăng cường động lực và khuyến khích sự tham gia của mọi người.
Việc tích hợp game vào giảng dạy lập trình Pascal mang lại cho học sinh kiến thức thiết thực ngay lập tức Các trò chơi thường yêu cầu người chơi trải qua những trải nghiệm lặp đi lặp lại, từ đó họ phải đối mặt với thất bại và phân tích, khắc phục từng lỗi Sự kiên trì này giúp người học ghi nhớ bài học một cách tự nhiên Hơn nữa, game giáo dục còn tạo động lực cho người học thông qua cảm xúc, sự chờ đợi, và nỗ lực không ngừng.
Triển khai trò chơi hóa trong giáo dục mang lại tiềm năng lớn, bao gồm việc giảm chi phí và cải tiến chất lượng giáo dục Nó giúp tìm kiếm giải pháp cho các vấn đề cơ bản như phát triển đội ngũ giáo viên và mở rộng cơ hội tiếp cận công nghệ Hơn nữa, trò chơi hóa có thể cung cấp dịch vụ giáo dục cho đông đảo người dân với chi phí thấp hơn hoặc nâng cao chất lượng mà không tăng giá Mô hình giáo dục hiệu quả dễ dàng được nhân rộng ở quy mô lớn, đồng thời khai thác dữ liệu giúp hiểu rõ hơn về quá trình học tập Cuối cùng, trò chơi hóa gia tăng năng suất của giáo viên, giải phóng họ khỏi những công việc tốn thời gian như thi cử và chấm bài.
Bên cạnh những lợi ích mang lại, việc ứng dụng Chiến thuật trò chơi hóa vào giáo dục có những mặt hạn chế như:
Việc triển khai phụ thuộc hoàn toàn vào thiết bị công nghệ, nếu không có nền tảng công nghệ thì phương pháp này khó có thể triển khai
Không phải nội dung nào của bài học cũng phù hợp để có thể đưa vào game
Trò chơi đôi khi khuyến khích người chơi tham gia học tập chủ yếu để đạt điểm thưởng và thể hiện bản thân, thay vì thực sự thu nhận kiến thức.
Người chơi game thường tìm kiếm sự giải trí và tự do trong việc lựa chọn trò chơi, cùng với những trải nghiệm và khám phá riêng Tuy nhiên, việc bắt buộc người học tham gia vào game giáo dục trong quá trình học tập có thể tạo cảm giác bị áp lực và ràng buộc, tương tự như kỷ luật trong lớp học.
Xây dựng một game giáo dục hấp dẫn không dễ dàng như game giải trí, vì nếu lạm dụng yếu tố giải trí, người học có thể bị cuốn vào đó và không tiếp thu kiến thức Hơn nữa, nếu trò chơi quá khó, người chơi dễ cảm thấy nản chí và bỏ cuộc.
Chiến thuật trò chơi hóa đang ngày càng phát triển và được áp dụng rộng rãi trong nhiều lĩnh vực thực tế Đây sẽ là một phần quan trọng trong cuộc sống của học sinh trong những năm tới, giúp khai thác năng lượng, động lực và tiềm năng của các em Thông qua việc chỉ đạo học tập qua trò chơi, chiến thuật này cung cấp cho học sinh công cụ để trở thành những người chơi xuất sắc, đồng thời nuôi dưỡng niềm tin vào khả năng chiến thắng trong cuộc sống thực.
2.2.2 Thiết kế động viên người học
Kết luận chương 2
Trong chương này, tôi nghiên cứu mô hình Code Hunt - một trò chơi trực tuyến giúp người chơi học lập trình Java và C# Tôi cũng phân tích các mô hình giáo dục hiện có trong thiết kế giảng dạy, đánh giá và đo lường kết quả học tập toàn cầu Từ đó, tôi đưa ra các đề xuất về thiết kế nội dung học tập Pascal Cuối cùng, tôi sẽ phân tích, thiết kế và xây dựng phần mềm hỗ trợ dạy và học Pascal.
XÂY DỰNG HỆ THỐNG GIẢI QUYẾT BÀI TOÁN
Mô tả và xây dựng bài toán
Phần mềm hỗ trợ dạy và học ngôn ngữ lập trình Pascal cho học sinh THPT là một trang web thay thế cho các trình soạn thảo như Turbo Pascal và Free Pascal Nó có hai nhiệm vụ chính: thiết kế giảng dạy và đánh giá kết quả học tập của người học.
Thiết kế giảng dạy bao gồm các chỉ dẫn và hệ thống bài tập được xây dựng để thách thức người học Cơ chế trao thưởng khi vượt qua các thách thức này bao gồm những thử thách ở mức độ cao hơn, điểm số, huân chương và sự công nhận.
Thiết kế kiểm thử và đánh giá người học là quá trình thực hiện đánh giá theo từng bài hoặc cấp độ, từ đơn giản đến phức tạp Việc kiểm tra và phát hiện lỗi trong mã Pascal của người học được thực hiện thông qua hai phương pháp kiểm thử.
Kiểm thử hàm/chức năng (Kiểm thử hộp đen)
Phân tích cấu trúc (Khảo sát thiết kế và mã nguồn hay là kiểm thử hộp trắng tĩnh)
3.1.2 Sơ đồ chức năng của phần mềm
Chức năng của phần mềm gồm 6 chức năng chính như hình:
Phần mềm hỗ trợ dạy và học Pascal là một trang web bao gồm sáu chức năng cơ bản như sau:
Quản lý học liệu: Phần mềm có khả năng thêm mới, cập nhật, xóa những tài liệu, video, chỉ dẫn về Pascal
Thêm yêu cầu: Thêm những yêu cầu về bài tập hoặc những chỉ dẫn mới
Người quản trị và giáo viên có thể thêm mã Pascal vào trình biên dịch tích hợp trực tuyến trên trang web, giúp hướng dẫn học sinh cách viết chương trình hiệu quả.
Tạo mức điểm thưởng: Với mỗi bài tập có thể tạo mức điểm thưởng khác nhau
Quản lý tiến trình học:
Quản lý mã Pascal: Quản lý mã Pascal người học nhập
Hệ thống biên dịch mã Pascal do người học viết sẽ kiểm tra và xử lý mã nguồn Nếu biên dịch thành công, kết quả sẽ được hiển thị trên giao diện trang web Ngược lại, nếu chương trình có lỗi, hệ thống sẽ thông báo để người học biết cần sửa chữa.
Kiểm thử mã: Mã Pascal được phân tích để xác định có đúng với yêu cầu của hệ thống hay không?
Đánh giá: Dựa vào kết quả phân tích mã Pascal hệ thống sẽ đánh giá kỹ năng của người học
Quản lý cấp độ kỹ năng:
Thêm mới: Thêm mới các cấp độ đánh giá từ ngây thơ đến chuyên gia và cao hơn nữa
Sửa: Sửa tên các cấp độ cho phù hợp
xóa: Xóa các cấp độ không phù hợp
Bảng xếp hạng người học:
Xem xếp hạng về điểm: người học đạt mức điểm và kỹ năng cao nhất
Xem xếp hạng về kỹ năng
3.1.3 Thiết kế Cơ sở dữ liệu
Cơ sở dữ liệu của bài toán bao gồm 5 bảng nhằm lưu trữ thông tin về người học, bài tập Pascal, cấp độ kỹ năng của người học và tài liệu bài giảng liên quan đến Pascal.
Thông tin của người học gồm trường Tên tài khoản, mật khẩu, tên đầy đủ, điểm, trạng thái kích hoạt
Hình 3.2 CSDL lưu thông tin người học
Bài tập Pascal bao gồm mã bài tập, tên bài tập, câu hỏi, câu trả lời, mã nguồn gợi ý và cấp độ bài tập, cung cấp nhiều dạng bài thử nghiệm Người quản trị có thể dễ dàng thay đổi hoặc thêm bớt bài tập để phù hợp với tiến trình học của người học.
Hình 3.3 Cơ sở dữ liệu lưu bài tập của phần mềm
Cấp độ kỹ năng: gồm các trường mã kỹ năng, tên kỹ năng, mức điểm xác định kỹ năng, mô tả thông tin
Hình 3.4 Cơ sở dữ liệu lưu cấp độ kỹ năng của người học
Tài liệu Pascal: gồm trường mã tài liệu, tên tài liệu, mã nhúng tài liệu
Hình 3.5 Cơ sở dữ liệu lưu tài liệu học Pascal
Bài giảng Pascal: Gồm trường mã bài giảng, tên bài giảng, mã nhúng của bài giảng
Hình 3.6 Cơ sở dữ liệu lưu bài giảng về Pascal
3.1.4 Thiết kế Kiểm thử mã Pascal
Việc kiểm tra và phát hiện lỗi mã Pascal của người học được tôi tiến hành bằng hai phương pháp kiểm thử:
Kiểm thử hàm/chức năng (Kiểm thử hộp đen)
Phân tích cấu trúc (Khảo sát thiết kế và mã nguồn hay là kiểm thử hộp trắng tĩnh) a, Kiểm thử hàm chức năng
Kiểm thử hàm dựa trên quan niệm rằng chương trình là một hàm ánh xạ giá trị từ miền dữ liệu đầu vào sang miền dữ liệu đầu ra Khái niệm này thường được áp dụng trong kỹ thuật, nơi các hệ thống được xem như hộp đen Thuật ngữ kiểm thử hộp đen xuất phát từ việc không cần biết nội dung bên trong hộp đen, mà chỉ quan tâm đến các dữ liệu đầu vào và đầu ra Trong thực tế, việc thao tác với kiến thức về hộp đen là rất quan trọng, đặc biệt trong khái niệm định hướng đối tượng, nơi các đối tượng tương tác qua các phương thức có thể quan sát từ bên ngoài.
Hình 3.7 Một hộp đen kỹ thuật
Kiểm thử hàm (functional testing) là quá trình kiểm tra phần mềm dựa trên tài liệu mô tả chức năng, hay còn gọi là đặc tả chức năng Đặc tả chức năng cung cấp yêu cầu và hành vi mong muốn của chương trình, là cơ sở để thiết kế các ca kiểm thử Thiết kế kiểm thử, do người thiết kế kiểm thử thực hiện, là hoạt động chính trong kiểm thử hàm Quan trọng là kiểm thử hàm chỉ dựa vào đặc tả mà không phân tích mã nguồn Nó còn được gọi là kiểm thử dựa trên đặc tả, kiểm thử hộp đen, hoặc kiểm thử chức năng.
Phương pháp kiểm thử hộp đen được tôi áp dụng trong việc kiểm tra mã pascal của học sinh ở dạng bài tập thử nghiệm 1, 3, 4, 5
Dạng bài tập thử nghiệm 1: Đưa ra màn hình dòng thông báo bất kỳ
Người học cần nắm vững cách sử dụng câu lệnh write/writeln để xuất chuỗi ra màn hình Thay vì kiểm tra mã nguồn, tôi sẽ lấy dữ liệu output của chương trình và so sánh với chuỗi đáp án lưu trong cơ sở dữ liệu Học viên có thể tự do viết mã Pascal, miễn là đảm bảo output đúng với yêu cầu của bài tập thử nghiệm.
Với dạng bài tập thử nghiệm số 3, 4, 5: Hoàn thiện câu lệnh để nhận được đầu ra như kỳ vọng
Tôi sẽ thực hiện một loạt các quy trình như sau
Khi chương trình của người học được hệ thống biên dịch xác nhận đúng, tôi sẽ lưu mã chương trình đó thành tập tin với tên định dạng [username]_exer_[chỉ số bài tập].Pas.
Hình 3.8 Mã nguồn của người học
Bước 2: Do Pascal không hỗ trợ thư viện kiểm thử đơn vị, tôi sẽ kiểm tra mã nguồn của người học bằng cách tạo một tập tin có tên [username]_exer_[chỉ số bài tập]test.Pas Tập tin test này sẽ nhận đầu vào là một dãy số ngẫu nhiên để tính toán đầu ra của chương trình.
Bước 3: Tôi so sánh đầu ra của chương trình với đầu ra kỳ vọng; nếu tất cả các trường hợp đều khớp, tôi xác nhận rằng chương trình đạt yêu cầu.
Hình 3.9 So sánh đầu ra mã pascal người học viết với kỳ vọng của chương trình b, Phân tích cấu trúc
Phân tích cấu trúc, hay còn gọi là kiểm thử hộp trắng tĩnh, là quá trình khảo sát thiết kế và mã nguồn của phần mềm mà không cần thực thi chương trình Kiểm thử này sử dụng mã nguồn để phát hiện lỗi thông qua một quy trình cẩn thận và có phương pháp, nhằm đảm bảo chất lượng phần mềm trước khi đưa vào sử dụng.
Phương pháp phân tích cấu trúc được áp dụng để kiểm tra mã Pascal của học sinh thông qua bài tập thử nghiệm 2 Bài tập yêu cầu học sinh nhập chuỗi và hiển thị chuỗi vừa nhập Tôi cần đảm bảo rằng học sinh nắm vững cách sử dụng chính xác các câu lệnh trong Pascal.
Sử dụng câu lệnh read/readln để nhập từ bàn phím một chuỗi gán vào biến đã khai báo,
Xây dựng phần mềm
Chức năng chính của phần mềm là quản lý tiến trình học tập, được tôi xây dựng theo trình tự cụ thể như sau:
3.2.1 Xây dựng chức năng trình soạn thảo mã Pascal
Trình soạn thảo Pascal được lấy từ thư viện codemirror.js Định dạng văn bản trong vùng TextArea có id là “code” theo định dạng của mã Pascal
3.2.2 Xây dựng chức năng lưu và đọc mã Pascal
Khi người học hoàn thành mã Pascal và nhấn nút biên dịch, hệ thống sẽ tự động lấy bài làm từ trình soạn thảo Pascal.
Lấy chỉ số bài tập lưu thành file có tên: Tên đăng nhập_exer_Chỉ số bài tập
Hệ thống đọc mã Pascal của người học kiểm tra xem bài tập đã hoàn thành hay chưa Nếu bài tập được hoàn thành, hệ thống sẽ truy cập vào file mã Pascal của người học để hiển thị nội dung lên vùng soạn thảo.
3.2.3 Xây dựng chức năng biên dịch mã Pascal
Lệnh thực thi biên dịch mã Pascal được thực hiện bằng lệnh :
Kết quả biên dịch sẽ được hiển thị trên trang web bởi lệnh sau:
3.2.4 Xây dựng chức năng xem kết quả chạy chương trình
Sau khi mã Pascal được biên dịch thành công, người học có thể xem kết quả của đoạn mã đã viết Chức năng này được thực hiện thông qua câu lệnh sau.
3.2.5 Xây dựng chức năng tính điểm và mức kỹ năng
Quy trình hoạt động của hệ thống bao gồm việc người dùng đăng nhập và hoàn thành mã Pascal theo yêu cầu Khi chức năng biên dịch được kích hoạt, hệ thống sẽ lưu mã Pascal thành file và sử dụng file này để thực hiện biên dịch Cuối cùng, hệ thống sẽ phân tích và trả về kết quả biên dịch.
Hệ thống sẽ phân tích mã Pascal và kiểm thử chương trình Nếu chương trình đạt yêu cầu, người dùng sẽ được ghi điểm và mở khóa bài tiếp theo Ngược lại, nếu kết quả biên dịch sai, người dùng cần nhập lại mã Pascal.
Chức năng tính điểm và đánh giá kỹ năng của người học được mô tả theo sơ đồ như trong hình sau:
Hình 3.11 Hệ thống đánh giá chương trình của người học
Quy trình phân tích mã Pascal phụ thuộc vào từng dạng bài cụ thể, với mỗi dạng sẽ áp dụng phương pháp phân tích khác nhau Hệ thống hiện có ba dạng thử nghiệm để hoàn thiện quá trình này.
Dạng bài 1: Đưa ra màn hình dòng thông báo bất kỳ
Quy trình kiểm thử: Sử dụng phương pháp Kiểm thử hàm chức năng (Kiểm thử hộp đen)
Bước 1: Biên dịch mã Pascal, thành công
Lấy mã Pascal do học viên viết:
Hiển thị kết quả biên dịch
Bước 2: Chạy kết quả chương trình, lấy dữ liệu output đầu ra
Chạy chương trình của học viên nếu biên dịch thành công và lấy kết quả của chương trình (output)
Bước 3: So sánh output với chuỗi đáp án của bài toán trong cơ sở dữ liệu
Hàm result() có chức năng so sánh đầu ra của chương trình với đáp án của bài toán Đối với bài toán dạng 1, việc so sánh được thực hiện thông qua câu lệnh cụ thể.
Nếu học viên đạt yêu cầu đầu ra chương trình, họ sẽ nhận thông báo và được cộng điểm hiển thị bên cạnh tài khoản trên thanh công cụ của trang web, đồng thời được phép thực hành bài tiếp theo.
Dạng bài 2: Nhập một chuỗi bất kỳ, đưa ra màn hình chuỗi vừa nhập
Quy trình kiểm thử của tôi sử dụng phương pháp phân tích cấu trúc, hay còn gọi là kiểm thử hộp trắng tĩnh Trong đó, tôi áp dụng biểu thức chính quy để kiểm tra mã nguồn, đảm bảo người học viết đúng theo yêu cầu Tôi thực hiện quy trình này theo một trình tự rõ ràng.
Bước 1: Tìm dòng lệnh khai báo biến kiểu string
Biểu thức chính quy để phân tích dòng lệnh khai báo biến kiểu String trong mã của người học:
Biểu thức này tìm kiếm một chuỗi không phân biệt hoa thường, bắt đầu bằng “var”, theo sau là một hoặc nhiều khoảng trắng, tiếp đó là tên biến gồm các ký tự và chữ số với độ dài tối thiểu là 1 Sau tên biến có thể có khoảng trắng hoặc không, tiếp theo là dấu “:”, có hoặc không có khoảng trắng, sau đó là kiểu “string”, cuối cùng là có hoặc không có khoảng trắng trước khi kết thúc bằng dấu “;”.
Bước 2: Lấy tên biến được khai báo
Tên biến kiểu chuỗi mà người học khai báo có thể được trích xuất thông qua biểu thức quy tắc và các hàm xử lý chuỗi, và kết quả này sẽ được lưu trữ trong biến $var_name.
Bước 3: Tìm dòng lệnh Readln với biến được khai báo
Hàm preg_match giúp tìm dòng mã nhập biến với tên được tìm thấy ở bước 2
Bước 4: Tìm lệnh Writeln với tên biến được khai báo
Hàm preg_match giúp tìm dòng mã hiển thị ra dòng “Hello” với giá trị của biến được nhập ở bước 3
Nếu học viên hoàn thành thành công các kiểm tra ở Bước 2, 3 và 4, chương trình sẽ thông báo kết quả tích cực, cộng điểm cho bài học và mở khóa cho việc thực hành bài tiếp theo.
Dạng bài 3: Toán tử số học sử dụng một biến, câu lệnh điều kiện, vòng lặp
Để hoàn thành bài toán về toán tử trong Pascal, học viên cần nắm vững kiến thức cơ bản về Hàm (Function) Việc xác định toán tử phù hợp sẽ dựa vào các thông báo trong khu vực kiểm thử.
Khi học viên tiếp cận bài toán, chương trình cung cấp một đoạn mã mẫu với cấu trúc đầy đủ của một hàm trong Pascal Học viên chỉ cần hoàn thiện mã bên trong hàm hoặc có thể thay đổi tên hàm nếu muốn.
Quy trình kiểm thử: Tôi sử dụng phương pháp kiểm thử hàm/chức năng (Kiểm thử hộp đen)
Bước 1: Lấy mã pascal của người dùng
Bước 2: Chương trình tự động hoàn chỉnh mã Pascal của học viên về dạng đầy đủ thành phần cấu trúc chương trình của một chương trình Pascal
Cách xử lý mã của người học được thực hiện như sau:
Bước 3 : Chương trình tự động tạo ra mã lệnh mẫu, dùng để thực thi các ca kiểm thử (test-case)
Mã lệnh mẫu để tạo chương trình kiểm thử chỉ là khung, không thể biên dịch trực tiếp Đối với mỗi ca kiểm thử, biến đầu vào (input) sẽ thay thế cho #NUM, tạo thành chương trình Pascal hoàn chỉnh Mã lệnh này được lưu trong tệp tin riêng để sử dụng khi thực hiện kiểm thử.
Hàm xử lý mã lệnh người học viết được thực hiện như sau:
Bước 4: Lưu tệp tin chương trình chứa mã do học viên viết và tệp tin chứa mã lệnh mẫu có được ở Bước 3
$check = write_src_file($filename, $code); write_src_file($testfilename, $code2test);
Hình 3.12 Thư mục lưu bài tập của học viên
Một số chức năng chính của phần mềm
Trước tiên tôi đưa ra giao diện chính của hệ thống với các chức năng chính được phác thảo một cách đơn giản như sau:
Hình 3.13 Chức năng Trang chủ của phần mềm
3.3.2 Chức năng quản lý học liệu
Trước khi thực hành với ngôn ngữ lập trình Pascal, người học cần nắm vững cách sử dụng ngôn ngữ này Phần mềm cung cấp chức năng tra cứu thông tin liên quan đến Pascal, đồng thời cho phép người quản trị dễ dàng bổ sung và sửa đổi tài liệu.
Hình 3.14 Chức năng quản lý tài liệu
Giáo viên có thể biên tập bài giảng dạng phim hoặc dạng văn bản để gửi tới học sinh:
Hình 3.15 Chức năng quản lý bài giảng dạng phim
3.3.3 Chức năng bảng xếp hạng
Bảng xếp hạng sẽ cập nhật liên tục danh sách khoảng 10 thành viên đạt mức điểm và cấp độ kỹ năng cao nhất hệ thống
Hình 3.16 Chức năng bảng xếp hạng
Để sử dụng chức năng thực hành Pascal của phần mềm, người học cần đăng nhập vào hệ thống Nếu chưa có tài khoản, người học cần tiến hành đăng ký tài khoản mới.
Hình 3.17 Chức năng đăng ký tài khoản mới
Sau khi đăng ký thành công, người học cần đăng nhập vào hệ thống để sử dụng chức năng thực hành của phần mềm
Hình 3.18 Chức năng đăng nhập
Hệ thống bài tập cho người học sẽ được cập nhật từ cơ sở dữ liệu do giáo viên xây dựng Giáo viên cần thường xuyên cập nhật các nội dung của bài tập, bao gồm chủ đề, yêu cầu cụ thể và đoạn code mẫu (nếu có).
Hình 3.19 Cơ sở dữ liệu lưu bài tập thử nghiệm
Người học sau khi đọc yêu cầu và gợi ý sẽ soạn thảo mã Pascal
Hình 3.20 Chức năng soạn thảo mã Pascal
Người học sau khi hoàn thiện mã của thể sử dụng chức năng biên dịch mã Pascal:
Hình 3.21 Kết quả biên dịch
Sau khi mã Pascal của người học được hoàn thiện và biên dịch thành công, hệ thống sẽ tiến hành kiểm thử chương trình để đánh giá điểm số và kỹ năng của người học.
Hình 3.22 Kiểm thử so khớp đầu ra thực tế và kỳ vọng
Mã Pascal của người học sẽ được hệ thống kiểm thử và đạt yêu cầu hệ thống sẽ mở khóa cho phép người học được sang bài tiếp theo.
Kết luận chương 3
Chương này trình bày yêu cầu bài toán, phân tích và thiết kế hệ thống, cùng với việc xây dựng các chức năng cần thiết Đặc biệt, tính năng kiểm thử mã Pascal được phân tích và thiết kế chi tiết, giúp người nghiên cứu và phát triển dễ dàng tra cứu Chương tiếp theo sẽ mô tả cách triển khai, thử nghiệm và đánh giá hệ thống thực tế, nhằm đưa ra các đánh giá khách quan dựa trên kinh nghiệm của người sử dụng, từ đó cung cấp phản hồi cho các nhà phát triển để nâng cấp và điều chỉnh các tính năng phần mềm cho phù hợp hơn.
CÀI ĐẶT THỬ NGHIỆM VÀ KẾT QUẢ ĐẠT ĐƯỢC
Hướng dẫn cài đặt phần mềm
Phần mềm được triển khai trên máy chủ sử dụng hệ điều hành Ubuntu Server và hỗ trợ các công nghệ như Free Pascal, Apache, PHP, MySQL Người dùng có thể truy cập phần mềm từ nhiều máy khách qua Internet hoặc mạng LAN Để phần mềm hỗ trợ dạy và học Pascal hiệu quả, trường học cần trang bị phòng máy tính với ít nhất 20 bộ máy tính, đủ để phục vụ cho một nhóm học sinh trong lớp học.
4.1.2 Cài đặt trình biên dịch trực tuyến
Trình biên dịch, hay phần mềm biên dịch, là một chương trình máy tính có chức năng chuyển đổi chuỗi lệnh viết bằng ngôn ngữ lập trình (ngôn ngữ nguồn) thành chương trình tương đương ở ngôn ngữ máy tính mới (ngôn ngữ đích) Ngôn ngữ đích thường là ngôn ngữ ở cấp thấp hơn, như ngôn ngữ máy.
Hình 4.1 Một trình biên dịch
Hình 4.2 Công việc của một trình biên dịch
Trình biên dịch trực tuyến là công cụ được tích hợp trên website, cho phép người dùng truy cập dễ dàng mọi lúc, mọi nơi qua internet Nhiều trình biên dịch có thể được tích hợp trên cùng một trang web, mang lại sự tiện lợi cho người sử dụng.
Cài đặt trình biên dịch Free Pascal
Free Pascal (FP) là một môi trường lập trình mạnh mẽ, hoàn toàn tương thích với Turbo Pascal (TP) Đặc biệt, FP đã được chọn làm môi trường chuẩn thay thế TP trong các kỳ thi IOI.
Free Pascal là một trình biên dịch Pascal chuyên nghiệp Hệ điều hành hỗ trợ bao gồm Linux, hệ điều hành DOS, Win32, Win64
To install the Free Pascal compiler on an Ubuntu server, use the command `sudo apt-get install fp-compiler` This process integrates the Free Pascal compiler with the server system, enabling efficient programming and development.
Tìm thư mục chứa lệnh compile Pascal để cấu hình apache php có thể compile được Pascal: whereis fpc
Tìm thư mục chứa lệnh compile pascal: which fpc
Tìm lệnh compile của free pascal gốc
Gán quyền cho phép apache có thể biên dịch Pascal: sudo chgrp www-data /usr/bin/fpc-2.6.2
Kết quả thực nghiệm
Sau khi hoàn tất cài đặt và phát triển, phần mềm hỗ trợ dạy và học Pascal đã được triển khai thành công trên mạng LAN nội bộ của phòng máy tính trường THPT Cầu Giấy.
4.2.1 Cơ sở dữ liệu của phần mềm Để hỗ trợ việc thực hành của học sinh, tôi đã xây dựng cơ sở dữ liệu bài tập thực nghiệm như sau:
Hình 4.3 Cơ sở dữ liệu bài tập
Nội dung bài tập sau khi được tôi xây dựng sẽ được cập nhật và hiển thị trên trang web
Chức năng quản lý học liệu giúp người quản trị dễ dàng bổ sung tài liệu với nhiều định dạng khác nhau Giáo viên có thể chuẩn bị nội dung tài liệu cần cung cấp cho học sinh và đưa chúng lên các kho tài nguyên hỗ trợ mã nhúng như Slideshare, YouTube, sau đó chèn mã nhúng vào phần mềm.
Hình 4.4 Chức năng thêm tài liệu
Khi sử dụng chức năng thực hành, người học có thể tự do viết chương trình ở phần ôn tập mà không bị tính điểm Tuy nhiên, hệ thống yêu cầu người học phải hoàn thành đúng mã Pascal ở bài số 1 trước khi được phép tiếp tục với bài số 2 Sau khi hoàn thành bài số 1, hệ thống sẽ tiến hành chấm điểm và đánh giá kỹ năng của người học.
Hình 4 5 Thực hành chương trình tự do
Yêu cầu: Đưa ra màn hình dòng thông báo bất kỳ
Người học đã hoàn thành đúng yêu cầu của bài tập thử nghiệm số 1, và hệ thống đã gán cho họ mức điểm ban đầu.
0 Ở mức điểm 0, kỹ năng của người học được đánh giá là “Non nớt” Sau khi người học nhập mã Pascal và biên dịch thành công, hệ thống sẽ tính điểm, đánh giá kỹ năng của người học và mở khóa cho phép người học được sang bài tiếp theo:
Yêu cầu: Nhập một chuỗi bất kỳ, đưa ra màn hình chuỗi vừa nhập
Khi người học nhập mã Pascal và biên dịch thành công, hệ thống xác nhận không còn lỗi cú pháp, cho phép họ xem kết quả hiển thị của chương trình Quá trình này được thực hiện từng bước một.
Hình 4.7 Bài thử nghiệm số 2 đúng cú pháp nhưng sai với kỳ vọng
Bước 1: Chương trình tìm dòng lệnh khai báo biến kiểu string, nếu có tiếp tục sang bước 2: Var name: string; a: string;
Bước 2: Lấy tên biến được khai báo
Tên biến được lấy: name, a Bước 3: Tìm dòng lệnh Readln với biến được khai báo
Chương trình thử nghiệm có lệnh Readln (name) Bước 4: Tìm lệnh Writeln với tên biến được khai báo
Chương trình thử nghiệm có lệnh: writeln(„Hello ‟, a);
Mã Pascal của người học có thể đúng về cú pháp nhưng sai về ngữ nghĩa, dẫn đến việc hệ thống biên dịch thành công mà không tính điểm Điều này yêu cầu người học kiểm tra lại chương trình, cụ thể là cần bổ sung câu lệnh Readln(a) hoặc thêm câu lệnh writeln(„Hello‟, a).
Khi người học sửa mã Pascal: writeln(„Hello ‟, a), hệ thống sẽ thông báo rằng chương trình đã được viết đúng yêu cầu và tiến hành đánh giá kỹ năng của người học Sau khi hoàn thành cấp độ này, người học sẽ được xác nhận có kiến thức về lập trình Pascal, và hệ thống sẽ mở khóa để cho phép họ tiếp tục sang bài học tiếp theo.
Hình 4.8 Người học hoàn thành đúng yêu cầu bài tập thử nghiệm số 2 Bài thử nghiệm số 3: Sử dụng phương pháp kiểm thử đơn vị
Yêu cầu: Hoàn thiện mã Pascal sử dụng toán tử số học
Người sử dụng sẽ biên dịch và kiểm thử chương trình, hệ thống cung cấp gợi ý về đầu vào, đầu ra thực tế và kỳ vọng Dựa trên những gợi ý này, người học cần phân tích chương trình, suy đoán và đưa ra giải pháp bằng mã Pascal để đạt được kết quả như mong đợi từ hệ thống.
Hình 4.9 Gợi ý của bài tập thử nghiệm 3
Chương trình cung cấp gợi ý để người học hoàn thiện đoạn mã còn thiếu, nhằm tạo ra đầu ra khớp với kỳ vọng từ dãy đầu vào ngẫu nhiên được sinh ra bởi hệ thống.
Hình 4.10 Bài thử nghiệm toán tử số học có đầu ra đúng với kỳ vọng
Hoàn thành bài tập ở cấp độ này cho phép người học được đánh giá và cấp điểm, xác nhận năng lực của họ Sau khi đạt yêu cầu, hệ thống sẽ mở khóa để người học có thể thực hành bài tập tiếp theo.
Bài thử nghiệm số 4: Người học hoàn thành bài tập số 4, hệ thống đánh giá kỹ năng người học đạt mức thành thạo
Hình 4.11 Người học hoàn thành bài thử nghiệm số 4
Bài thử nghiệm số 5 về câu điều kiện 1:
Yêu cầu: Hoàn thiện mã Pascal để kiểm tra tham số đầu vào là số chẵn hay lẻ? Trường hợp thử nghiệm chưa khớp với kỳ vọng
Người học hoàn thành bài thử nghiệm số 5 sẽ được hệ thống tính điểm và đánh giá kỹ năng ở mức thành thạo Sau đó, hệ thống sẽ mở khóa để người học có thể tiếp tục làm bài tập tiếp theo.
Hình 4.13 Bài thử nghiệm cầu điều kiện có đầu ra thực tế khớp với kỳ vọng
Bài thử nghiệm số 6 về vòng lặp for Yêu cầu: Hãy hoàn thiện mã Pascal sử dụng vòng lặp for để tính tổng từ 0 đến tham số x
Trường hợp thử nghiệm chưa khớp với kỳ vọng
Hình 4.14 Bài thử nghiệm về vòng lặp có đầu ra chưa khớp với kỳ vọng.
Thực nghiệm sư phạm và đánh giá kết quả
Hình 4.15 Bài thử nghiệm về vòng lặp có đầu ra khớp với kỳ vọng
Với 6 dạng bài tập thử nghiệm tôi lựa chọn đưa vào phần mềm là những nội dung học sinh thường gặp trong lập trình ở trường THPT như thao tác nhập (read/readln), xuất (write/writeln), toán tử số học, câu điều kiện, vòng lặp for, phần mềm cho kết quả xử lý tốt không có tình trạng đánh giá sai ngữ cảnh chương trình của người học Để phần mềm có ứng dụng tốt trong thực tế giáo viên cần nghiên cứu và tìm hiểu những dạng bài tập có ứng dụng thực tế và phù hợp với học sinh THPT
4.3 Thực nghiệm sƣ phạm và đánh giá kết quả
Thực nghiệm sư phạm nhằm kiểm tra hiệu quả của phần mềm hỗ trợ dạy và học Pascal trong việc nâng cao hứng thú học tập của học sinh Kết quả sẽ giúp điều chỉnh và bổ sung nội dung, từ đó hoàn thiện đề tài và nâng cao chất lượng dạy học môn lập trình, góp phần vào quá trình đổi mới phương pháp dạy học tại trường phổ thông.
Quá trình thực nghiệm sư phạm được chúng tiến hành tại trường THPT Cầu Giấy – Hà Nội Lớp thực nghiệm chúng tôi chọn là lớp: 11A5(42 học sinh), 11D1(41 học sinh)
Chúng tôi tiến hành thực nghiệm sư phạm trong các tiết học lập trình Pascal, sử dụng phần mềm triển khai trên mạng LAN tại phòng máy của trường Các bước thực nghiệm được thực hiện theo trình tự rõ ràng.
Bước 1: Chúng tôi hướng dẫn các em đăng ký tài khoản và truy cập vào phần mềm, sau đó hướng dẫn các em đọc tài liệu, xem bài giảng
Bước 2: Chúng tôi sắp xếp 2 em học sinh sử dụng một máy tính để thực hành theo cặp và cùng nhau thảo luận về bài tập
Trong mỗi tiết thực nghiệm, chúng tôi chú trọng quan sát các hoạt động và sự tích cực của học sinh nhằm đánh giá khách quan hiệu quả của phần mềm.
Bước 4: Tổng hợp và đánh giá kết quả
4.3.2 Đánh giá kết quả thực nghiệm sư phạm
Quan sát giờ học của các lớp thực nghiệm được thực hiện theo tiến trình dạy học đã xây dựng, chúng tôi có những nhận xét sau:
Giáo viên có thể sử dụng phần mềm để hỗ trợ dạy học trong các tiết lập trình Pascal, giúp học sinh tự học và nghiên cứu hiệu quả Phần mềm này hỗ trợ giáo viên xây dựng bài giảng, nội dung ôn tập và hệ thống hóa kiến thức, đồng thời cho phép cập nhật nhiều dạng bài tập để phục vụ nhu cầu học tập ở lớp và tại nhà.
Phần mềm học Pascal giúp học sinh hứng thú và tập trung hơn vào việc hoàn thiện mã lập trình Để đạt được điều này, các em cần nắm vững câu lệnh và thuật toán do phần mềm cung cấp Qua đó, học sinh sẽ tự nhiên tìm hiểu và suy nghĩ để đưa ra những giải pháp phù hợp và hiệu quả.
Phần mềm giáo dục có khả năng thay thế phương pháp kiểm tra truyền thống bằng cách cung cấp các tiêu chí tính điểm và đánh giá kỹ năng của học sinh Thay vì kiểm tra từng học sinh, giáo viên có thể dễ dàng truy cập vào phần mềm để xác định học sinh nào đã hoàn thành bài tập và ai đang gặp khó khăn với các dạng bài cụ thể Từ đó, giáo viên có thể kịp thời hướng dẫn và đưa ra những giải pháp phù hợp để hỗ trợ học sinh.
Sau khi kết thúc đợt thực nghiệm sư phạm, chúng tôi đã tiến hành khảo sát để thu thập ý kiến đóng góp của học sinh về kiến thức và kỹ năng mà các em đạt được khi sử dụng phần mềm Kết quả khảo sát cho thấy chúng tôi đã nhận được 83 câu trả lời, được tổng hợp và phân tích để đánh giá hiệu quả của chương trình.
Kết quả khảo sát về mức độ hài lòng của học sinh với các chức năng mà phần mềm cung cấp
Hình 4.16 Kết quả khảo sát về mức độ hài lòng của học sinh
Kết quả khảo sát về nội dung kiến thức mà phần mềm cung cấp
Hình 4.17 Kết quả khảo sát về nội dung kiến thức phần mềm cung cấp
Kết quả khảo sát về khả năng tư duy lập trình phần mềm cung cấp cho học sinh
Hình 4.18 Khảo sát về khả năng tư duy lập trình
Kết quả khảo sát về những kỹ năng mà học sinh có được trong quá trình sử dụng phần mềm
Hình 4.19 Kết quả khảo sát kỹ năng phần mềm cung cấp
Kết quả khảo sát về sự tác động của phần mềm đến lựa chọn học lập trình của học sinh trong tương lai
Hình 4.20 Kết quả khảo sát về dự định học lập trình của học sinh.
Kết luận chương 4
Chương này hướng dẫn chi tiết cách cài đặt và triển khai các chức năng của phần mềm Sau đó, chúng tôi tiến hành thực nghiệm sư phạm để đánh giá hiệu quả của hệ thống trong thực tế Người dùng sẽ thực hiện khảo sát dựa trên kết quả từ các dịch vụ mà phần mềm cung cấp, nhằm đưa ra góp ý cho nhà phát triển, từ đó cải tiến và điều chỉnh các tính năng của hệ thống để đáp ứng tốt hơn nhu cầu của người dùng.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trong luận văn này, tôi đã tiến hành nghiên cứu mô hình Code Hunt và ứng dụng yếu tố trò chơi để phát triển phần mềm hỗ trợ dạy và học Pascal cho học sinh THPT Các kết quả chính đạt được bao gồm việc cải thiện hiệu quả học tập và khuyến khích sự tham gia của học sinh trong quá trình học.
1 Luận văn góp phần làm sáng tỏ thêm mặt tích cực của việc ứng dụng chiến thuật trò chơi hóa trong dạy học lập trình Pascal, đồng thời khai thác thêm những khả năng ứng dụng của Công nghệ thông tin trong dạy học, mà cụ thể ở đây là khai thác những tính năng của web 2.0 trong dạy học Pascal
2 Luận văn làm rõ nhưng yêu cầu, nguyên tắc khi xây dựng nội dung dạy học cần thiết phải có thiết kế nội dung động viên người học, thiết kế học tập trải nghiệm và những tiêu chí đánh giá kỹ năng của người học
3 Luận văn đưa ra giải pháp và xây dựng chức năng kiểm thử mã Pascal của người học Vì Pascal không còn được hỗ trợ và phát triển từ năm 2000 do đó hầu như không có nghiên cứu về kiểm thử của pascal, do đó việc kiểm thử chương trình người học được tôi sử dụng chủ yếu bằng phương pháp phân tích mã nguồn trong đó có áp dụng hai phương pháp kiểm thử hộp đen và kiểm thử hộp trắng
4 Kết quả nghiên cứu được tôi thực nghiệm ở trường THPT Cầu Giấy, Hà Nội Các tài liệu, bài giảng và bài tập thực hành được tổ chức thực nghiệm Dựa trên những phản hồi và kết quả thu được, tôi khẳng định phần mềm có tác dụng hỗ trợ tốt cho các hoạt động dạy của giáo viên, cũng như là học tập của học sinh với môn học Pascal
5 Phần mềm là một trang web, có nhiều thế mạnh nhưng không thể thay thế cho các thiết bị dạy học truyền thống, và càng không thể thay thế hẳn vai trò người giáo viên Để phần mềm đạt hiệu quả thật sự rất cần tới sự điều hành của giáo viên
Bài toán trong dạy và học ngôn ngữ lập trình Pascal đang đối mặt với những thách thức mới và khó khăn Mặc dù tác giả đã nỗ lực xây dựng một hệ thống tối ưu cho thực tiễn, nhưng vẫn còn tồn tại những hạn chế cần khắc phục Những định hướng được đưa ra hy vọng sẽ cải thiện khả năng tương tác giữa người dùng và hệ thống, hướng tới sự hoàn thiện ngày càng cao hơn.
Xây dựng thêm kho bài giảng, thư viện phong phú, trực quan
Bổ sung những chỉ dẫn cụ thể cho từng dạng bài tập
Hoàn thiện thêm các chức năng của hệ thống như: Cho phép người dùng đăng nhập, chia sẻ và kết nối với mạng xã hội
Nghiên cứu và bổ sung nhiều dạng bài tập hơn nữa vào kho CSDL của hệ thống
Việt hóa thông báo lỗi trả về của trình biên dịch Pascal
Thông qua nghiên cứu đề tài, chúng tôi đã đạt được những kết quả đáng kể về lý luận và sản phẩm thực tiễn Chúng tôi hy vọng đề tài sẽ thu hút sự quan tâm và đóng góp từ các nhà nghiên cứu, giáo viên, cũng như bạn đọc, nhằm hoàn thiện hơn nữa nội dung nghiên cứu.
Mã nguồn của phần mềm các bạn có thể theo dõi tại địa chỉ: https://github.com/minhhien/pascal4fun.git
Xin chân thành cảm ơn!
TÀI LIỆU THAM KHẢO Tiếng Việt
[1] Quách Tuấn Ngọc, 2001 Ngôn ngữ lập trình Pascal, Nhà xuất bản Thống kê, Hà Nội
[2] Nguyễn Trọng Nghĩa, Báo cáo tham luận: Tạo sự yêu thích và kỹ năng lập trình cho học sinh, THPT chuyên Thái Nguyên
[3] Phạm Ngọc Hùng, Trương Anh Hoàng, Đặng Văn Hưng (2014), ―Giáo trình kiểm thử phần mềm‖ Khoa CNTT- Đại học Công nghệ, ĐHQG Hà Nội
[4] Tạp chí công nghệ giáo dục (1-4), ĐH FPT, Hà Nội
[5] Nguyễn Tiến Dũng, Lê Ngọc Liên (dịch) ―Lý thuyết trò chơi trong kinh doanh‖
[6] Bùi Thế Tâm (2004), Giáo trình Turbo PASCAL 7.0, Nhà xuất bản Giao thông vận tải, Hà Nội
[7] Đỗ Xuân Lôi (2006), Cấu trúc dữ liệu, Nhà xuất bản Đại học Quốc gia Hà Nội
[8] Nguyễn Xuân My, Hồ Sĩ Đàm, Trần Đỗ Hùng, Lê Sỹ Quang (2002), Các vấn đề chọn lọc trong Tin học tập (1,2), Nhà xuất bản Giáo dục, Hà Nội
[9] Hồ Sĩ Đàm, Hồ Cẩm Hà, Trần Đỗ Hùng, Nguyễn Đức Nghĩa, Nguyễn Thanh Tùng, Ngô Ánh Tuyết (2013), Tin học 11 (dùng cho học sinh), Nhà xuất bản Giáo dục,
Hồ Sĩ Đàm, Hồ Cẩm Hà, Trần Đỗ Hùng, Nguyễn Đức Nghĩa, Nguyễn Thanh Tùng, và Ngô Ánh Tuyết (2013) đã biên soạn cuốn sách "Tin học 11" dành cho giáo viên, được xuất bản bởi Nhà xuất bản Giáo dục tại Hà Nội.
[11] Đào Minh Hồng, Lê Hồng Hiệp (2013), ―Sổ tay Thuật ngữ Quan hệ Quốc tế
Khoa QHQT‖ – Đại học KHXH&NV TPHCM.http://nghiencuuquocte.net/tag/so-tay- thuat-ngu-qhqt/
[12] Nikolai Tillmann, R Nigel Horspool , Daniel Perelman, Tao Xie (2014), Code
Hunt: Searching for Secret Code for Fun, Microsoft Research, http://research.microsoft.com/pubs/210651/CodeHunt%20SBST%202014b.pdf
[13] Lee, J J & Hammer, J (2011) Gamification in Education: What, How, Why Bother? Academic Exchange Quarterly, 15(2)
[14] Jensen, E (1998) Teaching with the brain in mind Alexandria, Va: Association for Supervision and Curriculum Development
[15] Balraj Kumar, ParulKhurana (2012), Gamification in education – learn computer programming with fun, Department of Computer, Lovely Professional
[16] WEF(2015), New Vision for Education – Unlocking the potential of technology
[17] Bloom B S., Englehart M D., Furst E J., Hill W H., and Krathwohl D R
(1956), Taxonomy of Educational Objectives: Handbook I—Cognitive Domain,
[18] Stuart E Dreyfus, Hubert L Dreyfus (1980), A five-stage model of the mental activities involved in directed skill acquisition, California Univ Berkeley Operations
[19] Maria Meyerson (2012), Applications of game theory in education, Sierra
Nevada College http://www3.weforum.org/docs/WEFUSA_NewVisionforEducation_Report2015.pdf
[20] Gee, J P (2008) Learning and games Cambridge, MA: MIT Press
[21] Kolb D A (1981), Learning styles and disciplinary differences In: A Chickering (Ed.), The Modern American College San Francisco: Jossey-Bass
[22] Kolb, D A(1984), Experiential Learning, London: Prentice Hall
[23] Knowles (1990) The Adult Learner: a Neglected Species (4th ed.), Houston: Gulf Publishing
[24] Knowles, (1975), Self-Directed Learning: a Guide for Learners and Teachers
[25] Pohl, M (2000) Learning to Think, Thinking to Learn: Models and Strategies to
Develop a Classroom Culture of Thinking.Cheltenham, Vic.: Hawker Brownlow