Dự án NumPy

Trang này chứa thông tin chi tiết về một dự án viết kỹ thuật được chấp nhận cho Google Phần Tài liệu.

Tóm tắt dự án

Tổ chức nguồn mở:
NumPy
Người viết nội dung kỹ thuật:
hợp tác
Tên dự án:
Tài liệu về NumPy về giáo dục cộng đồng
Thời lượng dự án:
Thời lượng tiêu chuẩn (3 tháng)

Mô tả dự án

Giới thiệu

NumPy cung cấp điện toán dựa trên mảng sạch và nhanh chóng trong thư viện phần mềm nguồn mở miễn phí. Đây là một gói cơ bản trong ngăn xếp SciPy cho điện toán khoa học [1]. Hơn 370 nghìn dự án sử dụng tính toán mảng hiệu quả [2]. Người dùng NumPy được chào đón bởi một trang web mới với các ứng dụng và nghiên cứu điển hình [1]. Khi người dùng mới tìm thấy trang tài liệu, họ sẽ thấy nhiều đường liên kết “Bắt đầu tại đây” và các hướng dẫn giới thiệu khiến người mới bắt đầu cảm thấy choáng ngợp, chẳng hạn như NumPy Basics/hoán đổi byte. Tôi bắt đầu sử dụng NumPy cách đây 10 năm khi học sau đại học. Tôi thấy mình phải tự sắp xếp các bài đăng trên blog, ghi chú bài giảng và câu trả lời trên StackExchange để không phải xem xét tài liệu của NumPy. Hiện có hơn 360 nghìn cuộc trò chuyện StackExchange giao dịch với NumPy. Tôi nghĩ rằng những người dùng khác cũng có lộ trình thành công tương tự trong NumPy. Các yếu tố nền tảng của các công cụ giáo dục là giao tiếp và cộng đồng [4]. Tài liệu cần xây dựng một cộng đồng phản ánh những mục tiêu mong muốn của dự án. Tài liệu phải là hướng dẫn nhất quán và rõ ràng cho người dùng mới. Hướng dẫn sẽ cung cấp cho người dùng mới các bước dễ thực hiện và tạo sự thoải mái với thư viện [3]. Tài liệu này sẽ chào mừng người dùng mới tham gia cộng đồng NumPy. Cấu trúc, tốc độ và tác giả của tài liệu đều cần tạo ra một nơi chào đón hoạt động khám phá và giao tiếp. Đề xuất này sẽ sắp xếp và bổ sung thông tin còn thiếu trong tài liệu NumPy hiện tại để người dùng mới được tìm hiểu và chào mừng tham gia cộng đồng.

Kiến thức mà người dùng đạt được bằng cách kiểm tra và thử nghiệm [4,5]. Kiến thức phụ thuộc vào phương pháp kiểm tra và đánh giá. Những nội dung đưa ra mục tiêu và cách ứng dụng rõ ràng trong hướng dẫn sẽ cho phép người dùng thử nghiệm và đánh giá các ý tưởng cũng như phương pháp mới. Cộng đồng có thể xây dựng cơ sở kiến thức để nâng cao kỹ năng, dữ kiện và ứng dụng. Không gian hướng dẫn mang lại lợi ích gấp đôi. Trước tiên, người dùng mới và người dùng có kinh nghiệm đặt mục tiêu rõ ràng để thử nghiệm và tạo thử nghiệm. Thứ hai, những người đóng góp tài liệu tiềm năng có không gian để truyền đạt mục tiêu, phương pháp và giải pháp của họ. Không gian hướng dẫn đáp ứng nhu cầu ngay lập tức để giúp tài liệu của NumPy dễ tiếp cận hơn đối với người dùng mới và những người đóng góp tiềm năng. Kiến thức hiện tại

John Dewey cho rằng nền tảng của học tập chính là trải nghiệm chân thực [4]. Cộng đồng NumPy có rất nhiều trải nghiệm chân thực mà có thể được chia sẻ với những người dùng khác. Giáo dục được xây dựng dựa trên cộng đồng và giao tiếp. Một trang tài liệu có tổ chức sẽ giúp người dùng mới trải nghiệm NumPy một cách dễ dàng. Cộng đồng này cũng tạo ra một mẫu có cấu trúc để những người đóng góp tiềm năng truyền đạt về trải nghiệm trong NumPy.

Có 4 không gian được nhóm chung cho tài liệu phần mềm [3]: không gian hướng dẫn, không gian hướng dẫn, không gian giải thích và không gian tham khảo. Tài liệu NumPy có một số tài liệu trong không gian hướng dẫn kết hợp nội dung giải thích và nội dung cách sắp xếp vào phần hướng dẫn. Không gian hướng dẫn cần tập trung vào việc hướng dẫn người dùng, đồng thời sử dụng các bước dễ lặp lại để truyền đạt ý tưởng. Khoá học hướng dẫn cung cấp thêm các quy trình định hướng mục tiêu mà người dùng có thể áp dụng trong các ứng dụng thực tế. Không gian giải thích cung cấp thông tin chi tiết theo các chuỗi tài liệu chi tiết trong từng chức năng. Các không gian hướng dẫn và cách thực hiện hiện tại không được mô tả rõ ràng và đôi khi nhập vào phần giải thích và tham chiếu. Có một tài liệu hướng dẫn rất hữu ích cho khoá học “Người mới bắt đầu tuyệt đối” và có một tài liệu tham khảo tuyệt vời để người dùng Matlab xây dựng mã NumPy trong “Numpy dành cho người dùng Matlab”. Việc mô tả rõ ràng bốn dấu cách này sẽ giúp tài liệu rõ ràng hơn.

Khoảng trống trong cơ sở kiến thức/Nhu cầu chưa được đáp ứng

Tài liệu hiện tại đề cập đến nhiều chủ đề cần thiết nhưng thiếu sự phân biệt rõ ràng giữa các phần hướng dẫn, cách thực hiện, phần giải thích và các không gian tham khảo. Điều này khiến những người đóng góp tiềm năng bị nhầm lẫn. Người dùng mới có thể bị choáng ngợp trước phần giải thích và tài liệu tham khảo trong phần hướng dẫn và những cộng tác viên tiềm năng sẽ gặp phải trở ngại khi đóng góp. Tôi đề xuất một bố cục dễ tiếp cận hơn cho người mới tham gia và người có thể đóng góp tài liệu với luồng tài liệu hợp lý và quản lý yêu cầu lấy tài liệu hướng dẫn do người dùng đóng góp của người đóng góp mới. Mục tiêu dài hạn của tôi là xây dựng cộng đồng tài liệu để việc học hỏi từ tài liệu là một trải nghiệm giáo dục và giao tiếp cho và cũng được. Mô hình này dành cho tài liệu sẽ xây dựng nền tảng giáo dục dựa trên trải nghiệm thực tế cho những người mới tham gia và người đóng góp tiềm năng.

Lý do

Đề xuất cho Mùa hè về Tài liệu này của Google rất quan trọng đối với mục tiêu nghề nghiệp và sư phạm của tôi. Tôi sử dụng NumPy và SciPy trong tất cả các khóa học của mình. Học viên của tôi gặp khó khăn trong việc sử dụng tài liệu hiện tại. Tôi muốn vận dụng kinh nghiệm của mình trong việc giảng dạy cách lập trình cho các chuyên ngành không liên quan đến CS để hỗ trợ việc sắp xếp, chỉnh sửa và bổ sung thông tin còn thiếu trong các hướng dẫn hiện tại. Sau đó, tôi có thể sử dụng tài liệu này làm sách giáo khoa và tài liệu tham khảo cho các khoá học của mình. Tôi đã tạo hàng chục hướng dẫn, bài tập và ví dụ sử dụng Python và . Tôi muốn chuyển đổi một số nội dung trong nội dung này thành các video hướng dẫn cách làm. Tôi có hơn 800 học sinh sử dụng NumPy (như một phần trong nhóm Scipy) và tôi có nhiều học sinh muốn trở thành người đóng góp tài liệu cho học kỳ mùa thu. Tôi đã giảng dạy tại Đại học Kỹ thuật cơ khí Connecticut được 4 năm và giảng dạy hơn 30 giờ tín dụng cho các khoá học.

Mục tiêu cụ thể

Tôi có ba mục đích cụ thể cho đề xuất cho Mùa hè của Google Tài liệu này: 1. Sắp xếp tài liệu hiện tại, 2. Chỉnh sửa các hướng dẫn hiện tại (Hướng dẫn cho người mới bắt đầu, Tạo mảng, Lập chỉ mục, Đại số tuyến tính và NumPy cho Matlab) để di chuyển thông tin tham chiếu vào Không gian giải thích, và 3. Xây dựng tài liệu hướng dẫn cho học viên. Mỗi mục tiêu cụ thể có một kết quả dự kiến cho đề xuất.

Ba mục đích cụ thể này là nhằm giúp tài liệu trở nên dễ tiếp cận hơn đối với người dùng mới và tạo cấu trúc cho người đóng góp tiềm năng. Những chương trình này cũng giúp thúc đẩy mục tiêu dài hạn là tiếp tục phát triển cộng đồng tài liệu NumPy. Kết quả mong đợi

Tôi có ba kết quả dự kiến như sau: 1. Một trang web tài liệu đã sửa đổi phân tách rõ ràng bốn không gian: hướng dẫn, hướng dẫn, giải thích và tham khảo, 2. hướng dẫn mới về: đọc và viết mảng, tạo mảng (np.zeros, np.ones, np.block, v.v.) và toán tử đại số tuyến tính so với phần tử trong NumPy và 3. không gian hướng dẫn được sắp xếp.

Những kết quả dự kiến này sẽ giúp người dùng mới cải thiện tài liệu, cung cấp cho những người đóng góp tài liệu tiềm năng với phong cách và định dạng rõ ràng, làm cho các hướng dẫn hiện tại ngắn hơn và dễ theo hơn, chuyển nội dung giải thích sang một phần riêng và những người mới đóng góp tài liệu sẽ có thể đóng góp các trường hợp sử dụng nhỏ cho phần hướng dẫn mà không cần xây dựng toàn bộ tài liệu về Sphinx. Chúng tôi muốn tiếp tục xây dựng cộng đồng dạy và học.

Những người đóng góp mới vào tài liệu có thể đóng góp các trường hợp sử dụng nhỏ cho hàng triệu người dùng mà không cần phải xây dựng toàn bộ tài liệu về Sphinx. Chúng tôi muốn tiếp tục xây dựng cộng đồng dạy và học. Tài liệu được đề xuất này sẽ bắt chước các tài liệu nguồn mở hiện có như Matplotlib, Divio, v.v. Người dùng mới và người đóng góp tiềm năng sẽ dễ dàng tìm hiểu cách áp dụng NumPy trong các lĩnh vực và phần mềm của họ.

Thời gian thực hiện dự án: 14/9 – 30/11. Bước đầu tiên là xây dựng tài liệu và tách riêng nội dung trong các hướng dẫn hiện tại thành nội dung Hướng dẫn, Hướng dẫn và Giải thích. Việc này sẽ được thực hiện trong năm tuần đầu tiên của dự án như một phần của việc sửa đổi trang web và hướng dẫn Kết quả 1 và 2 tương ứng. Sắp xếp Tài liệu được đề xuất được thể hiện trong Tài liệu được đề xuất bên dưới.

Tài liệu được đề xuất:

i.Tutorials:

  • Kiến thức cơ bản tuyệt đối dành cho người mới bắt đầu (xoá cài đặt, có thể thay thế tính năng nhập/xuất gấu trúc bằng numpy.loadtxt không?)
  • đường liên kết đến video "What is numpy"
  • liên kết đến hướng dẫn cài đặt cơ bản tại đây
  • Hướng dẫn bắt đầu nhanh (có ý nghĩa tiếp nối với hướng dẫn Python )
  • Cách xử lý các mảng NumPy
  • tạo mảng (np.zeros, np.ones, np.block, v.v.) (ghi: mức độ ưu tiên trung bình thấp)
  • Phép toán phần tử (+,-,*,/) và phép toán đại số tuyến tính (+,-,@, linalg.solve) (ghi:ưu tiên trung bình)
  • Đọc và ghi dữ liệu bằng Numpy (ghi: mức độ ưu tiên cao)
  • Lập chỉ mục

