
کتاب هایی که هر دانشجوی مهندسی کامپیوتر باید بخواند
مقدمه
در این پست وبسایت بعضی از کتابهایی را معرفی می کنم که خودم در دوران کارشناسی یا کمی بعد از آن خواندهام و خواندنشان را به هر دانشجوی رشتهی مهندسی کامپیوتر پیشنهاد میکنم. نمی دونم موقع خواندن این پست ویرایش جدید این کتابها آمده اند یا نه! خودتان چک کنید ولی اگر ویرایش جدید آنها آمده است حتما از ویرایش جدید استفاده کنید. همین طور به دلایل مختلف و زیادی که بیان آنها از حوصلهی این مطلب خارج است, استفاده از ترجمه را اصلا پیشنهاد نمیکنم!
لیست کتاب ها
درس برنامه سازی مقدماتی: How To Program – Deitel & Deitel
این درس برنامه نویسی مقدماتی نیست بلکه برنامه سازی مقدماتی است که در آن به ساخت برنامههای کامپیوتری و الگوریتمها و ساختمان دادههای ابتدایی می پردازند و همین طور یک زبان برنامهنویسی, معمولا سی, سی پلاس پلاس, پایتون و یا جاوا را آموزش میدهند. برای این درس کتابهای Deitel بسیار مناسب هستند. زیرا این سری از کتاب ها فرض کرده اند شما چیزی از برنامهسازی و برنامهنویسی نمی دانید و همه چیز را با مثالهای بسیاری خوبی توضیح داده اند و از همه مهم تر به الگوریتمها و ساختمان داده های ابتدایی پرداخته است و تمرینها و سوالهای برنامه نویسی بسیار خوبی دارند که دید بسیار خوبی به شما میدهد. خواندن کتابهای سری دیتیل بسیار شادی آور است 🙂 زیرا سوال های برنامهنویسی بسیار خوب و فانی دارد که ساعتها شما را درگیر میکند. از این کتاب یکی از تمرینهایش که سوال حرکت اسب بود هنوز در خاطرم مانده است زیرا راه حل بسیار جالب و ساده ای داشت و با دوستم ساعتها در ترم یک برای حلش تلاش کردیم. در تصویر زیر کتاب سی پلاس پلاس از سری کتاب های How To Program دیتیل را مشاهده میکنید. کتابهای جاوا, پایتون, سی و … هم از این سری موجود است.

مرجع آموزش زبان سی پلاس پلاس
درس ریاضی یک و دو: Thomas’ Calculus Early Transcendentals
این درس پایه هر چیزی است که میخوانید و خواهید خواند! بدون خوب بودن در این درس جای زیاد دوری نمیتوان رفت! کتابهای خوب در این زمینه هست ولی بهترین کتاب از نظر من کتاب توماس است. کتاب توماس ترجمههای متعددی دارد که ۹۹ درصد آنها جالب نیستند. یک ترجمه بسیار خوب داشتم که آن را خواندم ولی اکنون اسم مترجم یادم نیست. ولی بعد تر یک نسخهی انگلیسی از کتاب توماس را خواندم. تصویر این نسخه از کتاب توماس را در زیر می بینید, این نسخه بر اساس کار توماس است که بعد از توماس توسط عدهی دیگری هنوز ادامه پیدا کرده است و تغییرات کوچکی جهت خواناتر شدن و بهترشدن در آن ایجاد شده است:

مرجع آموزش ریاضیات پایه برای مهندسی کامپیوتر
درس ساختمان گسسته: Discrete Mathematics and Its Applications
این درس معمولا در ترم یک و یا دو ارایه می شود ولی به نظرم باید ترم یک ارایه بشود. موضوعات مختلف و بسیار مهمی را در این درس یاد میگیرید که برای درسهای بعدیتان بسیار ضروری است. و اگر این درس را از روی کتاب خوبی بخوانید بدون شک بسیاری از مطالب درسهای بعدیتان را میدانید یا دید بسیار عمیقی نسبت به آنها خواهید داشت! بعضی از مباحثی که در این درس میخوانید شامل انواع اثبات, گراف،ترکیبات, جبر بولین، آمار و احتمال مقدماتی و نظریهی اعداد است که در اکثر درسهای بعدیتان به آنها به شدت نیاز پیدا میکنید از جمله الگوریتم, کامپایلر, نظریهی زبانها، ساختماندادها, مدار منطقی و ….
هر چه این درس را بهتر بخوانید درسهای ترم بعدتان را بیشتر و عمیق تر خواهید فهمید. برای این درس کتاب راس برای من مناسب بود و از خواندنش لذت بردم.

