المپیاد کامپیوتر دانشجویی

سلاممن محمد حیدری راد هستم دانشجوی مهندسی کامپیوتر دانشگاه امیرکبیرورودی ۹۹سال ۱۴۰۲ مدال نقره المپیاد کامپیوتر دانشجویی رو کسب کردم و دوست دارم منابعی که استفاده کردم و کار هایی که انجام دادم رو بهتون بگمالبته همین اول بگم که از راهنمایی های اقای امیر پورمند هم استفاده کردم و دیگه راجع به مزایای المپیاد و نحوه شرکت کردن صحبت نمیکنم چون ایشون به نظرم خیلی کامل توضیح دادن، لینک پستشون:https://virgool.io/bitokss/%D9%85%D9%86%D8%A7%D8%A8%D8%B9-%D8%A7%D9%84%D9%85%D9%BE%DB%8C%D8%A7%D8%AF-%D8%AF%D8%A7%D9%86%D8%B4%D8%AC%D9%88%DB%8C%DB%8C-%D9%85%D9%87%D9%86%D8%AF%D8%B3%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-sixl3hlg4vpqخب همونطور که میدونین المپیاد کامپیوتر دانشجویی شامل ۵ تا درسه که باید ۴ تاش رو امتحان بدید و یکیش رو باید حذف کنیدحذف کردن هم اینطوریه که یه برگه میارن همون اول جلسه و اسم درسی که نمیخواید امتحان بدید رو مینویسید و امضا میکنید که امتحان نمیدید، و اصلا سر اون درس نباید برگه امتحان رو تحویل بگیرید و برید سر صندلیتون ( میتونید استراحت کنید زمانشو بیرون از جایی که برگزار میشه )درس ها و منابعی که خوندم :---نظریه زبان ها و ماشین ها:از درس هاییه که میتونن خیلی سوال های سخت و خلاقیتی بدن ازش (و میدن)، ذات درس اینطوریه که شمارو توی یه دنیای بینهایتی از زبان ها و ماشین ها و هرچیزی که هست داخل درسش گم میکنه و باید یاد بگیرید چطوری توی این دنیایی که ساخته فکر کنید و مسیر راه حل رو پیدا کنید.برای شروع پیشنهاد میکنم دوره همین درس رو از دکتر سعید ابریشمی (هیات علمی دانشگاه فردوسی مشهد) ببینید:http://kfe.um.ac.ir/streams/course/view/98.htmlایشون کتاب پیتر لینز رو درس میدن که خیلی ساختار خوبی داره و مرجع اصلی درسهIntroduction to formal languages and automataو همزمان هر درسی که میخونید سوال هاش رو شروع کنید حل کردن (هرچی جلو تر میرید ایده هایی که باید روی سوال ها بزنید نیاز بیشتری به فکر دارن)در مرحله بعد یه کتاب هست که مایکل سیپسر نوشته و طراح ها خیلی به ایده هاش علاقه دارن چون خیلی جذاب تر و به ذهن نرس تره ایده هایی که استفاده میکنهIntroduction to the theory of computationکه خود مایکل سیپسر یه دوره داره (توی mit ocw ) و همین کتاب رو خیلی خلاصه درس میده، پیشنهاد میکنم ویدیو هاش رو ببینید و همزمان سوال ها و تمریناش رو حل کنید( تا قسمت 8 که undecidability رو میگه به سیلابس مربوط میشه):https://ocw.mit.edu/courses/18-404j-theory-of-computation-fall-2020/تاکید میکنم خیلی کتاب خفنیه و اگر مثل من درسش رو دوست داشته باشید خیلی لذت خواهید بردفکر طراح: از همه بخش هاش سوال میدن ولی به مستقل از متن و ماشین پشته ای علاقه خاصی دارن (مرحله دو یادمه همه سوالاش مربوط به همین بخش بود)---ساختمان داده و طراحی الگوریتم:درس خیلی قشنگیه و به شدت گستردس و معمولا تو دانشگاه ها تحت عنوان دو تا درس "ساختمان داده" و "طراحی الگوریتم" جداگانه تدریس میشهکتاب مرجع خب سلطان introduction to algorithms عه که به CLRS معروفهپیشنهاد میکنم دوره همین کتاب رو از mit ocw ببینید و همزمان کتاب رو بخونید و سوالای تمرین هاش و مسئله های ته فصل هاش رو کامل حل کنید:https://ocw.mit.edu/courses/6-046j-introduction-to-algorithms-sma-5503-fall-2005/من کتاب 600 مسئله دکتر قدسی هم داشتم، برای شروع خوبه و اینکه با ایده های ساده مختلف آشنا شید، برای وقتی تازه یه فصل رو خوندید میتونه مفید باشه ولی ایده هاش عمیق نیست.یه کتاب دیگه هست introduction to algorithms a creative approach نوشته یودی منبر که خیلی کتاب عالی ایه، به اندازه CLRS جامع نیست ولی نحوه بیانش خیلی بهترهمثلا CLRS میگه این سوالمونه و این راه حلشه تمومولی این creative میاد میگه این سواله خب بیاید این کارو کنیم اون کارو کنیم عه خب غلط شد پس توی این دام نیفتید، خب بیاید این راهو بریم اینکارو کنیم بازم غلط شد پس تو این دام هم نیفتید،‌ عه یه ایده جدید میشه زد، خب به راه حل رسیدیمقشنگ طرز فکر بهتون میده جای اینکه سوال جواب بهتون بدهفکر طراح: فصل هایی که خیلی بهش علاقه دارن dp و greedy و maximum flow هستش، و همینطور از یه سری فصل ها که جزو سیلابس اصلی درس نیست هم سوال میدن، مثلا هندسه محاسباتی و پوش محدب و الگوریتم های تقریبی، کتاب CLRS رو هرچی کامل تر بخونین برد کردین چون طراح محدودیتی انگار ندارهتحلیل مجانبی (پیچیدگی محاسباتی) هم مسلط باشین چون هر الگوریتمی که توصیف میکنین باید مرتبه زمانیش هم بدین.---سیستم های عاملدوره سعید ابریشمی برای این درس رو پیشنهاد میکنم، با اینکه کتاب استالینگز رو درس میده و منبع اصلی os کتاب سیلبرشاتسه ولی تنها دوره ای بود که تونستم پیدا کنم (انصافا خیلی خوب توضیح میدن)در کنارش کتاب سیلبرشاتس رو بخونید و سوال هاش رو حل کنید (کتاب روونیه پیشنهاد میکنم)کتاب دکتر حقیقت رو من خریدم ولی نرسیدم بخونم، انگار اقای امیر پورمند خیلی ازش راضی بوده ولی قسمت نبود بخونمشفکر طراح: سخت ترین سوال های المپیاد یادمه از synchronization بود که میگفت این مسئله رو داریم، با فلان ابزار (مثلا mutex یا مانیتور یا...) پیاده سازیش کنید(متاسفانه از این نوع سوال ها تو منابع زیاد نیست و خیلی به خلاقیت خودتون و تسلطتون به این درس بستگی داره بتونین حل کنین یا نه)بقیه سوالاش خیلی سخت نبودن---مدار های منطقی و معماری کامپیوترپیشنهاد میکنم دوره مدار های منطقی دکتر زین العابدین نوابی رو ببینین، خیلی عالی تدریس میکننو بعدش دوره معماری کامپیوتر مازیار گودرزیو کتابی که پیشنهاد میکنم بخونین معماری کامپیوتر مانو عه، چون تو ۳ فصل اینا مدار منطقی رو مرور میکنه و این ۳ فصل حدود ۶۰ تا سوال مدار منطقی دارن که میتونه ببنده مدار منطقیو براتون تقریبابعد از اون سعی کنین کل فصل های کتاب رو بخونین (به جز پردازش موازی که خوشه ها و اینا رو میگه چون من نه تو المپیاد دیدم نه تو سیلابس جایی)و سوالات آخر هر فصل رو حتما حل کنینکتاب رهیافت حل مسئله در معماری کامپیوتر که اقای پورمند گفته بود هم خیلی خوبه من جز فصل آخرش رسیدم کلشو حل کنم و خیلی راضی بودم.فکر طراح: خیلی روی فصل طراحی کامپیوتر پایه تمرکز کنین چون خیلی روش مانوور میدن و معمولا چند تا سوال از تحلیل و طراحی ازش میدنهمینطور فصل microprogramming که معمولا تو دانشگاه ها تدریس نمیشه (ولی مازیار گودرزی درس داد) ولی توی المپیاد اومدهمینطور فصل برنامه نویسی کامپیوتر پایه چون یه سوال کوچیک ازش یادمه اومد که میخواست یه محاسباتی رو انجام بده، گفته بود کدش رو به صورت اسمبلی ای که دادیم بنویسید و باینری هر دستور هم جلوش بنویسیداز مدار منطقی هم روی طراحی مدار ترتیبی و هازارد هم سوال اومد یادمهخیلی روی این درس وقت بذارید چون ایده جدید تقریبا نداره و اگر بلدش باشید حتی میشه فول مارکش کرد.---شبکه های کامپیوتریهنوز پاس نکردم امتحانش هم ندادم نظری ندارم‌ :)در پایان امیدوارم مفید باشه واستون و براتون آرزوی موفقیت دارم