ii. Hướng dẫn:

  • Đại số tuyến tính trên các mảng n chiều (muốn chỉnh sửa tiêu đề và mô tả và có thể thay đổi tiêu đề thành "Xử lý hình ảnh bằng đại số tuyến tính Numpy")
  • đường liên kết đến nội dung hướng dẫn có số liệu cụ thể (bài tập đang diễn ra)

iii. Giải thích:

  • Kiểu dữ liệu
  • I/O bằng Numpy
  • Lập chỉ mục
  • Phát sóng
  • Hoán đổi byte
  • Mảng có cấu trúc
  • Viết vùng chứa mảng tuỳ chỉnh
  • phân lớp con ndarray
  • Khác

iv. Không gian tham chiếu:

  • Bảng chú giải thuật ngữ
  • Tài liệu tham khảo Numpy API
  • Numpy cho người dùng Matlab (bảng tương đương là một bảng tham khảo tuyệt vời, nhưng cuộc thảo luận về mảng/ma trận lại gây mất tập trung và có vẻ không được dùng nữa)

Sau khi hoàn thành Phần Google Tài liệu này, tôi đề xuất các kết quả sau:

  • Trang web Tài liệu đã sửa đổi tách biệt rõ ràng bốn không gian: Hướng dẫn, Hướng dẫn, Giải thích và Tài liệu tham khảo
  • Hướng dẫn mới về: tạo mảng (np.zeros, np.ones, np.block, v.v.), các phép toán tương ứng với phần tử (+,-,*,/) và các phép tính đại số tuyến tính (+, -,@, linalg.solve) và Đọc và ghi dữ liệu bằng Numpy (có mức độ ưu tiên cao)
  • Đưa ra các tài liệu hướng dẫn để tăng mức độ đóng góp của người dùng và giúp đạt được các mục tiêu của cộng đồng trong hoạt động dạy và học

Mỗi kết quả có một số bước được nêu dưới đây trong các bảng Kết quả từ 1 đến 3. Trong khi Tài liệu được đề xuất được gửi đi xem xét, hướng dẫn "Đọc/ghi mảng" có mức độ ưu tiên cao sẽ được viết để gửi dưới dạng yêu cầu lấy dữ liệu trong Kết quả 2. Trong quá trình xem xét trang web đã sửa đổi và hướng dẫn "Đọc/Ghi mảng" đã cập nhật, tôi sẽ bắt đầu viết hướng dẫn tạo mảng bằng các hàm NumPy, ví dụ: np.ones, np.zeros, np. chẩn đoán. Thời gian còn lại sẽ được dùng để phản hồi các vấn đề về yêu cầu kéo (pull request) và bắt đầu viết hướng dẫn bậc 3: Các phép toán đại số tuyến tính và phần tử trong Python.

Kết quả thứ ba là hướng dẫn sinh viên tại Đại học Connecticut xây dựng tài liệu trong kho lưu trữ hướng dẫn numpy. Các tài liệu hướng dẫn bạn gửi sẽ là sổ tay Jupyter sử dụng NumPy để giải quyết các vấn đề kỹ thuật. Tôi sẽ sử dụng một số ghi chú/ví dụ trong khoá học của mình để gửi sổ tay mẫu. Tôi sẽ khuyên học sinh tuân theo bố cục và cấu trúc khi xây dựng mẫu và lược đồ tạo khung. Kết quả này mang đến một trải nghiệm chân thực để học sinh truyền đạt các khái niệm và giải pháp cho nhiều đối tượng hơn. Đây là một cơ hội tuyệt vời để học sinh tham gia và học hỏi với cộng đồng NumPy.

