مشروع NumPy

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

ملخّص المشروع

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

وصف المشروع

مقدمة

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

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

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

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

الفجوة في قاعدة المعلومات/الحاجة غير المُلبّاة

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

الأسباب

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

الأهداف المحدّدة

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

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

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

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

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

الجدول الزمني للمشروع هو من 14 أيلول (سبتمبر) إلى 30 تشرين الثاني (نوفمبر). الخطوة الأولى هي إنشاء المستندات وفصل المحتوى في الأدلة التعليمية الحالية إلى محتوى تعليمي ومحتوى إرشادي ومحتوى توضيحي. سيتم تنفيذ ذلك في الأسابيع الخمسة الأولى من المشروع كجزء من النتيجةَين 1 و2، وهما مراجعة الموقع الإلكتروني والأدلة التعليمية على التوالي. تظهر بنية المستندات المقترَحة في "المستندات المقترَحة" أدناه.

المستندات المقترَحة:

i.Tutorials:

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

2. خطوات التنفيذ:

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

iii. الشرح:

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

4- المساحة المرجعية:

  • مسرد المصطلحات
  • مرجع واجهة برمجة تطبيقات Numpy
  • 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. يجب أن تكون الأدلة التعليمية أو مستندات التعليمات التي يتم إرسالها عبارة عن دفاتر ملاحظات Jupyter تستخدم NumPy لحل المشاكل الهندسية. سأستخدم بعض ملاحظات/أمثلة الدورة التدريبية لإرسال نموذج دفتر ملاحظات. سوف أنصح الطلاب باتباع التخطيط والهيكل أثناء إنشاء نموذج ونظام تأطير. توفّر هذه النتيجة تجربة حقيقية للطلاب للتواصل مع جمهور أوسع من خلال شرح المفاهيم والحلول. وهي فرصة رائعة للطلاب للمشاركة في مجتمع NumPy والتعلم.

النتيجة 1: مراجعة الموقع الإلكتروني تاريخ التسليم إنشاء مستودع فرعي وإنشاء مستندات باستخدام Sphinx 21/9 إنشاء صفحة ويب تتضمّن أربع مساحات محدّدة ومرتبطة 1/10 نقل الأدلة التعليمية الحالية إلى المساحات المناسبة وإنشاء المستندات 10/10 إرسال طلب إعادة نظر إلى GitHub مع التغييرات المقترَحة 1/1 الردّ على التعليقات أو الاقتراحات ومراجعة طلب إعادة النظر مستمر مع النتيجة 2 مراجعة الموقع الإلكتروني 30/11

النتيجة 2: مراجعة الأدلة التعليمية تاريخ التسليم مراجعة ترتيب مراجعة الأدلة التعليمية 21/9 فصل محتوى الدليل التعليمي الحالي إلى مساحتَي الدليل التعليمي والشرح 1/10 كتابة الترتيب 1: قراءة/كتابة الصفائف 10/10 إرسال طلب إعادة النظر إلى github للفصل والمراجعة 20/10 كتابة طلب إعادة النظر في الترتيب 2: إنشاء الصفائف 15/11 كتابة طلب إعادة النظر في الترتيب 3: عمليات الجبر الخطي والعنصري 30/11

الترتيب المقترَح لمراجعات الدليل التعليمي (يُرجى العِلم أنّه يمكن أن يتغيّر حسب رأي الخبراء أو المنتدى):

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

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

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

النتيجة 3: مساحة مُدارَة لكيفية إجراء الإجراءات تاريخ التسليم رابط خارجي(مسألة/مثال) إنشاء مثال على كيفية إجراء الإجراءات (خيار: كيفية العثور على الترددات الطبيعية لسلاسل الجيتار 20/10
إنشاء نموذج لكيفية إجراء الإجراءات للمشاركين الجدد 1/10 قيد التنفيذ نموذج البرنامج التعليمي للعلاقات العامة وصياغة المساهمات المحتملة العمل مع المساهمين الآخرين لإنشاء دفاتر ملاحظات حول كيفية إجراء الإجراءات لتجنيد طلاب جامعة كونيتيكت وأعضاء آخرين في المنتدى 1/7 الحالة: تمت الموافقة على العمل الدراسي وبدأت الطلبات في الوصول

الدلالة المتوقّعة

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

المراجع

  1. تم الوصول إلى الموقع الإلكتروني NumPy.org في تموز (يوليو) 2020.
  2. هو مستودع NumPy GitHub.
  3. نظام المستندات تم الوصول إلى Divio.com في 07/2020.
  4. دوي، جون. الديمقراطية والتعليم Project Gutenberg, Aug. 2015.
  5. دوي، جون. Quest for Certainty George Allen And Unwin Limited. 06/2005.