Bối cảnh và vấn đề nghiên cứu
Khóa luận tốt nghiệp của tác giả Jörg Debus được thực hiện trong khuôn khổ kỳ thi tốt nghiệp chương trình đào tạo mở rộng dành cho giáo viên môn Tin học khóa VII (hợp tác với Đại học Từ xa Hagen - Fernuniversität Hagen) và nộp cho Cục Đào tạo Giáo viên - Phân hiệu Gießen (Amt für Lehrerausbildung - Außenstelle Gießen). Đề tài xuất phát từ bối cảnh thực tiễn đầu những năm 2000, khi Internet phát triển mạnh mẽ và thâm nhập sâu rộng vào đời sống xã hội. Tính đến tháng 01/2003, toàn cầu đã có hơn 2 tỷ trang web và thị trường việc làm có sự chuyển dịch lớn sang lĩnh vực công nghệ thông tin và Internet. Môi trường này đồng thời tiềm ẩn các rủi ro an ninh mạng như virus, sniffer và sự khai thác lỗ hổng từ hacker.
Trong môi trường học đường, học sinh có mức độ hứng thú và động lực cao đối với Internet nhưng phần lớn chỉ sử dụng với vai trò người tiếp nhận thông tin và liên lạc thụ động. Các kỹ năng chủ động như xây dựng hệ thống, phát triển ứng dụng tương tác và phát tán thông tin có cấu trúc chưa được trang bị đầy đủ. Nhằm chuẩn bị năng lực CNTT cho học sinh, nghiên cứu đặt ra các mục tiêu và nhiệm vụ cụ thể:
- Thiết kế một khung ý niệm bài giảng (Unterrichtskonzept) hoàn chỉnh cho khóa học định hướng học kỳ 11/2 môn Tin học tại trường THPT (Gymnasium) với thời lượng 1 học kỳ gồm 3 tiết/tuần (tổng cộng 51 tiết).
- Xây dựng lộ trình sư phạm chuyển tiếp từ kiến thức thiết kế web tĩnh bằng HTML ở học kỳ 11/1 sang tư duy lập trình cấu trúc và tương tác bằng ngôn ngữ JavaScript ở học kỳ 11/2.
- Hình thành các năng lực cốt lõi của môn Tin học theo khung chương trình (Lehrplan Informatik), bao gồm phân tích vấn đề, mô hình hóa hệ thống và phát triển thuật toán giải quyết bài toán trên máy tính.
- Rèn luyện năng lực xã hội và phương pháp làm việc nhóm (Teamfähigkeit) thông qua mô hình học tập theo dự án (Projektarbeit) và phương pháp chuyên gia (Expertenmethode).
Đối tượng nghiên cứu là chương trình giảng dạy lập trình nhập môn và quá trình tiếp thu của học sinh lớp 11. Phạm vi thực nghiệm diễn ra tại khóa học định hướng Tin học lớp 11/2 trong thời lượng 51 tiết học thực tế.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết của nghiên cứu dựa trên chương trình khung môn Tin học bậc THPT (Lehrplan Informatik - Gymnasialer Bildungsgang) của bang Hessen, nhấn mạnh việc rèn luyện tư duy phân tích, khả năng trừu tượng hóa và mô hình hóa hệ thống. Cơ sở sư phạm của đề tài được xây dựng trên hai nguyên lý chính:
- Nguyên lý chương trình xoắn ốc (Spiralcurriculum): Kiến thức không được truyền thụ một lần toàn diện theo kiểu từ điển tham chiếu, mà được lặp lại nhiều lần với mức độ phức tạp tăng dần thông qua các bài toán thực tế (bắt đầu từ form HTML, mở rộng sang xử lý biến số, hàm, cấu trúc điều khiển, thuật toán lặp và quản lý trạng thái).
- Học tập dựa trên vấn đề (Problem-based learning) và Học theo dự án (Project-based learning): Học sinh tiếp cận kiến thức mới thông qua nhu cầu giải quyết một bài toán cụ thể thay vì học cú pháp trừu tượng.
Về mặt công nghệ và ngôn ngữ, tác giả phân tích cơ sở kỹ thuật của JavaScript như một ngôn ngữ kịch bản phía máy khách (client-side script), được thực thi bởi trình thông dịch tích hợp trong trình duyệt web:
| Tiêu chí |
Ngôn ngữ kịch bản Client-side (JavaScript) |
Ngôn ngữ kịch bản Server-side (PHP, Perl, CGI, ASP) |
Ngôn ngữ biên dịch (C++, Java) |
| Môi trường thực thi |
Trình duyệt của người dùng (Browser) |
Máy chủ web (Server) |
Hệ điều hành / Máy ảo độc lập |
| Cơ chế xử lý |
Thông dịch trực tiếp mã nguồn văn bản |
Thông dịch trên máy chủ, trả về HTML |
Biên dịch thành mã máy / bytecode |
| Bảo mật mã nguồn |
Mã nguồn hiển thị công khai trong HTML |
Mã nguồn ẩn trên máy chủ |
Mã nguồn được biên dịch, khó dịch ngược |
| Yêu cầu cài đặt |
Chỉ cần trình soạn thảo văn bản và trình duyệt |
Cần cài đặt máy chủ web và module xử lý |
Cần cài đặt trình biên dịch và IDE phức tạp |
Phương pháp nghiên cứu trong khóa luận là phương pháp thiết kế thực nghiệm sư phạm. Tác giả trực tiếp xây dựng kế hoạch dạy học, biên soạn tài liệu, triển khai giảng dạy thực tế trên lớp học 51 tiết, quan sát quá trình học tập, thu thập sản phẩm lập trình của học sinh và đánh giá hiệu quả thông qua các sản phẩm dự án.
Nội dung chính theo từng chương
0. Mục tiêu và lý do thực hiện đề tài (Zielsetzung und Begründung der Arbeit)
Tác giả làm rõ cơ sở lựa chọn JavaScript làm ngôn ngữ lập trình đầu tiên cho học sinh lớp 11/2:
- Tận dụng hạ tầng sẵn có: Máy tính cá nhân thông thường đều có sẵn trình duyệt web và trình soạn thảo văn bản, không làm phát sinh chi phí mua bản quyền phần mềm hay trở ngại cài đặt môi trường.
- Sự tương đồng cú pháp: Cú pháp JavaScript tương đồng với PHP, Java và C++, tạo nền tảng chuyển tiếp thuận lợi cho học sinh khi tiếp cận các nội dung nâng cao ở lớp 12 (như mô hình hóa hướng đối tượng với Java và cơ sở dữ liệu với PHP/MySQL).
- Cơ chế kiểu dữ liệu động: Trình thông dịch tự động gán kiểu dữ liệu, giúp học sinh mới bắt đầu không bị quá tải bởi việc khai báo tường minh kiểu dữ liệu phức tạp.
5. Giới thiệu về JavaScript (Einführung in JavaScript)
Chương này triển khai bài học nhập môn bằng phương pháp tiếp cận trực tiếp thông qua bài toán thực tế: xây dựng ứng dụng máy tính bỏ túi (Taschenrechner) thực hiện phép cộng đơn giản trên biểu mẫu HTML. Từ đoạn mã mẫu ban đầu, học sinh được hướng dẫn mở rộng sang 4 phép tính cơ bản. Các nội dung lý thuyết then chốt được phân tích gồm:
- Vị trí nhúng mã kịch bản
<script language="JavaScript"> trong tài liệu HTML hoặc tách thành tệp nguồn mở rộng .js nhằm phục vụ việc module hóa.
- Khái niệm biến số, 4 kiểu dữ liệu cơ bản (số nguyên, số thực dấu phẩy động, chuỗi ký tự, giá trị logic) và cơ chế tự động định kiểu.
- Cây phân cấp đối tượng trong JavaScript (DOM / Window object hierarchy) và phương pháp truy xuất thuộc tính, phương thức thông qua ký pháp dấu chấm (Dot Notation).
- Cơ chế xử lý sự kiện giao diện (Event handling) như
onClick, onChange, onFocus.
- Khái niệm hàm tự định nghĩa và các hàm tích hợp sẵn (ví dụ hàm chuyển đổi kiểu dữ liệu
Number()).
Cấu trúc rẽ nhánh (If-Anweisung và Case-Anweisung)
Tác giả xây dựng tiến trình giảng dạy cấu trúc điều kiện từ các bài toán toán học và trò chơi:
- Lệnh If-Else: Xuất phát từ bài toán xây dựng hàm tính giá trị tuyệt đối (Betragsfunktion), tiếp tục mở rộng sang giải phương trình bậc hai bằng công thức p-q (p-q-Formel) với 3 trường hợp của biệt thức (Diskriminante $d > 0$, $d = 0$, $d < 0$), rèn luyện kỹ năng lồng ghép câu lệnh điều kiện.
- Bảng toán tử so sánh: Hệ thống hóa các toán tử
==, !=, <, >, <=, >= và quy tắc so sánh chuỗi ký tự theo bảng mã (chữ số < chữ cái; chữ hoa < chữ thường).
- Lệnh Switch-Case: Đưa vào qua ví dụ trò chơi trắc nghiệm "Wer wird Millionär", giúp xử lý nhiều nhánh rẽ mà không cần lồng ghép quá nhiều lệnh
if. Tác giả phân tích lợi ích của việc truyền tham số vào hàm xử lý để tái sử dụng mã nguồn cho nhiều câu hỏi.
- Lập trình DHTML và chuyển động: Giới thiệu thao tác điều khiển vị trí phần tử HTML qua thuộc tính Style (
left, top) và hàm đếm thời gian setTimeout(), đặt nền tảng sơ khởi cho khái niệm đệ quy (Rekursion).
Bảng tổng hợp các cấu trúc điều khiển trong tài liệu:
-------------------------------------------------------------------------------------
Cấu trúc Cú pháp cơ bản Ví dụ ứng dụng
-------------------------------------------------------------------------------------
If - Else if (Bedingung) { ... } else { ... } Hàm trị tuyệt đối, giải p-q
Switch - Case switch (Biến) { case W1: ... break; default: } Trò chơi trắc nghiệm
For for (Khởi_tạo; Điều_kiện; Bước_nhảy) { ... } Tổng Gauss, giai thừa, ước số
Do - While do { ... } while (Điều_kiện); Thuật toán Heron, trả nợ tín dụng
While while (Điều_kiện) { ... } Vòng lặp kiểm tra trước
-------------------------------------------------------------------------------------
Dự án trò chơi xúc xắc (Projekt Würfelspiel)
Để thực hiện yêu cầu của chương trình đào tạo về làm việc nhóm và mô hình hóa hệ thống phức tạp, tác giả triển khai dự án lập trình trò chơi mô phỏng 3 quân xúc xắc với quy định tài chính cụ thể:
- Tiền cược mỗi lượt: 20 €.
- Xuất hiện một mặt 6: nhận thưởng 20 €.
- Xuất hiện hai mặt 6: nhận thưởng 50 €.
- Xuất hiện ba mặt 6: nhận thưởng 100 €.
Học sinh tự thảo luận để xây dựng bảng danh mục yêu cầu (Anforderungskatalog) và tiêu chí chấm điểm, thực hiện mô hình hóa xác suất, tích hợp hàm sinh số ngẫu nhiên, quản lý số dư tài khoản người chơi và hiển thị kết quả trực quan.
8. Các cân nhắc ban đầu và Giới thiệu các loại vòng lặp (Vorüberlegungen & Einführung der Schleifenarten)
Tiến trình sư phạm về vòng lặp được triển khai theo hướng dẫn dắt học sinh tự nhận thức nhu cầu của từng cấu trúc:
- Vòng lặp For: Áp dụng cho bài toán biết trước số lần lặp, minh họa qua bài toán tính tổng dãy số tự nhiên của Gauss từ 1 đến $n$, tính giai thừa và thuật toán tìm tập hợp ước số/kiểm tra số nguyên tố (tối ưu hóa lặp đến $\sqrt{n}$ bằng
Math.sqrt()).
- Vòng lặp Do-While và While: Giới thiệu khi số lần lặp không xác định trước. Minh họa qua thuật toán lặp Heron để tính căn bậc hai với độ chính xác chỉ định, và bài toán lập bảng kế hoạch tài chính hoàn trả nợ vay tín dụng (Finanzierungsplan) kết hợp công thức lãi suất và hàm logarit.
9. Biến cục bộ và biến toàn cục (Lokale und globale Variablen)
Tác giả phân tích các lỗi lập trình phổ biến liên quan đến phạm vi biến (Scope):
- Tham số đầu vào của hàm đóng vai trò là biến cục bộ, chỉ có hiệu lực bên trong hàm.
- Biến toàn cục khai báo ở đầu chương trình có thể bị thay đổi giá trị từ bên trong hàm.
- Biến khai báo cục bộ bên trong hàm sẽ bị hủy sau khi hàm thực thi và không thể truy xuất từ bên ngoài.
- Nạp chồng/ghi đè biến (Überladen einer Variable): Tác giả phân tích hai trường hợp gây xung đột tên biến (trùng tên tham số hàm và khai báo lại cùng tên biến bên trong hàm), từ đó đề xuất quy tắc sư phạm cấm học sinh đặt tên biến trùng lặp nhằm tránh phát sinh lỗi khó phát hiện.
Nâng cấp dự án Máy tính bỏ túi (Taschenrechnererweiterung)
Học sinh thực hiện chuyển đổi máy tính ban đầu (dùng 2 ô nhập liệu) sang mô hình máy tính bỏ túi tiêu chuẩn (chỉ có 1 ô hiển thị duy nhất). Dự án này buộc học sinh phải vận dụng linh hoạt biến toàn cục và biến trung gian để lưu trữ trạng thái toán tử và toán hạng trước đó khi người dùng bấm các nút chức năng.
Kết quả và đóng góp
Nghiên cứu đạt được các kết quả thực nghiệm sư phạm cụ thể:
- Thiết kế hoàn chỉnh chương trình học 51 tiết cho học kỳ 11/2 với hệ thống bài tập thực hành, code mẫu và 3 dự án lớn (Trò chơi xúc xắc, Trò chơi Roulette, Xây dựng website lớp học).
- 100% học sinh tham gia khóa học hoàn thành được yêu cầu tối thiểu về mô phỏng trò chơi xúc xắc (thực hiện lượt quay, áp dụng luật trả thưởng, tính toán kết quả).
- Hình thành phương pháp dạy học lập trình không phụ thuộc vào tài liệu tham khảo cú pháp khô khan, rút ngắn thời gian tiếp cận để học sinh nhanh chóng tự xây dựng được phần mềm hoàn chỉnh.
- Đổi mới vai trò giáo viên: Chuyển từ người áp đặt tiêu chí sang người định hướng, để học sinh tự xây dựng bảng yêu cầu đánh giá (Anforderungskatalog), tăng tính tự chủ và năng lực hợp tác nhóm.
Hạn chế và hướng nghiên cứu tiếp
Văn bản ghi nhận một số hạn chế kỹ thuật và phạm vi nghiên cứu:
- Tính không tương thích giữa các trình duyệt (Cross-browser compatibility): Sự khác biệt 20% về chuẩn giữa Netscape Navigator (chuẩn W3C) và Microsoft Internet Explorer (JScript) vào thời điểm 2003, đặc biệt là trong xử lý các lớp (Ebenen/Layers) của DHTML, đòi hỏi phải viết mã nguồn riêng biệt cho từng trình duyệt.
- Hạn chế bảo mật: Mã nguồn JavaScript nằm dưới dạng văn bản rõ (Klartext) bên trong tệp HTML, không có cơ chế bảo vệ mã nguồn, không phù hợp cho các ứng dụng đòi hỏi tính bảo mật cao.
- Giới hạn mô hình: JavaScript thời kỳ này chưa hỗ trợ đầy đủ lập trình hướng đối tượng thuần túy.
Hướng nghiên cứu và phát triển tiếp theo trong chương trình đào tạo:
- Lớp 12 học kỳ 1 (12/I): Chuyển tiếp sang chuyên đề "Mô hình hóa hướng đối tượng" (Objektorientierte Modellierung) sử dụng ngôn ngữ Java hoặc Delphi trên nền tảng cú pháp đã học.
- Lớp 12 học kỳ 2 (12/II): Phát triển ứng dụng "Cơ sở dữ liệu" (Datenbanken) tích hợp Web-Database thông qua bộ đôi PHP và MySQL.
Giá trị tham khảo
Khóa luận có giá trị tham khảo thiết thực cho giáo viên Tin học THPT, sinh viên ngành Sư phạm Tin học và các nhà thiết kế chương trình giáo dục công nghệ thông tin. Các nội dung có giá trị ứng dụng cao gồm:
- Mô hình sư phạm phát triển từ ví dụ trực quan phức tạp vừa đủ (như bài toán máy tính bỏ túi) thay vì giảng dạy lý thuyết cú pháp đơn lẻ.
- Kỹ thuật phân hóa và dẫn dắt học sinh tự khám phá giới hạn của các cấu trúc lập trình (từ For sang While/Do-While).
- Phương pháp tổ chức dự án nhóm kết hợp xây dựng tiêu chí đánh giá đồng thuận giữa học sinh và giáo viên.
Câu hỏi thường gặp
1. Vì sao tác giả lựa chọn JavaScript thay vì các ngôn ngữ như C++ hay Pascal/Delphi cho học sinh lớp 11/2?
JavaScript không yêu cầu cài đặt môi trường phát triển phức tạp hay tốn chi phí bản quyền, học sinh chỉ cần trình duyệt web và trình soạn thảo văn bản có sẵn trên máy tính. Ngoài ra, JavaScript tự động định kiểu dữ liệu giúp giảm tải nhận thức ban đầu, đồng thời cú pháp tương đồng với C++, Java và PHP giúp học sinh dễ dàng chuyển tiếp lên chương trình lớp 12.
2. Phương pháp sư phạm của tác giả khi giảng dạy các loại vòng lặp có điểm gì đặc biệt?
Tác giả không đưa ra cú pháp cả 3 loại vòng lặp cùng lúc mà bắt đầu bằng vòng lặp For thông qua các bài toán biết trước số lần lặp (tổng Gauss, ước số). Sau đó, tác giả đưa ra bài toán không xác định trước số lần lặp (thuật toán Heron, kế hoạch trả nợ tín dụng) để học sinh tự chạm đến giới hạn của vòng lặp For, từ đó nảy sinh nhu cầu tiếp nhận vòng lặp Do-While và While.
3. Bảng danh mục yêu cầu (Anforderungskatalog) trong dự án trò chơi xúc xắc có vai trò gì?
Danh mục yêu cầu do chính học sinh cùng giáo viên thảo luận xây dựng nhằm xác định rõ các tính năng kỹ thuật cần đạt (mô phỏng luật chơi, tính xác suất, quản lý tài khoản, đồ họa) tương ứng với từng thang điểm. Việc này giúp thay đổi vai trò của giáo viên từ người áp đặt sang người đồng hành và giúp học sinh chủ động chịu trách nhiệm về kết quả đánh giá.
4. Tác giả khuyến nghị xử lý vấn đề nạp chồng biến (Überladen einer Variable) như thế nào trong giảng dạy?
Tác giả khuyến nghị nghiêm cấm học sinh thực hiện việc nạp chồng biến (đặt tên tham số hàm hoặc biến cục bộ trùng với tên biến toàn cục), vì cơ chế này làm giảm tính trực quan của mã nguồn và gây ra các lỗi logic về giá trị biến rất khó phát hiện và khắc phục.
5. Chương trình học kỳ 11/2 này kết nối với chương trình Tin học lớp 12 như thế nào?
Kiến thức cú pháp và tư duy đối tượng sơ khởi của JavaScript ở lớp 11/2 là bước đệm trực tiếp cho học kỳ 12/I về "Mô hình hóa hướng đối tượng" với Java. Đồng thời, kỹ năng lập trình web tạo tiền đề cho học kỳ 12/II về "Cơ sở dữ liệu" ứng dụng PHP và MySQL.
Kết luận
Khóa luận của Jörg Debus đã thiết lập thành công một khung ý niệm sư phạm hoàn chỉnh gồm 51 tiết giảng dạy nhập môn lập trình JavaScript cho học sinh lớp 11/2 theo định hướng chương trình Tin học THPT. Thông qua phương pháp học tập giải quyết vấn đề, nguyên lý xoắn ốc và triển khai dự án thực tế, tài liệu giải quyết hiệu quả bài toán chuyển đổi học sinh từ người sử dụng web thụ động sang người phát triển ứng dụng chủ động. Đề tài cung cấp giải pháp thực tiễn có tính ứng dụng cao cho công tác đào tạo giáo viên và giảng dạy Tin học phổ thông.