>> دیوید : خوش آمدید ، نام من دیوید Malan است و این CS50. و این نمونه دبیرستان رشته علوم کامپیوتر شما نمی باشد. در این درس کمی چیز خاصی است. و این به دلیل آن را من تدریس است. آن دلیل این است که یکی از ما دوست دارند فکر می کنم ، کسانی که دوره های نادر است که در واقع فشردن مغز شما آنقدر و برنامه خود را آنقدر که تا پایان ترم شما را واقعا احساس دقیق. بنابراین ، آن طوری که من احساس کردم که من خودم انجام گرفته در این دوره بازگشت در سال 1996 بود. من بزرگ دولت در زمان زندگی در اینجا ماتر خانه بود. و ، I. [تشویق] همانطور که هستند دیگر ، پنج نفر دیگر وجود دارد. بنابراین ، من بزرگ دولت در زمان خود شد. و من بزرگ دولت چون من همیشه دوست خواهم تاریخ بود. من قانون اساسی در دبیرستان دوست داشتم. و به این ترتیب ، من خاموش در این مسیر در سال سال اول انجام آنچه من بهترین است ، کاری را انجام می دانستم که دوست را. و من همیشه می خواهم کمی از یکی از بازیکنان بالماسکه و کارناوال که غالبا دارای ماسک منقاردار است ، من همیشه می خواهم با کامپیوتر babbled. اما ، من خودم ، شاید جالب این در نگاه به گذشته ، من همیشه مشاهده می خواهم بچه ها بودند که گرفتن علوم رایانه در دبیرستان من ، دوستان من به عنوان حرفهایها واقعی است. و با این حال ، در نهایت انجام داد ، سال دوم فرصت کنم در این دوره کمی CS50 نامیده می شود که در واقع من تا به حال ترس را در سال دانشجوی سال اول خودم بودم. و من دستیار کاربر در آن زمان بود. بنابراین ، من مطمئنا در حال حاضر واجد شرایط ، حداقل ، تا در میان باشد ، آن حرفهایها که من لذت در دبیرستان ساخته شده است. اما من می ترسم. وجود دارد ، آن این شهرت در زمان و شاید هنوز هم در بخشی بود که آن شد ، آن را البته ترسناک بود. این خیلی کار شد. بسیار دشوار بود و در عین حال ، آن را یکی از آن چیزهایی که در آن ، خدای من ، پوست به مراتب بدتر از نیش آن نیست. من پیدا کردم خودم دانشجوی سال دوم سال ، برای اولین بار ، در واقع پیدا کردن سرگرم کننده برای مشق شب. و من گفتن نیست این فقط به گام در این دوره به شما خواهد شد. این تحقق واقعی برای من بود. در حال حاضر ، من فکر می کنم ، در یک لحظه ، من به خط متقاطع geekdum درست جایی که من در واقع با استفاده منتظر شب جمعه به خاطر من می تواند حلقه در مقابل مک بوک کوچک من و کار بر روی مجموعه مسائل CS50 نیست. بنابراین ، در آن لحظه ، من فکر می کنم من تا به حال به وضوح عبور خط. و هدف ما در این دوره به نوبه خود از همه شما به آن شخص ، اما ، فقط برای گفتن که چیز خاصی کمی درباره این دوره ، علم چیزی کمی خاص در مورد کامپیوتر به طور کلی به خصوص این روز وجود ندارد. و ، بیشتر acclimated ایم و همه را به فن آوری کردم ، اسباب بازی ها بیشتر ما را حمل به اطراف ماست که در جیب خود هستند رایانه است. منظور من ، آی فون من است در واقع یک کامپیوتر عالی انجام از لپ تاپ من بود در دانشگاه. شما می توانید بسیاری از چیزها با این کارها انجام دهند. و اکنون ، اکثر ما در این اتاق ، احتمالا فقط استفاده از نرم افزار های دیگران ، ابزار های دیگران ، راه حل دیگران به مشکلات چون ما به iTunes برود ، ما دانلود برخی از app از فروشگاه app و walla ما می توانیم چیزی را واقعا شسته و رفته انجام دهند. اما ، با پایان این ترم ، می توانید فرد انجام است که مشکل حل. شما می توانید فرد حل بعضی از مشکل ، ساختمان app که که قطعه ای از نرم افزار که ابزاری است که ، چه ، من فقط 1 amuses ، amuses شما خواهد شد. به عنوان مثال ، کنترل ، بگو ، کتابخانه iTunes از شما با آپارتمان خود را به وضوح app که در حال حاضر وجود دارد یا شما می توانید به آسانی برنامه شاتل برای مثال پیدا کنید. پس در واقع ، یکی از چیزهای بسیار 1 من پس از مصرف CS50 بود دوباره ، احتمالا در این نقطه شب جمعه و شب شنبه بود ، این فرصت را در دانشگاه هاروارد بود که در آن زمان در حال اجرا اتوبوس وجود داشت. و ، تا به امروز ، آن ها هنوز هم چاپ برنامه. اما ، در آنجا بود واقعا به هیچ وجه آنلاین از پیدا کردن اینکه هنگامی که شاتل بعدی بود. در حال حاضر ، من مراقبت نیست ، زیرا حتی اگر من در ماتر من در میان کسانی که به طور کلی در زمان شاتل نشده بود زندگی می کردند. اما ، من تا به حال بسیاری از دوستان در Pfoho به عنوان مثال. و یکی از آنها از من پرسید ، من فکر می کنم در در یک نقطه. [تشویق] Pfoho خوب بهتر از ماتر ظاهرا. بنابراین ، یکی از نوع من دوستان من فکر کردم شاید من می توانم این برنامه کوچک به نوع کمک دوستان بررسی برنامه شاتل بنویسید. و در نتیجه نامناسب شاتل به نام پسر متولد شد ، این قطعه از واژگان است که در اطراف برخی از چند سال در دست کم در میان برخی از upperclassmen ماند. در آن زمان ، این کمی این برنامه خط فرمان مشابه روح به داس بود. آن را در محیط یونیکس در حال اجرا بود. بنابراین ، آن بود بسیار مورد علاقه به هیچ وجه. شما فقط تایپ دستورات زن و شوهر و آن را به شما گفته که شاتل شدند. خوب ، این روزها آن را کمی پیچیده تر. و ، در واقع از آن دقیقا به نوع پروژه هایی که دانشجویان در پایان این دوره تا پایان ساخت توسط شرایط را نشان داد. بنابراین ، این نسخه 4 ، برخی از 15 سال بعد ، از Shuttleboy. به نظر می رسد نقشه های گوگل است که کمی آهسته وجود دارد. اما برای کسانی از شما که به بیرون از اینجا بعد از کلاس و رفتن ، می گویند ، از سالن یادبود و نیاز به مراجعه به ، بگو ، چهارگانه. خب ، شما هم میتوانید در 2 دقیقه در صورتی که توسط ترک ، این واقعا برای شما کار نمی کند فقط رتبهدهی نشده است و یا شما به عنوان بسیاری از گزینه های دیگر را که احتمالا شما می خواهم. و ، به زودی ، ما می توانیم از این CS50 گام ، از آن خواهد شد قابلیت همان پیامک. شما می توانید متن Shuttleboy از طریق تلفن. با شما تماس Shuttleboy. شماره تلفن CS50 را در سال جاری ، خوب ، شگفت آور بود این موجود ، 617 ، اشکالات - CS50. بنابراین ، که به زودی اولین. پس وقت را نه فقط به تماس رتبهدهی نشده است زیرا من برای بدست reprimanded ، در حال حاضر این تلفن همراه که به ما سر همکاران سیستم آموزش در روت. پس ، شما تنها خواهید او را اگر شما سوالی در مورد برنامه شاتل در حال حاضر دریافت کنید. اما ، که به زودی اجرا خواهد شد. بنابراین ، همه چیز دیگر ، در واقع ، که ما خودمان را صرف این در تابستان واقعا به منظور آماده سازی برای این ترم بود تمام دسته از مشکلات دیگری که ما می خواستیم را حل کند. به عنوان مثال ، در بسیاری تمام چیزهای که می رود در این پردیس در روز داده شده وجود دارد. و در واقع ، راهی دیگر را ، در کل چیز زیادی در جریان در این پردیس که من قطعا استفاده از هیچ وقت وجود دارد. و ، حتی اگر من هم اکنون با چند چیز است که در جریان ، در محوطه دانشگاه ، من هنوز هم به نظر می رسد برای پیدا کردن زمان هرگز خسته تان کند. اما ، walla ، حتی وجود دارد ، سخنرانی CS50 نیست. که که در آن شما است ، پس این شد ، این برنامه به جمع ما همه از حوادث در محوطه دانشگاه نوشت بود. و این چیزی است که دانشجویان دیگر در این دوره همان که در تاریخ خود پرداخته. و ، ما همکاری با نهادهای دیگر را که در محوطه دانشگاه می کردن واقعا این اتفاق می افتد. اما نکته ای برای CS50 این دوره این است که تمام این برنامه های کوچک شده ایم که آیا این کار بر روی 1 یا 1 که آیا برای گرد همه اخبار دانشگاه هاروارد در یک مکان ، همه اخبار گوگل ، همه از این چیزها می رویم به آنچه نامیده می شوند API 's، برنامه رابط برنامه نویسی. و این فقط تصور برای قابلیت اجازه افراد دیگر صحبت می کنند ، مردم در این اتاق ، در واقع کاری را انجام داده که با همان. بنابراین ، با شرایط پایان ، اگر شما تصمیم به پیاده سازی طرح نهایی مربوط به اخبار یا حوادث و یا نقشه ها ، و ما ، حداقل به عنوان دوره ، موجب خواهد شد که همه این سال را با ارائه آسان تر شما با رابط ؛ نوع تابع ، پس به صحبت می کنند ، نرم افزاری است که شما می توانید در پروژه های خود استفاده کنید به بالا و فراتر از آن که دانش آموزان ، شاید ، که در زمان گذشته رفته است چرا که این چهارچوب در جای خود نه برای آنها بوده است. و باز هم ، این همه ، برای من آغاز شد دست کم ، برخی از 15 سال پیش اجرای Shuttleboy. من پس از من دوست کن در Pfoho ایمیل. من گفتم : سلام شما چه فکر میکنید؟ آیا این مفید است؟ او آن را از طریق پست در Pfoho لیست باز و walla ، این همه سال بعد از من ظاهرا هنوز دوشش این پروژه می باشد. و چیز شسته و رفته درباره آن ، و این جایی است که خیلی دوره مثل این در رشته مهندسی و علوم کامپیوتر ، من فکر می کنم ، کمی خاص است ، این است که وقتی به خانه خود کار می کند و وقتی پروژه های خود را در این دوره ، شما می دانید ، بسیاری از آنها ، بله ، شما کنار خواهیم گذاشت و واقعا استفاده دوباره. اما ، برخی از آن را خواهید داشت. و این چیزی نیست واقعا قدرتمند وجود دارد ، حداقل برای من ، این چیز واقعا هیجان انگیز است ، وقتی شما چیزی را و مردم دیگر در واقع مراقبت ، مردم دیگر نه فقط انجام لبخند و دست نوازش بر سر کسی کشیدن مرتب کردن بر اساس خود را بر روی پشت و پس از رفتن در مورد زندگی خود هستند. در واقع آنها آنچه را که در زندگی خود ساخته شده حتی اگر چیزی به عنوان احمقانه و یا به سادگی فقط به عنوان یافتن وقتی که آنها می توانند از اینجا دریافت شاتل بعد از گرفتن به چهارتایی استفاده کنید. بنابراین ، با شرایط پایان ، که یکی از اهداف این دوره ، به قدرت شما بچه ها فقط به شناسایی برخی از مشکل که آیا در دانشگاه و یا امیدوارم فراتر از دانشگاه ، و در واقع استفاده از مهارت های خود ، ذهن خود و حل این مشکل در برخی از بخشی از تکنولوژی. بنابراین ، این نیز البته همانطور که ما در برنامه درسی دوره ها می گویند و توضیحات رسمی است که شما می آموزد که چگونه به فکر می کنم و آن را به شما می آموزد که چگونه به حل مشکلات نیز بیشتر کارآمد. خب ، معنی این حرف چیست؟ خوب ، هنگامی که شما 600 مگا هرتز را در جیب خود یا 3 گیگاهرتز زیر میز خود در خانه کردم ، شما می توانید بسیاری از مشکلات موثر فقط با نیروی برشی حیوان را حل کند. اما ، در بسیاری از مشکلات در این جهان وجود دارد ، چه آن را به جستجو ، می گویند ، شبکه فیس بوک و یا اینترنت از طریق گوگل ، که مهم نیست که چگونه سریع کامپیوتر خاص خود است ، به هیچ وجه در جهنم قصد دارید را برای جستجو وجود دارد میلیاردها صفحات وب به سرعت مگر اینکه در واقع رویکرد این مشکل هوشمندانه. شما نه فقط جستجو ، به عنوان مثال ، فهرست بزرگ از تمامی صفحات وب بر روی زمین را از بالا به پایین دنبال چیزی در رابطه با واژه مورد جستجو و هر چیزی که دنبال آن هستید امیدوارم گوگل و احتمالا گوگل و فیس بوک و هر یک از این اشخاص بزرگ اند بسیاری از مردم هوشمند تفکر در مورد روشی که می تواند داده ها با سرعت بیشتری پیدا کرد ، که چگونه آنها می توانند اطلاعات بیشتر موثر روند ، و چگونه آنها فقط می تواند به طور کلی نتایج : از بازگشت هر چه سریع تر به طوری که شما هنوز می تواند انجام دهد ، همه چیز جالب تر با این دستگاه. و به این ترتیب ، چه منظور ما ، هر چند ، چگونه توسط ، آموزش مردم است که چگونه به فکر می کنم بیشتر دقت بیشتر صورت الگوریتمی. خوب ، این تصویری کمی به نظر می رسد همیشه به خوبی بر. و به نظر می رسد به یاد ماندنی. و من حتی فقط روز گذشته توسط دانشجویان سابق پرسید : اوه شما قصد انجام کاری دوباره دفترچه تلفن. و من تقریبا در نقطه تصمیم باشه مطمئن خواهیم چیزی دفترچه تلفن ساخت. و او از من پرسید که شما آن را در نیمه راست گچ بری بود ، من دوست خوب آره از نظر فنی ما آن را در 1 / 2 اما نه در راه گچ بری ، در راه علوم رایانه خواهد من قادر به پاره این چیز در 1 / 2. و به این ترتیب ، در اینجا بود که مشکل ما برای برخی از زمان ارائه شده است. بنابراین ، در اینجا دفترچه تلفن. این رو حداقل هزار نفر یا بیشتر صفحات. و هدف ساده در دست بسیار واقعی جهان است برای پیدا کردن ، می گویند ، فرد را در اینجا. بنابراین ، مایک اسمیت ، آخرین بار که شروع میشود با نام S. پس ، من انسان نوعی ، من این کتاب را انتخاب کنید تا گوشی. و هر کسی خارج وجود دارد ، چه می خواهید ، فرد معمولی ، آیا برای شروع یافتن مایک اسمیت ، بدیهی است در پیش نمی دانستند چه صفحه او در واقع در تاریخ. راست ، بنابراین شما به تقریبا در وسط ، سمت راست. و در این نقطه در داستان ، من احتمالا در ازت و یا م ، شما می دانید ، تقریبا نیمی از راه را از طریق تلفن. معلوم است ، آخرین بار هم من این را به نوعی به عنوان مثال من خودم در بخش اسکورت در بر داشت. بنابراین در واقع بین به همان اندازه نه از طریق م و ازت از طریق زهره متعادل اما ، امروز ، ما ، در واقع ، در م است ، صحیح است بنابراین ، در حال حاضر من در هستم متر است. اما چه غذای آماده در حال حاضر من فقط به عنوان یک انسان عادی خارج از خیابان؟ کجا باید بروم بعدی برای مایک اسمیت. [نامفهوم] و به این ترتیب ، احتمالا فقط در این نیمه ، حق ، چرا که S می آید پس از م و بنابراین ، در اینجا دروغ درام بصری. که واقعا پاره شدن آن را در 1 / 2 ، راست نیست. من از نوع فریب خورده پایین مرکز. اما ، ما در حال حاضر می دانیم که مایک حداقل نه در آن 1 / 2. ما به معنای واقعی کلمه می تواند از نیمی از مشکل را دور بزنند. و من با مشکل که اساسا هنوز هم چیزی مشابه به همین سمت چپ ، پیدا کردن مایک اسمیت در این کتاب واقعا بزرگ است. اما ، مشکل این است که در حال حاضر 1 / 2 به عنوان بزرگ است. اگر تا به حال پیش از هزار صفحه ، در حال حاضر آن را 500 کردم. شما می دانید چه ، من می توانم همین را دوباره انجام دهد. من می توانم نوع بازگشتی یا بارها و بارها انجام کاری مشابه دارد. حالا من کاملا در S. نیستم من در تی هستم و به این ترتیب ، آه من رفتم کمی دور. اما ، می دانم اکنون که مایک است به راست ، در حال انجام در آنجا به برخی از کلاس روزی که من فقط می تواند چیزی سد اشک آور نیست ، من شرط می بندم. اما اکنون ، من می دانم که او به حق نیست. بنابراین ، در حال حاضر مشکل شده است quartered. بنابراین ، من از هزار تا 500-250 صفحات رفته است. و باز هم ، اگر شما ادامه منطق ، ریاضیات ادامه ، من این مشکل را دارم سفت در 1 / 2 ، در 1 / 2 ، در 1 / 2 تا سرانجام من یا رفتن به پیدا کردن هیچ اسمیت در همه ، بعید است ، یا من قصد دارم پیدا کردن 1 من دنبال. اما ، که ، پس ، begs سوال این است هر از روش ساده فقط گفت : شما می دانید ، ، نه ، ب ، نه ، با شروع از سمت چپ به راست بهتر رفتن را از طریق کتاب خطی؟ خوب ، به طور غریزی بله. بلکه باید به تعداد زیادی سریعتر. اما ، چقدر کمتر؟ خب ، اگر من هزار صفحه دفترچه تلفن و یا اجازه دهید می گویند 1024 برای کسانی که از شما که می خواهم قدرت 2 چند ساعت ممکن است من این مشکل را در نیم تقسیم قبل از پیدا کردن آقای اسمیت؟ > ده>. >> دیوید : پس ، 10 ، درست است. اگر شما 1،024 صفحات و شما آنها را به نصف تقسیم ، در 1 / 2 ، در 1 / 2 ، در 1 / 2 ، من که 10 بار که به معنی من از 1،000 صفحات را به شخص من به دنبال فقط در صفحات 10 به نوبت. و این نوع از شسته و رفته ، اما ، می دانید ، اگر شما فکر می کنم در مورد آن انجام شده است که شما این همه زندگی تان است. این که مهیج است. اما اکنون ، که تلفن فقط برای بوستون نیست ، بلکه برای کل ایالات متحده و یا کل جهان و این چیزی است میلیاردها صفحات در آن ، بنابراین با دفترچه تلفن 4000000000 صفحات تصور. چند چرخش صفحه هستم من رفتن به مجبور به انجام حداکثر برای پیدا کردن مایک اسمیت در دفترچه تلفن 4000000000 صفحه؟ >> ورود به سیستم پایه 2. >> دیوید : پس بله ، اگر شما نوع از نوع ریاضی این است که وارد پایه 2. اما اگر شما فکر می کنید 4-2000000000 to one میلیارد تا 1 / 2 میلیارد دلار. منظورم این است ، که در واقع می رود whittles خود را رفو بسیار سریع می باشد. در واقع با 32 halvings از دفترچه تلفن ، حتی از 4 میلیارد ، من دریافت کردن به یک صفحه. و این در زمانی که این مسائل می شود قدرتمند ، من فکر می کنم. که وقتی این ایده ها دریافت فوتی و فوری که شما می توانید مشکل 4000000000 صفحه و در 32 مرحله شما می توانید شخصی که شما دنبال آن هستید پیدا کنید. و به این ترتیب ، این چیزی است که منظور ما می گویند که شما برای یادگیری نحوه فکر کردن بیشتر دقت بیشتر صورت الگوریتمی ، هوشمندانه تر در مورد حل مشکلات. و بازده بسیار وسیع هستند که شما می تواند در حقیقت انجام این کار ، و دوباره به این نقطه از جهان Googles Facebooks که لوکس را به داشتن مجموعه داده بزرگ. باید عشقت رو به رویکرد این مشکلات در این راه در غیر این صورت آن را به سادگی نمی کار می کنند. خب ، چه خبر است چه دانش آموز در واقع فراخوان؟ من ، ما کاری انجام دهید چیز است که کمی احمقانه که گاهی اوقات به از گرفتن لبه خاموش از آنچه که در غیر این صورت مقدار زیادی از مواد جدید مرتب کردن بر اساس. و به این ترتیب ، او در واقع ، این دانشجوی سابق فرستاده من این لینک که من رفتم و دیدم جلوتر ، فقط برای لگد و سپس آن را در پایان ابراز تاسف ، تا در uTube اینجا کشیده. بنابراین ، من فکر کردم من سهم چه غیر دانشمند کامپیوتر یعنی هنگامی که اشک دفترچه تلفن در 1 / 2. [] خنده [] سکوت [نامفهوم] >> شما می دانید بیش از 200 صفحه ، خط خوبی تمیز ، مشروع اشک آور. [] خنده >> دیوید : بنابراین ، من فرض کنید ، راه خود را بیش از حد این نسخهها کار میکند. بنابراین ، چیزی که من از این دوره تمام کسانی که سال پیش رو است بله ، Shuttleboy ، بله و سپس در رشته علوم کامپیوتری ، و پس از آن بله دکترا در علوم کامپیوتر است. و این چیزی است که ما در حال تلاش برای تبدیل اکثر دانش آموزان در این دوره را ندارد. بسیاری از شما در این دوره قرار نیست برای رفتن بر روی مهم در علم کامپیوتر است. برخی از شما ممکن است کوچک ، اما برای برخی از شما این خواهد بود البته ترمینال. و این کاملا خوب چون این دوره ، در واقع ، ساختار در راه جایی که حتی اگر شما فقط پرداخت دیون خود را برای چند ماه و شما واقعا به تمرکز در داخل و شما واقعا برداشت از بسیاری از این دوره که شما می توانید ، شما ، در واقع می شود مجهز به همان صفحه بروید جهان را به خود اقتصاد ، زیست شناسی ، روانشناسی ، ریاضی کاربردی ، و در واقع استفاده از آنچه که در نهایت به عنوان جالب البته همانطور که ما به عنوان مفهومی است اساسا عملی امید. و این هم چیزی که شاید کمی به نادر دست پیدا کرد. من فکر می کردم من می خواهم به اشتراک نظرات چند که دانش آموزان از پاییز گذشته را در این راهنمای نشانه سفید بازی می سال گذشته هنگامی که در مورد آنچه می خواهید به دانش آموزان در آینده پرسید. خوب ، اگر شما در این نظر قبلا در نگاه ، یک دانش آموز گفت : در این دوره خواهد شد مقدار منصفانه زمان خود تا کنند. اما ، اگر شما کار خود را در تمام جهان جدید ، کل قرار دهید ، اگر شما را کار ، اگر شما را به کار ، صحیح است ، بنابراین این دستور زبان او مال من نیست ، پس اگر شما را قرار دهید ، قرار دادن در محل کار ، کاملا جدید جهان باز خواهد شد تا شما خواهد شد. شگفت انگیز که من چقدر در تنها 12 هفته را یاد گرفت. یکی دیگر از دانش آموزان نوشته بود ، شما این را بهتر و یا قصد دارید به آن پشیمانی. دیگر نوشت ، کمی بیشتر با صراحت ، آن الاغ خود را رها و پا زدن به شما احساس بزرگ است. و سپس در نهایت ، این یکی شاید چیزی من فقط می تواند در نوشتن نشان می دهد ، اما از 2 پایین کنید. [خنده] بنابراین ، من مطمئن هستم اگر شما دوستان زیادی که انجام گرفته در این دوره اما ما در نوع انجام بسیاری از آسیب رسیدن به دانش آموزان در سال گذشته نیست. ما ، در آغاز مطرح شد ، چند سخنرانی ، آزمونها چند ، چند مجموعه مشکلات ، این مفهوم lolcats. شما نمی توانید ببینید که چه من می توانم در اینجا ببینید ، اما در حال حاضر شما مرد جوانی به نام گربه خوشحال رهبر lolcat به اصطلاح می باشد که ببینید. این یکی از جلو اینترنت احمق که من فکر می کنم رک و پوست کنده دوگانگی میان این دو آقایان در اینجا و چه در حال حاضر ما بر روی صفحه نمایش داشته باشد شاید می باشد. [خنده] یکی از بیشترین استفاده نامناسب از این تئاتر تا به امروز. و ، چرا ما را کمی واقعی تر کمی بیشتر شخصی این مفهوم در واقع حل مشکل مؤثرتر. مشکل ساده در یک روز و از هر مدرسه ای است برای نشستن و خوردن و ایستاده و شروع به شمارش دانشجویان ، تماس رول انواع حق. خوب ، اغلب ساده و بی تکلف اما با این وجود ، روش بسیار درست است که می تواند معلم را 1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 است ، و ما در اینجا می شود ، مدتی. بنابراین ، چه بهبود حاشیه در این است که شما حتی ممکن است به عنوان یک کودک انجام می شود؟ چگونه مردم را سریعتر به شما تعداد؟ و ، از ایجاد خواندن خاموش دستورالعمل خود من؟ تمایل دارید چه به عنوان یک کودک انجام می شود؟ آغاز شمارش twos ، راست ، مانند بنابراین من خیلی خوب در 2 ، 4 ، 6 ، 8 ، 10 ، 12. بنابراین ، آن چیزی حق جالب است. بنابراین ، چه مقدار از بهبود این است که وجود دارد؟ بنابراین ، آن را به وضوح عامل 2. طول می کشد تا من به عنوان نیمی از وقت زیادی. اما ، می دانید ، عنوان می کنیم در طول این ترم ، قرارداد های بزرگ ، مانند بالا بردن سرعت در حال اجرا شما هم تنها با 2 عامل است که نه همه جالب نیست چون آنالوگ اینجا در دنیای کامپیوتر این است که من هستم پردازنده من یک کامپیوتر ، به خوبی heck ، اگر من فقط 12 ماه صبر کنید ، 18 ماه ، من کامپیوتر فقط قادر خواهند بود از طبیعت می شود ، توسط تعدادی از گیگاهرتز من در من باید قادر به تعداد افراد در این اتاق سریعتر. بنابراین ، از این قبیل ، این نوع از speedups خطی مانند عامل از دو عامل از سه عامل حتی از 10 ، که مراقبت؟ راست ، ما می توانیم در مشکل سخت افزار بزنند. ما می توانیم چیزهایی از صبر کنید. ما می توانیم دستگاه های سریع تر توسعه دهد. اما ، فکری ، آری که نوع باهوش اما واقعا نمی اساسا تغییر مشکل است. من هنوز از چپ به راست ، جلو به عقب رفتن. این واقعا همان الگوریتم. اما ، من عرضه کردن دارند که ما می توانند انجام دهند بهتر است. ما می توانیم انجام دقیق و از این کار اساسا اجرای سریعتر. اما ، برای نشان دادن این کار ، ما شما نیاز به طنز ما فقط برای یک لحظه. و آن را در این نقطه که در آن خواهم بود من کمتر صحبت کردن و صحبت کردن بیشتر شما است. اما من باید شما را به مرحله اجرا 1 با هم ، که اگر می خواهید به ما شوخ طبعی ، لطفا ایستادن. جهت در اینجا هیئت مدیره ، می دانید ها ، خوب ، زن و شوهر از شما برای نشستن و خوردن. کسانی که از شما در پشت ، ما به آنجا ، خوبم. متشکرم. بنابراین ، این برنامه در اینجا قبل از اینکه شما می باشد. شما در حال حاضر کامپیوترهای اجرای این برنامه است. این منصفانه خود توضیحی در این نقطه است. بله ، شما باید 1 عدد. گرفتن آن؟ راست ، بسیاری از شما احتمالا فکر میکنی این به هر حال در حال حاضر ، دانشجوی سال اول سال 1. بنابراین ، فکر می کنم به خودتان ، شما تعداد 1. بنابراین ، مرحله 3 در اینجا ، جفت کردن با کسی ایستاده ، افزودنی شما را دو عدد با یکدیگر و پذیرش این مبلغ به عنوان شماره جدید خود و خواهیم بررسی سلامت عقل را انجام دهد. صداهای [از] جمعیت آیا می دانید که چگونه بسیاری از ما داشته باشد؟ >>] [نامفهوم >> بدون [] نامفهوم. >> ما نیاز به کلید پاسخ دهد. [] سکوت > بله>. صداهای [از] جمعیت >> دیوید : در این مرحله الگوریتم باید سیم پیچ پایین. صداهای [از] جمعیت شاید ما باید با رویکرد من بعد از همه رفته است. >> 43. >> 163. >> دیوید : حسابی آه در مقابل 300 نفر به علاوه. [خنده] شمارش نهایی ما خواهد چیست؟ >> 180. [] خنده >> 1200. >> 386. >> دیوید : 386 ، و به شما آخرین 1 ایستاده؟ این است که همه؟ آیا می دانید جواب؟ >> چه؟ >> دیوید : آیا می دانید چه جواب است؟ ما در هیچ کلیدی ما را با پاسخ نه چندان ، 386 در واقع دقیقا پاسخ مناسب برای اولین بار. [تشویق] [کرامت که درست است. [کرامت] بسیار بسیار خوبی انجام شده است. بنابراین ، آنچه که غذای آماده شده بود چرا که قطعا احساس کمی آهسته تر از روش بسیار ساده است اما با این وجود بسیار درست است من از تنها رفتن onesies و twosies و فقط آن را با گرفتن از چپ به راست انجام می شود. اما آنچه که آیا ما واقعا تنها وجود دارد کاری انجام دهید؟ خوب ، اگر شد تقریبا وجود دارد ، بیایید گفت ، 400 نفر از شما ایستاده در یک نقطه ، و پس از آن نیمی از شما ، به سرعت ، از آنچه من می توانم بگویم ، می خواستم برای نشستن و خوردن. بنابراین ، نیمی از شما نشستم ، ما 400-200 سپس به 100 و سپس به 50 سپس به 25 رفت. بنابراین دوباره ، که همان شکاف وجود دارد و غلبه بر فکر ما با دفترچه تلفن است. باز هم ، با هر تکرار ما نصف اندازه مشکل ، ما آن را نصف ، ما آن را نصف. بنابراین ، در تئوری ، الگوریتم شما باید می شده است بسیار سریعتر از روش خطی من چون برخورد من را گرفته ام می گویند 400 گام یا شاید اگر من کمی باهوش 200 مرحله انجام شد. اما ، تو را گرفته ام بسیار کمتر ، حق 400-200 ، 100 ، 50 ، 25 ، 13 ، 6 ، پس از 10 مرحله در پایان در مقابل من کمتر از 200 یا 400. و جوانه از ایده واقعا جالب وجود دارد. و بله ، ریاضی ، آنچه شما تنها کاری که کمی در طبیعت لگاریتمی با پایه 2 بود وارد بخش مدیریت شوید ، ما در 2 و 2 تقسیم دوباره. و ما دوباره این بعد در این ترم. اما در آن نهفته است دوباره اجرای بسیار هوشمند است. و ما فقط خراش سطح بسیار باهوش ، بسیار باهوش روش موثر برای مشکلاتی که در نهایت ممکن است حل کند. بنابراین ، افرادی که شما فقط با داشتند حرف زدند که اگر به طور خلاصه؟ نگرانی های مشترک در دوره مثل این که هر کس به شما و هر کس به حق از شما باید به روشنی می دانیم بیش از شما باقی مانده است. خب ، که مطلقا نمی مورد. و در واقع ، در سال های اخیر ، در این دوره ساخته شده است تلاش های هماهنگ برای دسترسی به آن کمتر و راحت ، پس به صحبت می کنند. و توسط آن ، منظور ما از افرادی که رایانه ام چرا که قبل از این واقعا سخت است برای پیدا کردن این حوالی هست؟ این روزها را لمس هرگز ، اما مردمی که استفاده از ایمیل ، استفاده از فیس بوک ، شاید حتی در حال حاضر هستند اما لزوما کاملا مطمئن نیست چه باید بکنید وقتی که مشکلی یا وقتی که آنها در مورد هر چیزی فن آوری پرسید ، شما می دانید ، دست بالا برود و یا آنها از فشار سخت افزاری به یک دوست که نیست شاید بیشتر versed در آن نسبت به آنها مهربان بود. خب ، این چند ترم آمار از سال گذشته است. بنابراین ، هنگامی که پرسید ، زمانی که ما خواسته های ما 400 تا دانش آموزان سال گذشته ، شما می دانید ، در سطح خود را از آینده به راحتی از این کلاس چه چیزی است ، و 34 ٪ را به عنوان خود نوشت : در میان کسانی که کمتر راحت است. بنابراین ، اگر شما را به این اتاق آمده و هنوز هم فکر در حال حاضر ، که می دانید ، این مدت کمتر و راحت توصیف من ، بدانید که شما در این شرکت خیلی خوب هستند. اما بدان که بیش از حد است که اگر شما در آینده در این دوره با سابقه در علوم کامپیوتر و شما واقعا که یکی از بازیکنان بالماسکه و کارناوال که غالبا دارای ماسک منقاردار است در مدرسه راهنمایی و دبیرستان بود که نوشتن کد و خودتان آموزش زبان ، هم که خوب خیلی چرا که قطعا وجود دارد nontrivial مخاطبان با اندازه که زمینه نیز ، در حدود 13 ٪ ، ترم آخر. و سپس ، هر کسی دیگری نیست ، مرتب از کسی که فکر نمی کند که آنها کمتر و راحت ، آنها قطعا فکر نمی کنم آنها راحت تر اما آنها تنها در یک دوره به چیزی خارج از آن وجود دارد. بنابراین ، تحقق بخشیدن به این دوره نمی رسم کاملا از دانشجویان طیف. و ، برای قرار دادن در این شرایط بیشتر بتنی ، 71 ٪ از دانش آموزان در سال گذشته ، به حال صفر دوره های نهفته در آنها. بنابراین ، اگر شما در حال ورود به این دوره آه هر کسی که فکر می CS50 کامپیوتری بود ، غژغژ کردن علم در دبیرستان ، این چنین نیست. اکثر مردم احتمالا فقط علاقه مند در آن است. و چند ، بله ، کاملا برداشته اند برخی از دوره ها ، برخی ، یا دست کم یک نفر در سال گذشته 5 دوره شده بود قبلا. بنابراین ، ما قطعا برخی outliers اما دوباره گوشت منحنی در آن ارزش کمتر در دسترس نباشد. و آمار جالب دیگری که ما در طول چند سال گذشته از مشترک نسبت جنسیتی است. بنابراین ، به لحاظ تاریخی ، حداقل در علوم کامپیوتر ، کمی کج یا اریب گذاردن مرد زن وجود دارد. من از دو سال قبل از آن به مراتب بیشتر نسبت به سال گذشته مشخص شده اند. بنابراین ، ما در حال حاضر در حدود ٪ 40 سطح. و اگر من می توانم رد کردن دستکش بلند فقط به خاطر داشتن پای چارت 3 سال آینده ، که حتی بیش از عادلانه. من اشاره می کنند که کاملا بدون هیچ دلیلی از چشم انداز دوره ای که زن و مرد نباید در این نوع دوره ثبت نام وجود دارد. نسبتا در برابر اعداد و به 38 درصد ، 48 درصد ، ما در واقع کاملا راضی برای دیدن که ما تقریبا در حال تحقق بخشیدن به آن ، حداقل ، آماری حتی از 50 ٪ مقدار است. بنابراین ، اگر شما هستند ، در واقع ، زن ، آیا بقیه اطمینان بیش از حد که که این نیست ، در واقع ، طبقه تحت سلطه مردان. خب ، این خیلی اتفاق می افتد که تولد 20 CS50 نیست. من ، خوب شما تشکر می کنم. [تشویق] [کرامت این موضوع خیلی خوبی از شما به خاطر ما کیک را برای شما آورده است در واقع. و به این ترتیب ، وقتی شما در اینجا بعد از خروج از امروز شما در واقع خواهم فرصت برای دیدار با بسیاری از دوره های آموزشی که به همراهان خواهم بود lingering در راهرو دریافت کنید. و بله رو می شود مرتب کردن بر اساس خوبی از راه incentivized نشست همراهان آموزش. اما ، ما را تا سفر به نانوایی کوچک و دوباره سازگار با طبیعت بازیگوش است البته با این وجود در حالی است که انتظار میزان nontrivial کار در حالی که ما با داشتن که سرگرم کننده است. اما ، ما مجبور یکی از این کیک را برای شما خواهد شد. [خنده] بنابراین ، اگر شما در حال خندیدن است که در واقع خوب است زیرا حتی اگر شما در میان یکی از آن کمتر و راحت هستید ، حداقل شما از آن آگاه است. کسانی که از شما در 14 درصد ممکن است این طعم را ترجیح می دهم. [خنده] و بعد ، اگر شما نمی دانید چه جهنم در جریان است در حال حاضر ، ما نیز این کار را برای بقیه از شما داشته باشد. [تشویق] کرامت [بنابراین ، کسانی که در حال خارج شدن را به قطعات خرد شده به عنوان ما صحبت می کنند. بنابراین دوباره ، اجازه دهید تا چیز درجه یک و حداقل معرفی برخی از مستاجر اساسی که ما پس می گیرم برای در اعطا باقی مانده از این ترم. بنابراین ، همه ما می دانیم که احتمالا در نهایت کامپیوتر جوش پایین به نحوی به صفر و آنهایی که این چیزها به نام بیت. معنی این حرف چیست؟ خوب شما می توانید از آن فکر می کنم رک و پوست کنده به عنوان حباب لامپ ، کمی لامپ که یا در آن و یا خاموش است. این سوییچ ، یا آن را در تاریخ و یا آن را خاموش کرد. در حال حاضر ، دانشمندان کامپیوتر به طور کلی از فکر کردن به عنوان شماره صفر و خودسرانه ، و مفهوم در تاریخ به عنوان 1. بنابراین ، اگر شما پرتاب یک سوئیچ روشن است که یکی آن را خاموش کنید که صفر است. یا ، به طور هم ارز ، تبدیل نور را در که ارزش واقعی آن را خاموش روشن که ارزش نادرست است. بنابراین ، این ها فقط مترادف. در پایان روز ، بله ، تمام محاسبات ، همه چیز می رود که در زیر کاپوت در کامپیوتر می کند در نهایت به صفر جوش پایین و آنهایی. و وقتی توقف در مورد آن فکر می کنم ، این سد بسیار قابل توجه به آنچه در جهان است با انجام این بلوک های ساختمان اصلی از جمله برخی از دستگاه های شما در دست خود نگه داشتن. خوب ، چرا صفر و کسانی مفید است؟ خدای من ، حتی در دنیای واقعی که ما حداقل 10 رقم ، صفر را از طریق 9. پس چرا محدود؟ خوب از لحاظ سخت افزاری بسیار ساده است. این خیلی ساده تر برای نشان دادن دو کشور ، درست است. اگر کامپیوتر ها متصل به دیوار ، معمولا ، شما باید این منبع آسان از طبیعت دودویی. این هر دو را روشن یا خاموش. جریان برق است یا از آن نیست. بنابراین ، این نوع یکی از دلایل اولیه که جهان رفت فقط با صفر و آنهایی که در رایانه است. اما ، شما می توانید آنها را به عنوان بلوک های ساختمان استفاده کنید. بنابراین ، این در واقع کمی کوچک بر روی صفحه نمایش در اینجا اما ما می توانیم در دودویی تعداد و یا ما می توانیم هر چیزی که ما در دودویی می خواهید فقط به عنوان نماینده ما می توانیم ، می گویند ، اعشاری ، درست مانند ما می توانیم ، حتی در واقع ، با نامه ها به ترتیب حروف الفبا. و به این ترتیب ، در اینجا سیستم سریع است. تنها در چند دقیقه وقت شما در حال حاضر خواهید بدانید چگونه تعداد دفعات مشاهده ، چگونه نوشتن ، چگونه به صحبت دوتایی بسیار شبیه به لپ تاپ خود تغییر دهید. خب ، شما ، در جهان دودویی ، مرتب از مدرسه درست مثل ستون درجه یا ارزش. بنابراین ، در مدرسه کلاس ما یاد بگیریم این است که آنهایی که این ستون می باشد ستون دهها ، صدها ستون و امثال آن. به عبارت دیگر ، به همین دلیل است که ما می دانیم که به عنوان شماره 123 شماره 123؟ خوب ، معلم من به من آموخت این است که آنهایی که ستون ، این ده بود ، صدها نفر در این بود. خب چه معنی؟ خوب ، به رقم چه مقدار از آنچه در کل است در غیر این صورت رشته ای از اعداد ، فقط هش علائم در انجمن خب ، در حال حاضر 1 100 ، به طوری که در 1 زمان محلی شما با 100 و پس از آن به اضافه آنچه 2 10 است به طوری که در 2 زمان محلی شما با 10 به همراه 3 نفر ، به طوری که در 3 بار 1 ، خوب ، بنابراین من به نظر می رسد که بدست بازگشت به جایی که من آغاز شده است. اما ، این روند بسیار ساده است تنها ضرب رقم توسط مقدار ستون است دقیقا همان چیزی است همه چیز در مورد باینری است. اما در دودویی استفاده می کنید قدرت 2 از 10 قدرت نیست. بنابراین ، در اینجا مجموعه ای از 8 لامپ. دانشمندان کامپیوتر مایل به استفاده از ارزش ها مانند 2 و 8 و 16 و 24 و 32 به خاطر آنها به طور کلی تمام ارزش های مناسب استفاده کنید. بنابراین ، وقتی ما صحبت از 8 ارزشها در این رشته مانند به نام بایت. و این روزها ما به ندرت در کلمه در ادامه متن فقط بحث ، ما بحث مگابایت و گیگابایت ترابایت این روزها. اما این همه در نهایت همین. در اینجا 8 بیت 1 بایت مستعار ، فقط اصطلاحات مخصوص یک صنف ساده است. بنابراین ، تمام این لامپ ها خاموش است. پس ریاضی در واقع واقعا آسان است. بنابراین وجود دارد در سمت راست ، هر چند آن را کوچک برای دیدن است ، ستون 1 است ، twos ، چهار دست و پا ، eights ، 16S ، 32s ، 64s ، 128s. خب ، شاید از آن سخت است در ابتدا به حفظ کردن ولی فقط ضرب در 2 از راست به چپ. بنابراین ، شما همیشه می توانید این نو خلق کردن. خب ، همه آنها خاموش به طوری که در 0 زمان محلی شما با حفره یا سوراخ ، حفره یا سوراخ 0 بار. بنابراین ، این تعداد 0 در دودویی ، بیان کرد. به عبارت دیگر ، چگونه می توانم شماره ما می دانیم شما نوشتن به عنوان در 0 دوتایی؟ خوب ، 1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، و به لحاظ فنی درست مثل در دهدهی ، تمام این صفر پیشرو ، آنها هیچ چیز را به فرمول اضافه کنید آنها فقط وجود دارد زیرا ما را خودسرانه از ما تصمیم گرفتیم 8 می خواهم از این چیز ها در یک ردیف ، درست است. اگر آنها به اشیاء فیزیکی ، در حال حاضر 8 تا آنها عشقت رو به همه خاموش می شود. بنابراین ، ما می توانیم دور کرده ایم فقط با 1 صفر رفت. خوب چطور شما نمایندگی 1 عدد؟ خوب ، به طور غریزی شما به پرتاب یکی از سوئیچ ها. شما در حال رفتن به نوبه خود یک لامپ در تاریخ. بنابراین ، یک عدد چون ما در حال حاضر قرار دادن 1 ، لامپ که در تاریخ ، در موقعیت 1 است وجود دارد. چگونه می خواهیم به نمایندگی از 2؟ خب ، ما در واقع رفتن به پرتاب 2 سوئیچ در حال حاضر در دست کم در برابر این حالت ، ما به نوبه خود در ستون 2 را خاموش آنهایی ستون و در حال حاضر ما دارای ارزش 1 در ستون twos. بنابراین ، آن را به ارزش کل 2. در حال حاضر ، سریع روانی ورزش ، چه با رفتن به دنباله آینده اتفاق می افتد؟ چگونه می توانم شماره 3 من وجود دارد؟ خوب ، من نیاز به 1 از ستون twos ، یکی از ستون threes در هکتار و آه. بنابراین ، اکنون من که 1 واحد اضافه. و اکنون ، این همان تکرار الگوی اساسی. تعداد 4 چیست؟ خب بیایید ببینید ، من تنها کاری که باید 1 در ستون چهار دست و پا و سپس در صفر twos و میکنند. تا بعد ، آن را ادامه می دهد که راه. و ، آن را فقط در این رشته از مراحل است. و در مفهوم باینری است که واقعا همه پیچیده نیست. در بالای صفحه وجود دارد که ما 8 صفر. که ما در زیر 7 صفر و 1. در زیر که ما 6 صفر ، 1 و صفر و که باینری. Now, thankfully, we computer scientists, we programmers by terms end are not going to often be writing in binary, talking in binary, thinking in binary because we've built many layers of the traction on top of that. In fact, people rarely talk about bits except in a networking context they talk about bytes because one bit, not that useful, eight bits these days still not that useful, but at least eight bits, one byte is at least getting us toward more useful units of measure. But, when we start looking underneath the hood, when we do certain problems such as look at files and look perhaps at network traffic, it will become interesting to know how you're representing data because you're going to have to figure out how to display that same information. And, in fact, we, if we only have zeros and ones, how do we go about representing, say alphabetical letters? Well, we're going to have to have some mapping between binary and letters. But that's as of yet unclear. But to hammer this point home and to give me a break from speaking at, I thought I'd pause for a moment and see if we can't recruit eight volunteers, one byte eight people. Can I get eight people for whom it is not too awkward to come on up. good, good one, two, three, four, five, six, seven, eight very enthusiastic eight, come on down. So, you all, for just a moment here, oh and you have to be willing to not be on the internet because there is in fact a camera in the back of this room. So, turn back now if you don't want to be on the, hello mom, in perpetuity. So, let's see, you here will be the 128th column. And let me ask that you simply hold this before you. And actually, if you could scooch this way just a little bit, then I will get out of your way. You'll be the 64's column, you shall be the 32's column and the 16's. 32's, 16s, 8's, 4's, 2's and 1's. All right. So perfectly lined up with the place holders from before, but we need a little bit of mapping, so a quick set up. We just need an arbitrary way of mapping binary numbers, which really could be converted very easily to decimal numbers. So we need a way of converting numbers to letters if our computers are actually going to show us emails or type URL's or actually display non numeric information. And, in fact, there is a system for that, it's called ASCII, an acronym whose meaning is not so interesting, but whose utility is. This is just a mapping from letters to numbers and there's actually a lot more numbers on the screen, and you guys, don't worry, aren't going to have to test yourselves with this in just a moment. But there's a mapping between numbers and letters and I'm just going to get us started by pointing out a couple of these. The numbers of interest right now are going to be, whoops, are going to be this. Whoops. So in this column here, I can't seem to zoom in simultaneously, we have decimal. Dec for decimal. And then we have the character on the right hand side. So if I hop over into this column, thought it's a bit small on the screen, the number 65 represents what letter? Capital A. And the number 97? Lowercase A. All right. So those two alone, right, so do not go home and try to remember ASCII chart. Come quiz time, do not try memorizing an ASCII chart. Memorize two, 65 is capital A and 97 is lowercase A. And from there you can bootstrap yourself to all of the other alphabetical characters. But all this chart says, and I just downloaded this chart from ASCIItable.com, this is a standard that's been around for many, many, many years, but most computers still use it. What we now have is a means of encoding alphabetical information using what's ultimately numeric. So if these guys are just switches, light bulbs, computers, we can actually convey messages. So each of you has some hints on the back. We're going to have three rounds here where these guys are going to spell out in English, in ASCII, a very short message, a three letter word. It will involve them either raising their hand, thereby representing a one or just standing there awkwardly, thereby representing a zero. So why don't we proceed immediately with round one and you can either raise or not raise your hands. So the audience doesn't get off the hook. What number are they currently representing? 66. Right. Not hard because we have a one, a hand up in the 64s column, a hand up in the 2's column. 64 times one plus two times one is 66. They're representing the number 6, which means the first letter is B. So not too bad, right? Round two. First letter was a B. [] خنده >> Seventy Nine. >> David: Can someone second that? Yes. All right. So 79, which means it's now an O. So B,O. There's a third letter. Actually that is kind of, yeah. Third round. Third and final round. What number is this? I heard an 87. Someone else agree? All right, yeah. This is in fact 87, which maps to, and this is a very clever set up at which point you all B, O, W, it's bow. Very good. So actually besides that little souvenir, that was not a very enthusiastic applause, so I'll take care of you. So we do have a little something for these guys here now that they just appeared on center stage doing perhaps the geekiest thing they could. So maybe if we could humor them if only because I'm feeling a little bit awkward now. A little round of applause for these guys here. [ Applause ] All yours. All right. Thank you very much. So, so, it turns out that we can take this one step further, but you are now entering a community of people who understand things like this. [ Silence ] It's slowly spreading, yes? [ Laughter ] It's not cool that you understand this now. So we've already done some damage here today, but yes, there is now such a thing as geek humor that you might just catch a little bit more on to. So what are we going to do throughout this semester? So there's 12 weeks, zero index, so 13 weeks in total. You'll find throughout the semester that computer scientists tend to count starting from zero for reasons that will soon become clear. But what we're going to do this week, starting this Friday, is introduce you to programming. Now you may already be coming at this course with a background in the same, and that's perfectly fine, but we'll also be able to introduce some more sophisticated topics than are typically covered, things like events and threading, so just to toss out a couple of buzz words for those unfamiliar. But what we're going to do is not dive into what the typically traditional language like Java or C++ or C sharp catch phrases that you might have heard in the past, but we're going to use a programming environment, a graphical programming environment that was actually developed by MIT's media lab. And this is an environment that allows you to program, quite literally, by dragging and dropping puzzle pieces that fit together logically that lets you implement these things called loops and conditions and Boolean expressions and you can actually, on day one, after this Friday, write a program that actually some of your friends might care about. So in yester year, say when you've taken a computer science course in high school, odds are one of your first programs was the equivalent of hello world, like wow mom, I just made the computer type some characters on the screen. It's a very underwhelming experience. Much more interesting is it to implement a little something like this, as one of last year's students did. So I give you the work of a former classmate. It's a love story, of sorts, about dancing cookies. [ Music ] So this was actually from a student who had never programmed before. And just to give you a teaser of this interface, and we're only going to use this for one week time, really to get the comfort levels up and to really get folks excited about what you can actually make these machines do, this is an environment where you'll be programming by, for at least a week, just dragging and dropping puzzle pieces that fit together, as we'll see, in a logical fashion. And it lets you do fun, silly things quickly. And for any of you who are a little bit familiar with things like Java and C++, it's usually a good semester or two or three before you finally get to start writing something that another person might actually enjoy watching. Well, in week one of the course, or the second week, zero index, where we dive into a little more traditional environment. In this course we'll spend much of our time on a language called C. This is one of the earliest languages that, unlike Java, actually gives us much greater access for better or for worse, to manipulating hardware and actual memory, and we can do a lot of damage with that. In fact, any time you read of web servers being exploited or computers being hacked into, very often to this day it's the result of people having run software in a language called C or C++ without sufficient care given to what are called buffer overruns or lengths of arrays, so some fairly technical concepts that are not that hard to understand, but there's been a lot of humans making a lot of mistakes for years and with this language we'll actually understand some of those security implications. But each week, typically, we'll introduce also an interesting domain that will inspire that week's problem set. So we'll also take a look this week at the field of cryptology, cryptanalysis, the notion that you can encipher information in such a way that people can't read your messages, but if clever enough perhaps you can, in fact, crack what are otherwise secret messages. In week three we'll then look at some basic fundamentals of computer science like searching and sorting and we'll actually look at this notion of recursion, how to debug things. In short, we'll take things up to the level of problem solving and not so much about mere syntax and implementing short little cookie cutter programs. In week four we'll introduce more sophisticated problems still. What does it mean to manage memory? What does it mean to run out of memory? What does it mean to actually segfault, if you've heard this expression, and odds are you haven't, but very bad things happen and frankly by terms end you'll understand terms like my code segfaulted which actually is generally not going to be a good thing. But then again, we'll introduce some domain specific stuff. So actually one of my internships during graduate school was to work for the local Middlesex County District Attorney's office doing forensic investigations in a digital sense. The local Mass state police would bring to our office hard drives and floppy disks and sometimes for no reason mice and keyboards. And we would be tasked with finding evidence. Now it turns out, maybe just an FYI, that the criminals in Cambridge, Massachusetts, at least, not necessarily that clever. Very often our forensic analysis boiled down to booting the computer up and double clicking on the My Documents folder, and therein laid the evidence. But what we'll do this week is give you a sense of what it actually means to store information on a hard drive, on a flash drive, and why can't otherwise private information be disclosed to third parties when you drop off a computer to be repaired or even when you discard it. Well someone might very well be sifting through those hard drives and it's really not that hard to find data if you know how to look for it. Well, in week five we'll look at more sophisticated data structures, tools and techniques that you can use ala phone books and ala searching huge data sets much more intelligently. And the week's problem set will task you competitively to see just how fast the code you can write is and how little memory you can use. Toward terms end though we'll take things up to a higher level in terms of programming languages and put C behind us and introduce a web programming language known as PHP, one of the popular languages these days. Much of Facebook is still written in PHP, at least outward facing, and it's just a very easy language to learn quickly once you already know another. So with PHP we'll be able to solve problems and implement websites that do interesting things. The news site I showed you, the events site, the shuttle boy site, all of those all happen to be written in PHP. But by no means is that prerequisite. What you'll also find throughout this course is that you're not going to exit this course knowing C. You're not going to exit this course knowing PHP. Those are not interesting skills to claim, but knowing how to program, knowing how to use data structures and algorithms in an interesting way, that's a compelling story. Even I, all these years later, throughout college and graduate school, the only time I ever learned a language was probably in CS50 where it was still taught in C and CS51, which is one of the successor courses. Everywhere along the way since has been go learn this language and then work on this problem set because computer science is not supposed to be about here's a language, let's spend seven weeks teaching you where the semi colons are. There are much more interesting ideas out there. Databases, for one. And in week two we'll introduce you to this query language called SQL that'll allow you to store information in databases and actually implement some fairly interesting final projects. The week after we'll look at what's called client side programming, doing interesting things on a user's computer, taking advantage of their CPU cycles, doing things ala Google maps and these websites that actually use JavaScript, which is actually a language we'll introduce to let you do client side things, make more interesting, more sophisticated user interfaces, but at the end of the day have to be really mindful when implemented of a lot of sticky issues like network speeds, network performance and security. So it's not about again just coding something up that's fun to use or pretty to look at, but actually thinking about the design that'll be the interesting process. And then, the end result aesthetically will often be a really neat toy to show yourself or a friend. And then we'll look at hardware. We're going to take for granted that there are these physical boxes throughout much of the semester that will do what we tell them to do. But how are they doing that. So we'll actually take a peak under the hood and talk about what a compiler really is, what a CPU really is and actually consider what's making all of this fanciness from stupid YouTube videos on down possible. So what are the expectations? Attending lectures and sessions, completing nine problem sets assigned roughly weekly, two quizzes, the final project and there is in fact no final exam. Grades, it's always a question, broken down as follows here. You can take the course pass-fail. But let me say it here, and I've said it many times. I personally care relatively little about grades. I think they are a wonderful, well, they are a useful pedagogical tool with which to motivate and unfortunately sometimes de-motivate, but you'll find in this course that at the end of the day it's more about seeing how far you can go from weeks zero to week 12, as we say in the syllabus than it is about absolutely ranking all students in this course. So if you're coming into this course among those less comfortable, though a large demographic do not assume that that's automatically putting you in the lower third of the so called distribution. At terms end do I sit down with the TF's and discuss each and every one of the students. We take into account where a student came from, what kind of trajectory they were actually on and so at the end of the day please focus more on, and I don't mean to sound too grand, the process of learning and less on the numeric's. And you'll actually see that we grade problem sets, in particular, very coarsely, whereby along three axis, you will get a score of 1, 2, 3, 4, or 5, where 3, is in fact good. 3 is not C. 3 is good, 4 is better, 5 is best. But more on that as the problem sets are released. So the course's website is where you will find, as in most cases, a whole lot of useful things, if not silly things, too. And we have the luxury, as computer scientists of implementing it ourselves. So over the course of the semester you will see various new features rolling out. You'll find out over the course of the semester that the bulletin board is a wonderful place, certainly in the course of this size, to turn when you have questions about the problem set, questions about some computer science concept. You'll be able to check your grades, download all handouts in advance of lecture typically will I post the slides, if you're the type who wants to scribble on notes. But as you've seen, usually I shy away from long lists of details and more like pictures of cats and other visual cues. So you'll find, too, that we will provide printouts of code when we actually think it particularly advantageous to write right on the paper. Software, videos will be available, usually around 1 to 2 to 3 days maximally after each lecture. So the courses are being filmed and every lecture will go online in various formats including QuickTime and MP3's for downloads to iPods and such. And also you will find a link to download what we call the virtual terminal room, which as you'll see is related to virtual office hours. Books are expensive and in the computer world also not that useful. They are on the shelves of the coop, although we're told that last year they ordered like 120 books for the course and 30 were actually purchased, but this perhaps speak to the fact that there are places like Amazon.com, so if you are the type who actually enjoys the sort of support structure that a book provides, if you like to read up more than say a course's typical materials offer, by all means, procure one or more of the books that we recommend here and discuss more in detail in the syllabus. But realize there are so many resources that this course provides in printed form and electronic form, and my God, there's the whole internet out there. Books are not something that are required for this particular course. Lectures, in general, will be Monday's and Wednesday's, except for this Friday and next Friday, simply because of shopping period and Labor Day. So we'll meet this Friday, next Wednesday, next Friday, but there after this is just a Monday, Wednesday course. So this little visual cue here is to remind me that yes, we do distribute videos in QuickTime formats, MP3's, fun ways that you can, if you're actually this type, maybe in the 14 percent, watch a computer science lecture on your iPod, but it reminded me that at terms end last year, the course culminates in final projects, in which students can design most anything they want, and we actually had some students tackle some iPhone applications. Some one of these at least is now in the Apple store. It's called Rover. It's been adopted essentially by Harvard agencies and it's the iPhone version of the unofficial guide to life at Harvard. They did a brilliant job. I bring this slide up too, just to point out what other technologies might very well be down the road. Some of you may have seen this before, but just to give you a teaser of apparently what's in the pipeline, I thought I would offer this brief distraction here. [] موسیقی >> With the MacBook wheel, Apple has replaced the keyboard with a sleek, touch sensitive click wheel. Apple CEO Steve Jobs introduced the product yesterday at the annual Mac Expo. Senior product innovator says the MacBook wheel will make typing a thing of the past. >> At Apple our philosophy is create products that are simple to use and nothing's more simple than a single giant button. >> Gilman showed me how the revolutionary new computer works. >> Gilman: Just open the intuit-type alphabet menu here, scroll to the letter you need and center click to select it and click again to capitalize and repeat this process for each new letter. It couldn't be simpler. You could also let the predictive sentence technology complete the sentence for you. >> Gilman says the MacBook wheel has also simplified organization of files, so searching your hard drive will be a snap. >> Gilman: Just press both sides of the wheel concurrently and center click and there, you have an alphabetical list of every file on your hard drive. Everything is just a few hundred clicks away. >> Apple is calling the MacBook wheel the most intuitive product every designed. >> Here at Apple we like to think that we're giving customers features they don't even know they want yet. >> While the MacBook wheel won't hit the shelves for another 3 to 15 months, many apple users already have it on their wish list. >> I'll buy almost anything [inaudible] and made by Apple. >> Alex [inaudible] was one of the lucky few to get to try out a MacWheel and spent 45 minutes typing an email to his friend. >> I never really realized how much I hated keyboards until I saw this thing. >> I like how it automatically says, sent with a MacBook Wheel, so people automatically know you have one. >> With a price tag of just under 2600 dollars for the lowest end MacBook Wheel, it is an investment. But the super thin laptop features numerous innovations, like the new ultra thin hummingbird battery, which can power the MacBook Wheel for a fill 19 minutes before needing to be recharged and the computer is virtually unbreakable unless dropped or hit. But Apple isn't resting on its laurels, Bryan Gilman says they're already hard at work on the next generation of the MacBook Wheel, which will be four ounces lighter due to its lack of streaming hard drive or wheel. For the Ugly news Network, I'm Jeff Tate. >> Thank you for that, Jeff. It remains to be seen if the wheel will catch on in the business world where people use computers for actual work and not just dicking around. Moving on, police warn. >> David: So I've seen that thing at least a half a dozen times now, including once at like two a.m. last night and I was scrolling down on YouTube and literally like an hour prior, some guy in all seriousness posted, just a wheel? That's the stupidest product I've ever seen. [ Laughter ] And then the rants ensued in the thread thereafter. So besides lectures there are also sections and it is your teaching fellow and the course's course assistants that you will get to know very well over the course of this semester. Sectioning won't begin for a week or so's time. More on that in the lectures to come. But know that the course will have several different tracks of sections, much like First Knight's has for music. Sections targeted more at those less comfortable, those more comfortable and those somewhere in between. And we also offer most Sunday nights before a problem set is due on the following Friday is what we call code walkthrough's where one of the course's teaching fellows will lead a session targeted specifically at the week's problem set and will help you answer the question where do I begin, how should I approach this? And that too will be filmed and made available online and always linked on the course's website. So this course has a huge staff. Our staff is larger than Harvard's average class size. We have over 50 people involved in the production of this course on a weekly basis. Some of them teaching fellows who hold sections, grade work, hold office hours and more. Course assistants who are former students, who are offering on a volunteer basis in fact multiple hours of office hours in the computer lab per week. System administrators, folks doing all of our AV and video production. Someone who will actually be taking notes for you. So it is actually my opinion that scribbling down almost every word that someone like me says is not a very good use of one's time. It's much more interesting I think to actually engage with what's on the screen, what's being presented. And so what we will do as a course is post PDF's online within a couple of days of lectures of scribe notes, which is essentially an authoritative version of course notes, unedited, but documenting what went on in lecture that day, thereby hopefully freeing your minds and pencils from jotting information down. We have some of our team here. Most of our team is actually shopping courses. But if a few of your guys would like to come on stage for a moment with our head teaching fellow and assistant head teaching fellow. Allow me to ask the latter to say a quick hello. And as these guys come up in absentia allow me to say that also on staff this year besides the folks you see here are Alex, Alice, Andrew, Batul, Charlotte, Chris, Dan, Dan, Daniel, David, David, David, Derek, Dev, Didi, Doug, Drew, Erica, Fil, Glen, Greg, Janice, Jason, Jean, Jeff, Jesse, John, John, Jonathan, Jordan, Josh, Karim, Kelly, Ken, Kent, Kyu Bok, Lee, Madhura, Marta, Matthew, Michael, Michelle, Mike, Mike, Nathan, Patrick, Peter, Peyton, Rose, Saba, Sanjay, Shannon, Stacey, Ted, Wellie, Yair and me. So our course is teaching fellows and course assistants, Cansu and Yuhki, would you like to say a quick hello? >> Hi. It's definitely a great honor to be back here for the third time. And if you're one of those who are like less comfortable. [ Laughter ] I think I can [inaudible]. Okay. [ Laughter ] If you're one of those [inaudible]. There's no need to be afraid. I walked in here two years ago with no experience what so ever, and I thought that I was like dumb and I was sure that I was going to fail the class. And I came back for the third time. I did not fail the class. This course is great because it has such a good community. As you can tell by the names listed by David. All the CA's and TF's are here to help you. So if you have any questions at all, just come up to us. Not taking this class because it's hard is not a good excuse. So, hi. >> [Inaudible]. >> Hi, so well both as a student and TF, I've really enjoyed being a part of this course. And even though it's a course that requires a lot of work from you, we've put a lot of work in to it for you as well to make it as enjoyable and as fun as possible. So, we really hope that all of you stay and take part in this very special experience. >> Thanks. >> David: So you will find, thank you, all of you, you will meet them in the hallway in just a few minutes as well. So you'll find that this course, perhaps more so than many is very much a shared experience. This is not a competitive course. This is not your premed course. This is a course which ultimately yes is about doing independent work, as you'll see each week by way of the problem sets. But you can't help but to get close to someone when you're fighting with some bug and banging your head against the computer screen proverbially to try to track down some bug. And I think you'll find that past students will concur that you exit this course with a lot of friends among students and also on staff. So where does that happen? Well, within office hours in the basement of the science center there's some large computer labs and we pretty much take them over five nights a week. These won't start for some time, and this, to be honest, is perhaps the most beautiful picture of the science center I've ever seen. [ Laughter ] It does not look like that on the inside. But it is a place where a good percentage of students do choose to spend time to get one on one assistance with each of the week's problem sets. Each week we will offer more than 100 hours of assistance one on one in the science center per the schedule that will eventually go online. And for those of you who live, say in the quad, or in Mather, or who just don't want to trek all the way to the science center to ask that quick question, we also offer what are called virtual office hours, much like remote technical support where you'll be able to log into a glorified chat room, in which yes, you can type back and forth with a TF or a CA, but you can also share your screen or share control of your mouse with them subject to your consent so that they can help you troubleshoot any problem or any question you have remotely. To give you a sense of what's involved in the course, these are statistics from last year. So you will, I think it's quite fair to say, work your ass off in this course. But per my promise from the start, this is one of those experiences that I don't think a typical student regrets. If you flip through, for instance, the Q Guide forms that are all on the course's website, you'll find that only by putting in the time to a course like this do you really exit having felt like you got something out of it and frankly might very well even have emerged even smarter. So what does it mean to actually write programs and implement problem sets? Well, the first problem set last year, a quick retrospective here, was to implement your very own programming scratch. And we spend just the first week there, and the goal is to implement your own game or animation or art or anything that appeals to you. In week one, then do you implement some basic C programs to get acclimated to some more traditional programming environments at the command line, at Linux so you get comfortable with some of these basics that will certainly serve you well in the long run. Last year's Problem Set 2 was about cryptography. We gave students the opportunity to implement some ciphers, some algorithms that let them encrypt information. And we also offered some students the opportunity to do the opposite. Each problem set, many problem sets, as you'll see are implemented in two editions. A standard edition that we expect almost everyone to do, say 90 percent of the class. And then a hacker edition, which presents the material from a more sophisticated angle, expects perhaps a bit more clever work for those more experienced, and for this one did those students get handed in the hacker edition pre existing user names and passwords in encrypted form and they had to figure out what those passwords for. We actually got into trouble for this a few years ago because all of the sudden FAS Computer Services saw like 50 people running a crack program on nice.fas.Harvard.edu, so they now have been given a heads up for programs like that. Last year students implemented the game of 15. Not all that much fun to play as a party favorite, moving the numbers up down, left, right, but a real stepping stone to implementing something interactive that involves a human and the hacker edition for this one had students implementing God mode, which actually solved this thing for the human, maybe cheat mode is the more apt term, in Sudoku, which was a step up toward that, where we provided the students, you, with a framework with a whole bunch of code that you needed to first understand before taking things the final mile and implementing some of the remaining functionality. And then we dabbled in forensics and this grew out of a real world experience between me and a friend. For this problem set last year, this buddy and I, who he being a particularly good photographer, strolled around campus and we shot photographs of unique, non obvious, but identifiable places on campus. And this was using his digital camera. All of these JPEGs got stored on a digital flash card or what not. And then I accidentally formatting the thing, or erased it. Well, it turns out formatting something or erasing something, usually means neither. It just means doing a little bit of work to make the human think their data has been erased, when in reality it hasn't. It's just been forgotten. And so we tasked last year's students with writing a program in C to actually recover these photos for my friend. We gave everyone a forensic image, so to speak, a big file representing that compact flash card, and they had to recover the several dozen photographs. And they also had to solve this little murder mystery. We provided folks with this image here. Those of you who've seen this before might be doing that squinting thing right now where you're trying to look through the picture, well you look pretty awkward, because this is not a magic eye puzzle. This is just random red noise that actually has behind it an actual message. And it turns out, I think it was Colonel, let's see, I've got my little solution here. Last year it was Colonel Mustard in the study with the candlestick. And this was the murder message recovered by students who wrote code to do so. And then in Problem Set 6 last year. We challenged students with implementing the fastest spell checker possible. What do we mean by that? Well, we handed the students a big text file containing 140 plus thousand English words, and we said write a program that loads all of these words into memory, but very quickly and very efficiently can tell us yea or nay, is this document perfectly spelled or are there errors? And what we provided was a testing framework, a harness, that students, if they wanted to compete, could run their code against some benchmarks, against some testing programs that we wrote. And then, ranked on the course's website from fastest to slowest were the running times, the amount of time it took for each student's code to actually execute, complete opt in. It's by no means required. And we took a bullet for the team and made sure that one of our own teaching fellows intentionally, I think, was at the very bottom of the list. So, there was definitely a lower bound. But the odd, the funny thing was we saw this in the cue guide evaluation, this problem set of all things, was apparently the one that people sunk the most time into. Not because it took any longer than all the other p sets, but they would come back from like dinner, look at the board, and realize dam my friend, my roommate just ever so slightly inch higher than me and so it incentivized people if only to one up their friends and roommates. In Problem Set 7, last year, we asked students to implement their own E*Trade like website, whereby you had to create a website using that language call PHP a database called mysql that actually lets people log in and then manage a portfolio of stocks, buy stocks quote unquote, sell stocks quote unquote, get stock quotes. And from where? Well, we have the students; we had the student patch into Yahoo Finance where they grabbed merely the Real time stock quotes to actually simulate the process of buying and trading stocks. Unfortunately some students, perhaps some economics majors or just folks with too much free time figured out last year how to gain the system. So, even though we gave everyone 10,000 virtual dollars, I think our winner turned teaching fellow this year actually, right don't push them away make them one of your own, for a billion dollars something like that ridiculous. Turns out we weren't really checking whether or not people were trading after hours. And it turns out that also, Yahoo stalk quotes are not in fact perfectly Real time which means if you just have a real E*Trade account you can see the future and see where the stocks are going. [ Laughter ] So, apparently you can exploit that if you put your mind to it. and then, in Problem Set 8, the course's final problem set last year, we had students implement a mash up where they take Google News and Google Maps and mash them together using JavaScript, PHP and SQL in such a way that they had a website that they could find all of the local news from whether it's zip code 02138 or 90210. And, you would actually pull the local current even articles by this thing called XML and integrate it into the view of a Google Map. And then, at very course's end was the true climax of the course. This course culminates in final projects, which ultimately will be your opportunity to design your very own piece of software, designed by you or two or three friends. And the course then climaxes with the new and improved, with the second annual computer science 50 fair which last year was an exhibition across the street in one of the engineering buildings with 300 laptops atop tables, popcorn was popping, music was playing, stress balls with CS50's logo were being thrown around. And this was an opportunity for our 300 plus students to exhibit their final projects not only to each other but also to some 900 attendees in total. And we also invited some recruiters as well. So, that is what you have to look forward in this course. You also have cake to look forward to in the hallway. This is CS50 and we'll see you on Friday. [کرامت ==== Transcribed by Automatic Sync Technologies ====