خلاصه درس آشنایی با علوم کامپیوتر

برنامه درس

خلاصه درس

منابع

پیوندها

مدرس

عکس‌ها

وبگاه دانشکده علوم ریاضی

همه حقوق محفوظ است

© Sharif University of Technology, 2006

 

آزمون درس آشنایی با علم کامپوتر ساعت ۱۴:۰۰ روز یکشنبه ۱۹ آذر در اتاق ۳ ساختمان ابن‌سینا برگزار شد. نمره نهایی براساس این آزمون، نحوه شرکت در کلاس و آزمون نهایی تعیین خواهد شد. شرکت در آزمون نهایی بر اساس مقررات دانشکده بر همه لازم است، گرچه بیشتر نمره درس را آزمون ۱۹ آذر تعیین می‌کند.

جلسه اول: علم کامپیوتر چیست؟

دائرةالمعارف بریتانیکا علم کامپیوتر را چنین تعریف می‌کند

Computer Science: the study of computers, including their design (architecture) and their uses for computations, data processing, and systems control.

دانشنامه اینترنتی ویکی‌پدیا این تعریف را می‌دهد:

Computer science, or computing science, is the study of the theoretical foundations of information and computation and their implementation and application in computer systems

در دهه ۱۳۵۰ اصطلاح علم کامپیوتر یا علوم کامپیوتر در فارسی در برابر computer science یا computer sciences رایج شد. این اصطلاحات انگلیسی نام رشته‌ای تحصیلی در برخی دانشگاه‌های کشورهای انگلیسی زبان بود. همین رشته را در دیگر کشورهای اروپائی انفورماتیک می‌نامیدند. این واژه از دو جزء انفورماسیون (اطلاعات) و آتوماتیک (خودکار) درست شد که به معنی پردازش خودکار اطلاعات بود. اگر چه واژه informatics درزبان انگلیسی نیز معنائی نزدیک به علم کامپیوتر ولی متفاوت با آن پیدا کرده و به هرحال چندان رایج نیست. لزوم نام‌گذاری و عرضه مطالب مختلفی که برای طراحی سیستم‌های کامپیوتری سخت‌افزاری و نرم‌افزاری لازم بود با رشد و گسترش کامپیوترها در دهه ۴۰ و ۵۰ میلادی احساس شده بود و در دهه ۶۰ نام کامپیوتر ساینس به عنوان رشته دانشگاهی رواج یافت و به ایران هم رسید.

چون تلاش‌ها برای ساختن دستگاهی که محاسبات را خودکار انجام بدهد عمدتا به دست ریاضی‌دان‌ها و مهندسان برق انجام می‌گرفت، درس‌هائی که برای این رشته نو پا تعیین می‌شد از دو رشته ریاضی و برق می‌آمد. به تدریج درس‌های ویژه این رشته نیز شکل گرفت. فن برنامه‌سازی نیز زمینه جدیدی بود و نیاز به آموزش داشت. بنابراین رشته‌ای جدید ظهور کرد و احتیاج به نام داشت و بالاخره نام علم کامپیوتر بر آن ماند. در سال‌های اخیرا اصطلاح رایانش رایج شده است و لی هنوز در فارسی به علم کامپیوتر علم رایانش نمی‌گویند. (گویا رایانش را از رایاندن یا رایانیدن که ظاهرا در فارسی قدیم سابقه‌ای داشته است گرفته‌اند و رایانه به معنای کامپیوتر را هم از آن ساخته‌اند)

در مورد نام مناسب برای این رشته هنوز بحث ادامه دارد و دانشگاه های معتبر جهان نام‌های مختلفی برای دانشکده‌های این رشته انتخاب کرده‌اند. سه گفتاورد (نقل به معنی) از سه تن از بزرگان این رشته را نقل می‌کنم:

ادسخر دایکسترا دانشمند هلندی علم کامپیوتر: علم کامپیوتر همانقدر به کامپیوتر مربوط است که جراحی به چاقو یا ستاره‌شناسی به تلسکوپ

دانلد کنوت: علم کامپیوتر اساسا علم الگوریتم‌ها است و باید به آن الگوریتمیکس (algorithmics) یا علم محاسبات (computing science) گفت. اگر این حرف کنوت را بپذیریم نام فارسی رشته ما می‌شود علم رایانش.

فردریک بروکس: علم کامپیوتر علم نیست. تمام رشته‌هائی که در نام خود کلمه علم دارند علم نیستند. علوم تربیتی، علوم اجتماعی، علوم نظامی... این‌ها علم نیستند. فیزیک و شیمی علم هستند.

علم

واژه علم در فارسی اقلا دو کاربرد دارد: یکی به معنی دانسته و مجموعه‌ای از دانسته‌ها است. «علم حضور معلوم است نزد عالم.» دیگر به معنی کوشش سازمان یافته و منظم برای شناخت جهان است. به این معنی علم کامپیوتر علم نیست. ولی مانند هر رشته علمی دیگری برخوردی علمی به پدیده‌ها دارد.

ریاضیات

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

کامپیوتر

کامپیوتر ماشین محاسبه‌گر قابل برنامه‌ریزی است. استفاده از ابزارهائی برای ساده کردن کار محاسبات گوناگون پیشینه زیادی دارد و در بخش تاریخ کامپیوتر به آن خواهیم پرداخت ولی رشد کامپیوتر رقمی در اواخر دهه ۴۰ میلادی مفهوم و کلمه کامپیوتر را به آن صورت که فعلا می‌شناسیم و ارد زبان کرد.

علم کامپیوتر؟

تعریف من: بررسی علمی امور مربوط به طراحی و ساخت و استفاده از سیستم‌های کامپیوتری

رشته‌های دیگری که با نام مهندسی کامپیوتر یا فن‌آوری اطلاعات یا مهندسی نرم‌افزار مطرح هستند از یک نظر همه جزئی از رشته وسیع علم کامپیوترند. البته باید توجه کرد که این رابطه جزء و کل مانند مثلا مهندسی مکانیک است که از دید کلی بخشی از علم فیزیک است.

جلسه دوم: محاسبات و علم محاسبه

حساب و محاسبه سابقه‌ای قدیم دارد و کهن‌ترین قسمت ریاضیات است. ارشمیدس، اقلیدس و دیگران روش‌های محاسباتی به نام خود دارند. خوارزمی روش‌های محاسباتی مهمی را برای حل معادلات در کتاب خود «الجبر والمقابله» نوشت که سال‌ها مورد استفاده بود. ترجمه کتاب او به لاتین نام او را به غرب برد و در زبان‌های غربی الگوریتم به معنای روش محاسبه جا افتاد.

جلسه سوم: تاریخچه کامپیوتر و برنامه‌سازی

تاریخ کامپیوتر با تاریخ ریاضی و فن محاسبه نقاط اشتراک زیادی دارد. از وقتی که انسان با شمارش آشنا شد تاریخ علم کامپیوتر (یا علم رایانش) هم شروع شد. ابزارهای کمک به محاسبه مانند چوب‌خط و تسبیح از اجداد دور کامپیوتر هستند. اختراع انواع خط‌کش محاسبه و بعد کوشش‌هائی که در ساختن ماشین حساب خودکار انجام گرفت به ساختن ماشین‌های حساب برنامه‌پذیر و نهایتا کامپیوتر منجر شد. الگوریتم‌های باستانی در دست است و مهمترین کتاب الگوریتم‌ها در سده‌های میانه کتاب خوارزمی بود. نام خوارزمی به صورت لاتین الگوریتم در جهان باقی مانده است. بلز پاسکال نوعی ماشین حساب ساخت. چارلز بابیج «ماشین تفاضلی» را طرح کرد که برنامه‌پذیر بود. ماشین تفاضلی بابیج را ایدا آگوستا، کنتس لاولیس برنامه سازی می‌کرد. در آستانه جنگ جهانی دوم تلاش برای ساختن کامپیوتر برنامه‌پذیر در آلمان و آمریکا جریان داشت. کنراد زوسه اولین کامپیوتر الکترونیک برنامه‌پذیر را ساخت. کسانی مانند آلن تورینگ و جان فون نویمان مبانی نظری کار کامپیوتر را بناگذاردند. با ظهور انیاک و بعد یونیواک و آمدن شرکت آی‌بی‌ام به عرصه تولید کامپیوتر صنعت کامپیوتر پا گرفت و همچنان از موتورهای اقتصادی جهان است.

جلسه چهارم: برنامه‌سازی

میگویند نخستین برنامه‌ساز کامپیوتر ایدا آگوستا، کنتس لاولیس (دختر لرد بایرون) بود. او با چارلز ببیج کار می‌کرد و برای ماشین تفاضلی او برنامه می‌ساخت.

برنامه‌سازی برای ساختن الگوریتم‌ها به زبان ماشین است. در آغاز که چنین بود. بعد‌ها با ظهور زبان‌های سطح بالا لزوم آشنائی به زبان ماشین کمرنگ‌تر شد و برنامه‌سازان بدون نیاز به آگاهی از ساز و کار درونی ماشین بیشتر توانستند به الگوریتم بپردازند.

الگوریتم

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

تحلیل الگوریتم‌ها

برای آبگوشت درست کردن چند روش هست. برای رسیدن به مقصد از مبدا هم همینطور. برای محاسبه هم چند روش هست. این را که کدام روش سریعتر است یا حافظه کمتری لازم دارد می‌توان با تحلیل و بررسی الگوریتم تعیین کرد. تحلیل الگوریتم‌ها کارش این است. کنوت می‌گوید این اساس علم کامپیوتر است و نام علم الگوریتم (algorithmics) را ترجیح می‌دهد.

زبان‌های برنامه‌سازی

در آغاز زبان برنام‌سازی همان زبان ماشین بود. زبان ماشین مجموعه دستورالعمل‌هائی است که به ماشین میدهند تا مثلا جمع یا ضرب یا مقایسه را انجام دهد. طبعا زبان هر ماشین با ماشین دیگری که ساختمان و کارکرد دیگری دارد متفاوت است و زبان متفاوتی دارد. زبان‌های سطح بالا به همین منظور ساخته شد که برنامه‌سازی مستقل از نوع ماشین باشد. زبان‌های مشهور سطح بالای اولیه فرترن و کوبول بودند. با گسترش کاربرد کامپیوتر و زیاد شدن برنامه‌ها و نیز پیچیده‌تر شدن و بزرگ شدن برنامه‌ها، اشکالات برنامه نویسی بی‌ضابطه و درهم و برهم آشکار شد. برنامه نویسی ساخت‌یافته مطرح شد. زبان‌های سطح بالا مانند الگول و پاسکال که بنا به تعریف ساخت‌یافته بودند ابداع شد. در دهه ۶۰ اندیشه‌های مربوط به برنامه‌سازی شیء‌گرا شکل گرفت و در دهه ۸۰ و ۹۰ کاملا جا افتاد و رایج شد.

جلسه پنجم: هوش مصنوعی

از همان اوئل پیدایش کامپیوتر به آن مغز الکترونیک می‌گفتند. یعنی آرزوی اینکه کامپیوتر جای انسان را بگیرد یا در بعضی کارها مانند او عمل کند از همان ابتدا وجود داشت. از همان آغاز هم دو نظر شکل گرفت: عده‌ای معتقد بودند که مغز انسان را می‌توان مدل‌سازی کرد و ماشینی بر اساس آن مدل ساخت که عین مغز انسان عمل کند. دیگران می‌گفتند که نمی‌شود. تورینگ آزمون معروف خود را مطرح کرد که می‌گوید اگر ماشینی در اتاقی باشد و شخصی در اتاق دیگر و با سوال و جواب با ماشین نتواند قطعا بگوید که در اتاق دیگر ماشینی به او جواب می‌دهد یا انسانی، آنگاه آن ماشین هوشمند است. در کوشش برای افزودن هوش به ماشین دو راه متصور بود: سعی در ساختن ماشینی که سازوکار مغز را تقلید کند و سعی در ساختن ماشینی که معادل مغز عمل کند، فارغ از سازوکارش.

سیستم‌های خبره

هدف از سیستم‌های خبره (expert systems) ایجاد سیستم‌های کامپیوتری است که مانند کارشناس در رشته‌ای معین صاحب تخصص باشند. این سیستم‌ها بکار کارشناسان می‌آید و در مواردی مانند مشاور عمل می‌کند. در این سیستم‌ها مجموعه‌ای از قاعده‌ها و بسیاری اطلاعات در رشته مورد نظر قرار دارد و سیستم اطلاعات را بر اساس قاعده‌ها عرصه می‌کند.

ترجمه ماشینی

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

تشخیص الگوها

برنامه‌های تشخیص الگو توانایی تشخیص الگوها را در زمینه‌های مختلف دارند. تشخیص متن دست‌نوشته و بیرون آوردن و مشخص کردن تصویری با خصوصیات مطلوب از میان تصویرهای مختلف (مثلا تشخیص تصویر یک نفر در میان میلیون‌ها تصویر) از کاربردهای رشته تشخیص الگو است.

شطرنج

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

جلسه ششم: آی تی چیست؟

آی تی مخفف اینفورمیشن تکنولوژی (فناوری اطلاعات) است و بسیار از علم کامپیوتر وسیع‌تر (و مبهم تر) است. این اصطلاح در دهه ۱۹۹۰ جایگزین اصطلاحات :پردازش داده‌ها و سیستم‌های اطلاعات مدیریت شد که در دهه‌های ۱۹۷۰ و ۱۹۸۰ بسیار رایج بودند. آی‌تی معمولا به تولید و پردازش و نگهداری و توزیع اطلاعات در موسسات بزرگ اشاره دارد.

اطلاعات

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

آی‌تی با علم کامپیوتر چه فرق دارد؟

البته در موارد زیادی با هم اشتراک دارند. اگر علم کامپیوتر را مشابه مهندسی مکانیک بگیریم، آی‌تی مشابه صنعت حمل و نقل است. در صنعت حمل و نقل، خودرو و راه‌آهن و هواپیما و کشتی داریم. همه این‌ها را مهندسان مکانیک طرح می‌کنند. در عین حال در صنعت حمل و نقل مسائل مربوط به مدیریت ناوگان و مدیریت ترافیک و تعیین استراتژی حمل و نقل در سطح شرکت و شهر و کشور مطرح است که ربط مستقیمی به مهندسی مکانیک ندارد.

جلسه هفتم: مهندسی نرم‌افزار

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

اصطلاح «مهندسی نرم‌افزار» در سال ۱۹۶۸ در کنفرانسی در شهر گارمیش در جنوب آلمان مطرح شد. در آن سال‌ها تولید نرم‌افزار کامپیوتر به حدی از بلوغ رسیده بود که اهمیت تولید نرم‌افزار اطمینان‌پذیری که در محدوده بودجه معین و در مدت معین تولید شود اهمیت بسیاری یافته بود. بسیاری از پروژه‌های نرم‌افزاری به دلیل نبود روش‌های مناسب کنترل پروژه با شکست روبرو شده بودند. اصطلاح «بحران نرم‌افزار» در آن سال‌ها بسیار رایج بود. یکی از هدف‌های مهندسی نرم‌افزار کاربرد روش‌ها کنترل پروژه‌های مهندسی در کار تولید نرم‌افزار بود. در عین حال نرم‌افزار ویژگی‌های خود را دارد و نیازمند برخوردی متفاوت از رشته‌های رایج و کلاسیک مهندسی مانند مهندسی برق و مکانیک است.

از تحولات مهم در تاریخ مهندسی نرم‌افزار تشخیص این امر بود که هر پروژه نرم‌افزاری باید بر اساس مدلی از مراحل کار (یا به اصطلاح مدل چرخه زندگانی نرم‌افزار) انجام گیرد. معروف‌ترین این مدل‌ها به «مدل آبشاری» معروف است.

در بحث از مهندسی نرم‌افزار باید توجه کرد که این رشته با عنوان شغلی که گاه برای اشخاص بکار می‌رود تفاوت دارد. عنوان شغلی «مهندس نرم‌افزار» معمولا بجای اصطلاح قدیمی‌تر «برنامه نویس» بکار می‌رود و دارنده آن عنوان ممکن است کارش امور مربوط به مهندسی نرم‌افزار باشد یا نباشد. برنامه نویسی بخشی از فعالیت مهندسی نرم‌افزار است ولی تمام آن نیست.

جلسه هشتم: کاربردهای کامپیوتر

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

کاربردهای کامپیوتر بسیار زیاد و متنوع است. در این درس به بعضی از زمینه‌های بزرگ کاربرد کامپیوتر اشاره می‌کنیم.

کاربردهای اداری و تجاری

ذخیره و پردازش و بازیابی اطلاعات اداری و تجاری از همان اویل کاربرد کامپیوتر معمول بود. بسیاری از موسسات با تشکیل واحدهای کامپوتر که به نام‌های گوناگون مانند «واحد کامپیوتر»، «واحد پردازش داده‌ها»، و احد «اطلاعات مدیریت» و اخیرا «واحد آی‌تی» یا «آی‌سی‌تی» معروف بودند به کار تولید نرم‌افزار برای منظور فوق می‌پرداختند. با گسترش صنعت‌نرم‌افزار شرکت‌هایی به تولید مجموعه‌های آماده نرم‌افزاری پرداختند. این امر بار درگیر شدن در تولید نرم‌افزار را از دوش موسسات برمی‌داشت. ظهور کامپیوتر شخصی و گسترش شبکه‌سازی در موسسات کار کاربرد کامپیوتر در اداره امور موسسات را ساده‌تر کرد.

