نشریه دانشکده کامپیوتر دانشگاه صنعتی اصفهان
حفره
به قلم فاطمه قاسمی ورودی 96 کارشناسی مهندسی کامپیوتر صنعتی اصفهان و تغییر رشته به ریاضی
بازنگری شده توسط رسول بوسعیدی و سنا محراب بیگی
تصمیم دارم درباره تجربه شخصی خودم از رشته مهندسی کامپیوتر در دانشگاه خاص خودمان بنویسم، اینکه میگویم دانشگاه خاص خودمان از آنجایی میآید که تجربه دانشجوی این رشته بودن در همه دانشگاهها یکی نیست، حتی چارتهای ما یکسان نیستند این تفاوت هم به لحاظ درسهایی است که میخوانیم هم به لحاظ ترمهایی که آن درسها را میخوانیم. طبیعی است محتوای درسها که اکثرا توسط شخص خود اساتید تنظیم میشود هم یکی نیست، حتی ممکن است دو استاد متفاوت در یک دپارتمان درس یکسانی را متفاوت درس دهند. این تنوع هم میتواند خوب و رشد دهنده باشد هم میتواند باعث ایجاد حفرهها و کاستیهایی شود. بنظر میآید در دانشگاه ما رشته کامپیوتر متأخر و به نوعی فرزند رشته برق است، نشانههای زیادی هم برای این ادعا وجود دارد، اگر بخواهید در یک فعالیت خارج از دانشکدهای ثبت نام کنید، مثلا کلاسی در تربیت بدنی، این مکالمه را تجربه خواهید کرد:
- اسمت؟
- فاطمه قاسمی
- دانشکده؟
- کامپیوتر
مینویسد دانشکده مهندسی برق.
- نه نه دانشکده کامپیوترم!
- همون برقه دیگه!
برق رشته قدیمیتری هم هست و خیلی اشتباه نیست اگر بگوییم رشته کامپیوتر در ابتدا واقعا شاخهای از برق بوده، شاخهای که البته امروز شخصیت پیدا کرده و هویت مستقلی دارد. این وابستگی را میتوانید در غلظت درسهای برقی در چارتمان هم ببینید، آز فیزیک الکتریسیته، ریاضی مهندسی و ... از درسهایی هستند که در بعضی دانشگاههای دیگر جزو چارت کامپیوتر نیستند. این وابستگی به خودی خود بد نیست، این بخش از رابطه مادر و فرزندی این دو رشته بسیار رشد دهنده است، اشکال زمانی پیش میآید که حواسمان به جنبههای تئوری رشتهمان نباشد، بگذارید بگویم این رشته پدری هم دارد! مادر به معنی زاینده و پدر به معنی تامین کننده! و حلقه گم شده اینجا میتواند فراموش کردن این پدر پیر باشد!
رشته ما یک رشته مهندسی است، هدف اصلی طراحی و اختراع روندها و سیستم و بعد پیادهسازی آنهاست، پس طراحی و طراحی درست و اصولی در اولویت قرار دارد، طراحی اکثرا یک کار انتزاعی است، و بله قطعاً آشنایی با تواناییهایمان در زمان پیادهسازی به روند طراحی جهت میدهد اما با این حال پرورش «تنها مهارتهای پیادهسازی » برای اختراع یک سیستم خوب کافی نیست، بگذارید با یک مثال منظورم از «جنبه تئوری» مشخص کنم:
در درس «تئوری زبانها و ماشین» ما ثابت میکنیم در مدل محاسباتی مورد استفاده ما، یعنی ماشین تورینگها، مهم نیست الفبای شما چه سایزی دارد (برای سایزهای اکیدا بزرگتر از یک)! اما به طور ساده، این گزاره یعنی فرقی نمیکند شما از سه کاراکتر برای محاسبات خود استفاده کنید یا دو کاراکتر ، قدرت حل مسئله شما یکسان است! اگر مسئله حل پذیر نباشد، شما نه با دو کاراکتر و نه با سه کاراکتر نمیتوانید حلش کنید! و این چه ربطی به کامپیوتریها دارد؟ خب در عمل این یعنی اگر شما از ۰و۱و۲ برای حل مسئلهها استفاده کنید همان دسته از مسائل حل میشوند که وقتی از باینری استفاده میکنید حل میشوند! تفاوت تنها در زمان حل است! خب چرا وقتی میتوانیم سرعت را افزایش دهیم، این کار را نمیکنیم؟ خب، من جواب خودم را دارم، شاید جوابهای بهتری جایی وجود داشته باشند اما من اینطور جواب میدهم:
داستان قبلترها شروع شده، جایی در دپارتمان ریاضی، ریاضیدانی به نام بول، جبر جدیدی را میسازد به نام جبر بولی. او جمع کردن، ضرب کردن و توابع دیگری در فضای ساختارهای جبری مخصوص خودش را میسازد. اگر درس جبر را گذرانده باشید ( که عجیب است اگر به عنوان یک کامپیوتری این کار را کرده باشید) تعجب نخواهید کرد اگر بگویم او مدت ها توسط بقیه ریاضیدانها مسخره شد، کاری که او کرد بررسی یک حالت خاص از یک ساختار معروف بود! کاری که تابو و گناه ریاضیدان هاست! آنها عاشق حالتهای کلی اند، آنها به n علاقه مندند نه به n=2 ! پس به نظر تلاش او کار بیهودهای بود! اما مدتها بعد...
راستش را بخواهید نمیدانم به لحاظ تاریخی چه اتفاقی افتاده! اما اینجای داستان باید شاهد برخورد یک مهندس آشنا به برق و یک ریاضیدان آشنا با جبر بولی بوده باشیم! درواقع پیادهسازی جبر بولی توسط ترانزیستورها کار سادهای است! این کار را در درس مدارهای منطقی و مبانی مدارهای الکتریکی یاد میگیریم! یاد میگیریم چطور با ترانزیستور، گیتهای منطقی را بسازیم و چطور با آن گیتها جمع کنیم، ضرب کنیم و … . این داستان بنظرم دو جنبه مهم دارد، یک آن مهندس برق که متوجه شده جبر بولی را میتوان به راحتی با دانشش پیادهسازی کرد و یکی هم سادگی جبر بول که وابسته به باینری بودن فضای آن است! به لحاظ ریاضی میتوان این جبر را برای یک فضای سه عضوی مثل ۰و۱و۲ تعمیم داد، اما هم با جبر پیچیدهتری روبروییم هم نمیدانم چطور میخواهیم آن را بسازیم!
پس اجازه دهید این ادعا را بکنم که طراحی آن پردازنده داخل کامپیوترهایمان بدون دانستن مقدار خوبی ریاضی ممکن نبوده! شواهد زیادی هم برای این ادعا وجود دارد! خوب است نگاهی به لیست طراحان اولیه کامپیوتر بیندازید! اسم تعداد زیادی از آنها را در درس سیستمهای عامل خواهید شنید! بله، آنها حتی در طراحی منطقهای داخلی سیستمها و برنامهریزی آنها هم نقش پررنگی داشته اند! قبلتر هم از آقای تورینگ نام بردم! و با احتمال خوبی فیلم «بازی تقلید» را هم دیده اید!
خب، بیایید به عقب تر برگردیم، از آنجایی به اینجا رسیدیم که رابطه این فرزند مامانی ممکن است مشکلاتی از جمله فراموش کردن پدر پیرش یعنی ریاضیات را ایجاد کند! خب راه حل چیست؟ نمیدانم! من فقط میتوانم پیشنهادهایی بدم! حقیقتی که من میبینم این است که شدت برقی بودن رشته ما باعث شده ما به جای جبر خطی، درس ریاضیات مهندسی را در دستور مطالعاتمان داشته باشیم، ریاضی مهندسی درس مهم و بسیار پرکاربردی است، اما بیشتر استفادهاش در رشتهی مکانیک و مطالعه درسی مانند سیگنالها و سیستمها است! اگر دست من بود میگفتم همه دانشجوها باید هر دو را بگذرانند، اما به هر ترتیبی بوده درس جبر خطی از چارت ما حذف شده! دقت کنید که ما به عنوان مهندس کامپیوتر سر و کار زیادی با دادهها داریم و میدانید که تقریبا همیشه دادهها در داده ساختارهایی مانند آرایهها ذخیره میشوند، درس جبر خطی کمک میکند طراحی و استفاده از دادهها برایمان راحت تر و کم هزینه تر باشد!
این نوشته همین الان هم خیلی طولانی شده و من دوست دارم به جای اینکه بخاطر طولانی بودنش خوانده نشود، پیشنهادهایم را خلاصه تر کنم و از پرداختن به جزئیات بپرهیزم! به طور خلاصه گذراندن درسهایی مثل جبر خطی، منطق و درس احتمال به صورت خوب (آمار و احتمال مهندسی را هم خوب بگذرانید خوب است) و دقت و مطالعه عمیقتر درسهایی مثل همان تئوری زبانها و ماشینها و الگوریتم مقدار خوبی از جاهای خالی را پر میکند! دقت به رابطه درسها و پرسیدن سوالهایی مثل همان «چرا از الفبای بزرگتر استفاده نمیکنیم» در رشد دادن این بخش از ذهن مهندسیمان هم موثر است! در مجموع با ریاضی دوست باشید! من حتی مخالف مرزگذاری و جدا دانستن رشتهها هستم و بگذارید در آخر جملهای از یکی از اساتید نقل کنم:
آدمهای بین رشتهای آدمهای ماهر تر و توانا تری هستند، آنها چیزهای بیشتری دیدهاند و شهود بهتری دارند!
پی نوشت: این نوشته نظر شخصی و حاصل تجربیات شخص خاص بنده است و ممکن است با عقیده عام یکسان نباشد. در صورت وجود هرگونه گزاره غلط خوشحال میشوم من را مطلع کنید. :)
مطلبی دیگر از این انتشارات
دنیای موازی: جهانی پر از پردازشهای موازی!
مطلبی دیگر از این انتشارات
اتاقکی در کنج راه پله
مطلبی دیگر از این انتشارات
در رد و تمنای بلندپروازی