Saturday, July 19, 2014

Tips for Computer Science Junior Students

Tips for Computer Science Junior Students

نصائح لطلبة علوم الحاسب المبتدئين






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


سوف أحاول في هذه المقالة كتابة بعض النقاط التي قد تساعد من يبحث عن اجابة لهذا السؤال:
  • طور لغتك الانجليزية
  • اتعلم البرمجة  و اتقن أحد لغاتها
  • تمرن
  • تعلم
  • ساهم

طور لغتك الانجليزية


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

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

أنت لست محتاج لأن تكون قادر على تحدث الانجليزية بطلاقة و لكن يكفي أن تكون قادر على فهم ما تقرأه أو تسمعه و أن يكون لديك القدرة على شرح أفكارك للاخرين باستخدامها.

ماذا أفعل ؟؟

  1. استعن بقاموس :D البدايات دائماً شاقة , لذا قد تجد نفسك مضطر ان تستعن بقاموس لفهم الكلمات الغامضة اثناء القراءة و لكن مع الوقت سوف يقل احتياجك له مع اكتسابك لمفردات لغوية جديدة دون أن تلاحظ ذلك. يمكنك ان تستعمل Google Translate لترجمة المفردات  (لا أرجح استعماله لترجمة المقالة كاملة ثم قرائتها بالعربية لانك هكذا لن تكسب مفردات لغوية جديدة) او الاحتفاظ ب shortcut ل قاموس الكتروني في شريط المهام ليكون في متناول يدك.
  2. استعمل ال English subtitles عند سماعك لمحاضرة الكترونية .. معظم مواقع التعليم الالكتروني ( مثلا Coursera) توفر نصا مكتوبا للمحاضرة , يمكنك استعمال النص المصاحب للمحاضرة المصورة ليسهل عليك فهمها و لمساعدتك في اكتساب مفردات جديدة.
  3. اقرا كتب أو روايات باللغة الانجليزية , اسكتشف الكلمات الجديدة ثم استعن ب النسخة المقروءة من الكتاب audiobook و استمع للجزء الذي قرأته عدة مرات . هذه أحد الطرق الفعالة في تنمية المهارات اللغوية.
  4. التحق بمركز تدريب جيد , اذا كنت تعرف أحد مدربي اللغة الانجليزية الذين تثق في كفائتهم.
  5. استعن بكورس الكتروني:  يوجد عدد من الكورسات الجيدة التي قد تساعدك في تنمية مهاراتك اللغوية منهم:
    • Tell Me More English
    • Effortless English
    يمكنك تحميل أحدهم و الاستفادة منه.
  6. مارس التحدث اللغة الانجليزية : مع مجموعة من الاصدقاء او عن طريق احد المواقع الالكترونية. هناك عدد من المواقع الالكترونية التي تقدم تبادل تعليم اللغات بمعني ان تساعد انت أحد الناطقين باللغة الانجليزية في تعلم اللغة العربية مقابل ان يعلمك هو اللغة الانجليزية , مثل هذه المواقع قد يساعدك في تطوير مهارة التحدث. من أشهر تلك المواقع:



تعلم "البرمجة" و اتقن أحد لغاتها



لكي تتفوق في أحدى لغات البرمجة عليك أن تتقن "البرمجة  نفسها أولاًً [1] . كما ترى في الشكل المرفق فان العديد ممن يعرفون لغات برمجة مختلفة لا يعرفون البرمجة  (كتابة تعليمات للحاسب لجعله يقوم بأداء وظيفة أو حل مشكلة معينة) .

يمكنك اعتبارتعلم لغة البرمجة كتعلم استخدام الشاكوش او المنشار مثلاُ ,, بينما تعلم البرمجة كتعلم النجارة , وحده فقط من يعرف النجارة و يعرف كيف يستخدم الأداة التي في يده سوف يكون قادراُ على تحويل قطعة الخشب الى باب او شباك.
فأي لغة البرمجة هي أداة يجب عليك أولا ان تكون قادرا على معرفة ماذا تريد أن تفعل بها و كما تقول Gayle Laakmann ( أحدى مسؤلي التوظيف في شركة Google سابقاً) فانه يجب عليك ان تكون "غير منتمي لأحد اللغات" و أن افضل المبرمجين لا يوصف نفسه بأنه مبرمج بلغة كذا  [2].

لكي تتعلم البرمجة فان عليك بالاضافة الى احتراف استخدام المكونات الاساسية ( conditions, loops, functions, recursion, etc.), دراسة الخوارزميات و تنمية مهاراتك في حل المشاكل باستخدام الحاسب كما سأتطرق لهذا لاحقاً.

من المفيد جدا أن تتعلم أحد اللغات بعمق بينما تكون متطلع على كيفية كتابة اللغات الاخرى و أحدث الخواص بها.
أنصحك بتعلم C++ أو Java فهم أكثر اللغات شيوعاًً.

