This document is an Arabic translation of TeachYourselfCS, which is written by Ozan Onay and Myles Byrne. For more information about this translation, please refer to the end of this document.
إذا كنت مهندسًا من العصاميين أو خريجًا في معسكر التدريب، فأنت مدين لنفسك بتعلم علوم الكمبيوتر. لحسن الحظ، يمكنك منح نفسك تعليمًا على مستوى عالمي في علوم الكمبيوتر دون استثمار سنوات وثروة صغيرة في برنامج للحصول على درجة 💸.
هناك الكثير من الموارد المتاحة، ولكن بعضها أفضل من البعض الآخر. لست بحاجة إلى قائمة أخرى "200 + دورات مجانية عبر الإنترنت". أنت بحاجة إلى إجابات لهذه الأسئلة:
ما المواد التي يجب أن تتعلمها، ولماذا؟ ما هي أفضل سلسلة كتب أو محاضرات فيديو لكل موضوع؟ هذا الدليل هو محاولتنا للإجابة النهائية على هذه الأسئلة.
شكرا ل Wu Zhengke على هذه الترجمة الصينية: 中文 翻译 见此 TL ؛ DR :
ادرس جميع المواد التسعة أدناه، بالترتيب المعروض تقريبًا، باستخدام إما الكتاب المدرسي المقترح أو سلسلة محاضرات الفيديو، ولكن من الأفضل أن يكون كلاهما. استهدف 100-200 ساعة من الدراسة لكل موضوع، ثم قم بزيارة المفضلة طوال حياتك المهنية 🚀.
الموضوع لماذا الدراسة؟ أفضل كتاب أفضل مقاطع الفيديو البرمجة لا تكون الشخص الذي "لم يفهم أبدًا" شيئًا مثل التكرار. هيكل برامج الكمبيوتر وتفسيرها، براين هارفي، Berkeley CS 61A هندسة الكمبيوتر إذا لم يكن لديك نموذج عقلي قوي لكيفية عمل الكمبيوتر فعليًا، فستكون جميع الملخصات عالية المستوى هشة. تنظيم الكمبيوتر وتصميمه Berkeley CS 61C الخوارزميات وهياكل البيانات إذا كنت لا تعرف كيفية استخدام هياكل البيانات في كل مكان مثل المكدسات وقوائم الانتظار والأشجار والرسوم البيانية، فلن تتمكن من حل المشكلات الصعبة. محاضرات دليل تصميم الخوارزميات ستيفن سكينا Math for CS هي في الأساس فرع هارب من الرياضيات التطبيقية ، لذا فإن تعلم الرياضيات يمنحك ميزة تنافسية. الرياضيات لعلوم الكمبيوتر Tom Leighton MIT 6.042J أنظمة التشغيل يتم تشغيل معظم التعليمات البرمجية التي تكتبها بواسطة نظام تشغيل، لذا يجب أن تعرف كيف يتفاعل هؤلاء. أنظمة التشغيل: ثلاث قطع سهلة Berkeley CS 162 شبكات الكمبيوتر اتضح أن الإنترنت مشكلة كبيرة: فهم كيف تعمل لفتح إمكاناتها الكاملة. شبكات الكمبيوتر: نهج من أعلى لأسفل ستانفورد CS 144 تعد قواعد البيانات في صميم أهم البرامج، لكن القليل منها يفهم كيف تعمل أنظمة قواعد البيانات بالفعل. قراءات في أنظمة قواعد البيانات جو هيلر شتاين في بيركلي CS 186 اللغات والمترجمون إذا فهمت كيفية عمل اللغات والمترجمين فعليًا، ستكتب رمزًا أفضل وتتعلم لغات جديدة بسهولة أكبر. المؤلفون: المبادئ والتقنيات والأدوات دورة أليكس أيكن حول Lagunita الأنظمة الموزعة هذه الأيام، معظم الأنظمة هي أنظمة موزعة. الأنظمة الموزعة، الطبعة الثالثة من قبل مارتن فان ستين 🤷 لماذا تتعلم علوم الكمبيوتر؟
هناك نوعان من مهندسي البرمجيات: أولئك الذين يفهمون علوم الكمبيوتر جيدًا بما يكفي للقيام بأعمال صعبة ومبتكرة، وأولئك الذين يمرون بها فقط لأنهم على دراية ببعض الأدوات عالية المستوى.
كلاهما يطلق على أنفسهم مهندسي برمجيات، وكلاهما يميل إلى كسب رواتب مماثلة في حياتهم المهنية المبكرة. لكن مهندسي النوع الأول ينمون في العمل الأكثر إرضاءً والأجر الجيد بمرور الوقت، سواء كان ذلك عملًا تجاريًا ذا قيمة أو اختراقات مشاريع مفتوحة المصدر أو قيادة فنية أو مساهمات فردية عالية الجودة.
بنديكت إيفانز ✔ benedictevans يقوم نظام الرسائل القصيرة العالمية بحوالي 20 مليار رسالة في اليوم. يعمل WhatsApp الآن بـ 42 مليار دولار. مع 57 مهندسا. pic.twitter.com/zZrtSIzhlR
1،734 10 :13 مساءً - 1 فبراير 2016 معلومات وخصوصية إعلانات توتير
2579 شخص يتحدثون عن هذا
يجد مهندسو النوع 1 طرقًا لتعلم علوم الكمبيوتر بعمق، سواء من خلال الوسائل التقليدية أو من خلال التعلم بلا هوادة طوال حياتهم المهنية. عادةً ما يبقى مهندسو النوع 2 على السطح، ويتعلمون أدوات وتقنيات محددة بدلاً من أسسهم الأساسية، ولا يكتسبون مهارات جديدة إلا عندما تتغير رياح الموضة الفنية.
حاليًا، يتزايد عدد الأشخاص الذين يدخلون الصناعة بسرعة، في حين أن عدد خريجي علوم الكمبيوتر ثابت بشكل أساسي. بدأ هذا العرض الزائد من مهندسي النوع 2 في تقليل فرص العمل وإبقائهم خارج العمل الأكثر إرضاءً في الصناعة. سواء كنت تسعى إلى أن تصبح مهندسًا من النوع الأول أو تبحث ببساطة عن المزيد من الأمان الوظيفي، فإن تعلم علوم الكمبيوتر هو المسار الوحيد الموثوق. أنظمة التشغيل
مفاهيم نظام التشغيل ("كتاب الديناصور") وأنظمة التشغيل الحديثة هي الكتب "الكلاسيكية" في أنظمة التشغيل. وقد اجتذب كلاهما الانتقادات لأنماط الكتابة الخاصة بهما، ولأنهما كانا من النوع المكون من 1000 صفحة من الكتب التي يتم ربطها بها كل بضع سنوات لتشجيع شراء "أحدث إصدار".
أنظمة التشغيل: Three Easy Pieces هو بديل جيد متاح مجانًا على الإنترنت. نحن نحب بشكل خاص هيكل الكتاب ونشعر بأن التمارين تستحق القيام بها.
بعد OSTEP، نشجعك على استكشاف قرارات التصميم لأنظمة تشغيل معينة، من خلال كتب نمط "{OS name} Internals" مثل تعليق Lion على Unix، وتصميم وتنفيذ نظام تشغيل FreeBSD، وMac OS X Internals.
من الطرق الرائعة لتعزيز فهمك لأنظمة التشغيل قراءة رمز نواة صغيرة وإضافة ميزات. خيار رائع هو xv6، وهو منفذ من Unix V6 إلى ANSI C وx86 محتفظ به لدورة في MIT. يحتوي OSTEP على ملحق لمعامل xv6 المحتملة المليئة بالأفكار الرائعة للمشاريع المحتملة.
أنظمة التشغيل: ثلاث قطع سهلة شبكات الكمبيوتر
بالنظر إلى أن الكثير من هندسة البرمجيات موجود على خوادم الويب والعملاء، فإن الشبكات الحاسوبية هي أحد المجالات الأكثر قيمة في علوم الكمبيوتر. يجد طلابنا الذين درسوا ذاتيًا والذين يدرسون الشبكات بشكل منهجي أنهم يفهمون أخيرًا المصطلحات والمفاهيم والبروتوكولات التي كانوا محاطين بها لسنوات.
كتابنا المفضل حول هذا الموضوع هو شبكات الكمبيوتر: نهج من أعلى لأسفل. المشاريع والتمارين الصغيرة في الكتاب تستحق القيام بها، ونحب بشكل خاص "مختبرات Wireshark”، التي قدموها بسخاء عبر الإنترنت.
بالنسبة لأولئك الذين يفضلون محاضرات الفيديو، نقترح مقدمة ستانفورد لدورة شبكات الكمبيوتر المتاحة على منصة MOOC Lagunita الخاصة بهم.
تستفيد دراسة الشبكات من المشاريع أكثر مما تستفيد من التمارين الصغيرة. بعض المشاريع الممكنة هي: خادم HTTP، تطبيق دردشة قائم على UDP، مكدس TCP صغير، وكيل أو موازن تحميل، وجدول تجزئة موزع.
لا يمكنك التحديق في الكرة البلورية ورؤية المستقبل. ما ستكون عليه الإنترنت في المستقبل هو ما يصنعه المجتمع.
- بوب كان
شبكات الكمبيوتر: نهج من أعلى لأسفل قواعد بيانات
يتطلب الأمر مزيدًا من العمل للتعلم الذاتي حول أنظمة قواعد البيانات أكثر من معظم المواضيع الأخرى. إنه مجال دراسة جديد نسبيًا (أي ما بعد السبعينيات) مع حوافز تجارية قوية للأفكار للبقاء خلف أبواب مغلقة. بالإضافة إلى ذلك، فضل العديد من مؤلفي الكتب الدراسية الممتازة المحتملة الانضمام أو بدء الشركات بدلاً من ذلك.
نظرًا للظروف، نشجع المتعلمين ذاتيًا على تجنب الكتب المدرسية بشكل عام والبدء بتسجيل ربيع 2015 لـ CS 186، ودورة قواعد بيانات جو هيلرشتاين في بيركلي، والتقدم نحو قراءة الأوراق بعد ذلك.
ورقة واحدة جديرة بالذكر بشكل خاص للطلاب الجدد هي "هندسة نظام قاعدة البيانات"، والتي توفر بشكل فريد نظرة عالية المستوى لكيفية عمل أنظمة إدارة قواعد البيانات العلائقية (RDBMS). سيكون هذا بمثابة هيكل عظمي مفيد لمزيد من الدراسة.
قراءات في أنظمة قواعد البيانات، والمعروفة باسم قواعد البيانات "الكتاب الأحمر"، عبارة عن مجموعة من الأوراق التي تم تجميعها وتحريرها من قبل بيتر بايليس وجو هيلرشتاين ومايكل ستونبراكر. بالنسبة لأولئك الذين تقدموا إلى ما بعد مستوى محتوى CS 186، يجب أن يكون الكتاب الأحمر محطتك التالية.
إذا كنت تصر على استخدام كتاب تمهيدي، فإننا نقترح أنظمة إدارة قواعد البيانات بواسطة Ramakrishnan و Gehrke. بالنسبة للطلاب الأكثر تقدمًا، فإن معالجة المعاملات الكلاسيكية: المفاهيم والأساليب التي يقدمها Jim Gray أمر جدير بالاهتمام، ولكننا لا نشجع على استخدامه كمورد أول.
من الصعب دمج نظرية قواعد البيانات دون كتابة كمية جيدة من التعليمات البرمجية. يضيف طلاب CS 186 ميزات إلى Spark ، وهو مشروع معقول ، لكننا نقترح فقط كتابة نظام بسيط لإدارة قواعد البيانات العلائقية من الصفر. لن تكون غنية بالميزات، بالطبع، ولكن حتى كتابة النسخة الأكثر بدائية من كل جانب من جوانب RDBMS النموذجية سيكون مضيئًا.
أخيرًا، تعد نمزجه البيانات جانبًا مهملاً وغير مدروس جيدًا للعمل مع قواعد البيانات. كتابنا المقترح حول هذا الموضوع هو البيانات والواقع: منظور خالد لكل إدراك وإدارة المعلومات في عالمنا غير الدقيق.
اللغات والمترجمون
يتعلم معظم المبرمجين اللغات، بينما يتعلم معظم علماء الكمبيوتر اللغات. وهذا يمنح عالم الكمبيوتر ميزة واضحة على المبرمج، حتى في مجال البرمجة! معرفتهم تعمم؛ إنهم قادرون على فهم تشغيل لغة جديدة بشكل أكثر عمقًا وسرعة من أولئك الذين تعلموا فقط لغات معينة.
النص التمهيدي الأساسي هو المترجمون: المبادئ والتقنيات والأدوات، والمعروف باسم "كتاب التنين". لسوء الحظ، لم يتم تصميمه للدراسة الذاتية، بل للمعلمين لاختيار موضوعين أو فصلين دراسيين يستحقون مواضيع لدوراتهم. يكاد يكون من الضروري إذن أن تختار الموضوعات بشكل مثالي بمساعدة مرشد.
إذا اخترت استخدام كتاب التنين للدراسة الذاتية، نوصي باتباع سلسلة محاضرات فيديو للهيكل، ثم الغطس في كتاب التنين حسب الحاجة لمزيد من العمق. الدورة التدريبية الموصي بها على الإنترنت هي Alex Aiken، وهي متاحة من منصة MOOC في Lagford Lagunita.
كبديل محتمل لكتاب التنين نقترح أنماط تطبيق اللغة بواسطة Terence Parr. يتم كتابته بشكل مباشر أكثر لمهندس البرمجيات الممارس الذي ينوي العمل في مشاريع لغوية صغيرة مثل DSLs ، مما قد يجعله أكثر عملية لأغراضك. بالطبع، إنها تضحي ببعض النظريات القيمة للقيام بذلك.
بالنسبة لعمل المشروع، نقترح كتابة مترجم إما للغة تدريس بسيطة مثل COOL، أو لمجموعة فرعية من اللغة التي تهمك. يمكن لأولئك الذين يجدون مثل هذا المشروع شاقًا أن يبدأها بـ Make a Lisp، مما يخترك خلال المشروع.
تجميع: المبادئ والأساليب والأدوات أنماط تنفيذ اللغة لا تكن مبرمجًا نصفيًا. بدلاً من ذلك، قم بإنشاء أدوات للمستخدمين والمبرمجين الآخرين. خذ ملاحظة تاريخية عن صناعات النسيج والصلب: هل تريد بناء آلات وأدوات، أم تريد تشغيل هذه الآلات؟
- راس بوديك في بداية دورة جامعيها
الانظمة الموزعة
مع زيادة عدد أجهزة الكمبيوتر، انتشرت أيضًا. في حين أن الشركات كانت تشتري سابقًا أجهزة كمبيوتر رئيسية أكبر وأكبر، فمن المعتاد الآن تشغيل التطبيقات الصغيرة جدًا عبر أجهزة متعددة. النظم الموزعة هي دراسة كيفية التفكير في المفضالات التي ينطوي عليها القيام بذلك، وهي مهارة متزايدة الأهمية.
كتابنا الدراسي المقترح للدراسة الذاتية هو مارتن فان ستين وأنظمة أندرو تانينباوم الموزعة، الطبعة الثالثة. إنه تحسن كبير عن الإصدار السابق، وهو متاح مجانًا عبر الإنترنت بفضل سخاء مؤلفيه. نظرًا لأن الأنظمة الموزعة مجال سريع التغير، فلن يكون أي كتاب مدرسي بمثابة دليل للمسار، ولكن Maarten van Steen’s هي أفضل نظرة عامة رأيناها على أسس راسخة.
إن الدورة التدريبية الجيدة التي تكون فيها بعض مقاطع الفيديو عبر الإنترنت هي MIT's 6.824 (دورة للدراسات العليا)، ولكن للأسف جودة الصوت في التسجيلات ضعيفة، وليس من الواضح ما إذا كان التسجيل مسموحًا به أم لا.
بغض النظر عن اختيار الكتاب المدرسي أو الموارد الثانوية الأخرى، فإن دراسة الأنظمة الموزعة تفرض تمامًا قراءة. توجد قائمة جيدة هنا، ونود أن نشجع بشدة حضور فصل المحلي.
الطبعة الثالثة للنظم الموزعة أسئلة مكررة
ماذا عن الذكاء الاصطناعي / الرسومات / الحيوانات الأليفة- X-؟
لقد حاولنا قصر قائمتنا على موضوعات علوم الكمبيوتر التي نشعر أن كل مهندس برامج ممارس يجب أن يعرفه، بغض النظر عن التخصص أو الصناعة. مع هذا الأساس، ستكون في وضع أفضل بكثير لالتقاط الكتب المدرسية أو الأوراق وتعلم المفاهيم الأساسية دون الكثير من التوجيه. إليك نقاط البداية المقترحة لبعض "الاختيارية" الشائعة:
للذكاء الاصطناعي: قم بتقديم مقدمة بيركلي لدورة الذكاء الاصطناعي من خلال مشاهدة مقاطع الفيديو وإكمال مشاريع باكمان الممتازة. ككتاب مدرسي، استخدم راسل ونورفيج الذكاء الاصطناعي: نهج حديث. لتعلم الآلة: قم بدورة أندرو إنج كورسيرا. كن صبورًا، وتأكد من فهم الأساسيات قبل التسابق إلى مواضيع جديدة لامعة مثل التعلم العميق. بالنسبة لرسومات الكمبيوتر: العمل من خلال مادة CS 184 من Berkeley، واستخدام رسومات الكمبيوتر: المبادئ والممارسة ككتاب دراسي. ما مدى صرامة التسلسل المقترح؟
واقعيا، كل هذه الموضوعات لديها قدر كبير من التداخل، وتشير إلى بعضها البعض بشكل دوري. خذ على سبيل المثال العلاقة بين الرياضيات والخوارزميات المنفصلة: تعلم الرياضيات أولاً سيساعدك على تحليل وفهم الخوارزميات الخاصة بك بعمق أكبر، ولكن خوارزميات التعلم أولاً ستوفر دافعًا أكبر وسياقًا للرياضيات المنفصلة. من الناحية المثالية، ستعيد النظر في كلا الموضوعين عدة مرات طوال حياتك المهنية.
على هذا النحو، فإن التسلسل المقترح لدينا موجود في الغالب لمساعدتك على البدء ... إذا كان لديك سبب مقنع لتفضيل تسلسل مختلف، فابحث عنه. أهم "المتطلبات المسبقة" في رأينا هي: بنية الكمبيوتر قبل أنظمة التشغيل أو قواعد البيانات، والشبكات وأنظمة التشغيل قبل الأنظمة الموزعة.
من هو الجمهور المستهدف لهذا الدليل؟
نضع في اعتبارنا أنك مهندس برامج من العصاميين، أو خريج في معسكر التدريب أو طالب في المدرسة الثانوية المبكرة، أو طالب جامعي يتطلع إلى استكمال تعليمك الرسمي ببعض الدراسة الذاتية. السؤال عن موعد الشروع في هذه الرحلة هو مسألة شخصية تمامًا، لكن معظم الناس يميلون إلى الاستفادة من بعض الخبرة المهنية قبل الغوص عميقًا في نظرية علوم الكمبيوتر. على سبيل المثال، نلاحظ أن الطلاب يحبون التعلم حول أنظمة قواعد البيانات إذا كانوا قد عملوا بالفعل مع قواعد البيانات بشكل احترافي، أو حول شبكات الكمبيوتر إذا كانوا قد عملوا على مشروع ويب أو اثنين.
كيف يقارن هذا بمناهج مجتمع المصدر المفتوح أو freeCodeCamp؟
يحتوي دليل OSS على عدد كبير جدًا من الموضوعات، ويقترح موارد رديئة للكثير منها، ولا يقدم أي أساس منطقي أو إرشادات حول سبب أو ما هي جوانب دورات معينة ذات قيمة. لقد بذلنا قصارى جهدنا لقصر قائمة الدورات التدريبية لدينا على تلك الدورات التي يجب أن تعرفها حقًا كمهندس برمجيات، بغض النظر عن تخصصك، ولمساعدتك على فهم سبب تضمين كل دورة.
يركز freeCodeCamp في الغالب على البرمجة، وليس علوم الكمبيوتر. لماذا قد ترغب في تعلم علوم الكمبيوتر، انظر أعلاه.
ماذا عن اللغة X؟
إن تعلم لغة برمجة معينة على مستوى مختلف تمامًا عن التعلم عن مجال علوم الكمبيوتر - تعلم اللغة أسهل بكثير وأقل قيمة بكثير. إذا كنت تعرف بالفعل لغتين، فإننا نقترح بشدة اتباع دليلنا واكتساب اللغة المناسب في الفجوات، أو تركه بعد ذلك. إذا كنت قد تعلمت البرمجة جيدًا (على سبيل المثال من خلال البنية وتفسير برامج الكمبيوتر)، وخاصة إذا كنت قد تعلمت المترجمين، فيجب ألا يستغرق الأمر أكثر من عطلة نهاية الأسبوع لتعلم أساسيات لغة جديدة.
ماذا عن التكنولوجيا العصرية X؟
لا توجد تقنية واحدة مهمة بما يكفي بحيث يجب أن يكون تعلم استخدامها جزءًا أساسيًا من تعليمك. من ناحية أخرى، من الرائع أنك متحمس لمعرفة المزيد عن هذا الشيء. تكمن الحيلة في العمل إلى الوراء من التكنولوجيا المعينة إلى المجال أو المفهوم الأساسي، وتعلم ذلك بعمق قبل رؤية كيف تتناسب تقنيتك العصرية مع الصورة الأكبر.
لماذا لا تزال توصي كتاب التنين؟
كتاب التنين لا يزال المصدر الأكثر اكتمالا للمجمعين. إنه يحصل على اغتصاب سيئ، عادة في المبالغة في التركيز على موضوعات معينة أقل شيوعًا للتغطية بالتفصيل هذه الأيام، مثل التحليل. الشيء هو، أن الكتاب لم يكن يقصد أبدًا أن يتم دراسته الغلاف لتغطية، فقط لتوفير مادة كافية للمدرب لوضع دورة. وبالمثل، يمكن للمتعلم الذاتي اختيار مغامرته الخاصة من خلال الكتاب، أو الأفضل من ذلك اتباع الاقتراحات التي قدمها المحاضرون في الدورات العامة في مخططات الدورات.
كيف يمكنني الحصول على الكتب المدرسية بسعر رخيص؟
العديد من الكتب الدراسية التي نقترحها متاحة مجانًا عبر الإنترنت، بفضل سخاء مؤلفيها. بالنسبة لأولئك الذين ليسوا كذلك، نقترح شراء نسخ مستعملة من الإصدارات القديمة. كقاعدة عامة، إذا كان هناك أكثر من إصدارين من كتاب مدرسي، فمن المحتمل جدًا أن يكون الإصدار القديم ملائمًا تمامًا. من غير المحتمل بالتأكيد أن الإصدار الأحدث أفضل بعشر مرات من الإصدار الأقدم، حتى لو كان هذا هو فرق السعر!
من صنع هذا؟
كتب هذا الدليل كل من أوز نوفا ومايلز بيرن، المدربين في مدرسة براد فيلد لعلوم الكمبيوتر في سان فرانسيسكو. ويستند إلى خبرتنا في تدريس علوم الكمبيوتر التأسيسية لمئات المهندسين الذين يتم تدريسهم ذاتيًا في الغالب وخريجي معسكرات التدريب. شكرًا لجميع طلابنا على ملاحظاتك المستمرة حول موارد التدريس الذاتي. شكرًا أيضًا على أليك شارما وعمر ريوارد وعمار ميان وتايلر بيتيليون على التعليقات حول هذا الدليل.
قد ترغب أيضًا في الانضمام إلى قائمتنا البريدية: