مشروع NumPy

تحتوي هذه الصفحة على تفاصيل مشروع كتابة تقنيّة تم قبوله في موسم المستندات من Google.

ملخص المشروع

المؤسسة المفتوحة المصدر:
NumPy
الكاتب التقني:
كوبيرك
اسم المشروع:
مستندات شركة NumPy للتعليم المجتمعي
مدة المشروع:
المدة العادية (3 أشهر)

وصف المشروع

مقدمة

توفّر مكتبة NumPy حوسبة نظيفة وسريعة ومستندة إلى صفيف في مكتبة برامج مجانية مفتوحة المصدر. وهي حزمة أساسية في مكدس ساي باي للحوسبة العلمية [1]. تم استخدام أكثر من 370 ألف مشروع لحوسبة الصفائف الفعالة [2]. يتم الترحيب بمستخدمي NumPy من خلال موقع إلكتروني جديد يتضمّن تطبيقات ودراسات حالة [1]. عندما يعثر مستخدم جديد على صفحة الوثائق، يقابله عدة روابط "ابدأ من هنا" وبرامج تعليمية تمهيدية قد تكون مربكة للمبتدئين، مثل أساسيات نمباي/تبادل البايت. بدأتُ في استخدام NumPy منذ عشر سنوات في كلية الدراسات العليا. وجدت نفسي أجمع مشاركات المدونات وملاحظات المحاضرات وإجابات StackExchange لتجنب مراجعة مستندات NumPy. هناك حاليًا أكثر من 360 ألف محادثة StackExchange التي تتعامل مع NumPy. أتخيل أن هناك مستخدمين آخرين لديهم طرق مماثلة للنجاح في NumPy. إنّ اللبنات الأساسية للأدوات التعليمية هي التواصل والمجتمع [4]. تحتاج الوثائق إلى إنشاء مجتمع يعكس الأهداف المرجوة من المشروع. يجب أن تكون الوثائق دليلاً متسقًا وواضحًا للمستخدم الجديد. يجب أن توفر البرامج التعليمية للمستخدمين الجدد خطوات سهلة المتابعة وتعزز الراحة في المكتبة [3]. يجب أن ترحّب المستندات بمستخدم جديد في منتدى NumPy. يحتاج كل من الهيكل والوتيرة ومؤلفي الوثائق إلى إنشاء مكان يرحب بالاستكشاف والتواصل. سيعمل هذا الاقتراح على تنظيم وسد الثغرات في وثائق NumPy الحالية حتى يتم توعية المستخدمين الجدد والترحيب بهم في المنتدى.

يتم اكتساب المعرفة التي ينقلها المستخدمون عن طريق الاختبار والتجربة [4،5]. تعتمد المعرفة على طريقة الاختبار والتقييم. إنّ المحتوى الذي يقدّم أهدافًا وتطبيقات واضحة في تعليمات التنفيذ يتيح للمستخدمين اختبار الأفكار والأساليب الجديدة وتقييمها. يمكن للمجتمع بناء قاعدة معرفية لتعزيز المهارات والحقائق والتطبيقات. توفّر مساحة طريقة التنفيذ فائدة مضاعفة. أولاً، يمتلك المستخدمون الجدد وذوو الخبرة مجموعة من الأهداف الواضحة لاختبار التجارب وإنشاؤها. ثانيًا، يمتلك المساهمون المحتملون في الوثائق مساحة لتوصيل أهدافهم وأساليبهم وحلولهم. تلبّي المساحة المخصّصة لطريقة التنفيذ احتياجًا ملحًا لتسهيل وصول المستخدمين الجدد والمساهمين المحتملين إلى مستندات NumPy. المعرفة الحالية

يقول "جون ديوي" إنّ التعلُّم هو تجربة واقعية [4]. يتمتع منتدى NumPy بقدر هائل من الخبرة الحقيقية التي يمكن مشاركتها مع المستخدمين الآخرين. يقوم التعليم على المجتمع والتواصل. تمهد صفحة الوثائق المنظمة الطريق للمستخدمين الجدد لتجربة NumPy. كما تنشئ نموذجًا منظّمًا للمساهمين المحتملين لإعلامهم بخبراتهم في نمباي.

هناك أربع مساحات مجمعة بشكل واسع لوثائق البرامج [3]: مساحة البرنامج التعليمي ومساحة كيفية الاستخدام ومساحة الشرح والمساحة المرجعية. تحتوي وثائق NumPy على عدد من المستندات في مساحة البرنامج التعليمي التي تجمع بين محتوى الشرح وطريقة التنفيذ في البرنامج التعليمي. يجب أن تركز مساحة البرنامج التعليمي على تعليم المستخدم وأن تستخدم خطوات سهلة التكرار لتوصيل الأفكار. توفر مساحة كيفية الاستخدام المزيد من الإجراءات ذات التركيز على الأهداف التي يمكن للمستخدمين تطبيقها في تطبيقات العالم الحقيقي. توفر مساحة التوضيح معلومات مفصلة عن سلاسل المستندات التفصيلية في كل دالة. لم يتم تحديد البرنامج التعليمي الحالي ومساحات كيفية الاستخدام بوضوح، وأحيانًا يتم إدخالها في مساحة الشرح والرجوع. هناك برنامج تعليمي ممتاز لـ "المبتدئين المطلقين" وهناك مرجع رائع لمستخدمي Matlab لإنشاء رمز NumPy في "Numpy لمستخدمي Matlab". وتوضيح هذه المساحات الأربع بوضوح يجعل التوثيق أكثر وضوحًا.

فجوة في قاعدة المعلومات/الاحتياجات التي لم تتم تلبيتها

تتناول الوثائق الحالية العديد من الموضوعات الضرورية، ولكنها تفتقر إلى التمييز الواضح بين البرنامج التعليمي وطرق التنفيذ والشرح والمساحات المرجعية. ويؤدي ذلك إلى إرباك المساهمين المحتملين. يمكن أن يشعر المستخدمون الجدد بالارتباك من خلال الشرح والمواد المرجعية الموجودة في قسم البرنامج التعليمي، ويواجه المساهمون المحتملون عقبات للمساهمة. أقترح تخطيطًا يمكن الوصول إليه على المستخدمين الجدد والمساهمين المحتملين في التوثيق من خلال تدفق منطقي في التوثيق وإدارة طلبات السحب لمستندات التعليمات التي يساهم بها المستخدمون من خلال مساهمين جدد. هدفي على المدى الطويل هو بناء مجتمع التوثيق بحيث يكون التعلم من الوثائق تجربة تعليمية وتبادلية. يساعد نموذج التوثيق هذا في توفير تجربة تعليمية للمستخدمين الجدد والمساهمين المحتملين.

الأسباب

يُعد اقتراح صيف "مستندات Google" هذا مهمًا لتحقيق أهدافي التربوية والمهنية. أستخدم NumPy وSciPy في جميع دوراتي التدريبية. يصعب على الطلاب التنقّل في المستندات الحالية. أريد الاستفادة من خبرتي في تعليم التخصصات غير التابعة لعلوم الكمبيوتر كيفية الترميز للمساعدة في تنظيم البرامج التعليمية الحالية وتحريرها وسدها. بعد ذلك، يمكنني استخدام الوثائق ككتاب مدرسي ومواد مرجعية لدوراتي التدريبية. أنشأت العشرات من البرامج التعليمية والتمارين والأمثلة باستخدام لغة البايثون و. أريد تحويل بعض هذه المواد إلى دروس تعليمية. لدي أكثر من 800 طالب يستخدمون مكتبة NumPy (كجزء من حزمة ساي باي) وهناك العديد من الطلاب المهتمين بأن يصبحوا مساهمين في الوثائق للفصل الدراسي الخريف. أدرس في جامعة كونيتيكت للهندسة الميكانيكية لمدة 4 سنوات ودرّبتُ ما يزيد عن 30 ساعة دراسية من الدورات التدريبية.

أهداف محددة

لديّ ثلاثة أهداف محددة لهذا العرض لموسم صيف العام من Google: 1. تنظيم الوثائق الحالية، 2. تعديل البرامج التعليمية الحالية (دليل المبتدئين وإنشاء المصفوفة والفهرسة والجبر الخطي ومكتبة NumPy لمكتبة ماتلاب) لنقل المعلومات المرجعية إلى مساحة الشرح، 3. تصميم المواد الإرشادية مع الطلاب كل هدف محدد له نتيجة متوقعة للاقتراح.

تهدف هذه الأهداف الثلاثة المحددة إلى جعل الوثائق أكثر ترحيبًا بالمستخدمين الجدد وتوفير بنية للمساهمين المحتملين. وتساعد الأهداف أيضًا في تعزيز الهدف الطويل الأمد المتمثل في مواصلة تنمية منتدى توثيق NumPy. النتائج المتوقعة

لديّ ثلاث نتائج متوقعة على النحو التالي: 1. صفحة ويب منقحة تفصل بين المساحات الأربعة بوضوح: البرامج التعليمية، وإرشادات طريقة التنفيذ، والشرح، ومرجع، 2. دروس تعليمية جديدة لـ: قراءة الصفائف وكتابتها، وإنشاء الصفائف (np.zeros وnp.ones وnp.block وما إلى ذلك)، وعملية الجبر الخطية مقابل العناصر في NumPy، و3. مساحة الكيفية المنظمة.

ستساعد هذه النتائج المتوقعة المستخدمين الجدد في التقدم من خلال المستندات، وتزويد المساهمين المحتملين في الوثائق بأنماط وتنسيقات واضحة، وجعل البرامج التعليمية الحالية أقصر وأسهل في المتابعة، ونقل التفسيرات إلى قسم منفصل، وسيتمكن المساهمون الجدد في الوثائق من المساهمة بحالات استخدام بسيطة في قسم طريقة التنفيذ بدون إنشاء وثائق Sphinx كاملة. نريد الاستمرار في بناء منتدى التعليم والتعلُّم لدينا.

يمكن للمساهمين الجدد في الوثائق المساهمة بحالات استخدام صغيرة لملايين المستخدمين بدون إنشاء وثائق Sphinx بالكامل. نريد الاستمرار في بناء منتدى التعليم والتعلُّم لدينا. ستحاكي هذه الوثائق المقترحة الوثائق الحالية مفتوحة المصدر مثل مكتبة مات بلوت ليب وDivio وغيرها. وسيحصل المستخدمون الجدد والمساهمون المحتملون على وقت أسهل في تعلم كيفية تطبيق NumPy في مجالاتهم وبرامجهم.

الجدول الزمني للمشروع هو 9/14-11/30. الخطوة الأولى هي بناء الوثائق والمحتوى المنفصل في البرامج التعليمية الحالية إلى محتوى تعليمي وإرشادي ومحتوى توضيحي. سيتم تنفيذ ذلك في الأسابيع الخمسة الأولى من المشروع كجزء من النتيجتين 1 و2 لمراجعة موقع الويب والبرامج التعليمية، على التوالي. يتم عرض مؤسسة الوثائق المقترحة في الوثائق المقترحة أدناه.

الوثائق المقترحة:

i.Tutorials:

  • الأساسيات المطلقة للمبتدئين (إزالة التثبيت، هل يمكن استبدال الاستيراد/التصدير في pandas بـ numpy.loadtxt؟)
  • رابط إلى "ما هي مكتبة نامبي"
  • رابط يؤدّي إلى تعليمات التثبيت الأساسية من هنا
  • دليل البدء السريع (تهدف إلى متابعة برنامج بايثون التعليمي )
  • استخدام صفائف NumPy
  • إنشاء صفيف (np.zeros وnp.ones وnp.block وما إلى ذلك) (كتابة: أولوية متوسطة)
  • العمليات القائمة على العناصر (+-,*,/) وعمليات الجبر الخطية (+-,@, linalg.solve) (كتابة:أولوية متوسطة)
  • قراءة البيانات وكتابتها باستخدام Numpy (اكتب: أولوية عالية)
  • الفهرسة

