Làm cách nào để dạy Python cho trẻ em?

Làm cách nào để dạy Python cho trẻ em?

Công việc chính của tôi liên quan đến dữ liệu và lập trình trong R, nhưng trong bài viết này tôi muốn nói về sở thích của mình, nó thậm chí còn mang lại một số thu nhập. Tôi luôn thích kể và giải thích mọi chuyện với bạn bè, bạn cùng lớp và các bạn học. Tôi cũng luôn dễ dàng tìm được ngôn ngữ chung với trẻ em, tôi không biết tại sao. Nói chung, tôi tin rằng việc nuôi dạy và dạy dỗ con cái là một trong những công việc quan trọng nhất và vợ tôi là giáo viên. Vì vậy, khoảng một năm trước, tôi đã quảng cáo trên một nhóm Facebook địa phương, thành lập một nhóm và bắt đầu dạy Scratch và Python mỗi tuần một lần. Bây giờ tôi có năm nhóm, lớp học riêng ở nhà và các bài học cá nhân. Tôi đã sống theo cách này như thế nào và chính xác cách tôi dạy trẻ em như thế nào, tôi sẽ kể cho bạn trong bài viết này.

Tôi sống ở Calgary, Alberta, Canada, vì vậy một số thứ sẽ mang tính đặc thù của địa phương.

Phòng

Ngay từ đầu, có sẵn không gian để luyện tập là mối quan tâm lớn. Tôi đã thử tìm kiếm văn phòng, lớp học cho thuê theo giờ nhưng không mấy thành công. Trường đại học của chúng tôi và SAIT, tương đương với MIT tại địa phương, cung cấp các lớp học có và không có máy tính. Giá cả ở đó hóa ra không nhân đạo cho lắm, và cuối cùng hóa ra trường đại học không cho phép trẻ vị thành niên thuê, và SAIT thường chỉ cho sinh viên của mình thuê. Vì vậy, tùy chọn này đã bị loại bỏ. Có nhiều trung tâm văn phòng cho thuê phòng họp và văn phòng theo giờ, có nhiều công ty cung cấp nhiều lựa chọn từ phòng học đầy đủ đến phòng dành cho bốn người. Tôi đã hy vọng, vì Alberta là một tỉnh có dầu mỏ nên chúng tôi đã rơi vào tình trạng khủng hoảng chậm chạp kể từ năm 2014 và nhiều không gian kinh doanh trống rỗng. Lẽ ra tôi không nên hy vọng; giá hóa ra quá cao đến mức ban đầu tôi thậm chí không tin. Chủ sở hữu sẽ dễ dàng ngồi trong văn phòng trống và trả chi phí hơn là đổ rác.

Vào lúc đó, tôi nhớ rằng tôi thường xuyên nộp thuế và liệu tiểu bang thân yêu của chúng tôi, hay đúng hơn là thành phố Calgary, có thứ gì ở đó không. Hóa ra thực sự có. Thành phố có các đấu trường dành cho môn khúc côn cầu và các môn thể thao trượt băng nghệ thuật khác, và trong các đấu trường này có những căn phòng nơi các chiến binh băng rắn chắc thảo luận về chiến lược cho các trận chiến trong tương lai. Nói tóm lại, mỗi đấu trường có một vài phòng với bàn, ghế, bảng trắng và thậm chí cả bồn rửa với ấm đun nước. Mức giá khá thần thánh - 25 tugriks Canada mỗi giờ. Ban đầu, tôi quyết định tham gia các lớp học trong một tiếng rưỡi, vì vậy tôi đặt giá cho một buổi học là 35 USD mỗi lớp cho một nhóm XNUMX người, để bù tiền thuê nhà và để thêm một ít tiền vào túi. Nói chung, tôi thích tập luyện ở các đấu trường, nó giải quyết được một trong những vấn đề - hầu hết những người nói tiếng Nga sống ở phía nam và tôi sống ở phía bắc thành phố, vì vậy tôi đã chọn một đấu trường ở khoảng giữa. Nhưng cũng có những bất tiện. Bộ máy quan liêu của Canada rất tốt và thân thiện, nhưng nói một cách nhẹ nhàng thì có thể hơi vụng về. Không có vấn đề gì khi bạn đã quen với nhịp điệu và lên kế hoạch trước, nhưng đôi khi sẽ nảy sinh những khoảnh khắc khó chịu. Ví dụ: trên trang web của thành phố, bạn có thể chọn thời gian, địa điểm một cách thuận tiện và đặt phòng, nhưng bạn không thể thanh toán bằng bất kỳ cách nào. Họ tự gọi điện thoại và chấp nhận thanh toán bằng thẻ. Bạn có thể đến văn phòng và thanh toán bằng tiền mặt. Có một khoảnh khắc buồn cười nhưng không mấy dễ chịu khi tôi đang đợi cuộc gọi của họ để trả tiền cho buổi học thứ hai thì không thấy, và vào ngày cuối cùng tôi đến văn phòng muộn mười lăm phút. Tôi phải đến gặp bảo vệ với vẻ mặt trơ tráo và nói dối rằng phòng đã được đặt. Người Canada chúng tôi tin lời tôi; họ cho tôi vào một cách bình tĩnh và không kiểm tra bất cứ thứ gì, nhưng tôi sẽ không làm vậy nếu mọi người chưa đến lớp.