حسابداری و امور پرسنلی از رایج ترین کاربردهای اداری کامپوتر استو سیستم‌های انبارداری و سفارشات و کنترل تولید نیز از کاربردهای رایج است. در سال‌های اخیر اصطلاح «ای‌آر‌پی» (مخفف عنوان انگلیسی Enterprise Resource Planning) برای اشاره به سیستم‌های یکپارچه اداری و تجاری در موسسات بزرگ بکار می‌رود.

کاربردهای‌علمی

نرم‌افزارهای علمی برای دسته‌بندی اطلاعات علمی ناشی از آزمایشات در موسسات تحقیقاتی یا کمک در تحلیل و محاسبه در کارهای علمی بکار می‌روند. نرم‌افزارهای ریاضی مانند «مت‌لب» و مانند آن کاربردفراوانی در فعالیت‌های علمی دارند.

کاربردهای فنی

طراحی مهندسی با کامپیوتر که به «کد» (CAD) معروف است یکی از زمینه‌های مهم کاربرد کامپیوتر در صنعت و امور فنی است. نرم‌افزار معروف به کاتیا در طراحی هواپیما‌ها بکار رفته و می‌رود. فرنک گری معمار مشهور معاصر از این نرم‌افزار برای طرح کارهای اخیرش (از جمله موزه گوگنهایم در بیلبائو) استفاده می‌کند.

جلسه نهم: علم کامپیوتر در جامعه

کامپیوتر تاثیر زیادی بر جامعه دارد و روزافزون است. الان در بسیار از امور زندگی ما به کامپیوتر وابسته است. همین آزمون ورودی یا کنکوری که شما در آن قبول شدید کامپیوتری است. دوربین دیجیتال شما کامپیوتری است. ماشینی که سوار می‌شوید کامپیوتری است. سازه یا معماری خانه‌ای که در آن زندگی می‌کنید با کامپیوتر تحلیل و طراحی شده است. وقت زیادی را در هر روز در مقابل کامپیوتر می‌گذرانید. نامه‌های عاشقانه با کامپیوتر به یاران می‌رسد. خرید و فروش با کامپیوتر است. جنگ کامپیوتری است. اثر این حضور عظیم در جامعه نیازمند بررسی و تحلیل است. جنبه‌های حقوقی مربوط به کامپیوتر بخصوص در مورد حقوق نشر نرم‌افزار و مالکیت فکری گسترش یافته است. «دزدی هویت» یعنی استفاده از نام و اطلاعات شخصی افراد برای سؤاستفاده مالی که بیشتر از طریق کامپیوتر و اینترنت انجام می‌گیرد رواج یافته است و نیازمند قانون است. امکان ذخیره و بازیابی حجم بزرگی از اطلاعات مربوط به اشخاص جامعه امروزی را به آنچه که جورج اورول در کتاب «هزار و نهصد و هشتاد و چهار» خود تصویر می‌کند نزدیک کرده است. «برادر بزرگ» امروز در عرصه‌های مختلف از احوالات اعضای جامعه خبر دارد. کامپیوتر این امکان را برای او فراهم کرده است.

جلسه دهم: آینده کامپیوتر

نقش کامپیوتر همچنان عظیم خواهد ماند. از نظر سخت‌افزاری کوچکتر شدن و سریعتر شدن قانون کامپیوتر بوده وادامه خواهد یافت. کامپیوتر‌های کنونی از فناوری الکترونیک بهره‌می‌برند. در آینده فناوری‌های دیگر بکار خواهد رفت. استفاده از فوتون (نور) بجای الکترون، کاربرد ملوکول‌ها مانند پروتئین‌ها بجای سیلیکون و بجای ترانزیستور از زمینه‌های تحقیق امروز است که شاید در آینده بکار آید. سیستم‌های نهفته (embedded systems) کامپیوتری در بسیاری از وسائل قرار دارد و بیشتر خواهد شد.

جلسه یازدهم: علم کامپیوتر نظری

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

جلسه دوازدهم: انجمن‌های تخصصی

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

برخی از انجمن‌های مربوط به رشته کامپیوتر:

* انجمن ماشین‌های محاسب (Association of Computing Machinary) معروف به ACM قدیمی‌ترین انجمن کامپیوتردانان است. این انجمن در سال ۱۹۴۷ تاسیس شد و اکنون در بیش از ۷۵۰۰۰ عضو دارد. این انجمن با انتشار نشریات و برگزاری سمینارها و کنفرانس ‌ها نقش مهمی در گسترش و پیشبرد دانش رایانه دارد. جایزه تورینگ که هرسال از سوی این انجمن به دانشمندان برجسته علم کامپیوتر داده می‌شود معتبرترین جایزه علمی در این رشته است و گاه از آن به عنوان «نوبل کامپیوتر» یاد می‌شود.

*انجمن کامپیوتر، وابسته به انجمن مهندسان برق و الکترونیک (IEEE-CS) انجمنی است که در سال ۱۹۶۳ تاسیس شد. این انجمن دارای بیش از ۱۰۰۰۰۰ عضو است و مانند انجمن ماشین‌های محاسب با انتشار نشریات و برگزاری همایش ها به گسترش دانش رایانه یاری می‌رساند. گروه های تخصصی این انجمن که نام آن ها اغلب با پیشوند SIG (کوتاه شده Special Interest Group) شروع می‌شود، نقش مهمی در تدوین استانداردهای رشته کامپیوتر دارند.

*انجمن انفورماتیک ایران نخستین انجمن کامپیوتردانان ایران است و در سال ۱۳۵۸ تاسیس شد. این انجمن با انتشار نشریه «گزارش کامپیوتر» و برگزاری همایش‌های علمی و فنی سعی در گسترش دانش رایانه در ایران دارد.

*انجمن کامپیوتر ایران در سال ۱۳۷۷ از سوی عده‌ای از استادان رشته کامپیوتر ایران تاسیس شد. مهمترین فعالیت این انجمن برگزاری سالانه کنفرانس کامپیوتر ایران است .

جلسه سیزدهم: رشته کامپیوتر در دانشگاه‌ها

دانشگاه‌های معتبر جهان نام‌های مختلفی برای برنامه‌های تحصیلی مربوط به رشته کامپیوتر دارند. برخی از آن‌ها عبارتند از:

ریاضی و کامپیوتر
در برخی از دانشگاه‌ها (مانند دانشگاه شریف) رشته کامپیوتر از دل دانشکده ریاضی بیرون آمد و نام دانشکده ریاضی و کامپیوتر در برخی از آن ها باقی مانده است.

علم کامپیوتر
این نام رایج‌ترین نام در دانشگاه‌ها است.

علوم کامپیوتر
صورت دیگری از نام بالا است.

مهندسی برق
در برخی از دانشگاه ها رشته کامپیوتر از دل رشته مهندسی برق بوجود آمد و هنوز بخشی از دانشکده برق به‌شمار می‌رود.

مهندسی کامپیوتر
مهندسی کامپیوتر (به معنی مهندسی سخت‌افزار کامپیوتر) در برخی از دانشگاه‌ها (مانند دانشگاه شریف) از رشته برق جدا شده و دانشکده مستقلی است.

EECS
این نام که به معنی دانشکده مهندسی برق و علم کامپیوتر است در برخی از دانشگاه‌ها رایج است و معنای آن اینست که برنامه تحصیلی علم کامپیوتر هنوز بخشی از برنامه دانشکده مهندسی برق است.

سیستم‌های اطلاعاتی
بعضی از دانشگاه‌ها برنامه‌ای با این نام دارند. به نظر می‌رسد رشته‌ای با این نام در ایران وجود نداشته است. گرایش رایج آن است که این رشته را آی‌تی (فناوری اطلاعات) بنامند.

فناوری اطلاعات
نام جدید سیستم‌های اطلاعاتی است و در ایران (و دانشگاه شریف) هم این رشته وجود دارد.

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

تصویرهائی از تاریخ رایانش

چوب خط

چرتکه

صفحه اول نسخه قدیمی کتاب «الجبر و المقابله» از احمد خوارزمی

استخوان‌های ناپیر

خط‌کش محاسبه

ماشین حساب پاسکال

ماشین حساب شیکارد

آدا گوستا

ماشین تفاضلی بابیج

فون نویمان

کنراد زوسه

لامپ خلاء یا لامپ رادیو

آلن تورینگ

انیاک

گریس هاپر در برابر کامپیوتر یونیواک

مقایسه اندازه چند ترانزیستور

آی‌بی‌ام ۱۱۳۰ مشابه اولین کامپیوتر دانشگاه صنعتی آریامهر (شریف)

آی‌بی‌ام ۳۶۰

سی‌دی‌سی ۶۴۰۰ مشابه دومین کامپیوتر دانشگاه صنعتی آریامهر (شریف)

لایه‌ها در یک مدار مجتمع

داخل یک تراشه

آی‌بی‌ام پی‌سی

ابر کامپیوتر کری

اینترنت