الأحد، 19 مايو 2019

تجربة السنة الثالثة (تخصص علوم الحاسب) في كلية علوم الحاسب و تقنية المعلومات في جامعة الإمام عبدالرحمن بن فيصل

بسم الله الرحمن الرحيم

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


مقررات المستوى السابع:

Algorithm Analysis and Design
Computer Organization
Software Engineering
Logic and Proof Techniques
Operating Systems

مقررات المستوى الثامن:

Computer Security and Privacy
Numerical Analysis
Human Computer Interaction
Web-based Systems
Language Theory and Finite Automata


تحليل وتصميم الخوارزميات | Algorithm Analysis and Design :
يتطرق هذا المقرر الى كيفية حل مشاكل في الحاسب مثل sorting and searching وغيرهم عن طريق خوارزميات معروفة، كل مشكلة ممكن لها أكثر من خوارزمية ولكن الفكرة هي باختيار أفضل خوارزمية من ناحية الوقت اللازم للحصول على الناتج والأداء والمساحة، وتتعلموا تحللوا كل خوارزمية ومدى كفاءتها. سيتم التطرق الى مفاهيم مثل الـ  divide-and-conquerو greedy algorithms وdynamic programming وغيرهم.
المقرر ممتع وبسيط، اعتقد أكثر ما أزعجني هو طريقة تقديم المقرر كانت العروض على طول تبدأ بشرح الخوارزمية والـ iteration عليها دون تفصيل او توضيح ماهي المشكلة؟ لماذا استخدمنا الخوارزمية الثانية بدل عن الأولى؟ طيب لماذا أساسا اٌوجدت هذه الخوارزميات؟ الكتاب موضح ذلك. كنت اقرأ المقدمة من الكتاب قبل المحاضرة عشان يكون عندي فكرة عن الموضوع.
المادة نظرية، ولكن فيها مشروع بسيط ما رح تبدون تشتغلون عليه الا بعد الانتهاء من نصف المقرر تقريبا، المواضيع على وقتنا كان اختيارها بالقرعة. عبارة عن خوارزمية، لها سؤال موجود في الكتاب تجاوبون عليه بتقرير بسيط والتطبيق للخوارزمية بأي لغة برمجة تفضلونها. 
لا يكاد يخلو اختبار قصير او نصفي او نهائي من هذا النوع من الأسئلة: الـ run time، tracing، كيف شكل الـ array مثلًا بعد هذا العدد من الـ iteration، كم قيمة المتغير الفلاني بعد هذا العدد من الـ iteration. اكيد من الصعب حفظ خوارزمية فيها عدة متغيرات وعدة loops or if statement لذلك أسهل طريقة من وجهة نظري كتابتها كخطوات او إيجاد pattern يساعد في الحل ويختصر وقت. انصح في هذا المقرر بطريقة سهلة لتجميع الأفكار: اوراق A4 تلخص كل خوارزمية طريقة الحل كخطوات و الـrun time .

معمارية الحاسب | Computer Organization  : 
هذا المقرر ممتع، سيتم التطرق فيه إلى هيكل الحاسب الآلي من RAM و CPU و Hard disk و كيف يتواصلون مع بعض وطريقة عمل كل وحدة منهم، بالإضافة الى لغة الـAssembly واللي تعتبر من الـ low-level languageالمقرر يحتوي على جزء معمل لطيف ولكن المزعج فيه كان لازم نسلمه في وقت المعمل او قبل نهاية اليوم! مما يسبب توتر لي في كثير من الأحيان. اشتغلنا على الأسمبلي في المعمل واستخدمنا برنامج MARS 4.5 بالبداية .


MARS 4.5
screenshot of MARS 4.5

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

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


 هندسة البرمجيات | Software Engineering :

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

المنطق وطرق الإثبات | Logic and Proof Technique :

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

نظم التشغيل | Operating Systems :

هذا المقرر هو مقرري المفضل من مستوى 7، رح تدرسون المفاهيم الأساسية لأنظمة التشغيل (OS) من وشو يتكون وكيف يشتغل، مفهوم الـ kernel، مفهوم الـ Threads ومفاهيم إدارة الذاكرة والطرق المختلفة لتقسيمها. المعمل كان بالبداية عن نظام Linux وتحديدًا Ubuntu تنزلونه على Virtual Machine اللي بدورها تشغل لك نظام التشغيل. 

UBUNTU
screenshot of Ubuntu


 شغلكم بيكون على الـ Terminal بالبداية بيكون أشياء بسيطة كيف تنقل ملف من مجلد الى مجلد اخر او تحذف ملف او تكتب في ملف، كيف تبحث عن pattern داخل ملف إلخ، حتى توصلون الى كيف تطبقون مفهوم الـ Threads وغيره من المفاهيم، وهذا استخدمنا فيه online C++ compiler لأن الطريقة اللي يتطبق فيها داخل Ubuntu ما ضبطت مع الكل. المقرر هذا اسئلته تتنوع بين الفهم والحفظ. كنت اكتفي بالعروض والملاحظات اللي ادونها اثناء المحاضرة ما احتجت الكتاب.

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

