مدونة مؤيد
غيّر العالم ... أو العب بعيداً

غيمة الأوسمة

    آخر التعليقات

    ملخص التعليقات

    قائمة الصفحات

      رغم أشواك الطريق، الورود تملأ المكان…
      التوقيت 12 تموز 2010 10:16 م بقلم الكاتب مؤيد مارديني

      لا أعرف لماذا خطرت على بالي مقالة عبدالله المهيري بعد كل هذه السنوات، تدوينة التلفاز عدونا الأول التي كتبها تروي لنا أرقاماً مبكية، فهي تخبرنا بمدى الوقت الذي يهدره العرب على التلفاز. أرقام مذهلة ينبغي أن نتأمل فيها، وأن نتأمل كيف أننا ندمر أمتنا ومستقبل بلادنا بأيدينا! لو أننا حولنا نصف الساعات التي نضيعها على التلفاز إلى ساعات عمل لأصبحت أمتنا أمة أفضل في فترة وجيزة! تخيل مثلاً لو أنك حفظت في اليوم عشر كلمات من لغة أجنبية (وهو مالن يستغرق أكثر من ربع ساعة) طوال العشر سنوات الماضية، ستكون الآن قد تعلمت ثلاث لغات جديدة!

      ليست المشكلة في إضاعة الوقت فقط في الوقت الذي نضيعه ونحن نعلم أننا نضيعه، فأي إنسان عنده ذرة من الوعي أو الثقافة عليه أن يحس بالذنب (أرجو ذلك!!) إن جلس طوال اليوم وهو يشاهد التلفاز، ولكن هناك نوع آخر وأخطر من إضاعة الوقت، وهو الوقت الذي تحس بأنك تنجز فيه عملاً، ولكن هذا العمل وهذا الجهد المبذول ما هو إلا جهد ضائع غير مفيد. خطورته أنك ستحس بالإنجاز والإنتاج، ولكنك أهدرت وقتك فعلياً، هذه هي الفكرة التي تناقشها هذه المقالة الرائعة.

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

      Education is what remains after one has forgotten what one has learned in school. --Albert Einstein


      أرجو أن يكون توقيت هذه التدوينة مناسب، فمعظم الطلاب يقضون الآن اجازاتهم الصيفية وعندهم من الوقت الكثير والذي لا يُستغل منه إلا القليل جداً، إن كنت أحد المهتمين بالاستفادة من وقتك واجازتك فستجد هنا ما يفيدك حتماً...

      مقاطع الفيديو التعليمية:

      • Academic Earth: موقع يقدم تسجيلات فيديو لمحاضرات عدد من أرقى جامعات العالم، في مختلف المجالات وبشكل مجاني.
      • TeacherTube: موقع يحوي عدد كبير من المصادر التعليمية والتي تركز على عملية التعلم بحد ذاتها، سواءً أكنت معلما أم راغبا في التعلم فستجد فيه ما يفيدك في اختيار ما ستتعلمه وإعطاءك أحسن الطرق لتحقيق ذلك.
      • TED: يوتيوب الأذكياء كما يقول عنه أحد الأصدقاء :D، موقع يحوي عدد كبير من مقاطع الفيديو التي تناقش مسائل علمية وتكنولوجية واقتصادية وعالمية هامة.

       

      المقاطع الصوتية التعليمية:

      • iTunes U: خدمة المقاطع التعليمية من شركة Apple العتيدة.
      • Odeo: القسم التعليمي لموقع المقاطع الصوتية الشهير، Odeo.

       

      مواقع لتعلم اللغات:

      • Livemocha: موقع ذو شعبية كبيرة وواسعة باعتباره أضخم موقع لتعليم اللغات، يعتمد الموقع على مساعدة الناس لبعضهم البعض لتستطيع تعلم اللغة التي تريدها بمساعدة أحد المتكلمين الأصليين للغة.
      • BBC Languages: موقع تعليم اللغات من شبكة BBC العملاقة، موقع رائع يحوي مصادر تعليمية أكثر روعة.

       

      مصادر تعليمية متنوعة:

      • Open Culture: موقع فخم بكل المقاييس، يهتم بجمع وسرد المصادر التعليمية المجانية من الويب، يحوي الموقع قوائم كبيرة من الكتب والأفلام والبودكاست والكورسات ومقاطع الفيديو. وهم مفيد جداً لمن يرغب بتعلم إحدى اللغات. نقطة البداية الأولى إن أردت رأيي.
      • موقع DOAJ ـ (Directory of Open Access Journals): موقع يحوي أكثر من خمسة آلاف نشرة ودورية تتضمن ما يزيد عن 400 ألف مقالة تغطي جميع المجالات الأكاديمية.
      • Khan Academy: منظمة غير ربحية تهدف إلى توفير المصادر التعليمية مجاناً، للجميع.
      • لا يمكنني أن أختم هذه التدوينة دون أن أرفع قبعتي احتراماً لمقالة Technophilia: Get a free college education online. المقالة تحتوي عدد مثير للإعجاب من الروابط لدروس وكورسات مجانية من عدد من الجامعات المرموقة. وتعطيك نصائح لتجد المزيد بنفسك.

       

      Real education must ultimately be limited to men who insist on knowing, the rest is mere sheep-herding. --Ezra Pound


      الحمد لله، فرغم أشواك الطريق، الورود في كل مكان… إلى اللقاء قريباً...





      إنه لطريق طويل، ولكنك بدأته، وعليك أن تكمله، لا مجال للتراجع، التقدم هو خيارك الوحيد، رغم أشواك الطريق...
      التوقيت 04 تموز 2010 09:28 ص بقلم الكاتب مؤيد مارديني

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

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

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

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

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

      You are an uncultured idiot who could learn so much from having four years to do nothing but learn, but you won't get that immersion in culture if you study nothing but computers

       

      مقالة أخرى رائعة هي مقالة بعنوان 10 نصائح للانتقال من مطور مبتدئ إلى مطور متوسط، وهي مقالة ستساعدك أن تترك لقب مبرمج "مبتدئ" (إن كنت تعتبر نفسك من حملة هذا اللقب) وتنتقل إلى "متوسط" ثم "متقدم".

      يتحدث كاتب المقالة عن ناحية هامة، هي أن معظم المصادر البرمجية على الإنترنت تستهدف إما المبتدئين، كالمقالات التي تعلمك كتابة برامج Hello World، وإما المبرمجين المتقدمين، مثل معظم المجلات البرمجية ومنها مجلة MSDN والتي تحتاج إلى معرفة برمجية لا بأس بها لتستطيع فهمها. نفس الأمر ينطبق على الكتب، لا أحد تقريباً يهتم بتوجيه المبتدئ إلى عالم الاحتراف، لا أحد يمسك بيد المبتدئ ويساعده في صعود الدرج. هناك سوق للمبتدئين وآخر للمحترفين ولا أحد يهتم بوضع جسر يصل بينهما. لذلك تعرض تلك المقالة عشر نصائح، تصلح دليلاً للمبرمج المبتدئ الراغب بالتقدم بضعة خطوات إلى الأمام...

      أخيراً، هناك قسم مايكروسوفت للبحث العلمي، وهو يحوي مجموعة هائلة من الأوراق البحثية في العديد من المجالات، موقع رائع يحوي معلومات دسمة عن مختلف مجالات الكمبيوتر.

      إلى لقاء قريب في التدوينة السادسة إن شاء الله...





      إنه لطريق طويل، ولكنك بدأته، وعليك أن تكمله، لا مجال للرجوع – الجزء الرابع – مدخل إلى الخوارزميات وبنى المعطيات
      التوقيت 12 شباط 2010 08:54 م بقلم الكاتب مؤيد مارديني

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

      غالباً ما يغفل المبرمجون ذاتيو التعلم عن الدراسة العميقة للخورازميات وبنى المعطيات، وهو برأيي أهم ما يتركون تعلمه من مواضيع البرمجة، فعلى المبرمج أن يفهم جميع بنى المعطيات الأساسية وخوارزميات البحث والترتيب وغيرها من الخوارزميات المهمة ليحسن انتقاء المناسب منها عندما يحتاجه، فمثلاً من المعروف أن خوارزمية Bubble sort من أبطأ خوارزميات الترتيب ولكنك عند دراستها ستعرف أن هناك حالات معينة تكون هي الخوارزمية الأنسب والأسرع للاستخدام.

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

      أول كتاب أنصحك بقراءته إن كنت مبتدئ في مجال الخوارزميات هو Data Structures and Algorithms in Java، وهو - كما لابد أنك لاحظت - يعلمك الخوارزميات مترافقة مع بنى المعطيات، جمال الكتاب وبساطته في أنه يتلافى الدخول في تعقيدات تحليل الخوارزميات والغياهب الرياضية المرافقة لذلك، فيمكنك قراءة الكتاب لفهم مبادئ الخوارزميات وبنى المعطيات ثم تتعمق في دراسة تحليلها من الكتاب السابق. أنصحك بنفس هذا الكتاب إن كنت مبرمج #C، فرغم الاختلافات بين اللغتين إلا أن تشابه Syntax الكود سيجعل من السهل فهم الكتب لمبرمج #C، فلا يوجد أي كتاب خوارزميات بلغة #C يستحق القراءة، حتى لو وجدت أن دار النشر تتبع جامعة محترمة كجامعة كامبريدج، فستجد أن كتابهم #Data Structures and Algorithms Using C
      مليء بالأخطاء من كل الألوان، عار عليهم فعلاً! كتاب بديل عن الكتاب السابق بلغة ++C بدلاً من لغة Java هو ++Data Structures and Algorithms in C، وهو يدرس في أغلب الجامعات في منطقتنا وكثير من جامعات العالم، الكتاب بسيط الفهم وقوي المعلومات وهو كتاب جيد للبدء في تعلم الخوارزميات مثله مثل كتاب جافا السابق.

      بالإضافة إلى "معجم الخوارزميات"، أي كتاب Introduction to Algorithms، هناك العديد من المواقع التي تلعب دور "دليل" لسرد تفاصيل عن الخوارزميات وبنى المعطيات المختلفة، أذكر بعضها:

       

      من المواضيع الهامة عند دراسة الخوارزميات هو فهم الطريقة المسماة Big O notation المستخدمة لتحليل تعقيد الخوارزميات مما يسمح بمقارنة سرعة تنفيذها في الحالات المختلفة، من أبسط ما وجدته عن شرح هذه الطريقة هو A Beginners’ Guide to Big O Notation الذي يشرح الأمر باستخدام كودات بسيطة جداً، و Plain English Explanation of Big O Notation وهو شرح يعتمد على اللغة المجردة
      السهلة في إيصال الفكرة. طبعاً ستجد الكثير من الحديث عن الـO الكبيرة هذه في "معجم الخوارزميات" الضخم الذي ذكرناه مراراً اليوم، لذلك تأكد من فهم مبادئها قبل البدء بالخوض في الكتاب.





      إنه لطريق طويل، ولكنك بدأته، وعليك أن تكمله – الجزء الثالث – مدخل إلى علوم الحاسوب
      التوقيت 10 شباط 2010 07:37 م بقلم الكاتب مؤيد مارديني

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

      معظم الجامعات تبدأ تعليم طلاب كلية علوم الحاسوب CS مبادئ البرمجة عن طريق لغات برمجة غير حقيقية لا تستعمل في البرمجة اليومية، معظم هذه اللغات مطورة أصلاً لتعليم الأطفال مبادئ البرمجة، أشهر هذه اللغات لغة تدعى Scratch مطورة في MIT وتستعمل كمقدمة للبرمجة في عدد من الجامعات المحترمة أمثال Harvard و MIT نفسها، وهي لا تعتمد على كتابة الأوامر، بل تعتمد على السحب والإفلات Drag-and-Drop.

      تنتقل الجامعات بعد ذلك إلى إحدى لغات البرمجة الحقيقية، لغة Java أو C أو - مؤخراً - Python، باعتبارها لغات قوية ويمكن البدء باستعمالها بسرعة. لتعلم نفسك إحدى هذه اللغات لن تحتاج إلى الكثير، اختر أحد الكتب وستتعلم مبادئ اللغة بسهولة، سأذكر هنا الكتاب الأبرز والأسرع لتعلم مبادئ كل لغة من اللغات المستعملة في الجامعات :

       

      • Python: كتاب Python Programming for the Absolute Beginner هو الأشهر للبدأ بتعلم لغة Python، اللغة الفعالة القوية والسهلة بنفس الوقت، الكتاب لا يفترض أنك مبرمج سابق، فحتى لو كنت جديداً على البرمجة فيمكنك قراءة هذا الكتاب للبدء بتعلم البرمجة.
      • C: الكتاب العتيد والعتيق لتعلم لغة C هو C Programming Language، بالرغم من قدم الكتاب إلا أنه يبقى الكتاب المفضل لتعلم أساسيات لغة C بسرعة وسلاسة، كتاب رائع فعلاً.
      • Java: لم أقرأ الكتاب، ولكن كتاب Head First Java حظي بسمعة حسنة وشهرة كبيرة لتعليم لغة جافا للمبتدئين.
      • ++C: أغلب الجامعات تقوم بتعليم لغة C أو ربما Java قبل أن تنتقل إلى ++C. من كتب ++C الذائعة الصيت كتاب The C++ Programming Language، كون المؤلف هو مبتكر اللغة نفسه، Bjarne Stroustrup.


      ننتقل الآن إلى القسم الرائع من التدوينة (كما آمل أن تجده).

      محاضرات الكورس التعريفي Introductory-course بعلوم الحاسوب في جامعة هارفارد ويدعى Computer Science 50 ـ (CS50.NET) من إلقاء الأستاذ David J. Malan متاحة كمقاطع فيديو هي وجميع المواد المرافقة له للتحميل مجاناً، من موقع التحميل الخاص بالكورس CS50.TV.

      كذلك الأمر بالنسبة لكورس جامعة MIT، حيث يحوي موقع MIT OpenCourseWare الخاص بالجامعة على الكثير جداً من المصادر التعليمية المجانية لمئات الكورسات، والكثير منها متوفرة كمحاضرات فيديو بالإضافة إلى الملاحظات والوظائف والأوراق العلمية وأسئلة امتحانية وغيره، موقع رائع جداً يحبس الأنفاس إذا تذكرنا أن MIT هي إحدى أبرز الجامعات التقنية في العالم، ومن الكورسات المتاحة على الموقع والمتوافرة كمقاطع فيديو الكورس التعريفي بعلوم الحاسوب والبرمجة في MIT، ويسمى Introduction to Computer Science and Programming.

      من الجامعات التقنية العريقة أيضاً لابد أن نذكر جامعة Stanford، ولها موقع تعليمي مجاني مشابه لموقع MIT ويسمى Stanford Engineering Everywhere أو SEE اختصاراً، وفيه ثلاث كورسات تعريفية لمجال علوم الكمبيوتر، هذه الكورسات هي Programming Methodology وهو الأهم، ثم Programming Abstractions وأخيراً Programming Paradigms.

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





      إنه لطريق طويل، ولكنك بدأته – الجزء الثاني
      التوقيت 07 شباط 2010 11:41 ص بقلم الكاتب مؤيد مارديني

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

      أرفق هنا تلك القائمة لمن تهمه، قم بتحميل الملف من هنا أو من هنا.

      تعديل: أعطاني أحد الأصدقاء رابط قائمة منهاج كلية علوم الحاسوب في جامعة آل البيت في الأردن، ويمكنك الاطلاع عليها من موقع الجامعة.

      بالنسبة لجامعة دمشق وبقية الجامعات السورية التي تحوي كلية هندسة تقنية المعلومات Information Technology Engineering، يتلقى جميع الطلاب نفس المواد في السنوات الثلاثة الأولى من فترة الدراسة في الكلية، وهي خمس سنوات، ثم يختص الطالب في أحد ثلاثة مجالات، هذه المجالات هي هندسة البرمجيات Software Engineering and Information Systems، الذكاء الصنعي (أو الاصنطاعي كما يطلق عليه في بقية الدول العربية) Artificial Intelligence، وهندسة الشبكات والنظم Networks and Systems Engineering.

      بالنسبة لي، أجد أن هندسة الشبكات هي علم لتعمل به في شركة محترمة وتحصل على راتب محترم، وليست - بالنسبة لي مرة أخرى - علم أستمتع بدراسته والعمل به، ليس هناك تحديات عليك مواجهتها في هندسة الشبكات كتلك التي تواجهها في هندسة البرمجيات أو الذكاء الاصنطاعي.

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

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

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

      • علوم عامة: كالفيزياء والكهرباء والدارات الإلكترونية.
      • علوم البرمجة والمنطق: مبادئ البرمجة، البرمجة الكائنية التوجه، البرمجة المرئية Visual، الخوارزميات وبنى المعطيات، الدارات المنطقية، لغات البرمجة، هندسة البرمجيات، البرمجة التفرعية، المترجمات، برمجة قواعد البيانات.
      • الرياضيات وعلومها: وتشمل الإحصاء والجبر الخطي والجبر العام والتحليل الرياضي والعددي والاحتمالات، بالإضافة إلى بعض المواد كبحوث العمليات Operations research، واللغات الشكلية Formal languages.
      • ثقافة حاسوبية عامة: مبادئ أنظمة التشغيل، الأنظمة التفرعية، الشبكات، بنية الكمبيوتر، الاتصالات الرقمية، إدارة قواعد البيانات وقواعد البيانات التوزعية، نظرية المعلومات، مبادئ الجرافيكس والتصميم بمساعدة الحاسوب CAD، الذكاء الصناعي، أنظمة الملتيميديا.
      • مهارات عامة: مهارات التواصل، إدارة المشاريع والتنظيم الاقتصادي.


      لاحظ أن الدراسة في تلك الكلية تعطيك فكرة واسعة في كثير من المواضيع، وهذه الفكرة سطحية في كثير من الأحيان، وهناك كثير من المواد التي لا تفيدك في مستقبلك كمبرمج بشكل مباشر، أو لا تفيدك على الإطلاق، أي أنك تدرس في الجامعة مواد *لن* تهمك في حياتك المهنية، فمثلاً، لن يساعدك فهم أنصاف النواقل في أن تكون مبرمجاً أفضل، ولن يضرني عدم دراستها! ولكن -أعترف- ذلك يبقى ضمن مجال الثقافة التي ستبني قاعدتك العلمية كمهندس، ولكن من جديد، المبرمج ليس مهندس بالضرورة، فلن أضيع وقتي فيما لن يفيدني في البرمجة بشكل مباشر! باختصار، سيكون تركيزنا على البرمجة وعلومها وما يصب في مصلحتها، من فروع الرياضيات مثلاً، أليس هذا ما نحتاجه فقط في البرمجة؟ :)





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


      هذا السيناريو يتكرر كثيراً جداً، هناك الكثيرون ممن يعشقون البرمجة ثم لا يدرسون - لسبب أو لآخر - في كلية علوم الحاسوب CS (أو ما يطلق عليه، وبشكل غريب، هندسة المعلوماتية)، يبتعدون إلى كليات تقنية أخرى (كهندسة الإلكترون، الاتصالات، الحواسيب Computer Engineering، ...)، أو ما هو أبعد من ذلك، كليات هندسية غير تقنية (هندسة مدنية، تصميم معماري، ...)، أو ما هو أبعد من ذلك...


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


      هنا يتخذ صاحبنا القرار، لن أضيع كل ذلك الوقت الذي قضيته حتى وصلت إلى ما أنا عليه الآن، هذا الوقت الذي سأُسأل عنه مرتين يوم القيامة، مرة حين أُسأل عن عمري، ومرة أخرى حين أسأل عن شبابي، وكلاهما أمضيت قسماً لا بأس به منهما في "البرمجة"...


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


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





      ما الأخبار؟! الجديد في سيلفرلايت 4
      التوقيت 03 شباط 2010 03:03 م بقلم الكاتب مؤيد مارديني

      قبل أسبوع وصلتني رسالة من أخ من المغرب العربي يسألني عن تلك "الغيبة" الطويلة عن المدونة، راجعت تاريخ آخر تدوينة فوجدت أنها من خمسة أشهر تماماً! لقد تفاجأت فعلاً، لم أكن أتوقع أن كل تلك الفترة قد مرت منذ بدأت حالة الخمول التي مرت بها المدونة.

       

      هذا الأخ اللطيف أحد المتحمسين لتقنية سيلفرلايت، وهو يسألني إن كنت أنوي أن أتابع الدروس التي بدأتها عن تلك التقنية، والتي توقفت - أي الدروس - قبل عامين!! لم أصدق أيضاً، ثم وجدت أن آخر ما كتبت عن سيلفرلايت كان في الشهر الثاني من العام 2008، قبل سنتين تماماً، واجهت صعوبة في تصديق الأمر ثم أقنعت نفسي أن النصر هو لدورة الزمن!

       

      حسناً، إذن سنلخص أهم الأخبار التي حصلت خلال هذه الأشهر الطويلة التي مرت:

      - بعد أن طرح سيلفرلايت 3 بشكل نهائي في التاسع من يوليو \ تموز 2009، استمرت مايكروسوفت بطرح تحديثات دورية لهذا الإصدار، آخرها كان قبل أيام باسم Silverlight 3 GDR 3 وهو يحمل الرقم 3.0.50106.0.

      - أعلنت مايكروسوفت قبل حوالي أربعة أشهر عن سيلفرلايت 4، وطرحت منه النسخة Beta 1. في هذا الإصدار العديد من التحسينات الرائعة والتي تجعل المنصة منصة ناضجة متكاملة يمكن الاعتماد عليها، وهو ما لم يكن الحال عليه سابقاً لو أردت رأيي، هناك قائمة طويلة من الميزات الجديدة، سألخصها بـ:

       

      • البداية مع دعم اللغة العربية ودعم الكتابة من اليمين إلى اليسار في التطبيقات، بالإضافة إلى الكثير من تحسينات الـLocalisation.
      • تحسينات في التعامل مع البيانات عن طريق WCF، وتحسين ربط البيانات Data binding.
      • دعم متصفح غوغل الجديد، غوغل كروم.
      • دعم الطباعة.
      • دعم التعامل الكامل مع لوحة المفاتيح Keyboard في وضع ملء الشاشة Full-screen وتحسين التعامل مع الماوس بدعم الزر الأيمن وعجلة الماوس Wheel/Scroll.
      • تحسين الواجهات عن طريق تحسين المؤثرات الحركية Animation effects ودعم الـThemes لأدوات الواجهة Interface Controls، بالإضافة إلى تحسينات في بعض الأدوات وأبرزها الـDataGrid والـRichTextBox.
      • طريقة أكثر ملاءمة لعرض الرسائل والتنبيهات للمستخدم.
      • دعم التعامل مع المايكروفون وكاميرا الويب Web-cam.
      • دعم الحافظة Clipboard والسحب والإفلات Drag-and-drop.
      • دعم تعدد اللمس Multi-touch.
      • دعم MEF ـ (Managed Extensibility Framework) والذي سأتحدث عنه قريباً إن شاء الله.
      • دعم حماية محتوى H.264.
      • دعم التعامل مع عناصر COM المحلية (Local COM objects).

       

      هاه! أشعر بارتياح نفسي إذ عدت إلى التدوين، سأحاول أن أستغل هذه العطلة القصيرة بكتابة تدوينة كل يوم (لا وعود هناك ابتسامة).

       

      تعديل: من الطريف أن السطر الأول من التدوينات المتعلقة التي أظهرها برنامج المدونة هو "في البداية أعترف أنني مهمل فيما يتعلق بالتدوين، لقد مضى وقت طويل منذ أن كتبت آخر مرة، ولكنني سأقول لك - صادقاً - أنني مشغول بالدراسة وهذا هو السبب."

      سأكرر - صادقاً أيضاً - نفس الكلام، الدراسة هي السبب، تباً لها! غمزة





      هل ستدمر مايكروسوفت مشروع مونو؟
      التوقيت 04 أيلول 2009 12:21 ص بقلم الكاتب مؤيد مارديني

      مشروع مونو هو مشروع حر ومفتوح المصدر ينتج أدوات للمطورين تحاكي المواصفات القياسية لبعض تقنيات مايكروسوفت المنشورة ضمن جمعية مصنعي الكمبيوتر الأوروبية ECMA، فعلى سبيل المثال هناك Compiler للغة #C يخضع لمواصفات Ecma-334.

      يضيف هذا المشروع ميزة ثقيلة جداً لا توفرها أدوات مايكروسوفت الأصلية هي أن أدواته تعمل على العديد من الأنظمة (Cross-platform)، وتشمل الأنظمة التي يدعمها Linux, BSD, UNIX, Mac OS X, Solaris بالإضافة إلى نظام Windows الذي تدعمه أدوات مايكروسوفت طبعاً.

       

      المشكلة هي أن مونو اعتمد في بعض أجزائه (كـWindows Forms و ADO.NET) على تقنيات لم تشارك مايكروسوفت مواصفاتها مع جمعية ECMA واستأثرت بها لنفسها دون مجتمع المطورين، مما وضع مشروع مونو تحت مرمى نيران مايكروسوفت، والأغلب أن مايكروسوفت تستطيع أن تدمر مونو لو أرادت بدعوة قضائية بسيطة.

       

      ما صرح به ريتشارد ستالمان Richard Stallman، مؤسس مشروع GNU، هو أنه من الخطر الاعتماد على مونو في المشاريع البرمجية، كونه معرض للزوال بإجراء بسيط من مايكروسوفت، وقد لقي رأيه ضجة في أوساط مستخدمي مونو، وهو ما استجابت له مايكروسوفت بأنها وضعت مواصفاتها Ecma-334 (للغة #C) و ECMA 335 (للـCLI) ضمن وعدها للمجتمع، بأنها لن ترفع أي دعوة قضائية ضد أي شخص ينتج، يوزع أو يستخدم أي إصدار بديل لتقنية NET. عن إصدار مايكروسوفت الأصلي، والواضح من هذا أن كل ما تريده مايكروسوفت هو انتشار أكبر لتقنياتها في مجتمع المطورين، وهو ما يعني حتماً نفع وربح أكبر للشركة، فمشروع مونو يصب حتماً في فائدة مايكروسوفت، فلماذا عليها أن تحاربه؟ فجوابي الشخصي عن سؤال "هل ستدمر مايكروسوفت مشروع مونو؟" هو ببساطة لا، وهو ما يختلف عليه الكثيرون، فرغم هذا الوعد لم تطمئن منظمة البرمجيات الحرة FSF، وقالت في موقعها أن هذا الوعد فارغ ولا يحمي مونو ولا غيره، كون الوعد لا يشمل إلا بعض أجزاء مونو، وجددت تحذيرها بعدم الاعتماد على مونو، فهو سيظل عرضة لتدمير مايكروسوفت.

       

       

      [المصدر:ويكيبيديا]

       





      علّم أطفالك!
      التوقيت 22 آب 2009 10:33 ص بقلم الكاتب مؤيد مارديني

      قبل فترة طويلة ذكرت شيئاً عن تعليم البرمجة للأطفال، أعلم أن هناك الكثير من البيئات الجديدة والرائعة التي لم تذكر هناك، ولكن ليس هذا حديثنا.

       

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

       

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

       

      من الطرق التي أفضلها شخصياً هو استعمال مجموعات Lego Mindstorms (وأقواها مجموعة Mindstorms NXT) وهي مجموعات موجهة لفئات عمرية محددة تأتي مع قطع قابلة للبرمجة بالإضافة إلى محركات، حساسات (حساس شدة الإضاءة، الأمواج فوق الصوتية، الصوت، الضغط، ...)، بالإضافة إلى المسننات والمحاور و و و لتركيت روبوتات تقوم بأعمال متكاملة، بكل ما في الكلمة من معنى.

       

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

       

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

       

       

      موقع Lego التعليمي يحوي العديد من الأفكار والمشاريع والمنتجات المفيدة للأطفال، أنصح بزيارته.

       

      في النهاية، كل عام وأنتم بخير بمناسبة شهر رمضان المبارك، أعاده الله عليكم وعلينا وعلى الأمة الإسلامية بكاملها بالخير والبركة.





      انتهت اللعبة!
      التوقيت 22 تموز 2009 10:26 م بقلم الكاتب مؤيد مارديني

      كانت واحدة من أولى البطاقات الذكية Smart Cards والتي تستعملها المحطات التلفزيونية ذات الاشتراك المدفوع تسمى البطاقة H (اختصار لاسم Hughes)، كان في تلك البطاقة ثغرات في التصميم اكتشفت من مجتمع القراصنة Hackers.

       

      سمحت تلك الثغرات لمجتمع القراصنة ذاك بعمل هندسة عكسية Reverse Engineering للتصميم وعمل جهاز يستطيع أن يقرأ البطاقات الذكية ثم يعدل معلوماتها، مما سمح لهم بتغيير نوع اشتراكهم لاستقبال جميع المحطات. وبما أن المحطات الفضائية لا تستطيع إلا القيام بالبث، بمعنى أن جهازك لا يستطيع إرسال أي معلومات للقمر الصناعي، فقد احتاج نظام الاشتراك الخاصة بشبكة DirecTV (شبكة محطات فضائية كبرى في الولايات المتحدة، عدد مشتركيها 18 مليون) إلى خط هاتف لإرسال معلومات عبره.

       

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

       

      ما كان من مجتمع القراصنة إلا تركيب جهاز آخر يسمى Unlooper، لإصلاح الدمار، وبعد ذلك قام القراصنة بعمل برنامج لتعديل البطاقات وعدم السماح للمستقبلات Receivers بتطبيق التحديثات المستقبلة على البطاقات الذكية.

       

      لإجبار القراصنة على تطبيق التحديثات الجديدة، جعلت DirecTV التحديثات مطلوبة ليعمل البث، أصبحت ترسل تحديثاً جديداً في كل شهر تقريباً. ولكن بعد 10 أو 15 دقيقة فقط من إصدار التحديث، كان مجتمع القراصنة يقوم بتحديث برنامج بطاقاتهم لتعمل حسب التحديث الجديد، واستمر الحال على ما هو عليه لسنتين تقريباً، وكانت تلك البطاقات تباع في مزادات على eBay بمبلغ يتجاوز الـ400 دولار للبطاقة.

       

      أصبح من الواضح أن DirecTV خسرت المعركة ضد مجتمع القراصنة، فما كان منها إلا أن قنعت بملاحقة مواقع الإنترنت التي تناقش الثغرات في نظامها عن طريق فريقها القانوني ومحاكمتها لإيقافها.

       

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

       

      لم يستطع مجتمع القراصنة بأسره أن يفهم الغاية من تلك التحديثات حتى وصلت الدفعة الأخيرة منها عن طريق البث، فما إن تم تطبيق التحديثات الأخيرة حتى اكتملت الصورة، وكأنها القطعة الأخيرة من صورة Puzzle كبيرة.

      لقد جعلت التحديثات الأخيرة كل تلك الكودات التي بدت عديمة الجدوى برنامجاً فعالاً جداً، موجود على البطاقات نفسها، غيّر طريقة عمل التقنية المستعملة بشكل كامل و استطاعت DirecTV وبطريقة احترافية وشديدة البراعة والإتقان والتخطيط أن تقوم بتحديث تقنية تشفيرها التي ألفها القراصنة.

       

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

       

      في الساعة الثامنة والنصف مساء يوم الأحد، أطلقت DirecTV سلاحها الجديد، قبل أسبوع تماماً من مواجهة الـSuper Bowl، أحد أقوى لقاءات الهوكي في العالم. كان هجوم DirecTV على شكل كود تم إرسالها مع البث، وبفضل التقنية الجديدة تم تشغيله من قبل المستقبلات مباشرةً، ليقوم بتدمير جميع البطاقات الغير نظامية.

       

      جميع قنوات الـIRC التي تتحدث عن DirecTV غرقت في بحر من آلاف الرسائل من أناس فقدوا القدرة على مشاهدة قنوات DirecTV المسروقة، فقد فقدت جميع مجتمعات القراصنة القدرة على مشاهدة قنوات DirecTV بطريقة غير نظامية، وأصبحت جميع البطاقات الغير شرعية مدمرة تماماً. في تلك الليلة دمرت ما يزيد عن 100 ألف بطاقة مزورة مما حرم أكثر من 98% من المشاهدين الغير نظاميين من قنوات DirecTV.

       

      ولتختم DirecTV الحرب، قامت بإضافة لمستها الخاصة على تلك الضربة الساحقة للقراصنة، وذلك بتعديل أول 8 بايتات من كود البطاقات المزورة ليصبح “انتهت اللعبة” “GAME OVER”.

       

      جرت هذه الحادثة عام 2001، ولم يتم معرفة العقل العبقري الذي وقف ورائها حتى عام 2008، حتى تم معرفة أنه Christopher Tarnovsky عندما كشف عن ذلك موقع Wired.com والذي يقول أن ذلك الإجراء الدفاعي الذي قام به كريستوفر لصالح DirecTV مازال يعرف بين القراصنة باسم "الأحد الأسود"، بعد أن تم إرسال كود البرنامج الجديد على ما يزيد عن 50 دفعة خلال ما يزيد عن شهرين، يشبه هذا تجميع دبابة في ساحة المعركة المحاصرة بعد أن تنقل إليها قطعاً صغيرة.

       

      لم توقف تلك الضربة القراصنة طويلاً، حتى استطاعوا التغلب على نظام الحماية الجديد، ومازالت تلك المعركة مستمرة بين الطرفين، وللأبد.

       

      عن طريق Jeff Atwood.