ii. الإرشادات:

  • مفهوم الجبر الخطي في صفائف الأبعاد ذات الأبعاد المختلفة (أحب تعديل العناوين والأوصاف وربما تغيير العنوان إلى "معالجة الصور باستخدام الجبر الخطي في Numpy")
  • رابط لمحتوى تعليمات numpy-tutorials (العمل المستمر)

iii. الشرح:

  • أنواع البيانات
  • وحدات الإدخال والإخراج باستخدام Numpy
  • الفهرسة
  • البث
  • تبديل البايت
  • الصفائف المنظَّمة
  • كتابة حاويات صفائف مخصّصة
  • فئة ndarray الفرعية
  • خيارات متنوعة

iv. المساحة المرجعية:

  • مسرد المصطلحات
  • مرجع Numpy API
  • Numpy لمستخدمي Matlab (جدول التكافؤ هو جدول مرجعي رائع، لكن مناقشة الصفيف/المصفوفة تشتت الانتباه وتبدو متوقفة)

عند الانتهاء من موسم المستندات هذا من Google، أقترح النتائج التالية:

  • صفحة ويب توثيق منقحة تفصل بوضوح بين المساحات الأربعة: البرامج التعليمية والإرشادية والشرح والمراجع
  • برامج تعليمية جديدة حول: إنشاء الصفائف (np.zeros وnp.ones وnp.block وما إلى ذلك)، والعمليات المتعلقة بالعناصر (+-،*،/) وعمليات الجبر الخطي (+-,@، linalg.solve)، وقراءة البيانات وكتابتها باستخدام Numpy (أولوية عالية)
  • تقديم مستندات إرشادية لزيادة مساهمات المستخدمين والمساعدة في تعزيز أهداف المجتمع في ما يتعلّق بالتعليم والتعلُّم

تحتوي كل نتيجة على عدد من الخطوات الموضحة أدناه في الجداول للنتائج 1-3. بينما يتم إرسال الوثائق المقترحة للمراجعة، ستتم كتابة البرنامج التعليمي ذي الأولوية العالية "صفائف القراءة/الكتابة" لإرساله كطلب سحب كجزء من النتيجة 2. أثناء مراجعة موقع الويب المنقح وتحديث البرنامج التعليمي "القراءة/الكتابة في الصفائف"، سأبدأ في كتابة برنامج تعليمي لإنشاء الصفائف باستخدام دوال NumPy، على سبيل المثال: np.ones, np.zeros, np.diag. سيتم استخدام الوقت المتبقي للاستجابة لمشكلات الطلب والبدء في كتابة البرنامج التعليمي المرتبة 3: عمليات الجبر الخطية من حيث العناصر في بايثون.

النتيجة الثالثة هي تقديم المشورة للطلاب في جامعة كونيتيكت لبناء الوثائق في مستودع numpy-tutorials. ستكون المستندات التعليمية أو الإرشادية التي يتم إرسالها عبارة عن أداة كمبيوتر جوبيتر نوتبوك التي تستخدم نمباي لحل المسائل الهندسية. سأستخدم بعض ملاحظات/أمثلة الدورة التدريبية لتقديم نموذج دفتر ملاحظات. أنصح الطلاب باتباع التخطيط والهيكل بينما ننشئ قالبًا ومخططًا للإطارات. تقدّم هذه النتيجة تجربة صادقة للطلاب من أجل إيصال المفاهيم والحلول إلى جمهور أوسع. وهو فرصة رائعة للطلاب للمشاركة في مجتمع NumPy والتعلم.

النتيجة 1: مراجعة تاريخ التسليم لموقع الويب المستودع الشعبي ومستندات الإنشاء مع Sphinx 9/21 إنشاء صفحة ويب باستخدام فورسكوير 10/1 نقل البرامج التعليمية الحالية إلى المساحات المناسبة وإنشاء المستندات 10/10 إرسال العلاقات العامة إلى github مع التغييرات المقترحة 11/1 الاستجابة للتعليقات/الاقتراحات 1/1 الموقع الإلكتروني المنقح 10 موقع الويب المنقح 3

النتيجة 2: مراجعة البرامج التعليمية التاريخ المُخرَج مراجعة ترتيب مراجعة البرامج التعليمية 9/21 فصل محتوى البرنامج التعليمي الحالي في مساحات الدليل التوجيهي والتوضيح 10/1 كتابة ترتيب 1: قراءة/كتابة صفائف 10/10 إرسال العلاقات العامة إلى github للفصل والمراجعة 10/20 كتابة الترتيب 2: الصفيف/عمليات الإنشاء PR3 الخطي 1/PR3

الترتيب المقترح لمراجعات البرنامج التعليمي (يخضع للتغيير وفقًا للمرشدين/المنتدى):

  1. قراءة/كتابة صفحة فارغة حاليًا في صفائف

  2. إنشاء مصفوفة (np.zeros، np.ones، np.block، إلخ.) غير موجود: سيساعد المستخدمين الجدد في توضيح وتوضيح الأدوات الشائعة لإنشاء/التفاعل في الصفيف

  3. عمليات الجبر الخطية وتلك المستندة إلى العناصر (+-,* و/ و+,-@,linalg.solve) غير موجودة: هذه مفيدة بشكل خاص بالنسبة إلى الرقم 1. مستخدمو Matlab و2. الأشخاص الذين يتبنون مفهوم الجبر الخطي (التعلُّم الآلي والانحدار الخطي وغير ذلك)

النتيجة 3: تاريخ تسليم مساحة طريقة التنفيذ، تاريخ التسليم، رابط خارجي(issue/example) إنشاء مثال على طريقة التنفيذ (المرشح: كيفية العثور على الترددات الطبيعية لأوتار الغيتار 10/20
إنشاء نموذج إرشادات للمساهمين الجدد 10/1 قيد التقدم نموذج الدليل التعليمي PR & Framing

الأهمية المتوقعة

سيؤدي هذا العرض لصيف مستند "مستندات Google" إلى إنشاء وثائق NumPy ، وملء البرامج التعليمية غير المتوفرة على الموقع الإلكتروني، والحصول على مساهمين في المستندات. بصفتي أستاذًا في الهندسة الميكانيكية، أخطط لتقسيم الوثائق بطريقة يتمكن طلابي من التنقل بين المستندات والعثور بسهولة على دروس تمهيدية في مقابل الأدلة العملية. الوثائق المقسّمة: تقدم البرامج التعليمية والإرشادية والمراجع والشرح أمثلة منظمة للمساهمين المحتملين لإنشاء موارد جديدة. تفسح الوثائق المقترحة نفسها عن طريق تبادل المعلومات بين الزملاء من خلال تجربة التعليم والتواصل للمستخدمين الجدد وذوي الخبرة. سيضع مستند التعليمات المقترح الذي يقدم المشورة مع طلاب جامعة كونيتيكت فكرة التعليم والتواصل هذه موضع التنفيذ. نريد أن يجد جميع المستخدمين مجالاً للتجربة والتعلّم والانضمام إلى منتدى NumPy.

المراجع

  1. تم الوصول إلى موقع NumPy.org الإلكتروني في 07/2020.
  2. مستودع NumPy GitHub.
  3. نظام التوثيق. تم الوصول إلى موقع Divio.com في 7/2020.
  4. ديوي، جون. الديمقراطية والتعليم. مشروع غوتنبرغ، آب (أغسطس) 2015.
  5. ديوي، جون. Quest for Certainty George Allen And Unwin Limited. 06/2005.