Buy Me a Coffee at ko-fi.com


سرية وحماية بيانات الحاسب | Computer Security and Privacy :

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

المشروع عبارة عن استخدام اداتين من أدوات الحماية، ليس كل الأدوات تندرج تحت الاختراق بل بعضها لجمع معلومات عن خادم او موقع او الشبكة. معظم الأدوات موجودة في نظام تشغيل Kali Linux (نفس مقرر الـ OSتنزلون نظام kali على VM) ولكن قد تواجهوا مشاكل في استخدام الأداة فبعض الأدوات ممكن استخدامها على windows عادي.

KALI
screenshot of Kali

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


ممكن في سؤال في بالك طيب كيف اختار الأداتين؟ بعد كم أسبوع من بداية الدوام رح يُرفع لكم وصف المشروع والأدوات وتختارون اداتين من مجموعتين مختلفتين ومرفق معه ملفين واحد يحتوي شرح للأداة والثاني tutorial بسيط.

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

التحليل العددي | Numerical Analysis :

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

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

MATLAB
screenshot of online MATLAB


بالنسبة لتنزيل البرنامج البعض استخدم torrent لتنزيل البرنامج بس إذا ما تفضل هذه الطريقة بإمكانك استخدامه online تجربة لفترة اعتقد شهر بس بما ان الفصل الدراسي مدته أطول ممكن كل شهر تتناوبون كون الواجب group workطبعا كان مسموح لنا نكتب القوانين فقط بدون امثلة في ورقة A4 وندخلها معنا في النصفي والنهائي ولكن في الاختبارات القصيرة كانت تعطى مع ورقة الاختبار.

اتصال الإنسان بالحاسب | Human Computer Interaction :

المقرر هذا لطيف ما بقول ممتع لأن اغلبه معلومات بديهية ولكن كأنه يحرص عليها أكثر، يهتم بجميع أنواع المستخدمين وكيف يتفاعلون مع الحاسب او أي جهاز\نظام قدامهم، ضمن مبادئ معروفة ومتفق عليها. في المعمل رح تصممون prototypes بسيطة نوعا ما، بالبداية استخدمنا برنامج balsamiq mockups 3 نوعا مًا البرنامج موب ذاك الزود من ناحية التفاعل والواجهات والايقونات. على نص الفصل الدراسي رح تستخدمون برنامج ثاني وهوAxure RP البرنامج التفاعل والواجهات والايقونات أقدر أقول (اكشخ) من البرنامج الأولي. المقلق بالموضوع ان كان لازم نسلمه نهاية وقت المعمل مع انه سهل بس يوتر نوعا مًا. كان فيه كم لاب تشتغلون ويكون تقييم فردي على عكس الباقي يكون جماعي.
المشروع اقدر أقول انه ابسط مشروع مر علي في حياتي الجامعية، تختارون نظام و تسوون له prototype ، المرحلة الأولى رح تكون تطبيق باستخدام balsamiq رح تسوون نسخة من النظام كموقع و نسخة كتطبيق جوال. المرحلة الثانية رح تسوونه ولكن باستخدام برنامج Axure وبيكون فقط نسخة واحدة كموقع، تكتبون تقرير يكون اغلبه تجميع لما سبق مع إضافات صغيرة.
الواجبات كانت بسيطة وممتعة مثل تختارون موقع وتقيمونه بناء على مبادئ معروفة او أسئلة وتجابون عليها.

النظم المبنية على الويب | Web-Based Systems :

هذا المقرر رح تتعلمون عن اللغات المستخدمة في بناء المواقع واللي هي: HTML  - CSS  - PHP  - JavaScript بالإضافة الى ربطها بقاعدة بيانات  MySQL عن طريق phpMyAdmin . المقرر ممتع رح تتطرقون لكل وحدة منهم بالتفصيل في المحاضرة، وفي المعمل أوراق العمل شغل جماعي عبارة عن صورة لصفحة او عدة صفحات ويطلب منك تسوي مثلها كل وحدة تمثل مفهوم معين، عندك أسبوع تشتغل عليها وترفعها وهذا بيكون كفيل بتثبيت المفاهيم. بالنسبة لي ولمجموعتي كنا نفضل نخلصها بنفس اليوم او بأسرع وقت لأن بعدين رح ننشغل. كنت أفضل بالنسبة للمعمل ان اقرأ المحاضرة قبلها في طريقي للجامعة او وقت البريك كمراجعة سريعة وثم ابدأ اشتغل. كويزز المعمل كانت جماعية ومفتوحة، يعني نفس مجموعتك اللي تشتغلين معهم للتسليمات الأسبوعية رح تختبرين معهم وبإمكانكم فتح أي مصدر تبونه من العروض حتى الأنترنت، وهذا أكثر شيء أقدره في هذا المقرر.
المشروع عبارة عن موقع تسوق الكتروني وهذا ثابت وأنتم بس تختارون السلعة، رح تسلمونه على مراحل وسيتوضح لكم كل التفاصيل بملف واحد واقرأوه بتركيز لأن كل شيء مطلوب موضح بالتفاصيل. ما كان عندي طريقة مذاكرة محددة ولكن انصح تخصصوا وقت كافي لمراجعة أسئلة الـTest bank كان يجي منها.

