
سلام به همه بچههای علاقمند به کامپیوتر و برنامهنویسی و هوش مصنوعی. همانطور که میدونین روز به روز دنیای هوش مصنوعی داره وسیعتر میشه و به حوزه مختلف از علوم راه یافته است. ما تصمیم داریم هر هفته با یک مقاله در این حوزه، شمارو با رویداد های دنیای هوش مصنوعی آشنا کنیم و مهمتر اینکه ریاضیات این حوزه رو با ساده سازی به شما دانش آموزان عزیز کانونی توضیح بدیم. در نهایت بتونیم قدم به قدم به کد نویسی در محیط پایتون برای مسئله های جذاب هوش مصنوعی برسیم. پیشنهاد میکنم هر هفته مارو با یک مقاله در این حوزه دنبال کنید.
علم کامپیوتر رشتهی بسیار وسیعی است. به طوری که اگر صرفاً بخواییم در مورد همهی حوزههاش بخونیم شاید به اندازه عمر یک انسان زمان ببره. شاخهای که میشه گفت در هر گوشه از علم کامپیوتر میشه پیداش کرد برنامهنویسی است. چهرههای شناخته شدهای مثل استیو جابز، مارک زاکربرگ، جک دورسی و ... به خاطر نوآوریهاشون در حوزه برنامهنویسی است که معروف شدهاند. برنامهنویسی دنیایی از فرصتها کشف نشده است. حالا اگه یه چیزای مختصری درباره هنر کدزنی میدونید که گیجتون کرده، این مقاله رو با دقت دنبال کنید تا مناسبترین حوزه برنامهنویسی رو برای خودتون کشف کنید.
1. برنامهنویسی رقابتی(Competitive programming )
برنامهنویسی رقابتی یه جور ورزش ذهنیه. یعنی یه سری شرکتکننده داریم که تلاش میکنند راهحلهایی رو به صورت کد به یه سری مسائل ریاضی یا منطقی ارائه بدن. معیار سنجش شرکتکننده تعداد مسئلهایه که حل کردن، یا زمانی که برای حل اون گذاشتن، حجم کدی که استفاده کردن، و کیفیت خروجیای که از کدشون گرفتن.
مسائل مذکور معمولاً مربوط به مقولات زیر هستند:
· تئوری عدد (Number theory)
· تئوری گراف (Graph theory)
· ساختارهای داده (Data structures)
· تحلیل رشته (String analysis)
1.2 رقابتهای اصلی
الف) رقابتهای کوتاه مدت ( 1 الی 3 ساعت)
· ACM-ICPC, Google Code Jam, Facebook Hacker cup, Topcoder Open(TCO), IOI
ب) رقابتهای بلند مدت (چند هفته یا ماه طول میکشه)
· CodeChef Long challenges
· HackerRank week of code
· ICFP Programming context

1.3 منابع آموزشی
بعضی از منابع اینترنتی محبوب که به آموزش برنامهنویسی رقابتی مشغولند عبارتند از:
· HackerRank, Codeforces, TopCoder, CodeChef
1.4 فرصتهای شغلی
شرکت در این نوع برنامهنویسی رزومه حرفهایتون رو بالا میبره و کمکتون میکنه تا یه شغل خوبی در شرکتهای غولی مثل اپل و گوگل به دست بیارین
2. توسعه نرمافزاری منبعباز (Open source software development)
این حوزه از برنامهنویسی مربوط میشه به توسعه نرمافزارهایی که منبعباز هستند. منظور از منبعباز نرمافزارهایی است که به همراه کد مرجعش تحت لیسانس open source امکان مطالعه، تغییر و اصلاح دارند. این نوع پروژهها امکان مشارکت دستهجمعی برای بهبود یک برنامه رو به برنامهنویسها میدن. در این زمینه برنامهنویسهای به اشکالیابی، سندسازی، جواب دادن سوالات پیشآمده و درنهایت اضافه کردن کدهای کمکی مشغولن.
2.1 رقابتهای اصلی
· Google Summer of Code(GSoC)