ما هي الكتب التي يمكنني البدأ بها لتعلم لغة C++ :


  • أنصح بقراءة The C++ Language Tutorial فهي سلسة و بسيطة و تغطي تقريبا جميع اساسيات اللغة بالاضافة الى انها متاحة بشكل مجاني. أنصح بشدة أن تقرأها من البداية للنهاية مع تطبيق الأمثلة التي فيها بشكل عملي.

يمكنك أيضا قراءة هذه الكتب لدراسة اللغة بشكل أوسع و التعرض لأمثلة أكثر:
ثم يمكنك التركيز على تعلم مكتبة Standard Template Library (STL)  و قرائة بعض الكتب المتقدمة مثل
  • Effective C++
  • More Effective C++


تعلم






من الحقائق المؤسفة أن نظامنا التعليمي في مصر يعتريه بعض النقص . اﻷمر الذي يلقي بظلاله على المستوى العلمي للخريجين فقد يكون بعض الطلبة على رغم من اجتهادهم لم يدرسوا بعض المواد الأساسية بالكم و الكيف اللازم , او لم يدرسوها على الاطلاق !
و أحيانا اخرى ,  للاسف, يكون التقصير من جهة الطالب.

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



هذه القائمة تضم بعض المواد التي أرى أنه لا غنى لخريج علوم الحاسب عن دراستها و استيعابها جيدا : 

يمكنك أيضا زيارة المواقع الاتية للاطلاع على القائمة الكاملة للمواد المتاحة و الالتحاق باحدها:


تمرن




هناك مواقع تقدم بصفة دورية مسابقات برمجية يمكنك من خلالها تقييم و تطوير مهاراتك. يمكنك ايضا التمرن من خلال ممارسة المسابقات القديمة (المحفوظة على الموقع) و قرائة الحلول التي تم تقديمها من المتسابقين و من منظمي المسابقة.

من أشهر تلك المواقع: 
مسابقات برمجية في حل المشاكل

مسابقات في المهارات رياضية و برمحية
مسابقات في تعلم الالة (machine learning( و تعرف على الانماط


ممكن تشوف قائمة بالمواقع دي هنا:
14 Coding Challenges to Help You Train Your Brain


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


لو شفت مثلا ال rating history الخاص بكتير من ال أعضاء topcoder  سوف تلاحظ ان التقييم بيزيد مع الوقت

مثلاً : ده ال تقييم الخاص ب أحد الاعضاء  ذوي التقييم red (أعلى تقييم)
 http://community.topcoder.com/tc?module=MemberProfile&cr=22658932

 ومن الواضح انه على الرغم من ان تقييمه كان grey (أقل تقييم) سنة 2007,,مع الممارسة مستواه استمر للصعود الى ان وصل ل red ( أعلى تقييم) خلال 3 سنوات.



كيف أبدأ في ممارسة المسابقات البرمجية ؟

  • انضم لل ACM community في جامعتك, ان تواجدت, و شاركهم في التمرين او حاول تكون بنفسك مجموعة من اصدقائك لتتمرنوا معا.
  • المسؤلين عن تدريب ال ACM community في جامعة القاهرة اعدوا موقع يحتوي على قائمة بالمسائل ( متقسمة مستويات) و ايضا فيه فيديوهات بتشرح ازاي تشارك و ازاي تحل:  هتستفيد قوي لو حاولت تحل المسائل دي و تتفرج على الفيديوهاتhttps://sites.google.com/site/acmicpcfcicu/home
  • في كتب متخصصة عن المسابقات البرمجية, من المفيد الاطلاع عليها لمعرفة المهارات اللازمة و طرق الحل المختلفة . أشهرها:




ساهم



اذا أردت أن تطبق ما تعلمته في مشاريع فعلية و تحصل على خبرة و اضافة مفيدة في سيرتك الذاتية فقد تكون مهتماً بالمساهمة في احد المشاريع مفتوحة المصدر Open Source Projects

بالاضافة الى اكتسابك مهارات عملية في تنفيذ مشروع  و التواصل مع مبرمجين اخرين اكثر خبرة فانها لها أهمية كبيرة في سيرتك الذاتية عند التقدم لاحد الوظائف. كما قد يمكنك ايضا تحقيق عائد مادي اذا تم اختيارك للمشاركة في برنامج Google Summer Code .
يمكنك البدأ عن طريق اختيار احد المشاريع التي تثير اهتمامك على github ثم تحديد ما سوف تقوم بتنفيذه  مثلاً :حل احد المشاكل المتواجدة او اضافة ميزة جديدة .

للمزيد عن فائدة و كيفية المشاركة في المشاريع مفتوحة المصدر أنصحكم بقرائة المقالة التالية:




أتمنى أن أكون قد وفقت في وصف ما أراه مفيدا, و اذا كانت لديكم أية أسئلة او تعليقات على المحتوى فمرحباُ بها..

No comments:

Post a Comment