نظرية اللغات | Language Theory and Finite Automata :
هذا المقرر ممتع، رح تتعلمون كيف تسوون grammar لأي language، مثلًا من معرفتي بـgrammar معين رح اكتب language تنتمي او تحقق هذا الـgrammar، و ممكن العكس. رح تتطرقون الى أنواع الـ languagesوهم ثلاثة أنواع و كل نوع يتبع أي grammar و كيف تثبتون الـstring انه ينتمي الى لغة او لا، حدود كل لغة منهم، هكذا الى ان توصلون الى موضوع محبب بالنسبة لي و هو الـTuring Machine ، حدود آلة تورنغ و المسائل التي لا يمكن تحديد اذا هي قابلة للحل من قبل الآلة او لا. استخدمنا الstate diagram بكثرة في هذا المقرر.
المشروع بسيط وعبارة عن 3 مراحل ما يأخذ وقت كل تسليم طالما إنك فاهمة، كل تفاصيله موضحة في ملف واحد، البرنامج المستخدم ربما تحتاجوا وقت قصير للتعلم على طريقة استخدامه وتنزيله.
كطريقة مذاكرة كنت اتدرب على اختبارات الأعوام السابقة والأسئلة اللي حلينها في المحاضرة وبعدها أجرب اتدرب على أسئلة من الانترنت.

(بتجاوزك لمقررات المستوى الثامن (عدا التدريب التعاوني) تكوني أنهيتِ 122 ساعة)

 

التدريب (التعاوني) العملي | Practical (Co-op) Training :
خلال الفصل الدراسي سيتم ارسال نموذج لتعبئة البيانات وإذا ما كنتِ تفضلي مكان نسائي او مختلط وما الى ذلك، بعدها بفترة سيتم ارسال قائمة بأسماء الشركات وتزويدك بخطاب التدريب عن طريق الايميل، طبعًا الدفعة عددها كبير فحاولي تدوري لنفسك مكان تدربي فيه وقدمي من نفسك في حالة الفرصة التي توفرها الكلية ما عجبتك لأي سبب كان، وبنفس الوقت الكلية مسؤولة عن توفير فرصة تدريبة واحدة لك بس إذا رفضتيها الكلية تخلي مسؤوليتها من توفير فرصة أخرى. وعلى أخر الفصل الدراسي رح يتم عمل اجتماع يعلمونكم فيها بتفاصيل أكثر عن المطلوب منكم خلال التدريب والمشرفين وغيره.


***

مواقع\أشياء مفيدة

* بالنسبة للـAlgorithm هذا الموقع افادني أحيانا بالشرح و أحيانا اخرى بالأمثلة.
* بالنسبة للـsoftware engineering تحديدا و باقي المقررات اللي تطلب تقرير او واجبات كتابية اللي افادني ان استخدمنا Google Drive لمشاركة الملف اللي نشتغل عليه و كلنا نقدر نكتب بنفس الوقت و نطلع على جزئيات بعض ولكن عيبه انه يخرب تنسيق الملف لما يتنزل على الجهاز.
* بالنسبة للـHCI المرحلة الأولى من المشروع اشتغلنا مع بعض ونعدل ونتناقش عن طريق الـbalsamiq cloud يمديكم تشتغلون مع بعض و تسوون مشاركة لباقي أعضاء المجموعة.
* بالنسبة للـAutomata افادني هذا الموقع فيه شرح و مسائل متنوعة مفيدة للتدريب قبل أي اختبار، بالإضافة إلى NESO ACADEMY كشرح.

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

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

"ومنْ لم يذق مرَّ التعلمِ ساعةَ، تجرَّعَ ذلَّ الجهل طولَ حياته."

كل الضغوط بمختلف أنواعها اللي بتمروا فيها هي ضرورة بتساعدكم في المستقبل فكونوا شاكرين لها.
موفقين جميعًا :)

Buy Me a Coffee at ko-fi.com

تمَت

 

ترغب بقراءة المزيد؟