 آسلام علیکم میرا نام نوید ملک ہے دھو جو برچہول ڈینیورسٹی اف پاکستان ڈالنے کے حطر پاکستان کوس ٹ ڈس ٹو ڈیو ڈیو ڈو ورن ڈالنے چاہتیئے پروگرمینگ ابھی تک آپ نے ایک جبانکہ کو اس پٹ نے سبتا وہ کو اس تھی تھا وہ ہمارا ڈرٹ فاست ڈو ڈیو تھا یعنی چڑائی میں آپ نے یک پوری فیل کو دیکھا کسٹوں کے کیا کیا ہیسے ہوتے ہیں ہم نے ہارڈویر کی بھی بات کی، سوفیر کی بھی بات کی، ہارڈویر کی مسلف کس میں دیکھیں، سوفیر کی مسلف کس میں دیکھیں اس کے بعد جو آپ کا باقی کا قریکلم ہے، the BCS قریکلم اس کے اندر ہوگا یہ کہ جو چیزیں ہم نے انٹروڈکشنٹو کمپیوٹنگ میں جن کی بات کی تھی ان کو ہم ایک ایک چیز کو لیکے ادھڑتے جائیں گے اور اس کی ڈیپت میں گہرائی میں جاتے جائیں گے اور ایرنچلی ہوکفلی you will become experts یہ والا کوس جو ہے یہ ہے انٹروڈکشنٹو پرگریمنگ سو پرگریمنگ میں ہم آپ کو پرگریمنگ سکھائیں گے اور صرف پرگریمنگ کی علیف بے پی نہیں یعنی لنگویج کیسے استعمال کرتے ہیں ہم اس کے اندر باتیں کریں گے پرگریمنگ پرنسپلز کی اور دیزائن کی اور سٹرکٹرڈ انیلیسس کی ایسیٹرہ بہت ساری چیزیں ہیں پرگریمنگ سکیلز جو ہیں وہ بہت ایمپورٹنگ ہیں تقریبا ہرے کو ہی آنی چاہیں اس کے لیے ہم کئی پرنسپلز ایوال کریں گے اس کوس کے دوران میں کونسٹنٹلی آپ کو کچھ ٹپس دیتا رہوں گا وہ ٹوٹ کے جو ہوتے ہیں جسے آپ ایفکٹیف پرگریمنگ بنتے ہیں پرگریمنگ سٹائل پے بات ہوتی رہے گی ایسیٹرہ ایک خاص ویحکل ہم استعمال کر رہے ہیں کوس کے لیے وہ ویحکل جنی کوس چلے گا کس گاڑی کے اوپر وہ گاڑی جو ہے وہ ہمارے لیے ہوگی سی لنگوڈج اور سی لنگوڈج بھی جو ہے اس کا بھی ہم ایک انترسٹنگ ویرینٹ استعمال کر رہے ہیں کہ آپ سی پلس پلس کی انوارڈمنٹ میں کام کریں گے لیکن اس میں سے ہم سی کا حصہ استعمال کریں گے جیسا کہ شاہد آپ نے انٹرودکشنٹر کمپیوٹنگ میں پڑا بھی ہوگا سی پلس پلس جو ہے وہ تو ہے اوپڈیکٹ اورینتٹ لنگوڈج ہم کیونکہ اس وقت آپ کو پروسیڈرال پروگریمنگ سکھانا چاہتے ہیں ہم چاہتے ہیں کہ جی پہلے آپ کو پروگریمنگ کی علیف بے پر اچھی طرح آجائے اور پھر ہم اس کی کمپیکسیٹیز بجائیں تو اوپڈیکٹ اورینتٹ جو ہے ویرس وہ ہمارے جو نوامل ہمارا پروگریمنگ سٹائل ہے یا عام ہماری جو دنیا ہے اس کے در وہ بہت امپورٹنٹ ہو گئی ہے لیکن ہم پھر بھی کوششے کرتے ہیں کہ جی پہلے اوپڈیکٹ اورینتٹ پروگریمنگ کے اندر جو میٹھرز اور پروسیڈرز لکھنے ہیں ان کے پرنسپلس ہمارے پاس ہونے چاہیں پھر ہم جاکے اوپڈیکٹ اورینتٹ پروگریمنگ کر سکیں گے اب اگر بات کریں کہ جی آج کی لیکٹر میں ہم کیا کچھ کریں گے آج کی لیکٹر میں ہم تو ایک تو پروگریمنگ کے بارے میں بات کریں گے اس کے بعد ہم کچھ کیلے دیسائن ریسیپیز کی بات کریں گے یہ پروگریمنگ کرنے کے اندر ہمیں کیا کچھ انوالد ہوتا ہے کیا سکلز چاہیے ہوتی ہیں پروگریمنگ کرنے کے لیے اور آپ اچھے پروگریمت کیسٹرہ سے بن سکتے ہیں ساتھ اس کے پھر ہم کورس اوپڈیکٹرز دیٹیلز مندین چیزیں نمبر کیسے لیتے ہیں وہوالی باتیں کریں گے میں تھوڑا سا نمبروں کے بارے میں اور میری فلوصفی کے بارے میں تھوڑا ساپ کو بات بتاتا چاہوں دیکھیں یہ دنیا بڑی کروال دنیا ہے یہاں پہ وہ زمانہ چلا گیا جہاں پہ آپ کے نمبر وہ ہی ہر چیز کریں گے اور خاص طور پہ یہ جو information technology اور computer science ہے اس کے اندر آپ نے جو سکلز ہیں وہ بہت زیادہ important ہوتی ہیں you have to know what you are talking about so میں آپ کو یہ پہلے دن سے پہلے لیکچر میں ہے ارج کرتا ہوں کہ یہ آپ اپنی سکلز دیویلب کیجئے گا نمبروں کے اوپر زیادہ ورینہ کریں آپ مجھے میل نہ کیجئے گا اس کے کیسے نمبر آئیں گے یہاں پہ کیسے رہ جائے گا آپ پروگریمنگ کے اوپر سوال کریں اور پروگریمنگ پرنسپل سیکھنے کی کوشش کریں اسی طریقے سے اور اسی سپیرٹ کے اندر اگر آپ کا پروگریم کے اندر زیر زبر رہ جاتا ہے تو اس کے بہت کم marks کتیں گے marks کس چیز کیا کتیں گے اگر آپ کا design کھیک نہیں ہے اگر آپ کا analysis کھیک نہیں ہے اگر آپ کی approach کھیک نہیں ہے تو وہ چیزیں ہیں جن کے اوپر آپ کو زیادہ غور کرنا ہے آج ہم پہلے تو بات کرتے ہیں جو آپ کو پہلے بھی cs101 میں بات کی گئی تھی کہ یہ program ہم کہتے کس کو ہے program جو ہے it is a precise sequence of steps which is used to solve a particular problem اب اس چیز پہ تھوڑسا غور کرتے چلیں آپ یہاں پہ نہ رکھتے ہیں دیکھیں ایک میں نے کہا ہے precise so وہ exact ہونا چاہیے sequence of steps sequence کا مطلب ہے پہلے کیا ہوگا پھر کیا ہوگا اس کے بعد کیا آئے گا and finally important چیز یہ ہے to solve a particular problem یہ نہیں problem بھی ہونا چاہیے جس کا solution ہم determine کرنا چاہتے ہیں تو اس problem کو solve کرنے کیلے کیا کیا steps چاہیں اور پھر ان کا precise sequence کیا ہے اس کو ہم programming کہتے ہیں یہ میں ایک genericsی definition آپ کو دی ہے اگر آپ اس definition کو لے کے چلیں اور ہم کہیں کہ جناب computer programming کیا ہے تو بہی وہی چیز ہے جی computer کے لیے کن سے steps ہوگے وہی precise steps to solve a particular problem as told to a computer اور computer کا بتانے کے لیے ہم اپنی ڈوردوی یا انگریزی یا اور زبان استعمال نہیں کرتے جو human languages ہیں ہم computer کے لیے programming languages استعمال کرتے ہیں یہاں پہ جو programming language جیسے میں نے ذکر کیا ہم C استعمال کر رہے ہوں گے C کے آپ نے بہت سارے فائدیں ہیں لیکن ہم یہ استعمال کرنے کے لیکن اس پہ ہم بعد میں آئیں گے ابھی میں تھوڑا سا program کی بارے میں بتاتا چاہدوں جن آپ جب سکلز کی بات کرتے ہیں کیا آپ programming skills ہیں اور ہماری education میں کیسے یہ بیٹھتا ہے ہم کہیں گے کہ جی it's a point of view کہ جی ہرے کو programming سیکھنی چاہیے اب ہرے کو کیوں programming سیکھنی چاہیے یہیل university کے professor ہیں Alan Perlis انہوں نے ایک جگے پہ لکھا جی it goes against the grain of modern education to teach children to program what fun is there in making plans acquiring discipline in organizing thoughts devoting attention to detail and learning to be self-critical اب یہاں پہ اگر دیکھا جائے کہ جن آپ بات یہ ہو رہی یہ تنزیہ سا ایک پیراگراف ہے کہ جن آپ plan بنانے میں کیا مزا ہے کیوں مزا نہیں ہے اگر آپ نے picnic میں جانا ہے تو کیا آپ plan نہیں کرتے کہ جن آپ کھانا کیا لجائیں گے کپڑے کیسے پہنے گے گاڑی کونسی لیں گے جائیں گے کہاں جس وقت چلیں گے سارا planning کی ضرورت ہے analytical ability کی ضرورت ہے آپ یہ بھی دیکھیں گے اگر یہ ہو جائے تو کیا کریں گے اگر وہ ہو جائے تو کیا کریں گے آپ contingencies کیلی بھی plan کرتے ہیں آپ اپنے thoughts کو analyze کرتے ہیں ان کو order کرتے ہیں ان کو sequence میں لاتے ہیں اور پھر آپ انہیں skills کو روز مرہ زندگی میں وقت استعمال کر رہے ہوتے ہیں تو ellen purless کہتے ہیں جن آپ ہماری education یہ چیزیں کیوں نہیں سکھاتی یہ صرف computer programming کی بات نہیں ہوری یہ general programming کی بات ہوری یہ general life کی بات ہوری ہے so let's take a look and work on from there اب جو ہم plans بناتے ہیں plans بنانے میں بھی مزاہتا ہے ہم اگر کوئی کام کرنا چاہتے ہیں تو اس کو analyze کر کے اس کے steps determine کرنے کے اندر بھی مزاہتا ہے مطلب planning itself is an exciting activity paying attention to detail کئی لوگ نہیں اس پے وار کرتے لیکن programming میں تو ہمیں بڑا سخت اس پے وار کرنا پڑتا ہے paying attention to detail is critical اور اگر ہم عام زندگی میں بھی detail پے attention پے کرتے رہیں تو بہت فائدہ ہوتا ہے and finally جو ہے جن آپ ہر جگے کے اوپر اپنا analysis اور self criticism یہ بھی جاری رہنا چاہی ہے analysis کیسرسم کا کہ جیسا پوز ہم پوری وہی پکنک اپنی کرکے آئے ہیں تو پکنک آکے واپس آکے ہم اگر اس کو analyze کریں کہ کیا چیزیں تو ٹھیک گئی as per plan کیا چیزوں میں غلطی ہو گئی کباہت ہو گئی اور اس کو analyze کر کے اپنے پاس کہیں پے دج کر لیں لکھ لیں یاد رکھ لیں کہ جن آپ اگلی دفعہ جب یہ کریں گے تو یہ غلطیاں نہیں ہونی چاہیں تو post analysis اس کا بھی فائدہ ہے self critical ہم کیوں گھبراتے ہیں اپنے آپ کو criticize کرنے ہیں کوئی حرج نہیں ہے اپنے آپ کو دیکھیں آپ کیا کر رہے ہیں آپ کی ability کیا ہے کیا کام آپ خیق کرتے ہیں کیا کام آپ ویلت کرتے ہیں کس جگہ پی آپ improve کر سکتے ہیں یہ ساری چیزیں چلتی جائیں گی تو آپ کی overall life and the way you work that will improve مزے کی بات ہے ہم کہاں سے شروع ہوئے programming سے اور بات کس کار کر رہے ہیں ہم آپ نے روزمرہ زندگی کی بات کر رہے ہیں so in a way we are trying to say that your programming skills they are useful in everyday life now we will go on and take a look a little bit of a look at what other skills we might need to use ہم بات کر رہے تھے skills جو آپ develop کریں گے programming کی اندر آپ انترسٹنگ چیز یہ ہے کہ جن آپ programming ہم ایک skill کی بات کر رہے ہیں آگے جا کے آپ کیسم کی programming کریں گے ہر کوئی اپنی اپنی نیش تلاش کررے گے تلاش کرے گا جو آپ کو ایریہ پسند آئے گا اس کے اندر آپ انڈپ کریں گے پروگرم لکھتے ہوئے اور مزے کی بات یہ ہے یہ ایک بڑا کسم کا لیت سے جنریک ٹول ہے پروگرمیں لیتے بہت ہی کرییٹیو ایکسسائیس اس کے اندر آپ نے تخلیق کے اندر جاتا ہے اب کرییٹیوٹی کے اندر کیا آتا ہے کہ جی کوئی آپ میں سے جو ہے نا وہ کمپیوٹر گرافکس میں چلا جائے گا زبردس کسم کے گرافکس پردوس کر رہا ہوگا آج کلکہ اگر مویویز دیکھیں تو ساری کی ساری کمپیوٹر گرافکس کی بھری ہوئی ہے کسی کو شاک ہوگا گیم پروگرمیں کرنے کا تو آپ گیم کی پروگرمیں کریں گے یہ کویک اور دوم اور پڑی اجیب اور جیب خوفنا کسم کی گیمز آ رہی ہیں کمپیوٹرز پر بڑیکن ویڈی انجائبل تو آپ گیم پروگرمیں میں چلے جائیں گے ہاں کچھ ایسے بھی ہوں گے جو کہ کہیں گے کہ جی اکانٹنگ کا پروگرم لکھا ہے وہ ایک شاکار لکھ دیا سو ان کو وہاں پہ بھی مزائے گا لیکن بیسکت کیوں ایک کومن تھیم ہے کہ it's a creative activity اور creativity کی اندر بہت سار مزا آتا ہے اب let's go on and take a look at کجناب اور اس میں جو ہی مطلب کیا کیا جا سکتا ہے پروگرمیں کے ساتھ اگر آپ یہ دیکھیں کجناب پروگرمیں کون استعمال کرتا ہے تو without even knowing it بہت ساری profession وہ programming استعمال کر رہی ہے ایک اکانٹنٹ کو اگر دیکھ لیں تو وہ spread sheet استعمال کرتا ہے دن رات آپ نے بھی a spread sheet استعمال کیا financial accounting میں کیا spread sheet ایک اچھا دول ہے لیکن صرف اس کو ہم جماعہ تفریق کے لیے نہیں استعمال کرتے ہیں ہم اس سے اور بھی بہت سارا کام لیتے ہیں اور وہ کام ہے جیسے آپ نے ایک formula لکھا spread sheet کی اندر تو وہ بھی programming ہے اگر آپ یہ دیکھیں کہ جی photographers کیا کرتے ہیں تو وہ photo editors استعمال کر رہے ہوتے ہیں وہ touch up کر رہے ہوتے ہیں وہ photographs کو alter کر رہے ہوتے ہیں change کر رہے ہوتے ہیں enhance کر رہے ہوتے ہیں in a way وہ بھی programming کر رہے ہوتے ہیں اور زندگی کے کوئی show بے میں چلے جاہیں آپ جہاز اڑانے کے اندر چلے جاہیں تو دیحار کا guidance sheet سارا کا سارا programs کے اوپر چال رہا ہے اور in fact ایک جہاز میں بیٹھ کے آج کل کے modern جہازوں میں بیٹھ کے pilot جو ہے اس کو program کرتا ہے کہ ہاں اس وقت شام کے چھے بجے ہیں اور میں لحور میں کھڑا ہوں اور instruments دیکھے آپ نے بتا دیا کہ جناب ہمارا روخ جو ہے وہ نوتھ کی طرف ہے اور جہاز کو کہا کہ جی ہم نے جانا ہے جدہ وہ جہاز کا computer اسی program کے تحت سارا flight plan جو ہے وہ calculate کر کے pilot کو بتا دیتا ہے so ہر زندگی کے ہر show بے کے اندر programming تو لوگ کر ہی رہے ہیں ہم کس کسی سم کی programming کی بات کریں گے ہم کہہ رہے ہیں کہ جی general purpose computer programs ہم لکھیں گے جہاں جہاں رہا دین اس طرح کہیں کہ جی general purpose computer کے لیے ہم programs لکھیں گے جس کے ذریعے وہ computer جہاں اس کے ہم کچھ بھی کرا سکتے ہیں computer کے ساتھ بات کرنے کے لیے ہمیں programming languages کی ضرورت ہوتی ہے اور پھر وہی بات کہ ہم c استعمال کر رہے ہیں لیکن c++ بھی ہے c sharp بھی آگئے ہے جاوہ بھی ہے جاوہ script آپ نے already دیکھلی بہت ساری programming languages ہیں پرانی والی four trend cobalt یہ سب ہیں اب programming ہم جب کریں گے تو ہم پورے process میں سے گوزریں گے نواملی دوسے لوگ جہاں وہ programming programming کے لیے نہیں کر رہا ہوتے وہ اپنی profession کے اندر computer کا استعمال کر رہا ہوتے ہم کرے ہوں گے کہ جی ہمیں problem دیا گیا ہے ہم اس problem کو analyze کر کے اس کے پورے sequence of steps determine کر کے اس کے لیے ایک algorithm develop کر کے پھر اس کو language میں state کر کے computer میں دالیں گے اور اس کو چلائیں گے so in steps کو بھی ہم نے دیکھنا ہے کہ جی وہ کیسے کام کرتے ہیں اگر آپ صرف اس لیکچر کو ہی دیکھنے تو یہ لیکچر بھی ایک heavy duty programming کے through گزرہ ہوئے کیسے کہ جی ہمارا سارہ recording system جہاں وہ digital ہے یہی ساری video جو ہے یہ بنتے ہوئے ڈیٹنگ studio میں جاتی ہے وہاں پہ ڈیٹرز بیٹ کے اس کو computer کے اوپر ڈیٹ کرتے ہیں دیکھتے ہیں کہ جی کہاں پہ کرتنا ہے میرے سے اگر کوئی ڈلٹی ہوگی ہے وہ ڈلٹی نکال دیں گے کہیں پہ مجھے چاہی ہے کہ جی کوئی insertion آجا ہے slide آجا ہے جو کہ آپ کے ہم دیکھانا چاہیں وہ سکرین پہ آئے گی یہ بھی ایک اسم کی complex programming ہے یہ بھی non stop ہو رہی ہوتی ہے so let's get back to the main theme which is programming اب I'll again talk آج تھوڑا سا ہم general باتیں کرتے ہیں programming جو ہے وہ صرف vocational skill نہیں ہے وہ صرف آپ کو مطلب ترحان کی طرح آری چلانا یا کیل ٹھوکنا نہیں سکھا تھا وہ آپ کی creative abilities کو نا اجھاگر کرتی ہے so we are going to make you creative people you in fact you already are creative people we are going to channelize your creative abilities and make you good programmers in the process so programming کے اندر جو ہمیں critical skills چاہیں وہ ہے analysis critical thinking تیک ہے نا orderly thought process is basically and then attention to detail یہ میں اتنی دفعہ کہوں گا کہ میں بھی تک جانگا آپ بھی تک جائیں گے لیکن attention to detail is critical تیک ہے we will now try to develop a design recipe جہاں سے آپ کو تھوڑا سا idea ہو جائے کہ جناب ایک program لکھنے کے لیے کیا کچھ کرنا پڑتا ہے we will try to put on an orderly sequence of steps تاکہ ایک ہمارے پاس ایک recipe مل جائے recipe جیسے کھانا پکانے کی ریسپی ہوتی ہے and this is a program لکھنے کی ریسپی and you will get this literally in your handouts آپ کو مل جائے گی you should be in front of you آپ کے سامنے پڑی ہونی چاہیے you should be in front of you ہر وقت پڑی رہنی چاہیے you should be in front of you کوئی program ہو چھوٹا ہو بڑا ہو you should be in front of you وہ آپ اس ریسپی کے تحت ہی بنائیں in fact آپ کی گریڈنگ بھی جو ہے وہ ریسپی کے تحت ہی چلے گی so it's کے اوپر غور کرنا آپ کے لیے بہت لازمی ہے now if you see کہ جناب ہمیں design کی لیے کیا کچھ کرنا پڑتا ہے first you get the normal computer پروبرم ہوتا ہے that is expressed in the words آپ کو ملتا ہے if we talk about the fact کہ جناب let's say a payroll problem ہے a factory is where a lot of people work کام کرتے ہیں factory میں کام کرنے والے وہ منٹلی سیلری بھی لیتے ہیں some early base کے اوپر کام کرتا ہے how many hours have you worked کنے گھنٹے کام کیا according to that you will get some piece rate پے کام کرتا ہے let's say کپروں کی فیکٹری ہے so how many clothes have you seen جناب کتنے کپرے اس نے see ہے according to that you get سیلری ملتی ہے those who buy a lot of salaries لیتے ہیں their income tax کرتا ہے those who work on piece rate پے کام کرتے ہیں they say جناب اگر آپ نے سو کپروں کی بجائے if you have made 150 a day بنا دیتے ہیں so you will get a bonus بھونس بھی ملے گا so many negative kinds of statements ہوتی ہیں because as a word problem آپ کے سامنے رکھتی جاتی ہیں now what you have to do is آپ نے ان کو کرنا کیا ہے next step is کہ جی word problem لے کے analyze it کیا جائے that in which segments this divide ہوتا ہے which calculation do you have to do کنسی کالکلیشن کھاں پے کرنی پڑتی ہے and for those calculations بہت ایمپورٹنٹ ہے that if each and every small example بھی ساتھ list کر لیا جائے in examples کو list کرنے سے بعد میں بہت فائدہ ہوگا جا ہم testing کے اوپر آئیں گے statements جو ہیں وہ اب آپ نے formulate کرنی ہیں very precise language کے اندر اب یہ آیستہ آیستہ دیکھیں a problem stated تھا عام الفاز میں اس کے بعد ہم نے اس کو analyze کر کے some little statements کے اندر express کر دیے اور ساتھ کچھ examples دے دی now next step of refinement اب اس کو in precise language میں لے جاتے ہیں this میں بھی دو حصے ہو سکتے ہیں پہلے جیسے آپ نے پھر introduction to computing میں دیکھا کہ جیسوڈو کوڑی استعمال کیا جا سکتے ہیں flow charts استعمال کیا جا سکتے ہیں یہی precise language جو ہے اس سے آگے چلکے computer کی language میں تبدیل ہو جائے گی so that is the next step of refinement اس کے بعد evaluate or revise the activities in lights of checks and tests اب یہاں پہ جب ہم بات کر رہے ہیں کہ جناب ہم نے precise language میں state کر دیا تو کیا یہ جو precise steps ہم نے state کیا ہیں یہ problem کو solve کرتے ہیں کہ یہاں پہ evaluation کا face آ جاتا ہے so we now need to start testing the process اور اگر test کی وجہ سے ہم یہ پتا چلے کوئی چیز چینج ہونے والی ہے then we have to go back and revise so ایک اسم کا سائیکل بن جاتا ہے لیکن اوپر سے نیچے تاک اگر آپ ریسپی کو دیکھیں تو ایک global problem کو ہم refine کرتے کرتے کرتے precision کی طرف لے آتے ہیں پھر میں وہ ہی بات کروں گا because all through this time we must pay attention to detail اس کے اوپر میں چھوٹا ساپ پہ problem بھی pose کروں گا let's see how you perform on that so attention to detail is critical in all activities but much more so in programming اب اگر ہم بات کریں کہ جناب ہم نے programming کی you know global principles کی بات کی وہ کدھر جا رہے ہیں یہ وہ ایک چیز تو ہم بھولی گئے پھر جناب ان program میں چلنا ہے computers کے اوپر تو computers جیسے کہ اب داک آپ کو معلوم ہونا چاہیے بڑی fancy مشینے ہیں but بڑی ہی stupid مشینے ہیں کیکنہ they are dumb boxes پلڈ کھنج دے computer بان سارے program off computer on کر دیں بیٹھا ہے اس کو نہیں پتا کہ اس نے کیا کرنا ہے اس کو ہم نے ہی instruct کرنا ہے as human beings we have to write the programs that tell the computer what to do now a computer does precisely what you tell it to do no more no less وہ اس میں ایک رتی بھر بھی تبدیلی نہیں کرتا اب اس کو دیکھا جائے تو یہ ایک طرف سے بہت اچھی بات ہے کہ یہ بڑا control ہے جو چیزیں ہم اس کو کرنا چاہے کہہتے جاہیں کہ یہ کرو وہ وہی کرتا ہے دوسی طرف یہ ہے کہ ہم عام زندگی میں بہت ساری چیزیں assume کر لیتے ہیں میں آپ کو سمپلسا اگزامپل دیتا ہوں اگر آپ سے میں کہو time تو آپ مجھے وقت بتا دیں گے کسی اور کو میں کہو time please وہ بھی مجھے وقت بتا دے گا اسی کو کہو what is the time وہ بھی گھڑی دیکھے گا اور مجھے time بتا دے گا computer کو اس کی کچھ سمجھ نہیں آتی اس کو time کہیں گے وہ کہا گا جی unknown command or something like that اجیب سے آپ کے اکر کوئی language بھیک دے گا اس کے لیے ہمیں آپ مطلب explicitly explain کرنا پڑتا ہے کہ یہ کرو وہ کرو وہ کرو so you have to keep in mind that computers are stupid اس کے ساتھ دوسی چیز جو ہے وہ اور زیادہ interesting ہے وہ interesting چیز یہ ہے کہ جی computers کو استعمال کرنے والے human beings ہیں ان کو بھی آپ نے overestimate نہیں کرنا کیونکہ human beings کو overestimate کرنے کا مطلب بھی ہے کہ جی اب وہ computer کو بڑی اچھی طرح جانتے ہیں it's not the case آپ تو computer programmer ہیں آپ نے ایک program لکھا computer میں compile کیا اس کو چلا دیا آپ کو تو پتا ہے کہ program کیسے چلے گا کیا input مانگے گا کیا processing کرے گا کیا output دے گا لیکن اگر آپ نے یہ program جو ہے یہ design کیا ہے کسی اور human being کے لیے کہ وہ استعمال کریں گے تو پھر ان کی بھی abilities کو overestimate مات کیجئے اس کو ہم عام فہم الفاز میں آپ بہت ہاں سنے گے user friendly programs کہتے ہیں تو user friendliness must be built in by design not as an afterthought you have to make things comfortable for the user and the user remember is not a computer scientist وہ کوئی programmer نہیں ہے وہ کوئی computer لنبا طرح کا rocket scientist نہیں ہے might be an ordinary person might be that photographer جس کو کوئی گرز نہیں ہے کوئی computer اندر کیسے چلتا ہے program کیسے لکھا جاتا ہے وہ کہتے ہیں میں اتا اپنا کام کرنا ہے مجھے ایک سیمپل سے انٹفیس دیں میں اس آسمان کی نیلہ رنگ وہ زرہ سا گہرا کرنا چاہتا ہوں وہ میں conveniently کر سکوں so programs must be designed so that they are user friendly user interface کے حوالے سے جب ہم بات کر رہے تھے I mean it's a hard word to say لیکن جہاں پہ میں نے کہا کہ computer stop it ہیں وہاں پہ ہم جو انسان ہیں وہ اس سے بھی کہیں زیادہ چلیں بھولا کہتے ہیں stop it نہیں کہتے ہیں ہم بہت بھولے ہیں I'll give you a classic example اور یہ چیزیں ایک چلی ہو چکی ہوئی ہیں ہم آج کل ماؤس استعمال کرتے ہیں unfortunately میرے پس ماؤس نہیں ہے ماؤس آپ کے ہر computer کے ساتھ لگا ہے جب یہ originally introduced ہوئے اور پھر یہ popular ہو گئے اور آپ ہر graphical user interface کے ساتھ استعمال ہو رہے ہیں جب office میں introduce کیا جاتے ہیں اور ہم secretary اس کو بتاتے ہیں کہ جناب world processing بھی کوئی چیز ہے اور اب آپ خط وگیرہ جو ہیں وہ world processing کے ساتھ لکھیں گے تو وہ جناب ماؤس کو اٹھا کہ یہ کیا ہے یہ mouse pointer ہے یہ screen کے اوپر چیزیں ایکسیس کرتے ہیں آپ اس کے ساتھ اور کلک کرتے ہیں ڈسیٹر ڈسیٹر تو ایک مہترمہ اٹھا کہ اس کو ہوا میں ہلاریں کہ جی کچھ ہوتا نہیں ہے تو just natural sense جو ہے وہ پھر ان کو بتانا پڑتا ہے کہ جی اس کو میز کے اوپر رکھیں اور پھر چلایں پھر کچھ ہوگا مطلب ابھی ہم اس تیج پہ نہیں پہنچے جہاں پہ ہمارا جو hardware ہے mouse ہو گیا یا computer ہو گیا وہ ہمارے دماغ کے ساتھ لنکت ہو جو ہم کہیں کہ جناب یہ چیز اس کے بارے میں ہم سوچ رہے ہیں تو یہ چیز ہو جائے مطلب even in terms of voice recognition اگر دیکھیں بہت ساری آپ پرگرمز آپ کو مل جاتے ہیں وہ microphone لگا لیں دیکتشن دیں computer دیکتشن آپ کی جو ہے انگریزی تیپت ٹیکسٹ کے اندر کنورٹ کر دی رہے ہیں problem یہ جی ابھی تک کوئی خاص ایسا پرگرم بنا نہیں ہے جو کہ پچانوے چینوے فیصد ایکیوڈیسی سے زیادہ حاصل کر سکے یعنی جو میں بول رہوں اس کی انگریزی لکھتے not اردو سے انگریزی لکھتے وہ تو ایک اور مسئلہ ہے جانی if I were to speak in English that it should type the English that I'm speaking and where as پچانوے ایہ چینوے فیصد بہت اچھا لگتا ہے اگر آپ اس کو actually computer پر دیکھیں کہ کیا لکھا جا رہا ہے تو بڑی ڈھوٹ پٹان کسم کی language لکھی جا رہی ہے بڑی مہنت کرنی پرتی ہے computer کو train کرنا پڑتا ہے پھر جاکے وہ آپ کی آواز اور آپ کا لہجہ جو ہے وہ سمجھنا شروع کرتے ہیں ساتھ ہی back to the users again کہ جی وہ کتنے انتیلیجنٹ ہیں ایک اور صاحب جو ہیں وہ computer کمپنی کو ڈائل کر کے phone کر کے کہہ رہے ہیں کہ جناب یہ computer جو آپ نے سلاح کیا تھا ہے اس کا coffee holder ڈوٹ کیا کہا یہ coffee holder یہ کہاں سے آگیا computer میں coffee holder کہاں سے لگتا ہے پتا چل دا وہ جو cd کی drive کی tray بہر آتی ہے اس کے اندر جو hole بنا بے اس میں وہ cup ھس آتے تھے اپنی coffee کا so we cannot assume anything on the part of the users so in a way they are also پھر میں وہ کہتا ہوں پھولے لوگ ہیں so آپ جب اپنا user interface کمپیوٹر کمپیوٹر دیزائن کریں you have to design it for the lowest common denominator کہ جی ہر کوئی اس کو easily understand کر سکے اور استعمال کر سکے in fact جب ہمارے پہلے کمپیوٹر تھے اس میں command line چلتی تھی یعنی screen ہے اس کے اوپر abc لکھا ہے کوئی icons نہیں ہے کوئی graphics نہیں ہیں آپ کو command دینی پڑتی تھی اس وقت تو وہ زمانہ تھا computer والوں کا کہ جی کمپیوٹر کون جانتا ہے جو commands جانتا ہے عاستہ عاستہ evolve کر کے یہ graphical user interfaces آگے GUIS یہ جو GUIS ہیں ان کے ساتھ ہم بات کرتے ہیں کہ جناب اس سے computer کا استعمال کرنا وہ آسان ہوگیا ہوئے لیکن programming ان کی اتنی ہی مشکل ہو گئی ہوئی ہے but hopefully اس کو рекلم کے end پر you will have become expert programmers in handling all of these issues but please remember the guideline computers are stupid you have to program and tell them precisely what you want to do people in a way are even more stupid you have to make sure that your program is self-explanatory and obvious to the people کوئی چھپی ہوئی چیز نہیں ہونی چاہیے ہمیں as programmers بڑی چیزیں ہم assume کر لیتے ہیں assume نہ کریں یہ کہیں کہ جو screen پے آرہا ہے آپ بندے کے ساتھ نہیں کھڑے اس کا بتانے کے لیے کہ جی اس کو کس طرح استعمال کریں آپ کا program designed ایسا ہونا چاہیے کہ جو اس کو program جو ہیں ان کو constant اسلاح کی ضرورت ہوتی ہے دیکھیں شائری بھی جو ہے ایک بندہ اگر تو شیر لکھیں میرے جیسا آناڈی اگر لکھیں تو میں کسی اسطاد کے پاس چاہوں گا کہ اس شیر کو پڑیں اس کی اسلاح کر دیں اس کی لنگوڈج اچھی کر دیں programs کے حوالے سے ہم کیا کرتے ہیں ہم ان کی اسلاح اس طرح سے کرتے ہیں کہ next time we make it perform a little more elegantly now the user may not know that لیکن اگر جو کام 30 second میں ہو رہا تھا وہ اب 2 second میں ہونے لگ پڑے تو user کو بھی پتا چال جائے گا which means now the program elegance کے ساتھ شد efficient لی بھی کام کر رہا ہو اب again in terms of کہ دی program لکھنا کیسے ایک اور موٹیسی گائیڈ لائیں کہ جی پہلے والے stage کے اوپر چاہاں پہاں you analyze کر رہے ہیں problem کو آپ اس چیز کو سوچیں کہ یہ problem جو ہے یہ ہی یعنی وہی پہ ایک دفاہ کا program ہے تو پھر جیسے مرزی لکھیں of course with proper guidelines اور پھر اس کو اسٹمال کر لیں اگر ایسا کوئی problem ہو جہاں پہ آپ کو اس کے کوئی reuse نظر آئے تو پھر شروع سہی پہلے دن سے آپ اس کے reuse کا سوچنا شروع کر دیں سیمپل سا اگر شاید ہم اگلی exercise آپ کو دے بھی دیں کہ یہ لکھ کے لاؤ کہ جی ایک program لکھا جائے کہ جی area of the circle تو ہمیں پتا ہے کہ area of the circle ہم کیا کرتے ہیں ہم ایک program لکھتے ہیں اس کے اندر radius کی value دیتے ہیں وہ تھاک کر کے اس کا جواب دے دیتا ہے چھلیں اگر دو دن کے بعد یہ چھے مہینے کے بعد آپ کے پاس ایک problem آتا ہے کہ یہ آپ کے پاس ایک ring ہے تیک ہے نا صرف circle نہیں ہے ایک ring ہے اس کا area نکالنا ہے تو جو تو آپ والے آپ میں سے جو mathematicians وہ فٹا فٹ نکالنگے کہ جناب oho ring کی area کی ایک formula ہوتا تھا میں ایسا نہیں ہوں میں کوششے کرتا ہوں کہ جی basics اور fundamentals وہ مجھے آنے چاہیں یہ نہیں میرا tool set کمپلیٹ ہونا چاہیے اور ان tool سے ہم کوئی بھی امارت تخلیق کر لیں تو یہاں پے ہم نے area of the circle کیلئے program لکھا ہے تو اگر آپ ring کو دیکھیں تو کیا ہے ایک بڑا circle اور ایک چھوٹا circle ہے یہ نہیں let's say گتے کا ایک circle بڑا کاتا ایک چھوٹا circle کارٹ کے نکال دیا تو باقی آپ کے بہت ring بچا تو اگر میں کہوں کہ ring کی area کیا ہے اب آپ دیکھ رہا ہوں کہ جی بڑے circle کی area نکالنے اور اس میں سے چھوٹے circle کی area وہ subtract کرنے تو ring کی area آجائے گا اب back to the original problem problem کیا جی area of the circle کیلئے program لکھا جائے تو اگر area of the circle کیلئے we program لکھنے تو یہ سوچیں جناب اس کو اگر reuse کرنا پڑے ring کی area نکالنے تو کس طریقے سے اس کو formulate کرنا چاہیے تو always think reuse reuse کا میں آپ کو classic example بتا دوں ہم in a way we are very modest people جب ہم ایک program لکھتے ہیں ہم سمجھتے ہیں کہ جناب تھی کہ جی وہ استعمال ہو جائے گا اس کے بعد کتنا چال جائے گا ہم ایک ہفتہ استعمال کریں اس کے بعد کچھ اور لکھ رہے ہوں گے don't assume that میں جیسے آپ کو کہا کہ جی آپ یہ assume نہ کریں کہ آپ کا program وہ reuse نہیں ہوگا classic example اس کا میں آپ کو بتانے لگا ہم year 2 کے یا y2 کے problem آپ نے شاید سوناو y2 کے کا problem تھا کیا ہوا یہ کہ جب یہ main frame computer اور بڑے computer نے ARM data processing چوروں کی یہ 60's اور 70's کا زمان ہے 1970 1960 کسی program کے خاب میں programmer کے نے خاب بھی نہیں دیکھا کہ ان کا program وہ 10 سال 20 سال بھی چل جائے گا انہوں نے کہا کہ یہ program کافی ہے ابھی یہ 5 سال کے بعد نہیں چیزیں آ جائیں گے بدل جائے گا اچھتر اچھتر تو ان کے اندر program کے اندر جو انہوں نے date کی field رکھی اس نے جیسے ہم عم طور پر copyوں پر لکھتے ہیں کہ جی 8 8 let's say 0 2 آج کر لکھ رہے ہیں یا 0 3 لکھ رہے ہیں پہلے ہم 97 98 لکھا کرتے تھے انہوں نے year کے لیے 2 digit space چھوڑی بلکہ problem کیا نہیں ہوا یہ programs چلتے ہی رہے they remain valid for a time that the programmer did not forceی 30 سال 40 سال پرانے programs آج بھی چل رہے ہیں so they were reused way beyond the anticipated lifetime as anticipated by the programmer so بطلب یہ اسیوم نہ کریں کہ آپ کا program جو ہے انہوں آج لکھا ہے تو پھر شہت کبھی استعمال نہ ہو obviously میں اس کوس کی assignment کی بات نہیں کر رہا میں آپ کے بات کر رہا ہوں آپ کے professional career کی so always think reuse آگے کہاں استعمال ہوگا اسی سے آپ کی elegance آئے گی code کی اندر اچھے طریقے سے کان کیا جائے شاید کل کو ہمیں استعمال کرنے کی ضرورت پڑے اسی کے ساتھ reuse کے حوالے سے ایک بڑی critical component ہے programming کا وہ component ہے comments کا آپ نے javascript میں بھی دیکھا ہوگا ہم comments لکھتے ہیں comments کیا ہیں ایک خاص طریقہ ہے کچھ چند الفاظ لکھنے کیلئے جو ہمیں یاد دہانی کراتے ہیں کہ program کا یہ والا حصہ کیا کام کر رہا ہے یا ہم نے خاص ٹیکنیک بیس میں استعمال کیا ہے تو وہ جناب ٹیکنیک ہے کیا یہ comments یہاں یہ computer کے اندر جاکے compile نہیں ہوتے یعنی execution time کے اوپر کوئی time consume نہیں کرتے نہ یہ memory میں جگہ لیتے ہیں لہذا یہ ایک کسم کا مفت سمجھ لیں side کے اوپر notation ہے جو آپ دل سکتے ہیں you must religiously comment your code it is critically important دو دن کے بعد شہد آپ کو بھی یاد نہ ہو کہ آپ نے کیا programming trick یہاں پہ استعمال کیا یا ٹیکنیک استعمال کیا to solve that problem دو دن چھوڑ دیں چھے مہینے کے بعد تو سوالی پیدا نہیں ہوتا پورا پھر program پڑھ رہے ہوں گے جب تو program ہے 10-15-20 لائینوں کا اتی دے تک تو یہ بات ٹیک ہے جب program ہو جائے گا 2000 لائینوں کا تو پھر اتنا وقت تو پھر اتنا وقت زائے ہوگا trying to figure out کہ جی وہ کر کیا رہا ہے تو وہ سوچیں گے آپ اس پر کہ ہاں اگر میں یہاں comment کر دیتا تو یہ بہت useful چیز ہوتی جب ہم programming کے اندر گھوسیں گے in depth تو پھر میں آپ کو comment کرنے کے طریقے بھی بتاتا چاہلوں گا کہ جی comment کیسٹرا کیا جاتا ہے یہ نہیں کیا جاتا کہ جناب یہاں پہ میں loop چلا رہا ہوں جب loop نظر ہی آ رہی ہے سامنے آپ یہ بتانے کی کوشش کرتے ہیں کہ یہ loop کا مقصد کیا ہے so the comment is pertinent to the context کہ کیا کیا جا رہا ہے it is important to know that so whenever you writing programs دو تین موٹی موٹی چیزیں آج کے جو morals ہیں سمجھ لیں کہ you think reuse اس سے elegance آئے گا in your design think user interface make it easy to use for anybody else not just for yourself and number three liberally comment your code it is critically important کہ جی code کے اندر comments لکھے جائیں اب جب ہم بات کرتے ہیں اور چیزوں کی تو ایک بات کرتا چلوں جو کہ میں repeat کرتا رہوں گا already کافی دفعہ کر چکا ہوں you have to pay attention to detail detail کے اندر مسئلہ کیا ہوتا ایک چھوٹی چیز ہوتی ایک چھوٹا سا ایک words ہوتا ہے جو کہ آدمی ایسی پرنے میں جاتا ہے یہ ہوتا ہے problem statement میں لکھا ہوا اور چھے مہینے کے بعد لم بی چھوڑی programming کرنے کے بعد ہمیں پتا چلتا ہے اِسنا یہ program اس طرح سے بھیحب نہیں کرتا تو وہ user آکے بتاتا ہے کہتا ہے کہ ہم نے تو problem statement میں آپ کو لکھکے دیا تھا کہ یہ ہمیں ضرورت ہے اور کیا ہوتا ہے کہ جی detail پر attention نہ پے کرنے کی وجہ سے وہ کہیں نہ کہیں کوئی چیز رہ جاتی ہے اب آپ کو ایک چھوٹا سا میں ایک problem pose کرنے لگا ہوں جس کا solution آپ کو ویبسائٹ پر ملے گا درہا اس کو غور سے سوچیے گا اور آپس میں بیشکہ دسکس کریں اور یہ میں آپ کو بتاتا چلوں کہ جناب یہ ایک analytical thinking کا یا logic کا یا ایک خاص طور پر سوچنے کے انداز کا یہ ایک problem ہے problem کیا ہے جناب ایک لم با چڑا office کا busy day سبا سے لے کے شامتاک ایک secretary ہے وہ بچاری مینت سے کام کرتی رہی ہے پانچ بجگے ہیں چھے بجگے ہیں over time بھی چال رہا ہے تھکے پڑھے ہیں سارے وہ جا کے اپنے let's say boss کو کہتی ہیں کہ جی مجھا بھی جازت دیں اب چھوٹی کرتے ہیں ایک منت مجھے تھوڑا سا کام ہے یہ چار خط جو ہےنا ان اصحاب کو یہ dictation لے لو ان کو تائیپ کر دو لفافے ان کے سیل کر کے بھیج دو کام ختم آج کا secretary بچاری بڑی بور ہوتی ہے اور دیر ہو رہی ہے پھر چلو پورٹ نے کہتی ہے تو کرنا پڑے گا تجناب بہت سار نے dictation دی انہوں نے جا کے آج کال word processor کے اوپر typewriter پی نہیں انہوں نے خط تائیپ کیے لفافے بنائے ان کے اوپر addresses تائیپ کیے انٹ پی آگے اس کو اس آگیا کیا مزاک ہے یہ دن ختم ہی نہیں ہو رہا اس نے ایدر چار لفافے پڑے ہوئے ایدر چار خط پڑے ہوئے اس نے کہا کہ میں نے بھی آجنا یہ کام کرنا ہے کہ جی رینڈملی اٹھاکے تجناب انکھیں بند کر کے ایک خات اٹھاتی ہیں انکھیں بند کر کے ایک لفافہ اٹھاتی ہیں خت فولٹ کیا لفافے میں ڈالا سیل کیا ڈاک میں ڈال دیئے اور چارو لفافوں کو بھیج دیا اب جو کسچن ہے آپ کے لیے وہ یہ ہے what is the probability that she gets exactly three right let me restate the question what is the probability that she gets exactly three of those letters right ایک موٹا سا ہنٹ دیتا چاہدوں کہ جناب یہ probability کا سوال نہیں ہے anyway یہ paying attention to detail کی exercise ہے so discuss it amongst yourself look at the website maybe even we ask you to post your answers this is not a formal assignment but it's an interesting exercise of your mind اب اگر ہم دیکھیں کہ جناب over the years ایجے ادوانسنٹ ہونی ہے ہارڈویر میں اور دوسی ٹیکنولوجی میں اس نے ہماری ایک طرف تو زندگی آسان کیا اور ہمیں بہت زیادہ سلاحیتیں دیدی ہیں لیکن دوسرے طرف اس نے ہمارے ایک اندر کچھ bad habits بھی کریٹ کیا اور bad habits پھر ہم کیونکہ ہمارا introduction to programming course ہے programming کے حوالے سے بات کریں گے ہوتا کیا تھا پرانے زمانے میں یہ جو ہمارے mainframe computers ہوتے تھے mainframe computers میں پانچھ کارڈ استعمال ہوتے تھے مجھے ملا تو میں آپ کو ضرور دکھا دوں گا وہ پانچھ کارڈ ایک مشین میں ڈال کے program کو اور ڈیٹا کو really just لیے ایک mechanical machine پے پانچھ کیا جاتا تھا پھر ایک کارڈز کا اتنا بڑا تدہ لے کے جاکے computer operator کو دیا جاتا تھا وہ پرتا تھا ان کو computer کے اندر آپ کا job سبمٹ ہو گئے اور آپ نے اس کو اس نے آپ کو ایک پرچی دے دی کہ یہ آپ کا job ڈایس ہے آپ کل شام کو آئیے گا اس کا result لینے کے لیے اب آپ result لینے آتے تھے اگر آپ کو پتا چلا کہ جہاں پر آپ نے 2.09 لکھنا تھا input ڈیٹا میں آپ لکھ پیٹے ہیں 2.09 ایک point رہ گیا result لازمی بہت سارے غلط ہوں گے اب پھر جاکے پہلے کارڈ دیکھو اس میں سے وہاں کارڈ نکالو اس کا نکتہ تھی کرو پھر واپس جاو پھر جاکے سبمٹ کرو problem ڈیٹا میں آپ کو پتا چلا کہ اگر ایک چھوٹی سی بھی غلطی ہو گئی وہ جناب 2 دن لگیں گے یا 3 دن لگیں گے اس کو ٹھیک کرنے میں آپ کہتے تھے کہ یہ پرگرم بھی ہمارا ٹھیک طرح طاپ ہو آہو ڈیٹا سیٹ بھی ٹھیک طرح طاپ ہو آہو ہر انسٹرکشن بڑی پریش یہ نہیں ہومورک آپ زیادہ کرتے تھے تھے کیوں آج کل کمپیٹرز اتنے تیز ہو گئے ہمارے میز کے اوپر ایک workstation پڑا ہوتا ایک pc پڑا ہوتا وہ آج کل کا pc وہ پسلے زمانے کے مین فرم سے کہیں زیادہ تیز چلتا ہے ہم پرگرم لکھتے ہیں فٹھا فٹھا اس کو کمپائل کیا چلایا ڈلتا ہے غلطا ہے رزولٹ بیٹھ گئے ٹھیک کیا پھر چلایا اور یہ چلتا رہتا ہے معاملہ it is a bad programming habit وجہ اگر پہلے سے آنالیسس ٹھیک ہو ڈیزائن ٹھیک ہو ڈیٹیل پر ڈینشن پے کی ہو تو آپ کو یہ والے مسئلے نہیں آن گے اور ان بری عادات سے آپ بچ سکیں گے کلاسیک اگرامپل میرے ایک student تھا کئی سال پہلے we're in contact he's a top notch person at the top of his career only flaw is programming without thinking یعنی میں اس کو اگر program یا problem explain کرنا شروع کروں تو اس کا دماغ the programming code کی اندر گھسا ہوتا تھا اور وہ بیٹھ کے میں بولتا جا رہوں وہ program لکھتا جا رہا ہے so i call that programming first thinking afterwards bad approach obviously he always had a program ready to do something and it always almost never did what it was meant to do and he spent days trying to correct the errors the idea is things should be correct by design now کہنا آسان ہے کرنا ضرہ سا مشکل ہے کیوں? کیوں کہ ہماری field different ہے اس field کو دسکس کرتے ہوئے میں اگر آپ کو بتاؤں کہ جی انجینئرنگ let's say اگر لیلی جا ہے اور computer science لیلی جا ہے کیا فرق آتا ہے میں ایک engineer ہے let's say وہ pull بناتا ہے so he makes a bridge bridge کے اوپر سے وہ دیکھتا ہے کہ جی ایک cycle سوار جو ہے اپنی cycle پر سیفلی پار کر سکتا ہے دوسرہ وہ کہتا ہے کہ جی ایک 10 ton truck لیاو which were cement کی بوریاں بھری ہوئی ہیں یا mix ہو رہا ہے اور وہ اس کو pull کے پار کر آتا ہے اگر وہ بھی سیفلی پار کر جاتا ہے تو engineer بڑے عرام سے ہی assume کر سکتا ہے کہ جی آپ اگر گاڑی آئی جو cycle سے بھاری ہے اور truck سے ہلکی ہے تو وہ بھی سیفلی پار کر لے گی in other words you can interpolate you have two boundary conditions and you can say all the middle conditions will be exactly satisfied problem with programming is you cannot assume that there are many many interesting stories I can tell you but you cannot assume that if boundary condition is satisfied and boundary condition be satisfied all cases in the middle will also be satisfied we can تھوڑا سا اندازہ کر سکتے یہ ہو سکتے لیکن جب تک ہم اس کی complete تستنگ نہیں کرتے یہ ہوگا نہیں اب اس میں میں آپ کو دو تین example دیتا چاہوں اور وہ real life کے ہیں کیونکہ یہ صاحب جو تھے یہ ہم ایرے ساتھ لیب میں کام کرتے تھے اور تیم سال سے آپ نے پیشٹی کے problem کے اوپر پر program لکھ رہے تھے اور research کر رہے تھے بس ایک اتفاق ایسا ہوا کہ جو نمبرز وہ استعمال کرتے تھے کمپیوٹر کے اندر they happen to be even numbers اب تھوڑا سا آپ نے bits and bytes پہلے پڑا ہوا ہے تو even number کی آپ کو خاصلت پتا ہے کہ جی اگر representation اس کی کمپیوٹر میں ہو تو کیا خاص چیز ہے the important thing is that an even number has a zero bit at the least significant position it turned out کہ جس کمپیوٹر پر کام کریے پرانے زمانے کی بات ہے PDP9 کمپیوٹر تھے ہمارے پاس بڑا علماری جتنا کمپیوٹر اس کی least significant bits تک تھی which means electrically there was a fault وہ 0 سے 1 نہیں جا سکتی تھی وہ 0 پر بیٹ ہوئی تھی اب یہ صاحب اپنی research کرتے رہے اور یہ even numbers کے اوپر ان کے ایکزامپل چل رہے ہیں ایک سال دو سال تین سال کے لئے ان کے ایوان نمبر اگسامپل چلتے رہے اور بڑا ڈیٹا کلیکٹ ہوگیا بڑا ڈیٹا کلیکٹ ہوگیا بڑا اینلیسس ہوگیا بڑے اچھے رزالت آ رہے ایک دن ان نے کہا کہ جیزا ڈیٹا اوڈ نمبرز کے ساتھ بھی ٹرائے کریں اوڈ نمبرز دالے تو اوٹ پٹان کسم کے رزالتانے شروع ہو گئے اب وہ بہتہے اپنے پورے ٹین سال کا ڈیٹا اٹھاکے وہ پرگرم کو دیکھیں ڈیٹا کو دیکھیں ڈیٹای جیزا ڈیٹا ہے جسی بہت ہی اٹھا ہے لیکن میں لیتا ہے کہ پھر کسی ساتھ ساتھ بھی رہا ہے کیونکہ ابھی ناہہی جو بڑا چیزا ڈیٹا کلیکٹ اٹھا کلیکٹ دیتا ہے بہتر انہوں کی اپنی پرگم اگر بہنگاتی ہے اگر بہنگہ میں فالٹ اگر ڈیٹا اگر بہنگتی ہے ان میں گرارت کار مارک ہے کیا ہے اور سب کتھوکہ منموتات تھوکا ہوتے تھوکا ٹھیک کیا جس سے براہ سکتے گئی ایک چھوٹیسی بٹر پر آخر میںپی بیٹر جو دیا ایک بٹر جو ہے جو ہے جو اس کیا فاصی ہوئی ہے ایک حرش دوسر ایک دخل نہیں ہوتی لیکن جو کرتھے ہوتی ہے ہماریوںی حضریت ہوتے ہیں، خطرناکی اسم۔ یہ دوسر ایک اور ہی ہوتے ہے اور میں میں مہرے دلکتے ہیں بہت سال پہلے آپ کو یاد ہے فورٹ لینٹس کی جنگ ہوئی تھی برطانیہ اور آجنٹینہ کے درمیان چھوٹے سے جزیروں کے اوپر it turned out کہ آجنٹینہ کے اوپر پاس جو ویپنس تھے وہ بھی ویست کے ہی سپلائٹ تھے تیکنہ برطانیہ فرانس امریکہ کی ان کی فوجوں کے پاس بھی وہی ویپنس تھے اور بریٹش فوزیز جو تھی وہ زیادہ طرح نیول فوزیز جو تھی بہت بہت بہت بہت بہت بہت بہت بہت ان کے پاس بی وہی ویپنس تھے اب آم نیس آمنے نیول فوزیز ہی کھڑی ہیں آجنٹینی ایان فوزیز نے ایک مثالifiedانش کی بریٹشیپ کی طرف اب بریٹشیپ кچ Ohh اینٹ challenging luck 有انتی مثالalledان مز vai مزائل آ رہی ہے اس نے یہ بھی ایڈانٹیفائے کیا کونسی مزائل ہے یہ جناب وہ x, y, z مارک 1, 2, 3 والی مزائل ہے کوئیکٹی پروگرم نے اپنے دیتا بیس میں دیکھا اور کہا یہ مزائل یہ تو ہمارے دوست ممالک کی مزائل ہے کیوں مینیفیکٹور تو وہی تھے نا یہ فرنچ مزائل تھی ہمارے دوست ہیں تو یہ فرنچ مزائل ہے اس کو کچھ نہ کرنا تو یہ جناب سارے آرمانٹس اس شپ کے اوپر عرام سے بن پڑھ رہے مزائل آکے دوست بیچ میں یہ کہنا مینی لائیز ور لوست سمپل اوپر سائٹ at the پروگرمنگ سٹیج کیوں بھی ایڈانٹیفائیڈ افرنڈلی فائر ایڈ سیڈ ایڈ سیڈ افرنڈلی مزائل ایڈ دنٹ وری about کہ جی افرنڈلی تو ٹریجیکٹری پھر بھی دیکھ لو جا کہا رہی ہے یہ نہیں ہمارے پاس کوئی تو سلایت ہوئی چاہیے کہ جی اگر میں ایک ایڈ ہوا میں پھیکوں اور وہ میں دیکھوں کہ میرے سر پے اوپر آکے گرنے لگی ہے تو میں کہوں کہ میں نے پھیکی تھی تو کوئی بات نہیں بھی پھر than I should have the capability of stopping that but it was a programming error programming errors have cost people many lives x-ray machines have been badly programmed اور آپ چیسٹ کا x-ray کرانے گئے اس نے اتنا x-ray کا دوست دیا کے جناب آپ تین دن کے اندر مر گئے اور کئی جگوں پہ یہ ہو چکا ہوا ہے everything comes with the responsibility nowadays programming comes with even bigger responsibilities because they are controlling almost every these computers are controlling almost every facet of our lives جہاز کی نیوگیشن اس کا لینڈنگ سسٹم اس کا ٹیک آف سسٹم messiles space travel everything is computer controlled if there is a bug in the program you are asking for trouble but as I mentioned earlier اتنا مشکل ہے ایک computer program کو completely test کرنا اور verify کرنا کہ اس کے اوپر بھی پوری ایک سائنس چل پڑی ہے testing اور checking کے اوپر programming languages جو ہیں وہ بھی آپ دیکھیں گے وہ بہت ساری restrictive ہوتی ہے یعنی ہم جو عام طور پہ as human beings ہم باتیں کرتے ہیں ہم بہت چیزیں اسیوم کر لیتے ہیں سمجھ آجاتی ہیں programming languages اتنی فلکسی بلیٹی ہمیں نہیں دیتی تو ہمیں ان کے ساتھ ان کے let's say in the circle of operation رہ کے کام کرنا پڑتا ہے اسی واستے آپ کو کئی دفعہ بڑے explicitly چیزیں program کرنی پڑتی ہیں کہیں پہ آپ کو کوئی help مل جاتی ہے language کی طرف سے all the time it is a question of detail all the time it is a question of good design all the time it is a question of thorough checking this continues on and on and on اب ایک اور interesting چیز میں بتاتا چلو there are two issues to writing a good program پہلہ تو ہے کہ جی گرمیٹکلی وہ کرکت ہو any syntax وگرہ there is a bar, comma, full stop brackets یہ پورے ہوں compiler جو ہے وہ تو ان کرکت program کو گزر نہیں دیتا through problem کہاں پہ آتا ہے جب program compile بھی کر جاتا ہے اور چل بھی جاتا ہے اور غلط چلتا ہے جس کو ہم کہتے ہیں logical errors these are very very tricky اب جو ہم language استعمال کریں گے اس میں میں آپ کو ساتھ ساتھ point کرتا جائوں گا کہاں پہ یہ pitfalls آسکتے ہیں اور یہ صرف c language کا problem نہیں ہے تقریبا ہر language کے اندر ایسے problems آسکتے ہیں جہاں پہ گرمیٹکلی تو code کرکت ہو لیکن سمانٹکلی یا logicalی اس کے اندر یہ میں ایک آپ کو بڑے مشہور امریکن اوٹھر رہے ہیں لویس کیرو ان کا ایک point کے اندر سے Alice in Wonderland کا آپ نے نام سونا ہوگا اس کے ساتھ ہی through the looking glass through the looking glass کرنا ایک شیر میں آپ کو پڑھکے سونا آتا ہوں توس بریلگ and the slithy tobs did guyer and gimbal in the way interesting گرمیٹکل سائی ہے کوئی سمجھ آئی مجھے تو بالکل سمجھ نہیں آئی یہ نہیں you can have nonsense with correct grammar same thing applies to computer programs you can have computer programs which are grammatically and syntactically correct but they are basically doing nothing or they are producing nonsense again a question of make sure that the design is right اس کوس میں آپ کو کرنا کیا پڑے گا اگر آپ ایک لائن پوچھ رہے ہیں مرے سے تو وہ انسٹرکشن یہ ہی ہے پرگرم لکھیں اور پرگرم لکھیں اور پرگرم لکھیں you have to become proficient programmers you have to be able to eat, sleep and dream programming ہر وقت آپ کا دماغ اس وقت چل رہا ہوں یہ problem ہے اس کو حل کیسے کیا جاتا ہے یہ انسٹرکشن دیجیں you program لکھ دیا جائے گا bcs curriculum یا دوسرہ ہمارے bit curriculum کیاگر میں تھوڑی سی بات کرتا چاہنوں ہمارے فوکس ہے وہ ہے آپ کے fundamentals کو sound بنانا you are going to have a very solid grounding in the fundamentals of the profession یعنی بنیادیں صحیح ہو تو ایمارت اوپر کسی کسم کی بھی کھڑی کی جا سکتی ہے بنیادیں اگر کمزور ہیں تو ایمارت تھیک نہیں کھڑی ہوگی so this is the big argument that we have nowadays کہ جی لوگ جاتے ہیں کہ جی ہم جاوہ سیکنے جا رہے ہیں ہم c++ سیکنے جا رہے ہیں پھائی تبے programming آتی ہے اگر programming آتی ہے تو ٹھیک ہے ایک نئی لنگوڈ سیکھ لو لیکن اگر programming ہی نہیں آتی تو آپ لنگوڈ کونسی سیکھنے جا رہے ہیں آپ کو program لکھنا آجائے گا design and analysis skills نہیں آنگی آگے کیا کریں گے ساری زندگی صرف آپ نے programmer بنکے رہا جانے جس کو کوئی اور بتایا گا کہ جی problem کونس ہے اور اس کا analysis کیسے کرنا ہے no the foundation has to be made right so our courses at the virtual university are going to build up a very sound foundation along the way کیونکہ کہیں پہنچنے کے لیے کسی سواری کی بھی ضرورت ہوتی ہے تو یہ tools بھی آتے رہے گے اس course کا tool جیسے میں پہلے ذکر کیا وہ c language ہے باکی courses میں اور languages اور database management systems اور چیزیں introduce ہوتی جائیں گی وہ آپ سیکھتے جائیں گے لیکن درکلی آپ کہاں پہ آپ کو course نہیں ملے گا جو کہے گا c++ programming وہ programming اسیوں کریں گے کہ جی آپ نے اپنی محنت کر کے اس سے سیکھا ہے جیسے محنت کرتے ہیں program program and program again and again and so much that you are completely proficient about it and then you can start worrying about کجی problem کیا ہے کسی problem ہم نے solve کرنا ہے programming تو مجھے آتی ہے tool set میرے پاس complete ہے آپ problem اٹھا اور اس کو حل کرو so it's important to know that so no substitute for hard work I started by saying کجی numberوں کے اوپر فکرنا کیجے گا you have to worry about the skill ایکوائر کرنے کے اوپر آپ نے فکر کرنا ہے so guidelines and tips آپ کو ملتی رہیں گی language is syntax یہ چیز کیسے کرتے ہیں آپ کو if programming fundamentals سیکھ طریقے سے آگے کوئی بھی language آپ کے سامنے آگی آپ اس کو کونکر کر لیں گے آج جاوہ ہے c sharp آگئے tomorrow b flat آجائے گی you will be able to مارے so pay attention to the fundamentals اب ہم ذرا کسی policy کے اوپر بھی بات کر لیتے ہیں assignment کی grading mid terms کی examinations کی اور باقی آپ کے جو کام ہے assignments اس کوس میں پندرہ فیصد ہوگی group discussion وہ پانچ فیصد ہوگی group discussion ایک نئی چیز ہے جو اس دفعہ ہم introduce کر رہے ہیں یہ آپ کے learning management system کے اوپر ہم ایک group discussion board کھولیں گے جوکے moderated ہوگا اس کے بعد وہاں پے ہم اس کے اجازت دیں گے آپ کو comment کرنے کی اچھتر اور اس کی grading ہوگی باقائدہ طور پے وہ ہوگا پانچ فیصد mid term یہ تقریبا پانچ فیصد اس کا ویٹ ہوگا so اگر assignments کے پندرہ فیصد اور group discussion کے پانچ فیصد ور mid term کے پانچ فیصد ہم ایڈ کریں تو ہم بات کر رہے ہیں کہ جی 55% of the cost وہ آپ کا term work کے اندر خرش ہو جائے گا یعنی that is the credit that you can receive the final therefore will only be 45% of the cost there will be a total of 10 assignments اور assignments کا طریقہ یہ ہوگا کہ ہم ایک ہفتے آپ کو assignment دیں گے اور وہ assignment آپ نے subsequent week میں submit کرنے ہوگی اس دفعا ساری assignments learning management system کے through ہی deliver ہوں گی اور اسی کے تا کہ کوئی problem نہ ہو assignment کی due date کے very next day assignment کا solution وہی پر post ہو جکا ہوگا لہذا late assignment بھی کوئی اجازت نہیں ہے ہم late assignments نہ receive کریں گے نہ grade کریں گے discussion for the assignments and programming purposes is an important part okay so I encourage you to discuss with your classmates and look at problems لیکن copying کی اور plagiarism کی ہرگیز اجازت نہیں ہے اگر آپ کے class fellow نے کوئی code لکھا ہے تو اس کو copy کر کے آپ نے own program میں استعمال کر لیا so we take a very serious view of that assignments will be graded at zero examinations will be graded at zero so be careful about that discuss yes copy no okay and we have many ways of finding out whether copying has taken place so we have a very strict policy اس کوس کے لئے ہم دو کتابیں استعمال کر رہے ہیں پہلی کتاب کا نام ہے c++ how to program اس کے authors ہیں and detail and detail اور یہ آپ کو عام bookstores میں easy لی مل جاتی ہے دوسی کتاب is not required reading but it is recommended reading اس کے اندر مسئلہ یہ ہے کہ میں تو کوشش کی ہے وہ اب bookstores میں مجھے نظر نہیں آ رہی لیکن وہ کتاب ہے the c programming language میں اس کو recommend it or suggest it being کیوں رہا کرا ہوں کیوں کہ یہ authors ہیں language کے okay rich is the author of the c language اور author کی لیکن کتاب پڑھنے کا مزائی اور ہے but the main text for the course will be detail and detail c++ how to program course objectives وہ اس کے 3 objectives ہیں basically اور موٹا موٹا میں ایک ہی ہے کہ یہ آپ کو ہم نے اچھا programmer بنانا ہے اس کے بیچ میں آپ c programming language بھی سیک جائیں گے اور اچھی طرح سیک جائیں گے you'll become proficient we will not talk about c++ and the additional features of that language because I do not want کہ ہم آپ کو جب programming lamentals بتا رہے ہیں تو اس کے اندر ہم کوئی object oriented چیزوں کا بھی ذکر کریں وہ آپ کے لئے ذکر ہوگا اور دیتیل میں آپ وہاں پہ پڑیں گے so proficiency in developing useful c language programs and bottom line becoming a good programmer to achieve our first two objectives we will be discussing basic programming constructs and building blocks structured programming structured flow charts and pseudocode and کیونکہ ہم نے c بھی پڑنی ہے تھوڑی سی ہم c language کی history تھوڑی سی because I'm not one for figures and dates اور کس نے اجاد کیا لیکن اچھا ہوتا ہے کہ یہ چیزیں پتا ہوں so c language کی history اور اس کی development اور اس کی evolution اور وہ آج اس کے کتنے variants بنگے ہوئے اور see ہم نے choose کیونکی یہ بھی ہم course کے اندر دیسکر کریں گے اس کے علاوہ جو اس کے main topics آجاتے ہیں variables and expressions control structures and functions arrays and pointers dynamic memory allocation file handling structures and unions ہمیں اچھا ہوں just a flavor of classes and objects as I said earlier ہم object-oriented programming میں نہیں جائیں گے اس course میں we want to have a very clear focus on structured programming یہی programming استعمال ہوگی جب آپ object-oriented programming میں methods وکیرہ لکھ رہے ہوں گے no time is going to be wasted آج کے لیکچر میں ہم نے کچھ background information کے بارے میں بات کی کچھ programming کے لیے جو skill require ان کے بارے میں بات کی اور موٹی موٹی ایک overview لیا کہ جناب detail کتنی important ہے analysis develop کتنی کرنا کتنی important بات اور یہ ساری programming جو skills ہمار سے دیمان کرتی ہے یہ ہماری عام زندگی میں بھی بہت useful ہوگی اگلے لیکچر میں ہم formerly see language کے اوپر کام کریں گے introduce کریں گے language کو اس کی تھوڑی see history کی بات کریں گے اور پھر جو اس کی development environment ہے جو آپ استعمال کریں گے اس کے اوپر کافی سارا time serve ہوگا جو programming environment ہم استعمال کریں گے اس کے بارے میں ہم detail میں آپ کو computer screens ویرہ کی مدد سے پوری information دیں گے آج کے لیکچر کانکلوٹ کرتے ہیں تو آپ اجازت دیجے خدا حافظ