Đây là cách tôi đã làm việc suốt mùa đông và mùa xuân, và sau đó những thay đổi xảy ra như giọt nước cuối cùng. Đầu tiên, văn phòng đóng cửa không đón khách và họ đề nghị chấp nhận thanh toán qua điện thoại ở gần đó. Tôi ngồi trên lối đi ít nhất nửa tiếng mới đi qua được. Thứ hai, nếu trước đây dì thân yêu của tôi nhận tiền của tôi trong một tiếng rưỡi thì bây giờ có cô gái nào đó nhấc máy và nói rằng chỉ trả tiền trong một giờ. Vào thời điểm đó, nhóm của tôi có ba hoặc hai người, và 12.5 đô la thêm không hề thừa chút nào. Tất nhiên, tôi là người có tư tưởng, nhưng nếu vợ tôi ném tôi ra đường thì sẽ không có ai dạy dỗ. Lúc đó tôi vẫn đang thất nghiệp.

Và tôi quyết định đến thư viện. Các thư viện cho thuê những căn phòng tuyệt vời hoàn toàn miễn phí, nhưng có một nhược điểm - bạn không thể tiến hành các hoạt động thương mại. Ngay cả các tổ chức từ thiện cũng không được phép thu tiền ở đó. Tôi được biết rằng việc này không được kiểm soát đặc biệt, điều chính yếu là không lấy tiền khi vào cổng, nhưng tôi thực sự không thích vi phạm nội quy. Một vấn đề khác là các phòng thường xuyên bị kín và rất khó để tiến hành các lớp học theo lịch trình cùng một lúc ở một nơi. Tôi dạy trong thư viện vào mùa hè và đầu mùa đông, tôi phải chọn những thư viện có không gian, và cuối cùng tôi đã thay đổi năm hoặc sáu thư viện. Sau đó, tôi bắt đầu đặt chỗ trước hai tháng, và thậm chí sau đó, tôi chỉ làm được việc này trong một thư viện nhỏ; những thư viện còn lại thường xuyên không có chỗ trong thời gian cần thiết. Và sau đó tôi quyết định mở một lớp học máy tính tại nhà. Tôi treo bảng, mua một chiếc bàn thứ hai và một vài màn hình cũ từ quảng cáo. Tại nơi làm việc, công ty đã mua cho tôi một chiếc máy tính xách tay mới mạnh mẽ vì quá trình phân tích trên máy tính của tôi mất gần 24 giờ. Vì vậy, tôi có một chiếc máy tính cũ mới, một chiếc máy tính cũ, một chiếc máy tính xách tay mà đứa con nhỏ của tôi đã làm vỡ màn hình và một chiếc netbook cổ mà chính tôi đã đập nát màn hình. Tôi đã kết nối tất cả chúng với màn hình và cài đặt Linux Mint ở mọi nơi, ngoại trừ netbook, trên đó tôi đã cài đặt một bộ phân phối rất nhẹ, có vẻ như Pappy. Tôi vẫn còn một chiếc máy tính xách tay cũ mới, mua với giá 200 USD, tôi đã kết nối nó với TV. Điều quan trọng nữa là chủ sở hữu của chúng tôi gần đây đã thay đổi cửa sổ của chúng tôi và thay vì căn phòng tồi tàn, tồi tàn khủng khiếp, giờ đây chúng tôi đã có khung màu trắng mới. Vợ tôi giữ phòng khách, bếp và phòng ngủ thứ XNUMX cho trường mẫu giáo nên toàn bộ tầng trệt dùng để làm sư phạm thuần túy. Vì vậy, bây giờ mọi thứ đã ổn với mặt bằng, chúng ta hãy chuyển sang công việc giảng dạy.

Cào

Tôi đang bắt đầu dạy những điều cơ bản về lập trình bằng ngôn ngữ Scratch. Đây là ngôn ngữ sử dụng các khối làm sẵn, được phát minh một thời tại MIT. Hầu hết trẻ em đã từng thấy Scratch ở trường nên chúng tiếp thu khá nhanh. Có những chương trình, giáo án soạn sẵn nhưng tôi không thích chút nào. Một số thì lạ - ví dụ: hãy tạo câu chuyện của riêng bạn. Toàn bộ chương trình bao gồm vô số khối say '<...>' for 2 seconds. Có thể thấy rằng nó được phát minh bởi những cá nhân rất sáng tạo, nhưng với cách tiếp cận này, bạn có thể dạy cách viết mã spaghetti cổ điển của Ấn Độ. Ngay từ đầu tôi đã nói về những nguyên tắc như D.R.Y. Các nhóm nhiệm vụ khác khá tốt, nhưng bọn trẻ nhanh chóng làm quen và bắt đầu thực hiện chúng như một khẩu súng máy. Kết quả là, trong một bài học, họ làm được điều mà lẽ ra họ phải làm trong năm bài học. Và việc tìm kiếm, lựa chọn nhiệm vụ tốn rất nhiều thời gian của cá nhân. Nói chung, Scratch gợi nhớ nhiều hơn không phải về một ngôn ngữ mà là về một IDE, nơi bạn chỉ cần nhớ nơi cần nhấp và nơi tìm kiếm nội dung. Ngay khi học sinh ít nhiều cảm thấy thoải mái, tôi cố gắng chuyển chúng sang Python. Ngay cả cô bé bảy tuổi của tôi cũng viết những chương trình đơn giản bằng Python. Điều tôi thấy lợi ích của Scratch là nó chứa các khái niệm cơ bản được học theo cách vui tươi. Vì lý do nào đó, rất khó để tất cả mọi người, không có ngoại lệ, hiểu được ý tưởng về một biến. Lúc đầu, tôi nhanh chóng lướt qua chủ đề và tiếp tục cho đến khi tôi phải đối mặt với sự thật là họ thậm chí không biết phải làm gì với vấn đề đó. Bây giờ tôi dành nhiều thời gian cho các biến số và liên tục quay lại với chúng. Bạn phải làm vài cú búa ngu ngốc. Tôi thay đổi các biến khác nhau trên màn hình và khiến chúng nói lên giá trị của mình. Scratch cũng có các cấu trúc điều khiển và kiểm tra giá trị, chẳng hạn như while, for hoặc if trong trăn. Chúng khá dễ dàng, nhưng có vấn đề với các vòng lặp lồng nhau. Tôi cố gắng đưa ra một số nhiệm vụ bằng một vòng lặp lồng nhau và sao cho hành động của nó được rõ ràng. Sau đó tôi chuyển sang hàm. Ngay cả đối với người lớn, khái niệm về chức năng cũng chưa rõ ràng và trẻ em lại càng thấy rõ hơn. Tôi nói rất lâu về chức năng nói chung là gì, tôi nói về một nhà máy nhận vật phẩm làm đầu vào và xuất hàng, về một người đầu bếp chế biến thức ăn từ nguyên liệu thô. Sau đó, chúng tôi tạo một chương trình "làm bánh sandwich" với các sản phẩm và tạo một hàm từ chương trình đó để các sản phẩm được chuyển đến dưới dạng tham số. Tôi hoàn thành việc học các chức năng với Scratch.

Python

Với python mọi thứ đơn giản hơn. Có một cuốn sách hay Python for Kids, đó là cuốn sách tôi dạy. Ở đó mọi thứ đều chuẩn - dây chuyền, thứ tự hoạt động, print(), input() vân vân. Viết bằng ngôn ngữ dễ hiểu, hài hước, trẻ em thích. Nó có một lỗ hổng phổ biến trong nhiều cuốn sách lập trình. Như trong câu chuyện cười nổi tiếng - cách vẽ một con cú. Hình bầu dục - hình tròn - con cú. Sự chuyển đổi từ những khái niệm đơn giản sang những khái niệm khá phức tạp là quá đột ngột. Tôi phải mất vài phiên để đính kèm đối tượng vào phương thức dấu chấm. Mặt khác, tôi không vội, tôi lặp lại điều tương tự theo nhiều cách khác nhau cho đến khi ít nhất một số hình ảnh ghép lại với nhau. Tôi bắt đầu với các biến và tìm hiểu lại chúng, lần này là bằng Python. Các biến là một loại lời nguyền.

Một học sinh thông minh, cách đây vài tháng đã khéo léo bấm các biến trên Skratch, trông giống như một con ram ở cổng mới và không thể cộng X với Y, điều này được viết rõ ràng trên bảng một dòng phía trên. Chúng ta lặp lại! Một biến có gì? Tên và ý nghĩa! Dấu bằng có nghĩa là gì? Phân công! Làm thế nào để chúng ta kiểm tra sự bình đẳng? Dấu bằng kép! Và chúng ta lặp đi lặp lại điều này cho đến khi giác ngộ hoàn toàn. Sau đó, chúng ta chuyển sang các hàm, trong đó phần giải thích về các đối số mất nhiều thời gian nhất. Đối số được đặt tên, theo vị trí, theo mặc định, v.v. Chúng tôi chưa đến được lớp nào trong nhóm nào. Ngoài Python, chúng tôi còn nghiên cứu các thuật toán phổ biến từ cuốn sách, sau này sẽ nói thêm về điều đó.

Trên thực tế, đào tạo

Bài học của tôi có cấu trúc như sau: Tôi đưa ra lý thuyết trong nửa giờ, kiểm tra kiến ​​thức và củng cố những gì đã học. Đã đến lúc dành cho phòng thí nghiệm. Tôi thường say mê và nói chuyện đến một giờ, sau đó còn lại nửa giờ để luyện tập. Khi tôi đang học python, tôi đã xem khóa học Thuật toán và cấu trúc dữ liệu Khiryanov từ MIPT. Tôi thực sự thích cách trình bày và cấu trúc bài giảng của anh ấy. Ý tưởng của anh ấy là: các framework, cú pháp, thư viện đang trở nên lỗi thời. Kiến trúc, làm việc nhóm, hệ thống kiểm soát phiên bản - vẫn còn sớm. Kết quả là, các thuật toán và cấu trúc dữ liệu vẫn được biết đến từ lâu và sẽ luôn ở dạng tương tự. Bản thân tôi chỉ nhớ các số nguyên từ viện pascal. Vì sinh viên của tôi hầu hết đều trẻ, từ bảy đến mười lăm tuổi, tôi tin rằng việc đặt nền móng cho tương lai của họ là quan trọng hơn là viết nhanh trò chơi nền tảng bằng Python. Mặc dù vậy, họ muốn có một nền tảng nhiều hơn và tôi hiểu họ. Tôi cung cấp cho họ các thuật toán đơn giản - bong bóng, tìm kiếm nhị phân trong danh sách được sắp xếp, đảo ngược ký hiệu tiếng Ba Lan bằng cách sử dụng ngăn xếp, nhưng chúng tôi phân tích từng thuật toán một cách chi tiết. Hóa ra trẻ em hiện đại về nguyên tắc không biết máy tính hoạt động như thế nào, tôi cũng sẽ kể cho bạn nghe. Tôi cố gắng gắn kết nhiều khái niệm lại với nhau trong mỗi bài giảng. Ví dụ: máy tính - bộ nhớ/phần trăm - bộ nhớ được tạo thành từ các ô (tôi sẽ để bạn cầm chip bộ nhớ, đoán xem có bao nhiêu ô) - mỗi ô giống như một bóng đèn - có hai trạng thái - đúng/sai - và/hoặc - nhị phân/thập phân - 8bit = 1 byte - byte = 256 tùy chọn - kiểu dữ liệu logic trên một bit - số nguyên trên một byte - float trên hai byte - string trên một byte - số lớn nhất trên 64 bit - một danh sách và một bộ dữ liệu từ các loại trước đó. Tôi khẳng định rằng trong máy tính thực, mọi thứ hơi khác một chút và dung lượng bộ nhớ cho các kiểu dữ liệu này cũng khác nhau, nhưng điều quan trọng chính là bản thân chúng ta trong quá trình này tạo ra các kiểu dữ liệu phức tạp hơn từ những kiểu dữ liệu đơn giản hơn. Các kiểu dữ liệu có lẽ là thứ khó nhớ nhất. Đó là lý do tại sao tôi bắt đầu mỗi bài học bằng phần khởi động nhanh - một học sinh nêu tên loại dữ liệu, học sinh tiếp theo đưa ra hai ví dụ, v.v. theo vòng tròn. Kết quả là tôi đã đạt được điều đó ngay cả những đứa trẻ nhỏ nhất cũng vui vẻ hét lên - trôi đi! Boolean! bảy, năm! pizza, xe hơi! Trong khi giảng bài, tôi liên tục kéo cái này hay cái kia, nếu không thì họ nhanh chóng ngoáy mũi và nhìn lên trần nhà. Và trình độ hiểu biết của mọi người cần được kiểm tra thường xuyên.

Học sinh của tôi không bao giờ hết làm tôi ngạc nhiên, cả về sự ngu ngốc lẫn trí thông minh không ngờ của chúng. May mắn thay, thường xuyên hơn với trí thông minh.

Tôi muốn viết thêm nhưng hóa ra chỉ là một tờ giấy. Tôi sẽ vui lòng trả lời tất cả các câu hỏi. Tôi hoan nghênh mọi lời chỉ trích bằng mọi cách có thể, tôi chỉ yêu cầu các bạn hãy khoan dung hơn với nhau trong các bình luận. Đây là một bài viết tốt.

Nguồn: www.habr.com

Thêm một lời nhận xét