· Facebook Open Academy(FOA)
· Outreachy
2.2 منابع آموزشی
شما میتونید پروژهای منبعباز رو در این آدرسها پیدا کنید:
· Github, Bitbucket, SourceForge, OpenHatch, Google Open Source
2.3 فرصتهای شغلی
غیر از اینکه مشارکت در این پروژهها برای شما رزومه محسوب میشه، حضور در این فضاها به شما کمک میکنه تا با برنامهنویسها و توسعهدهندههای کاربلد آشنا بشید.
3. توسعه شبکه (Web development)
در توسعه شبکه شما یه وب سایت رو در اینترنت درست میکنید. این کار به وسیله نوشتن نشانه (Markup) و کد انجام میشه. شما برای انجام این کار نیاز دارید به HTML، CSS، JavaScript، Web 2.0 skills و تکنولوژیهای Server-side تسلط داشته باشید.

3.1 منابع آموزشی
Freecodecamp.org، TreeHouse and W3Schools بهترین پلتفورمهای آنلاین برای تمرین طراحی وب سایت و توسعه وب هستند.
3.2 فرصتهای شغلی
سه شاخه اصلی توسعه شبکه Front-end، Back-end و full stack است. توسعهدهندگان شبکه هم میتونن به صورت پروژهای برای شرکتهای مختلف کار کنند و هم میتونن جذب یه شرکت خصوصی یا دولتی بشن.
4. توسعه اپلیکیشن (Application development)

در این حوزه اپلیکیشنهای مربوط به تبلتها و موبایلها و ساعتهای هوشمند ساخته میشه.
4.1 منابع آموزشی
Java, python, objective c, swift, HTML5 محبوبترین زبانهای برنامهنویسی در این حوزه هستند. سایت Developer.android.com و کلیپهای آموزشی در udemy, undacity منابع معتبر برای یاد گرفتن این حوزه هستند.
4.2 فرصتهای شغلی
در حوزه IT نیاز به توسعهدهندگان Mobile-app روزبروز در حال افزایشه. به طوری که اگر در این حوزه بتونید تسلط کافی رو به دست بیارید یک روز هم بیکار نخواهید بود!
5. آموزش ماشین (Machine learning)

آموزش ماشین یکی از اپلیکیشنهای هوش مصنوعی هست که به سیستم این توانایی رو میده که به صورت خودکار یاد بگیره و بتونه بر اساس تجارب خودش بدون دخالت عامل انسانی یا هر عامل دیگه خودش رو ارتقاء بده. تمرکز اصلی در این بخش روی توسعه برنامههایی در کامپیوترهاست که میتونن به داده دسترسی پیدا کرده و با استفاده از اونها به خودی خود یاد بگیرند.
5.1 منابع آموزشی
دونستن SQL، آمار و پایتون یک ضرورته. در مورد data manipulation libraries در پایتون، data visualization libraries و الگریتمهای پیچیده و جدید باید تحقیق بکنید. برای اینکه به روز بمونید بلاگها و مقالات مربوط به ML رو حتما دنبال بکنید.
5.2 رقابت اصلی
سایت Kaggle
5.3 فرصتهای شغلی
ML جذابترین ترند در دنیای کامپیوتر است. شما میتونید یک دوره تحقیقاتی رو در AI دنبال کنید یا یه متخصص در حوزه اجرای ML بشید. این حوزه امکان اشتغال در پوزیشنهای بسیار متفاوت رو به شما میده.
6. Data science
Data science یک ترکیب میانرشتهای از استنتاج داده، توسعه الگریتم و تکنولوژی است که به دنبال حل مسائل پیچیده تحلیلی به کار میره.

6.1 منابع آموزشی
کلاسهای آنلاین رو در udacity، coursera و ... دنبال کنید. در ضمن تو آمار و ریاضی و ML و database خودتون رو تقویت کنید.
6.2 فرصتهای شغلی
دانشمندان data science بیشتر از همه مورد نیاز تجارتهای صنعتی، تجارت الکترونیک، فاینانس، شبکههای اجتماعی، بهداشت درمان، ارتباط از راه دور هستند. بقیه مشاغل مرتبط با data science و حقوق ماهانه اونها در پایین میاد.

7. حوزههای متفرقه
امنیت شبکه، gaming، networking حوزههایی هستند که مهارت کدنویسی رو میطلبند.
منبع