مرجع آموزش ساختمان گسسته
درس آمار و احتمال: Introduction to Probability Models
این درس برای درس الگوریتم بسیار ضروری است اگر ارشد بخواهید بخوانید و هوش مصنوعی را به عنوان گرایش مدنظر دارید بدونید به این درس نسبت به سایر درس ها بیشتر نیاز دارید!
برای این درس کتاب Introduction to Probability Models را تا حدودی خوانده ام و هنوز دارم می خوانم 🙂 این کتاب سعی دارد تفکر آمار و احتمالی فکر کردن را به شما بیاموزد و از این جهت بسیار خوب است ولی سطحش متوسط رو به بالاست و اگر در آمار و احتمال پایه ضعیف هستید بهتر است از کتاب دیگری استفاده کنید.

مرجع آموزش آمار و احتمالات
درس های ساختماندادهها و طراحی الگوریتم: Introduction to Algorithms
این دو درس به خصوص درس طراحی الگوریتم درس مورد علاقهی من در دورهی کارشناسی بود. برای این دو درس کتاب Introduction to Algorithms را خواندم که به CLRS (حرف اول نویسندگان) مشهور است. این کتاب فوقالعاده ست! مطالب بسیار زیادی را هماهنگ و با ترتیب و دسته بندی مناسب در اختیار شما میگذارد. نحوهی آموزش این کتاب به حدی روان و کامل است که وقتی ۲۵ صفحهی اول این کتاب را بخوانید دیگر آن را زمین نخواهید گذاشت تا چند ماه یا شاید هم یک سال و خوردهای بعد که آن را تمام کنید 🙂

مرجع آموزش ساختمان داده ها و طراحی الگوریتم ها
کتاب Foundations Of Algorithms 4th Editionby Richard Neapolitan, Kumarss Naimipour هم است که بخشی از آن را خواندم و بسیار خوب بود. در زیر تصویر این کتاب را می بینید. ولی CLRS به نظرم خیلی بهتر بود:

مرجع آموزش طراحی الگوریتم ها
درس مدار منطقی: Digital Design: With an Introduction to the Verilog HDL 5th Ed. By Morris Mano

مرجع آموزش درس مدار منطقی
توضیح این درس که چی هست برایم سخته 🙂 ولی در این درس دیتا ها را در قالب صفر و یک در نظر می گیرید و یاد میگیرید مدارهایی را طراحی کنید که این داده ها را به صورت صفر و یک ذخیره کند و یا آنها را پردازش کند تا از دیتاها به خروجی مناسب برسد. همچنین کار با ابزارهایی را یاد می گیرید که امکان ایجاد مدار را با استفاده از زبان های مفسر سخت افزار به شما میدهد. برای این کتاب این نسخه از کتاب مانو رو خواندم که هم مدار منطقی را آموزش میدهد و هم زبان مفسر سختافزار Verilog :
درس معماری کامپیوتر: Computer Organization & Design: The Hardware/Software Interface
در این درس یاد میگیرید که چطور یک کامپیوتر بسازید. و با معماری اولیهی سخت افزارهای که می شناسید و استفاده میکنید آشنا میشوید. برای این درس دانستن درس مدار منطقی ضروری است.
این درس بسیار مهم است زیرا متوجه میشوید سخت افزار چگونه کار میکند و چه محدودیتهایی هنگام کار با سختافزار دارید.
برای این درس دو کتاب مختلف وجود دارد که یکی به معماری پرینستون پرداخته است و یکی دیگر به معماری هاروارد. کتاب اول
کتاب Computer Organization & Design: The Hardware/Software Interface است که در شکل زیر آن را مشاهده میکنید:

مرجع آموزش درس معماری کامپیوتر
کتاب دوم اثر موریس مانو همان نویسندهی کتاب مدار منطقیای است که در بالا معرفی کردم از آنجایی که این کتاب رو سر سری نگاه کردم پیدا کردنش را به خودتان میسپارم.
درس هوش مصنوعی: Artificial Intelligence: A Modern Approachby Peter Norvig, Stuart Russell
در این درس معمولا به هوشمصنوعی کلاسیک میپردازند که شامل جستارهایی مانند: معرفی هوشمصنوعی, جست و جوی فضای حالت, حل بازی های رقابتی, First order logic, propositional logic, برنامه ریزی یا طرح ریزی, نمایش دانش و … می شود. اگر نمی دانید اینها چه هستند به عنوان مثال میتوانید این مسایل را با آنها حل کنید: حل سودوکو, بازی ۸-pazzel , دوز، نشان دادن درستی یا غلط بودن یک عبارت منطقی از روی فرضهای موجود.مثلا می دانید هر حیوانی گیاه خواری موز دوست دارد و همچنین می دانید میمون گیاه خوار است و همین طور می دانید هر موجودی که میمون اشتراک ژنتیکی دارد موز دوست دارد. و می دانید انسان با میمون اشتراک ژنتیکی دارد و همین طور می دانید بهرام یک انسان است می توانید با استفاده از الگوریتم های این درس بگویید بهرام موز دوست دارد! 🙂 . یا با استفاده از الگوریتمهای این درس می توانید قضیههای ریاضی را با استفاده از یک سری قضیههای ابتدایی اثبات کنید. یا نحوهی انجام یک سری کار را که ترتیب خاصی در انجامش وجود دارد را پیدا کنید و …
برای این درس کتابی بهتر از Artificial Intelligence: A Modern Approachby Peter Norvig, Stuart Russell ندیدم! ولی خلاصه و سریع گفته است همین طور خواندنش از نظر خیلیها سخت است ولی به تجربهی من اگر ۴ فصل اول را بخوانید کاملا راه میافتید و نمیتوانید از این کتاب دل بکنید!
البته این کتاب شامل مباحث مختلف دیگری هم هست که فقط آنهایی را که برای درس هوش مصنوعی تدریس میکنند نام بردم.

مرجع آموزش درس هوش مصنوعی
درس سیستم عامل: Operating System Concepts by Abraham Silberschatz, Peter B. Galvin, Greg Gagne
این درس بسیار مهم است. در این درس بخشهای مهم یک سیستم عامل را می شناسید و یاد میگیرید هر بخش چگونه کار میکند و با الگوریتمهایی که سیستم عامل های مختلف استفاده میکنند آشنا میشوید و مهم تر از همه متوجه می شوید چه محدودیت هایی در زمان برنامه نویسی دارید و نحوه ی برنامه نویسی شما آیا موجب کند/سریع شدن برنامه تان به خاطر ساختار سیستم عامل می شود یا نه. همین طور یاد میگیرید برنامههایی بنویسید که از همزمان بر روی پردازنده اجرا میشوند همچنین یاد میگیرید چگونه بین برنامهایتان دیتا انتقال دهید.
اگر سیستم عامل ندانید نمی شود گفت برنامه نویسی می دانید!
برای این درس کتاب های خوب زیادی هست ولی من از کتاب Operating System Concepts by Abraham Silberschatz, Peter B. Galvin, Greg Gagne استفاده کردم که بسیار خوب توضیح داده بود نه خیلی از دور نگاه کرده بود و نه خیلی از نزدیک. بخشهای برنامه نویسی و کد زنیش هم عالی است:

مرجع آموزش درس سیستم عامل
درس نظریهی زبانها و ماشین ها:
در این درس با ماشین ها و طرحها و مدل های مختلف محاسباتی آشنا می شوید و متوجه می شوید برای مسایل مختلف آیا می شود الگوریتمی طراحی کرد؟ هزینهی پردازش و حافظهی مورد نیاز الگوریتم چگونه است. چگونه مسالهی مورد نظر را به یک مسیله که قبلا حل شده است کاهش دهیم و …
برای این درس دو کتاب هست که یکی از آن یکی بهتر 🙂
کتاب اول Introduction to the Theory of Computation:

مرجع آموزش نظریه زبان ها و ماشین
کتاب دوم An Introduction to Formal Language and Automataby Peter Linz :

مرجع آموزش نظریه زبان ها و ماشین
درس Linear Algebra :
این درس بعضی دانشگاهها به عنوان اختیاری ارایه میشود که بسیار کاربردی است و ابزار بسیار نیرومندی است که میتوانید از آن در بسیاری از زمینه ها مانند الگوریتم, هوش مصنوعی, یادگیری ماشین و …. استفاده کنید. برای این درس کتاب Linear Algebra and Its Applications (4th Edition) بسیار عالی است. نویسندهی (David C.Lay) این کتاب جز اعضای تجدید نظر در آموزش جبر در آمریکا است و سابقهی بسیار قوی در جبرخطی دارند.

مرجع آموزش جبر خطی
راهنمای خیلی خوبی بود.
بنظرم برای درس الگوریتمها کتاب Algorithms, 4th edition از Robert Sedgewick و Kevin Wayne کتاب خیلی خوبیه. مخصوصا که نویسندههای این کتاب روی کورسرا دورهی رایگان این درس رو برگزار میکنن
سلام
ببخشید میشه لینک دانلود این کتاب هارو بذارید؟
اکثرا پولی هم هستن هیچ راهی نیس ک بشه رایگان دانلودشون کرد ؟
اگر در اینترنت خوب جستجو کنید، نسخه رایگانی برای همه این کتاب ها پیدا میشه که دانلود کنید.
سلام
کتاب های زبان اصلی رو از کجا تهیه می کنید ؟
سلام
خودم معمولاً نسخه پی دی اف کتاب رو دانلود می کنم و به همون صورت یا پرینت شده استفاده می کنم
خیلی مطالب عالی بودن
سلام. ببخشید مشکل ترجمه این کتابا چیه که پیشنهاد دادید استفاده نکنیم؟ و اینکه برای من که انگلیسی بلد نیستم چه راهی هست که بتونم از این کتابا استفاده کنم. ممنون میشم اگه زود جوابمو بدید. تشکر
مشکلشون اینه که خیلی از مترجم ها واقعا درست ترجمه نکردن و مطلب رو کامل نرسانده اند، خیلی هاشون هرجا رو نفهمیدن رو ترجمه نکردن، یک لغت تخصصی توی متن با اسم های مختلفی آماده و …
خیلی از ترجمه ها فقط و فقط نگاه مالی بهش شده و یک کار کم کیفیت انجام شده دادن بیرون برای فروش.
وقتی کتاب انگلیسی می خونی می دونی به طور مستقیم داری مطالب یک انسان وارد توی اون زمینه رو می خونی.
متن انگلیسی کتاب ها معمولا به صورت international نوشته می شه، یعنی سعی می شه از یک سری لغت آسان استفاده کنند تا درک کتاب برای تمام افراد در کشورهای مختلف آسان شود. به همین دلیل اگر یک مدت کمی پافشاری کنید و کتاب های انگلیسی را بخوانید، بعد از یک مدتی این نوع متن ها را به سادگی خواهید خواند.
سلام
امکانش هست نام اون مترجم خوبی که برای کتاب توماس گفتید مطالعه کردید رو بگید ؟
خیلی بهش نیاز دارم ممنون میشم .
علی اکبر جعفریان
ابوالقاسم میامئی
سلام
متشکرم از این پست مفید
آیا ممکنه لینک دانلود این کتاب ها را بزارید ؟
هر کتابی که بخوای اینجا هست : gen.lib.rus.ec
عالی فرهاد
🙂 Salute