10/1: Sửa đổi trang web Deliveryable Date Fork Repository và Build Tài liệu bằng Sphinx 9/21 Xây dựng trang web bằng Bốn không gian được xác định và liên kết 10/1 Chuyển hướng dẫn hiện tại vào không gian thích hợp và Xây dựng tài liệu 10/10 Gửi PR tới github kèm theo những thay đổi đề xuất 11/1 Trả lời ý kiến/đề xuất và sửa đổi PR đang diễn ra bằng Kết quả 1/30 Trang web đã sửa đổi

Kết quả 2: Sửa đổi ngày phân phối/Xem lại hướng dẫn sửa đổi điểm xếp hạng 9/21 Tách riêng nội dung hướng dẫn hiện tại vào không gian Hướng dẫn và Giải thích 10/1 Ghi thứ hạng 1: Đọc/ghi mảng 10/10 Gửi PR lên github để phân tách và sửa đổi 10/20 Viết thứ hạng 2: Toán tử tạo mảng tuyến tính 11/10 Viết thứ hạng 2: Toán tử tạo mảng tuyến tính 11/35:

Thứ hạng đề xuất của bản sửa đổi phần hướng dẫn (có thể thay đổi tuỳ theo người cố vấn/cộng đồng):

  1. Đọc/ghi các mảng hiện đang trống

  2. Tạo mảng (np.zeros, np.ones, np.block, v.v.) Không tồn tại: sẽ giúp người dùng mới có các công cụ tạo/tương tác mảng phổ biến được giải thích và minh họa

  3. Các phép toán đại số tuyến tính và phần tử (+,-,*,/ và +,-@,linalg.solve) Không tồn tại: điều này đặc biệt hữu ích cho 1. Người dùng Matlab và 2. Những người chọn đại số tuyến tính (học máy, hồi quy tuyến tính, v.v.)

Đến nơi 3: Ngày ra mắt nội dung hướng dẫn chọn lọc Đường liên kết bên ngoài(phát hành/ví dụ) Xây dựng ví dụ (đề xuất: Cách tìm tần số tự nhiên của các dây đàn ghi-ta 20/10
Tạo mẫu Hướng dẫn cho người đóng góp mới 10/1 đang tiến hành Mẫu hướng dẫn PR và làm khung cho những đóng góp có thể thực hiện Làm việc với những người đóng góp khác để xây dựng sổ tay hướng dẫn chiêu mộ học viên và các thành viên khác trong cộng đồng):

Tầm quan trọng dự kiến

Đề xuất Mùa hè của Google Tài liệu này sẽ tạo tài liệu NumPy , điền các hướng dẫn còn thiếu trên trang web và thu thập người đóng góp vào tài liệu. Với vai trò là Giáo sư ngành Kỹ thuật cơ khí, tôi dự định phân chia tài liệu theo cách mà sinh viên có thể khám phá tài liệu và dễ dàng tìm thấy hướng dẫn giới thiệu so với hướng dẫn thực hành. Tài liệu được phân đoạn: hướng dẫn, cách thực hiện, tài liệu tham khảo và giải thích sẽ cung cấp cho cộng tác viên tiềm năng các ví dụ có cấu trúc để xây dựng tài nguyên mới. Tài liệu được đề xuất phù hợp với trải nghiệm cho nhận và nhận thông qua giáo dục và giao tiếp cho người dùng mới và người dùng có kinh nghiệm. Tài liệu hướng dẫn được đề xuất cho sinh viên Đại học Connecticut sẽ giúp ý tưởng giáo dục và giao tiếp này trở thành thực tiễn. Chúng tôi muốn tất cả người dùng đều có thể thử nghiệm, học hỏi và tham gia cộng đồng NumPy.

Tài liệu tham khảo

  1. Trang web NumPy.org đã truy cập vào 07/2020.
  2. Kho lưu trữ NumPy trên GitHub.
  3. Hệ thống tài liệu. Divio.com truy cập vào ngày 7/2020.
  4. Dewey, John. Dân chủ và Giáo dục. Dự án Gutenberg, tháng 8 năm 2015.
  5. Dewey, John. Nhiệm vụ tìm kiếm sự chắc chắn của George Allen và Unwin Limited. 06/2005.