19 فبراير, 2011
ماهيّة التخصصات الحاسوبيّة ..
بواسطة: m7ammad7assan في: انتــ( نـــ ــت|تقنـ..يـّــ| ـت|جــ|معتيـــ..

قبل أن أكون طالبا في كلية حاسوبية كنت اتساءل كثيرا عن عن التخصص الأنسب لي وكنت لا أعرف ما هو التخصص الذي سأقرر الدراسة فيه؟ لأنني ببساطة لا أعرف الفرق بين التخصصات الحاسوبية وكانت فعلا عالما مجهولا بالنسبة لي ,وربما هي عالما مجهولا للكثيرين ومن هنا أحببت أن أتكلم عن هذا الموضوع لتنجلي هذه الغمّه ..
و أنت أخي الطالب لكي تكون قادرا على اتخاذ قرارك بأريحية لا بد أن تعرف مدى الفروق بين التخصصات الحاسوبية وماذا ستكون بعد أي تخصص قد تختاره ..
و في موضوعي هذا سأتكلم عن تخصصات الحاسب حول العالم ولن أركز النظر على جامعةِ معينة أو دولة معيّنة ومن هنا لا بد أن يعلم الجميع وخصوصا من لم يدخل بمرحلة الدراسة الجامعية أن التخصصات العلمية حول العالم ثابته ومتطابقة لحد كبير ولكن إن كان هناك فرق فالفرق سيكون بطريقة التدريس وطريقة تقديم المعلومة والكم المعرفي ربما يكون أكثر بقليل في الدول المتقدمة .. ولكن المعرفة واحدة .. وهذا لكي يطمأن الطالب المستجد أن المعرفة التي سيأخذها من جامعة “س” هي نفس المعرفة التي سيأخذها من جامعة “ص” ..
ولن أتطرق في موضوعي هذا عن المستقبل الوظيفي أو حاجات سوق العمل لأنه حتما تختلف بحسب الزمان والمكان , وايضا لا أحد يستطيع ان يفتيك بدقة بشأن هذا الموضوع .. فالأرزاق بيد الله والوظائف كثيرة ومتشعبة ولا أحد يعرف ما يحتاجه سوق العمل بدقه فمعرفة اي شخص مهما كانت خبرته تبقى محدوده امام ما يحتاجه سوق العمل , فربما تجد من يقول ان هذا التخصص غير مطلوب او ليس له أهمية في الدولة الفلانية وهذا الكلام كله هراء لأنه من غير المنطقي ان توضع التخصصات ويصرف عليها المبالغ الطائلة وهي بلا أهمية .
وكلامي هنا كله عن المعرفة والمعلومات التي ستنالها من خلال دراستك في أي تخصص حاسوبي .. وهذا الذي يهمك الان ان كنت فعلا تريد التعلّم .. وتريد النهوض بأمتك ..
أولا: عليك ان تعلم ان التخصصات المتعلقة بالكمبيوتر التي تدرس في الجامعات حول العالم هي خمسة تخصصات وهي:-
-هندسة الحاسب “CEN” أو “CE”
-علوم الحاسب “CSC” أو “CS”
- تقنية المعلومات “IT”
-هندسة البرمجيات “SEW” أو “SE”
- نظم المعلومات “IS”
قبل أن نبدأ بالحديث عن هذه التخصصات الخمسة عليك ان تعلم ما هو مفهوم الحوسبة الذي ستكون هي الموضوع الرئيس لكل من التخصصات الحاسوبية ..
الحوسبة هي مفهوم واسع نقصد به اية وسيلة صنعها الانسان لحل مشاكله حسابيا ..
وهذه الوسيلة ممكن أن تكون :-
- هاردوير .. _ المعالجات وبعض الدوائر الالكترونية مثالا على ذلك ..
- سوفتوير “برمجيات”.. _ الخوارزميات والبرمجيات مثالا على ذلك ..
من هنا أريد أن أخبرك أن كل التخصصات الحاسوبية .. الهدف منها هو تطوير الحوسبة و حل مشاكلها في كل النواحي سواء كان هذا التطوير “هاردوير” أو “سوفتوير” .. وأي تخصص لا يهدف الى تطوير الحوسبة فهو تخصص إما أن يكون استخداما للحاسب أو غير ذلك، لكن ليس تخصص حاسب ..
ثانيا: الى التخصصات..
أولا: هندسة الحاسب:-
هندسة الحاسب تخصص ظهر في الثمانينات وهندسة الحاسب تخصص مشتق من هندسة الكهرباء ! لأن الحاسب الآلي في الأساس تمت صناعته على أيدي مهندسي كهرباء فلما تطور الحاسب و ازداد تعقيده وخصوصا عند اختراع الترنزيستور في الخمسينات ونشوء الإلكترونيات .. أصبحت هندسة الحواسيب تشغل حيزا كبيرا من هندسة الكهرباء والإلكترونيات مما أدى الى تفرّعها من هندسة الكهرباء إلى مجال هندسي آخر يسمى هندسة الحاسب مستقلا بذاته .. ومرتبطا بنفس الوقت بالكهرباء ..
في هندسة الحاسب تتركز الدراسة على فهم الآلة وكيفية عملها وكيفية تكامل مكوناتها لأداء وظيفة معينة .. وحينما نتكلم عن آلة فنحن نقصد الآلات الإلكترونية التي تتضمن إما معالج MicroProcessor أو Processor هما نفس الشيء لكن في التخصص وعلميا يسمى MicroProcessor لأنه في السابق لم يكن المعالج بالحجم الذي نراه اليوم فلما صغروه بالتقنيات الحديثة وأصبح يضم عشرات الملايين من الترانزيستورز سمي MicroProcessor اي المعالج المصغّر ..
نعود لحديثنا عن ماهية الآلة التي ستدرس .. كما قلنا بعد إتمامك لهذا التخصص ستكون فاهما ومدركا لكيفية تصميم و والتحكم و برمجة و تكوين أية آلة الكترونية تتضمن MicroProcessor او MicroController لأن أية آلة تتضمن هذين الشيئين هي كمبيوتر في الحقيقة وليس الكمبيوتر هو فقط الكمبيوتر المكتبي أو المحمول الذي نستخدمه يوميا .. بل أنه حتى الآلة الحاسبة هي كمبيوتر .. وفي السيارة كمبيوتر .. وفي الروبوتات كمبيوتر .. وبعض ألعاب الأطفال هي كمبيوتر ..والهاتف النقّال هو كمبيوتر .. وفي الشاشات كمبيوتر .. وفي الثلاجات كمبيوتر .. وفي كل مكان تقريبا هناك كمبيوتر لكن تختلف هذه الكمبيوترات وتصنف بـ General Purpose او Specific Purpose اي انه هناك حواسيب تأدي وضائف عامة والمبرمج حرا في الوظيفة التي سيؤديها الحاسوب .. أو أنها تكون قابلة لأداء وظائف محددة فقط ومعينة مثل الـ embedded systems .. والطالب سيتعلم تصميم هذه الآلات بشكل منطقي بالرسوم ..وسيتعلم بناءها في المشاريع بشكل حقيقي لدراسته لبعض الكورسات المرتبطه بالكهرباء والإلكترونيات ..
وأيضا من اختصاصات هندسة الحاسب الآلي الشبكات computer networks من البداية وحتى الوصول الى مراحل متقدمة بحيث يبدأ الطالب بالشبكات المحلية واجزاؤها حتى يصل إلى مستوى شبكة الإنترنت وكيف يتم التراسل خطوة بخطوة وبعض البرمجيات التي تتدخل في أداء الشبكة وكيف تتم برمجتها حتى أن يصل الى الشبكات اللاسلكية وهي تعتبر جزءا متقدما من الشبكات يختص بها مهندسي الحاسب ..
يدرّس في هندسة الحاسب ..
- يتعلم الطالب في بداية مشواره طرق تمثيل البيانات Data Representation وبها يتعلم كيفية تمثيل الأرقام للحاسب , بطريقة تمكنه من تحويل الارقام الى قيم Digits من الممكن تحويلها إلى كهرباء وهي الـ 0و 1 في النظام الثنائي Binary representation بحيث تحوّل اي رقم في الكون الى سلسلة من الـ 0 و 1 فبالتالي من الممكن أن نعبر عن أي رقم نريده إلى لغة يفهمها الحاسب الا وهي الكهرباء , ثم يتعلم التصميم المنطقي وهو Logic design وهنا يتعرف الطالب على العمليات الأساسية التي تنفذ بواسطة الكمبيوتر التي من خلالها يبدا الطالب بفهم كيفية سير عمل الكمبيوتر ..
- يتعلم الطالب معمارية أو تركيب الحاسب بالتفصيل في Computer Architecture وكيف تحدث خطوات تنفيذ الأوامر بشكل منطقي ورياضي ويتعلم الكثير من مكونات الكمبيوتر ,MicroProcessors , Ram , Rom ,Buses ,Control Unit ,registers ,ALU وكيفية عملها رياضيا ومنطقيا .. ومعرفة الأوامر الاساسية لبرمجتها والتحكم بها بواسطة لغة الأسمبلي ..
-وأيضا يتعلم الطالب أساسيات الكهرباء .. والمكونات الكهربيّة الأساسية في تصميم الدوائر الكهربيّة .. ويتعلم الطالب أيضا أساسيات الإلكترونيات ربما يتساءل البعض من المبتدئين مالفرق بين الكهرباء والإلكترونيات .. هذا الفرق سيعرفه حينما يدرس في هندسة الحاسب وسيدرس أشباه الموصّلات .. Diode , Transistors وما يتعلق بها في صناعة الدوائر وحمايتها ..
- من ما يدرس الطالب وما يجب عليه أن يتقنه هو التمرن على لغات الآلة Machine Languages والطالب سيدرس لغة الاسمبلي Assembly language لبرمجة الحاسب وسيتعلم الأوامر Instructions set لعدة معالجات والقيود عليها وكيفية تفسيرها بواسطة المفسرات الـ Assemblers في كورسات Computer Orginization .. وذلك مهما في برمجة الكثير من الحواسيب والنظم المحتواه embedded systems و الروبوتات Robotics
- ويتعلم الطالب أيضا في منتصف طريقه بعد أن يصقل أساساته رياضيا وكهربيا ومنطقيا ايضا كيفية تصميم المعالجات MicroProcessors وكيفية ربطها بالأجهزة الأخرى مثل أجهزة الإدخال والإخراج في سبيل المثال و أي جهاز اخر تريد ربطه بالكمبيوتر لتتحكم به من خلال الكمبيوتر .. مثل ان تربط إضاءة الغرفة في الكمبيوتر وتصمم له برنامج في لغة الأسمبلي ومن ثم تتحكم به وبدرجة قوتها هذا مجرد مثال شيّق .. وهذا ما يسمى بالـ Interfacing ونقصد به القدرة على توصيل أي جهاز ممكن في الكمبيوتر .. والكمبيوتر هنا هو المعالج .. وهذه الإمكانيات تعتبر من الأركان بالنسبة لمهندس الحاسب ..
-يدرّس في هندسة الحاسب كورسات تتعلق بالإشارات signals و تحليلها وتصميم النظم التي تعطينا الإشارات التي نريدها من هذه النظم .. وكلمة النظم لا تعني البرمجيات فقط بل هي تتعدى ذلك لأننا نستطيع ان نسمي بعض الأجهزة نظماً .. والكورس المتقدم في الاشارات هو ما يسمى بالـ DSP او Digital Signal Processing وهنا يدرس الطالب الاشارات بشكل مرئي وعملي غير نظري فقط .. يدرس فيه مثل الفلاتر للصوت Filters وغيرها و الرادارات والشاشات ومعالجة الصور والرسوم والاتصالات وغيرها وكيف يتم الاتصال في كثير من اجهزة الاتصال ..
- في كورس هندسة نظم الحاسب Computer Systems Engineering يدرس الطالب كيفية بناء النظام ويتعلم دورة النظام من البداية بحيث يقوم بتحليل واستنباط المتطلبات او ماذا يجب أن يقوم به النظام .. ويقوم برسم النظام وحصر مكوناته ..واختبار النظام .. وتطويره .. ويدرس فيها ايضا ادارة المشاريع ..
-ومن كورسات هندسة الحاسب الاساسية هي الشبكات Networks وهنا طالب هندسة الحاسب يتناولها في عدة مستويات ومراحل .. بحيث يبدأ من كورسات أساسية تهتم في مكونات الشبكة المحلية والموسعة .. ويتطرق لشبكات الانترنت .. وبرمجياتها وحمايتها .. في كورس Computer Networks .. ويصل الى كورسات متقدمة مثل Data Transmission تتطرق الى الشبكات اللاسلكية والسلكية وكيف يتم التراسل فيها بشكل تفصيلي .. وايضا يدرسون الحوسبة الحوسبة المتنقلة واللاسلكية Wireless and Mobile Computing بحيث تتم دراسة الاجهزة مثل الراديو وبروتوكولات الاتصال اللاسلكية ..
- ايضا من الاختصاصات المهمة هو النظم المحتواه او embedded systems اي الحواسيب ذات الوظيفة المحددة ..وكيفية تصميمها وكيفية برمجتها وتلك الأجهزة مثل الالة الحاسبة ومثل الريموت كونترول ومثل المسجلات والكاميرات الخ والكثير من الاجهزة الإلكترونية ..
- يدرّس في هندسة الحاسب كورس الروبوتيكس Intelligent Systems and Robotics والنظم الذكية ..وهنا سيتعلم الطالب تقنيات الذكاء الاصطناعي المستخدمه في برمجة الروبوتات .. وايضا تحريك الروبوتات والدخول في تفاصيل الحساسات للألوان والابعاد .. والتحكم في الروبوتات عن بعد ..
- ومن الجيد أيضا في هندسة الحاسب أنه يتناول العديد من المهارات والمعرفة التي يتناولها المختص في علوم الحاسب .. مثل كورسات البرمجة Programming بمختلف انواعه مثل Object oriented Programming و يتعلم ايضا بعض المعلومات المرتبطة في تصميم الخوارزميات Algorithms ويدرس ايضا كيفية ربط البيانات وتركيبها في Data Structures ويدرس مهندس الحاسب من علوم هندسة الحاسب ايضا نظم التشغيل Operating Syss
ثانيا:علوم الحاسب :-
هذا التخصص هو تقريبا أول تخصص في الحاسب وهو متفرع من الرياضيات .. وكما قلنا أن الحاسب هو من صنع مهندسي كهرباء فتفرع منه هندسة الحاسب .. فتمثيل البيانات والجبر والمنطق والخوارزميات وأنظمة العد نتجت من جهود علماء الرياضيات ومن ذلك تفرع علوم الحاسب وأشد ما يركز عليه في علوم الحاسب هو بناء الخوارزميات لحل المشاكل الحسابية والمنطقية لذا فعلوم الحاسب من التخصصات التي تطور الحوسبة بالخوارزميات ..
في علوم الحاسب يكون التركيز على تصميم وتحليل الخوارزميات Algorithm design and analysis و استخدام البرمجة كطريقة لتمثيل واختبار الخوارزميات اذا هو لا يركز على البرمجة فقط بل يتجاوز ذلك ولكنه أحيانا يتطرق الى البرمجة على اساس أنه أداة لتمثيل الخوارزميات وليس المطلوب هو بناء البرنامج فقط .. واذا لم تكن تعلم ماهي الخوارزمية فالخوارزمية هي الخطوات المرتبة بترتيب محدد .. لحل مشكلة ما .. والخوارزميات تشاهدها في كل مكان حولك حتى خارج نطاق الحواسيب وانت تقوم بها ايضا .. فحينما تتوجه لبيت زميلك فأنت تتبع خوارزمية والخوارزمية هنا هي العنوان الذي استخدمته .. اذًا علوم الحاسب يقوم بتطوير الحوسبة من خلال بناء الخوارزميات الجيدة والسريعة والدقيقة وغير المكّلفة ..
مختصي علوم الحاسب يعملون على تطوير طرق فعالة لحل المشاكل وتصميم خوارزميات ذات دقه وسرعة وفعالية للوصول لأفضل الطرق الممكنة لتخزين البيانات ، ارسال البيانات عبر الشبكات ، عرض الرسوم المعقدة .وبإمكانهم الوصول لهذه الأهداف بحكم دراستهم للنظريات الرياضية و المنطقية وايضا دراستهم لتحليل وتصميم الخوارزميات التي تسمح لهم بتحديد الاداء الافضل للخوارزميات والتمييز بينها .
وبالإضافة الى بناء الخوارزميات فإن مختصي علوم الحاسب هم المسؤولون عن تطوير لغات البرمجة وهم الذين بنوها وطورها من لغات الآلة الى لغات ابسط للمبرمج في السابق وما زالوا يطورونها حتى وصلت الى ما وصلت اليه الان وتفرعت الى لغات متعددة ومترجمات متطورة Compilers ..
يدرّس في علوم الحاسب ..
- في علوم الحاسب يتناول الطالب مقدمات في البرمجة لكي يتعلم اساسيات البرمجه ومن خلالها ايضا يتعلم كيفية تصميم الخوارزميات البسيطة .. وذلك في introduction to programming .. وغالبا في هذا الكورس يبرمج الطالب بلغة السي و في البرمجة الشيئية .. Object oriented Programming .. سيبرمج بلغة السي بلص بلص وسيتمرّس عليها ..
- ايضا هناك كورسات مهمه في تصميم الخوارزميات مثل introduction to algorithms وفيها يتعلم الطالب خوارزميات كثيرة من خوارزميات الفرز Sorting Algorithms .. حينما تقوم بفرز سكان المنطقة بحسب رقم الهوية بسرعة البرق فاعلم ان خوارزمية الفرز سريعة جدا وهذا من اختصاص طلاب علوم الحاسب ..
وايضا خوارزميات البحث Searching Algorithms وكيفية تفاضلها على بعضها .. اذا اتصلت بالاستعلامات وطلبت منه رقم هاتف الشركة الفلانية واعطاك الرقم خلال اجزاء من الثانية وانت لا تشعر انه اوجد لك رقم الشركة من بين مئات آلاف الارقام .. ذلك كله بفضل خوارزمية البحث الجيدة التي يستخدمونها ..
- ويدرس الطالب ايضا مواد مرتبطه بالـ Graphics وكيفية تمثيل الاشكال على الشاشة وكيفية تصميم هذه الخوارزميات ودراسة بعض برامج الرسم لفهم الرسم بالحاسب ..
- تراكيب البيانات او Data Structures من العلوم الاساسية لدى كافة تخصصات الحاسب وهنا يتعلم الطالب كيفية تجميع البيانات بطرق مختلفة وكيفية الوصول اليها .. يتعلم الطالب كيفية تنفيذ المكدّس Stack و الطابور Queue بعدة طرق من خلال الـ Linked lists وغيرها وايضا سيتطرق لتنفيذ ما يسمى بالشجرة او ال Tree وخوارزميات الرسوم Graph Algorithms ..
في علوم الحاسب يدرس الطالب مفاهيم اساسية في انظمة التشغيل وكيفية التعامل معها .. في كورس Operating systems
- وايضا في علوم الحاسب يفهم الطالب كيفية بناء لغات البرمجة وكيف تمت وكيف تترجم في الكمبيوتر في كورسات عدة مثل بناء المترجمات Compilers وكيف تنقل الاكواد في لغة ما الى لغة الاسمبلي ومن ثم الى لغة الآلة 0 , 1 .. وكيفية تطورات لغات البرمجه وكيف اشتقت اللغات من بعضها ..
- هناك كورس يدرّس في علوم الحاسب يسمى برمجة النظم Systems Programming ويتمحور حول تصميم نظام تشغيل لآله معينه ..بحيث يدرس معالج محدد ثم تدرس لغة الاسمبلي الخاصه به ثم يصمم الاسمبلر او المفسر للغة الاسمبلي خاصته بكل تفاصيله ثم يقومون بتصميم الكيرنال لنظام التشغيل بمحتوياته الاساسية وبرامج الاقلاع والبوت ستراب BootStrab
- من الكورسات المهمة ايضا تحليل الخوارزميات Algorithm analysis وهنا يستطيع الطالب تحليل الخوارزمية أي معرفة الزمن الذي تحتاجه الخوارزمية لتأتي بالنواتج .. وهذا من صلب إبداع مختصي علوم الحاسب .. فقد تستخدم أحيانا برنامج في اصداره الخامس على جهازك وتكون له سرعه معينه وحينما تستخدم نفس هذا البرنامج في اصداره السادس تجد الفرق في السرعه كبير وواضح .. اعلم ن السبب حينها هو أن خوارزميات البرنامج تغيرت جذريا او جزئيا وهنا مكمن الإبداع ..
- ويدرس الطالب كورس الذكاء الإصطناعي Artificial Intilligance وهذا التخصص حسب ما يبدو لي أنه ليس بالسهل .. حينما تلعب لعبة شطرنج وتنافس الكمبيوتر ويغلبك عدة مرات وبكل محاولة تنبهر بتحرّكات الكمبيوتر غير المتوقعة .. اعلم حينها أن من قام ببرمجة هذه اللعبة هم المبدعين في عالم الذكاء الاصطناعي ..
ثالثا:تقنية المعلومات:-
ظهر تخصص تقنية المعلومات حينما أصبح الحاسب الآلي عمودا فقريا في الأعمال .. وسبب ظهوره هو دعم الأعمال بتصميم البرمجيات المساندة لها ونقصد بالأعمال شيء واسع يتضمن الشركات والوزارات والمؤسسات والجهات التعليمية وكل جهة تستعين بالحاسب لإتمام مهامها .. وتقنية المعلومات بحسب ما يبدو لي أنه تخصص يطور العمليات التي تتعلق بالأعمال ولا يطور الحوسبة بشكل مباشر بحسب رأيي .. لذا أرى أنه يحل مشاكل الانسان بالطبع لكن لا يهدف إلى تطوير الحاسوب بتسريعه او زيادة دقته او تقليل تكلفته او تصغير حجمه وانما يخدم الانسان ويحل مشاكله من خلال استخدام الحاسوب وبرمجياته ..اذا هو تخصص له علاقة بالإدارة والأعمال وخدمتها من خلال الحاسب لأنه لا يهتم بتطوير الحاسب والحوسبة كما هو الحال في بقية التخصصات .. ولا أقصد بكلامي تهميش تقنية المعلومات .. على العكس هو تخصص له قيمته الواضحة للجميع .. فحينما نتكلم عن الحكومة الإلكترونية فلا بد أن نعلم ان تقنية المعلومات هي الركن الاساسي في ظهور هذا المصطلح و أيضا التجارة الإلكترونية من اختصاصات تقنية المعلومات ..
في تقنية المعلومات يكون التركيز على بناء البرامج التي تخدم الأعمال بشكل عام بمختلف أنواع البرامج .. وفي تقنية المعلومات هناك اهتمام في تحليل النظم ونقصد بها معرفة ودراسة ما تحتاجه الجهة التي طلبت البرنامج من متطلبات لكي تنفذ في البرامج .. وتحليل النظم systems analysis من الأمور المهمة في هذا التخصص .. ومن المعلومات التطبيقية في تقنية المعلومات هو دراسة قواعد البيانات بتعمق شديد لأن معظم البرامج التي تنفذ من جهتم تعتمد على قواعد البيانات وهي جزءا مهما من برمجياتهم وخصوصا برامج الويب .. فتجدهم دائما ما يهتمون بقواعد البيانات بمختلف أنواعها وخصوصا قواعد بيانات Oracle التي يعتمد عليها في أغلب الشركات والمؤسسات الخ ..
ايضا تهتم تقنية المعلومات في الويب وتقنياته المختلفه .. وبرمجة التطبيقات الخدمية web Application على الويب والتمرس عليها في اكثر من كورس وهذا المجال اهميته ظاهرة للجميع ..
يدرّس في تقنية المعلومات ..
- يدرس الطالب في بداية دراسته بالإضافة الى كورسات الحاسب الأساسية التي يدرسها كافة الاقسام .. كورس اساسي في قواعد البيانات .. يناقش المبادئ الاساسية في تصميم قواعد البيانات Normalization وال ERD وغيرها لكي يتعلم تصميم قاعدة بيانات منطقية وبلا مشاكل .. وايضا يتخللها تعلم لغة ال SQL وهي لغة الاستعلامات المعروفة ..
- يدرس الطالب عدة مواد متقدمة في قواعد البيانات Oracle التي تستخدم على نطاق ..
- كما قلنا في بداية الكلام .. تحليل النظم Information Systems Analysis and Design
من المواد الاساسية في تقنية المعلومات ..
- هناك مواد تهتم ببرمجة الواجهات الرسومية Visual Programming تدرّس لطلاب تقنية المعلومات لأنه من اختصاصهم بناء البرامج .. يتعلمون فيها تصميم الواجهات وكيفية تحقيق مبدأ الـ usability اي التحكم في مدى سهولة استخدام النظام .. ويتعلمون ايضا كيفية ربط النظام بقاعدة بيانات سواءا كانت محلية او .. على الويب .. وربما يستمر ذلك في كورسين أو أكثر ..
- ومن الكورسات المهمة التي تدرس في تقنية المعلومات كورس يتعلق في فهم المفاهيم الحديثة والتطبيقية في برمجة التطبيقات التي تستخدم عمليا وفي الواقع وهذه المفاهيم ستدور حول فهم المشاكل وتحليلها ورسم الحلول لها وتنفيذ الحلول وتوثيقها ومن ثم عرض وتقديم ما تم تنفيذه .. وذلك في Modern Concepts of Application Programming وهناك ايضا بعض المشاريع التي ستنفذ على ايدي الطلبه ..
- Data Mining من المواد التي تعنى بعملية استخراج البيانات بفاعلية من مخازن للبيانات
data warehouses و قواعد البيانات Data Bases الضخمة .. بحيث سيتعلم الطالب الكثير من الأدوات التي تستخدم في الـ Data mining وخاصة تلك الادوات المستخدمة في الانترنت ..
- بحكم أن تقنية المعلومات مرتبطة بقطاعات الاعمال لذا من المهم أن يكون لديهم القدرة على التواصل مع الاخرين ومهارات الاتصال والعرض والتقديم .. وذلك مهم لاسيما اذا اراد المبرمج ان يعرض البرنامج لجهة ما او اذا اراد تقديم عرض لأي جهة .. وذلك يدرّس في Communication skills
- التعلم بواسطة الحاسب Multimedia Data Management كورس يدرّس لطلاب تقنية المعلومات .. ويهتم ببناء البرمجيات وتصميم الوسائط سواء كانت صوت أو صورة .. من أجل الأغراض التعليمية ..
- كما قلنا في بداية الكلام عن تقنية المعلومات .. أنه من اختصاصها التجارة الإلكترونية Electronic Commerce Systems وهذا الكورس يتكلم عن التجارة بكافة معارفها ولكن بشكل الكتروني بحيث انه يتطرق الى استراتيجيات التسويق والعرض عن طريق الويب .. وادارة المخاطر المرتبطة بالتجارة الإلكترونية Risk Management , وايضا كيفية التعامل مع التحديات والمنافسات في التجارة الإلكترونية ’ وايضا يتطرق للنظم البنكية .. والإعلانات في الانترنت والنشر الإلكتروني والدفع الإلكتروني ولا تخفى أهمية هذه المفاهيم في العالم والتي تزيد يوما عن يوم ..
رابعا: هندسة البرمجيات:-
ببساطة نستطيع القول انه بعد ان اصبحت البرمجيات معقدة جدا ويصعب بناؤها بواسطة مبرمج واحد او عدد بسيط من المبرمجين ويصعب فهمها من مبرمج واحد ظهر هذا التخصص الذي يهتم ببناء البرامج المعقدة وليست البسيطة .. ولا يهتم هذا التخصص ببناء البرنامج فقط .. بل يهتم بتفاصيل المراحل الخطوات اللازمة لأنتاج برنامج متين ومستقر , اي انه ليس المهم الوصول الى البرنامج فقط بل يهمنا كيف تصل الى هذا البرنامج بالإضافة إلى أن البرنامج لابد ان يكون موثوق ويمكن الاعتماد عليه وأيضا يهمنا كم تكلفة بنائه وكم استغرق من الوقت ليتم .. خطوات بناء البرنامج بالترتيب و بشكل تفصيلي :-
في البداية يتم دراسة الجدوى للبرنامج وقابلية تنفيذة بالإمكانيات المتوفرة، وبعد ذلك تأتي
- مرحلة دراسة المتطلبات، وهنا يتم استخراج المتطلبات من العميل وتحليلها وتحديد معالمها بالتفصيل باستخدام نماذج محددة لتسهل فهم مهام البرنامج وبعض واجهاته ليتم الإتفاق عليها. والبدء بالتنفيذ.
- مرحلة التصميم الداخلي اللبرنامج، وهنا يتم التصميم للكود وطريقة عمله بناءاً على المتطلبات في المرحلة السابقة ومتطلبات الجودة كالأداء والسرعة والمرونة وقابلية الصيانة واعادة الإستخدام وغيرها من المعايير المطلوبة ، ويتم أيضا التصميم ينماذج محددة ومتفق عليها لتسهل الفهم للمرحلة التالية.
- مرحلة كتابة الكود، وهنا يبدأ البناء الفعلي للبرنامج بكتابة الكود بناءاً على نماذج مرحلة التصميم، فتصبح عملية كتابة الكود واضحة ومحددة. أو يُمكن البدء بالبرمجة مباشرة من مرحلة المتطلبات في حالة صغر حجم البرنامج ومحدوية متطلبات الجودة.
- مرحلة الإختبار ومُعايرة الجودة، وهنا يتم تجربة البرنامج وفق استراجيات وحالات اختبار محددة مسبقاً لإثبات كفاءة البرنامج وخلوه من المشاكل والأخطاء.
وبهذا تنتهي مرحلة انتاج البرنامج ويمكن تسليمه للعميل، وأيضا تمتد المهام لعمليات الصيانة واضافة المزايا لإصدارات قادمة.
وأيضا من يدخل في هندسة البرمجيات الاتفاقيات بين المبرمجين والجهة الطالبة للبرنامج وكيف يتم التفاوض وكيف يتجنب الفرق المخاطر التي ربما تحدث في اي نقطة في بناء النظام او البرنامج في الـ Risk Management .. ولكي تصل الى هذه الأهداف تحتاج الى الكثير من الخطوات والمهام التي يجب تنفيذها .. ومن هنا نقول ان هندسة البرمجيات تهتم في دراسة ما هي اهداف البرنامج او النظام وما يجب ان يقوم به هذا البرنامج او النظام من متطلبات وذلك يسمى هندسة المتطلبات او Requirements Engineering وتلك العملية ليست سهلة للبرمجيات الصغيرة فلا تستغرب ان معرفة المتطلبات بحد ذاتها هي تخصص مستقل .. وظمن هندسة المتطلبات دراسة الجدوى Feasibility Study اي هل البرنامج مجدي من حيث العملية ومن حيث التكلفة؟ .. ويتضمن ايضا ادارة المشاريع البرمجية Software Projects Managments التي تركز على متابعة النظام من بدايته حتى نجاحه ومن ثم استخدامه .. وظمن ادارة المشاريع ايضا ادارة فرق العمل في اي منظمة تريد إنشاء نظام جديد او تطوير نظام موجود..
وفي هندسة البرمجيات تناقَش البرمجيات المعقدة بمختلف انواعها وليست البرمجيات التي تخدم الأعمال او الـ Buisiness كما هو الحال في تقنية المعلومات بل تغطي نطاق واسع من انواع برمجيات مختلفة جدا .. مثل النظم الحرجة وما يسمى بالـ Critical Systems وهذه هي النظم التي يترتب على فشلها اضرار كبيرة ممكن تضر المستخدم صحيا او اقتصاديا او تضر البيئة التي يعمل بها النظام .. مثل أنظمة المستشفيات فهي تسمى نظم حرجة لأنه في حالة حدوث فشل ما في برنامج جراحه ..سيودي بحياة المريض .. اذا نطلق عليه نظام حرج وايضا نظم البنوك في حالة حدوث فشل لها ستكون كوارث مادية .. والخلاصة ان كل هذه النظم دراستها وتنفيذها يكون على عاتق مهندسي البرمجيات ..
يدرّس في هندسة البرمجيات ..
- كورس يناقش اساسيات هندسة البرمجيات Introduction to Software Engineering يتعلم فيها الطالب المعارف الاساسية في هندسة البرمجيات مثل نماذج وخطوات تنفيذ البرمجيات , وأيضا كيفية اكتشاف المتطلبات Requirements للنظام المطلوب واستنباطها من مصادر متنوعه والمقابلات الشخصية لمصادر المتطلبات او ما يسمى بالـ View Points .. وايضا يدرسون ومسؤليات مهندس البرمجيات وأخلاقيات المهنة التي تهتم في تعليم الطالب الامور الهامة المتعلقة في إبرام العقود لأنه في الأساس يتعامل مع عملاء ومنظمات تطلب منه البرمجيات او النظم لذا هو من المهم ان يتعلم كيف تسير الامور وكيف يتم التعاقد والمشاكل حول ذلك ..
- من الكورسات الأساسية ايضا كورس يناقش مبادئ في هندسة البرمجيات Principles of Software Engineering بحيث انه سيدرس كيفية قياس النظم واقصد بذلك تققيم البرنامج او النظام وجودته مثل مدى استقرار النظام او مدى الامان في النظام .. او هل هو آمن او لا .. ومثل هذه الاسئلة تستطيع الاجابة عليها من خلال هذا الكورس ..
- يتعلم في كورس تصميم الواجهات User Interface Design يتعلم كيفية تصميم القوائم والنوافذ والامور المرتبطة بسهولة وقابلية الاستخدام Usability اي ان الطالب يتعلم كيف يجعل برنامجه مرغوبا ومقبولا من قبل المستخدمين ..
- في عمارة وتصميم البرمجيات Software Design and Architecture يدرس الطالب الادوات والرسوم القياسية التي تستخدم في عملية تصميم البرمجيات ، وكيفيت تحقيق معايير الجوده مثل الأداء والحماية والموثوقية .
- في كورس اختبار البرمجيات وضمان الجودة Software Testing and Quality Assurance يتعلم الطالب ما معنى الجودة للبرمجيات وقياسات الجودة وكيف تتحقق الجودة في البرمجيات .. ويدرس ايضا عمليات التفتيش عن الاخطاء وكيفية اصلاحها لظمان جودة البرنامج ..
- ايضا يدرس الطالب برمجة البرمجيات التي تعمل في الشبكات Internet Protocols and Client-Server Programming وليس برمجيات الويب التي تعمل في المتصفحات الفرق هنا ان البرمجيات Desktop Applications ولكن تستخدم الشبكة مثل برامج المحادثات ورفع الملفات وغيرها ..
- ادارة المشاريع البرمجية Software Project Management التي هي من اركان اختصاص هندسة البرمجيات تغطي الامور المهمة لإدارة المشروع البرمجي مثل التوقيت ، التكلفة الجودة ، الاخطار المحتملة ، الموارد البشرية والاتصالات الخ ، و به كيفية ادارة فرق العمل وكيفية اختيارهم وتقييمهم ..
- اما بالنسبة لبرمجيات الويب فهم يدرسونها في هندسة وتطوير الويب Web Engineering and Development ..
في الجدول التالي ستلاحظ مدى الفروق بين تخصصات الحاسب بحسب تركيزها واهتماما لمواضيع الحوسبة المختلفة .. ومن هنا يعرف الطالب ماهي متطلبات مهنته ..
نِصاب مواضيع الحوسبة في التخصصات الحاسوبية ..
*معلومات هذا الجدول من بحث Computing Curricula 2005
تنبيه :-
حاولت أن أسرد لك كل الكورسات الاساسية في كل تخصص .. ولكن هناك القليل من الكورسات لم أستطع ان أسردها وبعضها تجاهلتها عمدا مثل كورسات الرياضايات والإحصاء التي لا يرتكز عليها التخصص ، وهناك كورسات مشتركه بين اكثر من قسم ولكنها اساسا تنتمي إلى قسم واحد قمت بسردها تبعا للقسم الذي تنتمي إليه .. وقمت بشرح مبسط او وصف لكل كورس .. وربما تجد بعض الخلل في وصفي لها وهذا وارد .. وأي اقتراح او طلب تعديل او اضافة أيا كانت هي مرحّبٌ بها لأن الغرض من هذا الموضوع هو تقديم الصورة الواضحة للطلاب المقبلين والراغبين بالانضمام لعمالقة الحاسوب .. ولاسيّما ان محتوى الانترنت العربي شبه خالي عن مثل هذا الموضوع ..
في موضوعي هذا لم أتطرق لتخصص نظم المعلومات IS لأنه حسب ما قرأت ورأيت انه تخصص مطابق لتقنية المعلومات IT مع بعض الفروق البسيطة التي لم أعرفها لحد الآن لكن الذي أعرفه ان الكثير من الجامعات اصبحت تدرس تقنية المعلومات عوضا عن نظم المعلومات لشدة التشابه بينهما وتطابق المخرجات ..
للاقتراحات والاستفسارات .. راسلنا على هذا البريد
قام بتنفيذ هذا العمل :محمد الحسن
طالب بقسم هندسة الحاسب في كلية الحاسب بجامعة القصيم ..
مدونة محمد الحسن






