تبلیغات


کتاب هایی که هر دانشجوی مهندسی کامپیوتر باید بخواند

اشتراک گذاری
Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestPrint this pageEmail this to someone

در این پست بعضی از کتاب‌هایی را معرفی می کنم که خودم در دوران کارشناسی یا کمی بعد از آن خوانده‌ام و خواندنشان را به هر دانشجوی رشته‌ی مهندسی کامپیوتر پیشنهاد می‌کنم. نمی دونم موقع خواندن این پست ویرایش جدید این کتاب‌ها آمده اند یا نه! خودتان چک کنید ولی اگر ویرایش جدید آن‌ها آمده است حتما از ویرایش جدید استفاده کنید. همین طور به دلایل مختلف و زیادی که بیان آن‌ها از حوصله‌ی این مطلب خارج است‌‌‌‌‌, استفاده از ترجمه را اصلا پیشنهاد نمی‌کنم!

 

درس برنامه سازی مقدماتی: How To Program 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) این کتاب جز اعضای تجدید نظر در آموزش جبر در آمریکا است و سابقه‌ی بسیار قوی در جبرخطی دارند.


تبلیغات:

۴ دیدگاه

نظر خود را بنویسید.

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *