[За възпроизвеждане на музика] [APPLAUSE] DAVID J. Malan: Това е CS50, Въвеждане на Харвардския университет на интелектуалеца предприятия на компютърните науки и изкуството на програмирането. Сега, ако сте сред тези, които всяка година се седи тук с малко нерви в ума си, като че не мисля, че мястото ти е тук, смятате, че най- някой около вас заседание знае много повече от теб, е наистина по-удобно, отколкото на компютър науката или компютри по-общ план, да разбере, че 78% от студентите, които сега предприеме CS50 имат предишен опит. В действителност, има 100 точки там на дисплея, от които 78 са твърди зелено, което означава, че вие, ако сте сред които демографските, са в много добра компания тук нататък. И ако сте вместо сред 22% от CS50 студенти, които наистина имат предишен опит, независимо дали в гимназия или някоя друга програма, осъзнаят, че вие ​​също ще да бъде оспорено в хода. Не само, че имаме различни писти за студенти по-малко удобни и по- комфортен приличат по секции, ние също така наречените хакерски издания от най-проблем определя, че ще отправи предизвикателство към тези ученици, с този допълнителен опит да проучи други подобни материали но от по- изискан перспектива. Но това, което е по компютърни науки? Е, в крайна сметка, какво ще се материя, докато разглеждате тази област не е толкова много, когато ти свърши спрямо съучениците си, Но къде ли се озове в 12-та седмица в сравнение с където можете да започнете тук в нула седмица. Сега компютър science-- Е, нека го наричаме науката за computation-- където изчисление е наистина само луксозен начин на казвайки, като някои вход, производство на някои от крайните продукти, и това, като пуснете алгоритми, набора от инструкции за решаване някакъв проблем, върху тези артикули , за да се произведе някакъв изход или разтвор, в който ви интересува. Така че ние наскоро имаше повод да пътува извън до Калифорния, за да се срещне с двуалуминиев триоксид. Нейното име е Сюзън Wojcicki. И тя иска да говори да ви тук на видео за да свидетелства за това колко е приложимо дори само вкуса на компютър науки в встъпително ниво може да бъде. Дори и ако не отида, за да продължи компютърни науки като поле, или дори инженерство, или стволови-общо ще видите, в действителност, как определен Разбира се, така се влияе на живота си. И тя едва го взе, когато тя е старши тук в Harvard College. Ако можехме да намаляване на осветлението за Сюзън. SUSAN Войчички: Здравей, свят. Аз съм Сюзън Wojcicki. Аз съм изпълнителен директор на YouTube. И взех CS50, когато бях старши в Харвард през 1990. Всъщност бях история и литература майор. И третата ми лято, Аз осъзнах, че може би аз Исках да науча нещо за компютрите. И така, аз се върнах. Взех CS50. Беше трудно, но това беше Най-невероятното клас взех. Той промени начина си мисля за всичко. И когато завърших Харвард през 1990 г., аз отидох в Silicon Valley. И аз имам работа. И съм работил в технологии и досега. DAVID J. Malan: Сега какво Сюзън не се споменава в това видео, че всъщност в нея гараж, че самата Google е основана от Лари и Сергей. Сега ние също протегна ръка на нашите приятели в code.org, организация, която през изминалата година е била стават хора в особено развълнуван за компютърни науки и програмиране, по-специално. Но си струва да се отбележи, че програмирането не е компютърна наука сама по себе си. Компютърни науки не е програмиране. Вместо програмиране е само една tool-- с които всички вие ще бъде много добре запознати с end-- семестър така че можете да не се прилага само за бъдещи курсове в CS но какъвто и да е полета от где идваш, в хуманитарните науки, социални науки, природни науката, или други подобни. Всъщност, позволява няколко други възпитаници и техните колеги да се говори за приложимостта на полето, което очаква. Бил Гейтс: Бях на 13, когато аз първо имам достъп до компютър. JACK DORSEY: Моите родители ми купи Macintosh през 1984 г. когато бях на осем-годишна възраст. Марк Цукерберг: Бях в шести клас. SPEAKER 1: Научих се да се кодира в колежа. Ручи Sanghvi: първокурсник година, първият семестър, Intro да Computer Science. Бил Гейтс: Написах програма че играе Тик-так-палеца. DREW HOUSTON: Мисля, че беше доста скромно начало. Мисля, че първата програма Написах попита неща като, кой е любимият ти цвят? Или на колко години сте? ELENA SILENOK: първи път научих как да се направи зелен кръг и Червения площад се появи на екрана. GABE NEWELL: Първото път, когато всъщност трябваше нещо да излезе и да каже: Здравей, свят. И аз направих един компютър да го направя. Това беше просто изумителна. Марк Цукерберг: Да се ​​научиш как към програмата не започнем като искат да се научат всички компютърни науки или се опитват да овладеят тази дисциплина или нещо подобно. Той току-що започна на разстояние, защото аз Исках да направя това едно просто нещо. Исках да направя нещо, което Беше забавно за себе си и сестрите ми. И аз написах тази малка програма. И тогава основно само добавя малко към него. И тогава, когато имах нужда , за да научите нещо ново, Аз го погледна нагоре, нито в книга или в интернет, и след това се добавя малко към него. DREW HOUSTON: Това наистина не е за разлика от свирене на музикален инструмент или нещо или възпроизвеждане на спорта. DAVID J. Malan: Добре. Така че нека сега всъщност потопите в малко по-дълбоко. Какви са тези входове и изходи че ние не говорим за тук? Така че какво ще кажеш за нещо по-просто? Вие вероятно знаете, дори и ако имате не познаване на компютърните науки каквато, че компютрите по някакъв начин използват и разбира само нули и единици. Но как може това евентуално да се има предвид колко много днешните настолни компютри и лаптопи, така може да се направи? ДНК на деня, единственото азбука, че те разбират е нула или едно. Е, помислете за това. Ние, хората, склонни да използват десетична бройна система. "Декември", което означава 10. И това е 10, защото имаме 10 цифри, от 0 до девет. Сега компютри, за разлика от това, склонни да използват двоичен. "Bi", което означава две. Така че те са склонни да използват само нула и едно. Но се оказва, че дори само с нули и единици, това е достатъчно голям азбука с което представлява най- всяка част от данните, които искате, дали това е номер, дали това е писмо, независимо дали е графичен или видео на екрана. Помислете, например, как ние, хората, обикновено се интерпретира този номер тук. Това е само три цифри, едно, две, три. Но ние знаем, този номер рождение сега, както и 123. Но защо е така? Е, ако мислите, че обратно да може би основното училище, най-вероятно са били обучавани да мислят за тези числа, като е в колони, където единият е в стотици място, на две е в десетки място, и три е в такива мястото. Защо е, че действително полезно? Е, помислете за супер проста аритметика че всички ние сме били прави от години. Реално, ако имаш един в стотици място правите бързо математика 100 пъти един плюс 10 пъти 2-- защото две е в десетките place-- плюс 1 пъти 3-- защото три е в тях място. Така че, разбира се, ако ние всъщност умножете това, това, което наистина представляващи с този pattern-- един две three-- е 100 плюс 20 плюс 3, което, разбира се, е 123. Сега двоичен и компютри наистина, фундаментално говорят на един език , което правим. Те просто имат по-малка азбука. Така че компютрите имат само нули и такива, с които разполагат. Така че докато ние, хората имат по същество правомощия от 10 във всяка от тези places-- 10 на нула, 10 на този, десет до два, като ви дава 110 и 100 съответно. Тъй като компютрите имат само две стойности те могат да разбират, нула и едно, те трябва да се използват различни стойности в тези колони, един, два, четири. И ако ние продължихме, осем, 16, 32, 64, и т.н.. Но моделът и манталитет е точно същото. Така че от тази логика, всеки, как ще Отида за представляващо броя едно в двоичен? Ако никога не сте дори мислех за това и преди, какво червата ти? АУДИТОРИЯ: One. DAVID J. Malan: One. Точно така. Ние просто се нуждаят от една в такива място, защото нулите достатъчно, за да ни даде нито на четири, нито две. Така че един милион пъти се равнява на един. Сега нещата стават малко по-интересни. Ако искам да представя в Binary броя две-- но, отново, дори ако никога не сте говори този език преди, как ние представляваме в двоичен ценностните ние, хората познават като два? Нула една нула. Просто сложи една в колона, че го искаш. Сега става все по-хубав лесно вероятно сега. Така че, ако искам да представляват three-- не е три в колона. Така че, отново, аз вече може да добавите тези стойности заедно с удар от един тук. Така че два пъти едно плюс едно пъти 1 е, разбира се, 3. Сега нещата стават малко забавление в че тези, които сега стават нули. И да представлява четири, се получи това. И ако ние увеличаваме бавно тук--, че ще бъде пет. Това ще бъде шест. Това ще бъде седем. Но сега изглежда да има сблъскате с проблем. Как бих могъл да отида за представляващ eight-- ще бъде следващата стойност. Да, така че ние се нуждаем от нова бита. И наистина, ако сте чувал тази фраза преди, бита, това е само за кратки двоична цифра, нула или един. И така, аз се случи да се представляващ само три такива бита тук. Но ако имах начин да не съхранение три различни битове, но четири аз със сигурност би могло да представлява осем, девет и след това, и след това 10, и дори по-високи. Но това после вика под въпрос как можем да отида за представляващи тези неща, на първо място. Това е едно нещо да се направи ги тук върху предметно стъкло, но как да ги представлява ако сте механично устройство? Какво е компютър прави, за да представляват входовете и изходите, които фундаментално определи изчисление в края на деня? Е, какво ще кажеш за нещо супер прост като този? Това е само една крушка. И аз може да предизвика този крушка да отидете на чрез завъртане някои електричество на и позволяващи електрони да премине през, което променя държавна или стойността си, така да се каже. Например, това е една настолна лампа от старата школа тук с един такъв крушка вътре в него. И точно сега това не е наистина прави нещо полезно. Но веднага щом го включите в електрически контакт и след това да използвате тази switch-- или дори можем да го наречем един транзистор или смятате, че за него като such-- Сега може да представлява или тази стойност, където крушката е очевидно изключен, или тази стойност. Тази стойност или тази стойност. Тази стойност и така нататък. Така вътре в компютър, вероятно, са много по-малки парчета на хардуер, но в края на ден просто трябва да използвате electricity-- може би улови it-- и след това или запази нещо или запази нещо изключен. Разбира се, това не е Особено интересно е да се направи само с една-единствена крушка. В действителност, колко високо мога да разчитам в двоичен с тази настолна лампа тук? АУДИТОРИЯ: One. DAVID J. Malan: One, нали? Имам нужда от повече настолни лампи, ако всъщност искате да преброите по-висока. Но ние можем да направим по-добре от това. Тъй като електрическите крушки, които ние сме поставени в тези неща всъщност са по-красиви електрически крушки от недалечното минало ще позволи. И те са в действителност мрежови крушки. И букети от фирми правят тези неща тези дни. Но се оказва, че това по-специално идва с функция, при която можете да промените цветовете му. Така например, ако сте украсена си стая в общежитието с няколко от тях светлина крушки, в зависимост от настроението ви, в зависимост от това кой идва в, в зависимост от времето, в зависимост от времето на ден, всъщност можете да промяна на цветовете крушките в стаята си. И това е така, защото тези светлина луковици и други като него са това, което е нарича API, заявление програмен интерфейс, който е тема, с която ще бъде добре запознати с до края на семестър. И това е само фантазия, загадъчен начин да се каже, можете да програмирате тези светлина крушки да направят своите ценови предложения. Можете да ги изпращате съобщения точно като теб, човек, можете да изпратите съобщение на уеб сървър казвайки, дай ми днешните новини или да ми даде моя имейл. Можете да изпращате по-тайнствена съобщения до тези крушки да се каже, включете и изключете. Но това не е всичко, което е интересно. Може да се каже, включете червени, включване на зелено, включете синьо, всички със същата крушка. И вие можете дори, с малко по- разбирам, да речем, да се превърне в син когато това е мрачен ден отвън, например. Това всъщност може да закърпи в метеорологичен API и разбери какво е времето, или времето на ден, или други такива тригери. Така, в действителност, две от Собствените си служители CS50-те години, Дан Брадли и Ансел Duff тук, любезно набавено ни цял куп от тези крушки. И те построяват CS50 е първо някога двоични крушки, където сме представени тук-- с тях игриво малко magnets-- различните наречените полета за вмъкване ние споменах преди малко. Така начин тук е такива, място, две, четири. И ние не виждам по-високо от това. Но, разбира се, те са правомощията на две. Осем, 16, 32, 64 и 128. Така че, ако аз сега искам да бъде малко по-красиви от използването на този стар ключ училище, Имам тук, на тази IPad супер прост интерфейс че Дан Брадли, бивш студент и сега преподава колега, програмиран използвате някои HTML и JavaScript, които са за маркиране и програмиране езици съответно. И вероятно можете да see-- дори в back-- има един голям плюс и един голям минус, плюс един бутон за всяка от тези крушки. И какво ще ми позволи да да е, например, кликнете на плюс и сега представляват, на Разбира се, какъв номер? One. И мога да го удари отново. Two. Три. Четири. Five. Six. Седем. И ето сега ние се получи, че при преобръщане, но имаме четвърти малко това време, така че сега имаме осем. Така че бихме могли да направим това за доста дълго време. В действителност, като настрана, колко високо можем да разчитаме? Някой? АУДИТОРИЯ: 255. DAVID J. Malan: 255, нали? Не се притеснявайте твърде много за математика за сега, но това е доста приличен брой. Но това всъщност е обвързана само колко парчета от информация, като писмо, или графичен че бихме могли да представляват. Но без значение за предприятието. Отивам да вървим напред и да ги изключите. И ако можех, бих искал да попитам за доброволец, нашата първа volunteer-- О, hello-- на сцената. Уловката е, че трябва да бъде комфортен появява, както ясно са в предната част на всичките си съученици, , както и в интернет. И нека да погледнем малко отвъд по-- Какво ще кажете за тук, в бялата риза? И ръка. Хайде нагоре. Как ти е името? АУДИТОРИЯ: Джаки. DAVID J. Malan: Джаки. Джаки, хайде нагоре. Така че това, което има и по този IPad е бутон, наречен Game Mode. И това Mode Game е ще ми позволи да въведете предварително определен знак номер, номерата ние, хората са запознати. И след това ще бъде оспорено тук, за да използвате бутоните на top-- този за всеки от тези bulbs-- действително да разбера модела на електрически крушки че представлява броят въпрос. И съжалявам, какво ти беше името? АУДИТОРИЯ: Джаки. DAVID J. Malan: Джаки. Добре. Радвам се да се запознаем. Така че позволете ми да отида напред и програма в за света, за да видите броя 15. Ние ще го запази малък на пръв тук. И аз отивам да отиде в Game Mode. И аз отивам да се уточни, ни даде номер 15. OK. И сега с всеки watching-- ако Може би искате да стоят по този начин, защото тя ще се подредят up-- давай напред и превключвате осемте бутоните по протежение на върха да се превърне луковиците на или изключване, както ви е удобно. АУДИТОРИЯ: OK. DAVID J. Malan: И без измами като натиснете плюс 15 пъти. О, ние ще направим това. АУДИТОРИЯ: О, чакай. Толкова съжалявам. DAVID J. Malan: Можете също така да включите електрически крушки за индивидуално с всеки един от тези бутони на върха. АУДИТОРИЯ: О, OK. Така че би било като-- DAVID J. Malan: OK. Така че сега ние имаме осем. Така че нека да спрем за по аудитория да се включат тук. Какъв номер е Jackie В момента представлява? 11. Така че ние сме почти там. И отлично. Така че ние имаме първата ни победител. Поздравления. И ние смятахме, че ще има някои страхотни подаръци. Ако искате да бъде един такъв стая в общежитието тук, на територията на колежа, можете да се имат крайна проект Сега по това API, благодарение на Джаки. Така сега-- [APPLAUSE] --if можехме, още един като около това. О, сега всеки иска някои крушки. За така нареченото хакер издание отиваме да го рампата до A-- о, Да, уклончив. Мисля, че идва сега Ако ръката ви става надолу. Как ти е името? АУДИТОРИЯ: Alex. DAVID J. Malan: Алекс, ела тук. Така че за Алекс, ние ще програма в малко по-голям брой. Може би в ред. Броят 50. АУДИТОРИЯ: OK. DAVID J. Malan: Но, както I каза-- и може да искам да стоя тук, така че че бутоните се наредят както бихте expect-- но го направих наричаме това хакерската издание. Че-- на добър час! [СМЯХ] Вие ще бъдете в състояние да се превърне ги изключва, ако ти-- OK. Отлично. Wonderful. Поздравления. [APPLAUSE] Предполагам, че трябва да плати. Честито на Алекс, както добре. OK. Така че най-добрата храна за вкъщи тук е да се надяваме, честно казано, на simplicity-- THE простота, с която можете да получите някой хубав светлина крушки, очевидно в [недоловим]. Но те представляват, в крайна сметка, на същите идеи с които ние, хората са вече твърде познато. И така, какво биха могли следващия стъпка е в развитието да се опитва да направи нещо Интересно с данни и представляващи входове, които не са просто номера, но са може би писма или повече? Е, оказва се, че компютър свят, в продължение на много години, просто прието произволно, а последователен стандарт, който съпоставя номера да букви от азбуката. Например, тук е откъс от това картографиране. Тя се нарича Ascii. A-S-C-I-I. И това е просто маса, която се съпоставя с главни letters-- в тази case-- към десетични числа. Но какъв е изводът? Е, ако наистина искате да представлява нещо като имейл или някакъв текст на дадена уеб страница, можете очевидно искате да покажете човешките букви на азбучен ред, а не номера. Така че, в зависимост от контекст на програмата че потребителят използва, ако е уеб браузър или имейл клиент, Числата могат да бъдат тълкува като писма. Това е да се каже, модели на бита могат да лесно да се тълкува като писма. И така, какво можем да имаме е буквата A същество представени като 65, B са представени като 66. Така че, ако ние имаме супер кратко слово, като здрасти, Какъв компютър би в крайна сметка магазин в десетичен, но наистина в двоичен, използвате някои последователност от битове, деблокирането малко електричество по някакъв начин, ще бъде на две числа 72 и 73. Но моделът на битовете, които представлява тези ценности. Така че след това те са как можем да представляваме нашите входове и изходи. И това е достатъчно да се каже, ние можем правя по-сложни представяния в крайна сметка с такива неща графики, видео, музика и повече както ще видим по-късно този термин. Така че просто не оставя след алгоритми, тези комплекти от инструкции, с които ние решаване действителните проблеми. Ние сме минаваща през входа на алгоритми. И тези алгоритми, които произвеждат изходи, надявам се правилни резултати и да се надяваме, също ефективно събра изходи. С други думи, това е едно нещо, да приложи нещо правилно. Това е друго нещо, да приложат нещо добре или ефективно. Например, една демонстрация че ние сме любители на в хода е този. Но тези неща стават все по-трудно да се намери. Но това е наистина един стар училище телефонен указател, в който са 1000 плюс страници имена и телефонни номера. И ако исках да гледам някой в ​​този телефонен указател, Бих могъл просто да направят много наивен алгоритъм. I може да отвори до първата страница, и I може да започне да търси, да речем, някой на име Майк Смит. И ако той не е на първо страница, аз прогресира до втора, и след това на трети, и след това до четвърта, и така нататък, докато най-накрая се намери Майк Смит. Сега е, че алгоритъмът е правилно? АУДИТОРИЯ: Да. DAVID J. Malan: Да. Ако той е там, аз ще в крайна сметка да го намерим. Но това може би не е много ефективна, със сигурност не бърза, защото, Боже мой, защо съм губя времето обръщане през всички тези страници, когато мога със сигурност да направите това физически по-бързо? Е, лека оптимизация, така че да се каже, може да не е една страница в даден момент, но две, четири, шест, осем, десет. Все така ли е? АУДИТОРИЯ: Не DAVID J. Malan: Така че не, ако за Например прескачам Mike Smith. Но толкова дълго, колкото мога резервно педала една страница, ако го надхвърлят, Може би бихме могли да коригира това, което в противен случай може да бъде хванато. Но това е по-добре? Дали е по-бързо? Искам да кажа, да. Това е буквално два пъти по-бързо ако го направя две страници наведнъж. Така че, ако първоначално имах 1000 страници, Сега само трябва да се обърне на 500 пъти, не е напълно хиляда страници, за да получите потенциално в най-лошия случай до края на телефона книга, където някой като Mike Smith или някой с а по-късно име всъщност може да бъде. Но, разбира се, хората със сигурност не са ще се прави, че със сигурност не и в този момент от живота ни. Какво е разумен човешкото вероятно смяташ да правиш? АУДИТОРИЯ: Отидете направо на the9 на S. DAVID J. Malan: Отидете направо на S-те години? Как мога да отида направо на S-те години? АУДИТОРИЯ: го разкъса на две. DAVID J. Malan: Е, че няма маркировка. Така че, да, ако има наистина бяха етикет или лепкава раздела за S, ние трябва да скочи точно там. Но това е доста безобидно. Така че най-доброто, което мога да направя е грубо раздела за S или може би грубо в средата. Но ключовият храна за вкъщи сега-- и интуицията че сте взели за отпусната за година probably-- е, че това, което правим сега знаете за този проблем? АУДИТОРИЯ: [недоловим] DAVID J. Malan: Mike Smith е сигурно не в това половината от проблема защото Смит идва след средата която е приблизително раздел М, тя изглежда да бъде. Така че, както може да се види в Visitas, ние можем сега буквално разкъса този проблем наполовина. АУДИТОРИЯ: Woo! DAVID J. Malan: Това е става по-лесно и по-лесно. [APPLAUSE] Има и да отидете. [СМЯХ] И сега, аз фундаментално имат същия проблем, но това е буквално два пъти по-голям. Аз съм все още се търсят за Mike Smith. И смея да кажа, че все още може да за да изглежда по същия начин, разделяне на проблема в половината отново, разкъсване на проблема отново в половината, която сега ме оставя с проблем една четвърт от размера, драматично хвърлят, че половината от него, а този процес се повтаря отново и отново, и отново погледна надолу на всяка точка, за да видите ако Mike Smith е на въпросната страница. Сега, ако аз направя това право, в крайна сметка аз ще си намеря само с една страница, на която Mike Smith е, ако той е наистина в телефонния указател. Разбира се, бих могъл да Никога не се обади Майк отново. Но въпросът тук е, че ако ние започнахме с 1000 страници, първата ми алгоритъм, флип страницата, може би 1000 times-- Определено по-малко, защото това е име S, а не име Z, но като толкова, колкото 1000 страници потенциално. Второ алгоритъм, по-добре. 500 страници. Трети алгоритъм, макар, колко стъпки ще го предприеме, за да се разделят с 1000 страница телефонен указател на половина по този начин? 10, или да се даде. Така че само с обръщане чрез които телефонния указател, гмуркане и побеждаващ така да се каже, 10 пъти, ще го направя пътя ми до само една единствена страница. И така, ние може да улови тази интуиция сега малко графично ако просто помисли тази супер проста графика. Ние сме на х-оста или хоризонталата ос, е с размерите на проблема ми, броя на страниците в телефонния указател. И компютърни учени обикновено искал да се обадя размера на проблем N, където п е просто някаква променлива, която represents-- в този case-- брой страници. Вертикалната, или оста у, тук е ще бъде време, за да реши, Може би броят на страница завои, може би на броя на секунди или минути, независимо си единица мярка. И така, тази червена линия представлява първата алгоритъм защото там е едно към едно отношението между броя на страници и размера на времето, необходимо. Ако Verizon удвоява броя на страници в телефонния указател на следващата година, моята работа time-- на необходимото време за изпълнение че първата algorithm-- удвоява в най-лошия случай. Но вторият алгоритъм къде съм обръщане по две, изисква по-малко време за даден проблем размер. Така че, ако имам това много страници тук-- известие че жълтата линия предполага по-малко време, за да реши. И наистина, това означава, ние ще кажем, N над две. Но това, което е форма на трети и окончателно крива ще изглежда? Да, това е наистина ще look-- I Не знам какво щеше да каже. Но нека да видим какво ти щеше да кажеш. АУДИТОРИЯ: Като това. DAVID J. Malan: Това ще да изглежда като това, логаритмична slope-- точно-- , при която имате тази любопитна наклон. Това вече не е права линия. И това, което е убедителна за това е, че въпреки че графиката е сега отрязани, можете да се екстраполира в нищо против, че зелена линия не е ще се увеличи в Височина на всички, че много както се процедира по-нататъшно надолу, че хоризонталната ос. В действителност, Verizon, за Например, може да се удвои броя на страниците в телефона книга между тази и следващата година от 1000 г. до 2000 г. страници, но не е голяма работа. С тази трета и последна, има интуитивен алгоритъм за разделяне и завладяване. Това ще ми отнеме още колко стъпки от следващата година, за да се намери някой, като Майк Смит? АУДИТОРИЯ: One. DAVID J. Malan: Има само един. И те могат да го учетвори, това е Ще ми отнеме само още две стъпки и така нататък. И така, това е свидетелство за просто как някои внимателно планиране и някаква признателност за това, което Вашите входове са може да направи още по-добре. Сега ние сме мамейки малко в смисъл че ние сме деблокирането предположение. Какво е моето предположение за нашия телефонен указател , че ми позволи да се разделят и владей в този интуитивен и още правилен начин? АУДИТОРИЯ: [недоловим] DAVID J. Malan: Да. Така че това беше наредено. Тя е по азбучен ред от телефонната книга компанията. Ако беше в произволен ред, че ще бъде ад на телефонен указател, но тя със сигурност не би се поддава на алгоритъма Аз използвах, защото никога не би просто се случи през Mike Smith ако държи раздели в наполовина по този начин, по случайност. Така че, нека сега се формализира това, което е ясно, интуитивно. Така че нещо, наречено pseudocode е мястото, където ние ще започне някои от нашите първоначални проблеми. И това е общ начин за описване алгоритъм или компютърна програма, не се използва C или C ++, или Java, или всеки конкретен език, но само с помощта на английски език, с които всяко човешко може да бъде запознат. И ние може да напише pseudocode за този проблем, както следва. Стъпка едно, вземете телефонния указател. Стъпка две, отворен към средата на телефонен указател. Стъпка три, погледнете имената. Стъпка четири, ако Смит е сред names-- И сега това е интересна конструкция. Това е точка решение. Това е разклонение на пътя, ако сте ще, клон, така да се каже. Така че аз отивам да отстъп просто по силата на споразумение step-- не five-- която е да да речем, аз ще се обадя на Майк. Така че, ако тази вдлъбнатина, напълно произволна човешка конвенция, но това е просто искал да каже авторът семантично че ако Смит е сред имената, след това трябва да се обадя на Майк. Междувременно в стъпка шест, известие че вдлъбнатината е отишъл. Така че друг е друга вилица в път, на другия път мога да пътувам. Така иначе, ако Смит е по-рано в книгата, какво е Следващата ми стъпка вероятно ще бъде тук? АУДИТОРИЯ: Отиваш към лявата страна. DAVID J. Malan: Да, така че отивам да лявата половина на телефонния указател. Изхвърлете дясната половина, ако Смит е по-рано в книгата. Така отворена до средата на лявата половина на книгата. И след това стъпка осем, отидете на трета линия. И това е един любопитен цикъл съм предизвикване, на рекурсия, така да се каже. Но повече за това в бъдеще. Аз съм с моя същия алгоритъм, ми същия pseudocode, за решаване на същия проблем отново защото единственото нещо, което не се е променило е размерът на проблема, не моята цел, а не на лицето Аз търся. Така че аз може да използва един алгоритъм че аз съм вече определени. Иначе, ако Смит е по-късно в book-- можете да позная отворена до средата на дясната половина на книгата. И отново, отидете на трета линия. Else-- каква е крайната линия в тази програма ще бъде? Ако той не е сред най- Имената на страницата съм нататък, ако той е не по-рано в книгата, а той не е по-късно в книгата, това, което мога да разбера е вярно за Mike Smith сега? АУДИТОРИЯ: Той не е в книгата. DAVID J. Malan: Той не е в книгата. Така че най-доброто, което мога да направя е просто се откажат и да се спре тази програма. Добре. Така че в този момент, нека да бърза обиколка на някои от това, което очаква. И в действителност, аз съм се присъедини тук от част от персонала на CS50. Ако тези хора може всичко присъединете се към мен тук, на сцената. [APPLAUSE] Гледай ти, това е само подмножество на персонала CS50, тъй като всяка година имаме почти 100 служители членове в роли разбира асистенти, преподаване на другарите, и повече. Хайде нагоре. Така че те ще се присъединят към нас тук опасно само за миг като даваме вихрушка обиколка на това, което можете да очаквате тук в курса. Така че първото и най-важно, ние имаме SAT / UNS като възможност за терасиране в курса. Това означава умишлено да бъде с опция ако сте малко притеснен в е в курса, и се страхувам failure-- дори ако честно казано недостатъчност означава, боли ви GPA, получаване на B, а не A--, че е точно това, което, разбира се, за шлюз Разбира се като CS50 и други въвеждащи курсове, тази опция категоризация има за цел да позволи. Аз искрено се насърчи students-- особено ако на fence-- да стартират Разбира SAT / UNS, дори и да остане SAT / UNS. Но със сигурност може да се превключи на писмо клас от петата понеделник в срока. Честно казано, обратно, когато е първокурсник през 1995 г., Аз самият дори не е взела CS50 защото аз не ставам нерва действително стъпка крак в класната стая. Изглеждаше домейн твърде непознато за мен и наистина само за онези мои приятели, честно казано, който е бил програмиране тъй като те са шест или може би 10-годишна възраст. И това е само, защото бях в състояние да вземе CS50 в моя ден в еквивалентен вариант на SAT / UNS-- / не обратно в day-- че дори взех 50. И по някакъв начин или друг, аз съм отново тук с вас днес. Сега междувременно какво друго трябва да имате предвид около 50 е едновременно записване. Противно на слуховете, че може би сте чували, можете, в действителност, едновременно запишат в CS50 и друг клас, който отговаря на същите или някои припокриване време като лекции CS50 е тук. Вижте учебната програма за данните на тяхното изпълнение. Лекции Междувременно, противно на това, което е официално в каталога, обикновено само отговарят само за един час. От време на време можем да тече малко по дълго. Но имайте предвид, че Целта на лекциите е CS50 е да ви осигури концептуален преглед, надявам се някои демонстрации, може би дори някои дребни предмети, от това, което очаква за седмицата, която следва. И така, в лекции, ние ще изследваме тези теми и примери заедно, привеждане на студентите на сцената, и персонала на сцената толкова често, колкото можем, само за няколко часа всяка седмица. Секции, междувременно, ще бъдат предлагани от тези хора тук-- много от тях учи събратя, някои от тях, разбира се assistants-- воля да се случва всяка седмица. И това, което е от ключово значение за запази предвид, е, че ние не трябва-- разлика First Nights, музиката class-- различни писти на секции за ученици по-малко удобни, по- удобни, и някъде по средата. И честно казано, знаете ли, ако вие сте по-малко удобни. И вие вероятно знаете, ако вие сте по-комфортно. И ако не сте съвсем сигурни, вие сте по дефиниция някъде по средата. Така че, когато дойде време да се раздел за една седмица или така, на учебната програма, ние ще ви помоля на този въпрос. И вие можете самостоятелно изберете На база на собствения си ниво на комфорт и да бъда с students-- бъде със зелен dots-- подобно на нивото на комфорт за вас. Междувременно, имаме проблем комплекти, които в крайна сметка ще определите своя опит в този курс. Те предлагат типично в няколко издания. A стандарт издание, че ние очакваме най- всеки ученик в хода за справяне с но също така наречен хакер издание който предлага никаква форма на допълнително кредити Краен победител, но наистина правата на самохвалство да се каже, че сте се опитали и преодолени на курса хакерски издания, които наближаването на подобен материал но от по-сложни ъгъл. Това, което ние предлагаме за на стандартно издание, за, отново, супер мнозинство на студентите, не са само пеша технологична среда, които са видеоклипове, водени от служители на курса че наистина ви преведе през проблеми курса и възможни дизайн реализации. И също така, след Всъщност, предлагат аутопсии, при което, ако се чудите как бихте могли да имат или е трябвало да реши някои проблем, преподавателския състав ще ви преведе през тези на видео, както добре. В същото време, това, което очаква също са пет дни и края на факта че ние ще пуснете ниската проблем задаване на точки. Ние със сигурност оценявам, че в замяна за натовареността, че 50 Очаква от вас, животът застава на пътя понякога, ако не пет пъти. И така, това ще предложи Малко сте на гъвкавост, удължаване срока си от, да речем, Четвъртък по обяд в петък по обяд. Виж на учебния план в информация за тяхното изпълнение. Сега това, което сега чака? И това е само срещащи за мен сега колко дълго Аз съм с вас, момчета стоят тук на сцената. [СМЯХ] DAVID J. Malan: Но ние ще стигнем до кулминационната финала преди дълго. Така че това, което очаква от гледна точка от наборите на проблема? Е, може би закачка от това, което всички ние миналата година с вашите предшественици. В първия набор проблем миналата година, ние въведохме Scratch, графичен език за програмиране, който ви позволява да програмирате буквално от плъзгане и пускане парчета от пъзел, като тези, които са напомня на конструкциите ще видим само за една седмица следователно, когато превключвате към една по-традиционна език, известен като C. Миналата година продължихме на този проблем набор, включващо за криптография, скрамблирането на информация за да го пазят от правителствен или приятели " очи, които не искате да го видите. Кодирана в тук е съобщение, че скоро ще бъде в състояние да декриптира или де-боричкане. Breakout е проблем определен миналата година, в която използвате тези открити новия програмен умения за реалното изпълнение на игра wherein-- колкото Може би си спомняте от childhood-- целта е да се БАШ на тухли, които са на върха на екрана тук, натрупване на отбележи по протежение на пътя, и прилагане на собствени алгоритми с което този разтвор в крайна сметка ви позволява да играете играта. В същото време, по-късно в семестър, ние ще ви дадем речник от 143 091 английски думи. И ще бъде оспорено да се напише програма, която правописа проверки, документи, чрез зареждане, че много думи в паметта възможно най-ефективно. Обикновено ви хлътва срещу съучениците си ако ви изберат в малко на предизвикателство в лидер на борда , за да видите кой може да използва най-малочислени секунди от времето за работа, и най-малък брой на мегабайта памет, и всъщност фина настройка на вашите програми да бъде изключително ефективно използване на ресурсите не точно време. Миналата година, също разгледахме в края на семестъра при уеб програмиране. И наистина, ние ще направим това отново това година с множество проблемни комплекти, можете въвеждане на техники и нагласата, с която можете да приложите тези програмни умения до интернет страници, динамични уеб сайтове, уебсайтове, които всъщност решават проблеми и да се държат по различен начин и не са просто статичен сайтове със статично информация. Окончателният проект в крайна сметка ще определи, че, кулминацията на курса за студенти, в която ще бъдат изправени пред предизвикателството да приложат почти всичко на интереси за вас, толкова дълго, тъй като някак си опира на уроци на курса. И както си видял в видео в началото, ние ще сключи семестър с CS50 Hackathon, които, ако непознат, ще започне в 19:00 една нощ и приключват в 7:00 AM на следващата сутрин. Около 21:00, ние ще ред в първата вечеря. Около 01:00 AM, ние ще За втори вечеря. И ако все още сте стоеше в 5:00 AM, ние ще совалката ви автобус да ИХОП за закуска. The CS50 панаир, междувременно, е събитие, към които 2000 плюс преподаватели, студенти, и служители от цяла кампус ще дойде да види вашите постижения в хода и на финала проекти и творения че вие ​​създавате на вашите лаптопи, настолни компютри, или може би дори крушки. В същото време, работно време и на структурата за подкрепа. И сега тя щеше да е по-добро време да ви пренесат. Работно време ще се проведат четири нощувки седмично в продължение на няколко часа всяка нощ с обикновено 20 до 30 на персонал разбира по задължение наведнъж да ви осигури с близък един-на-един възможности за подкрепа с проблемни комплекта на курса. Частни уроци също ще бъде на разположение, особено за студенти по-малко comfortable-- или Смея да кажа, поне comfortable-- за когото работно време не са най-благоприятна среда, и със сигурност не са най-стрес-безплатно. Особено когато сроковете са належащи, ние активно ще ви свържа себе си с член на персонала за работа с на някои редовен график, както на вашите нужди и техния график позволява. И персонала. Позволете ми да ви представя Davon, Роб, и Габриел, тазгодишните глави. Ако всеки би искал да say-- [APPLAUSE] --a дума. [APPLAUSE] Davon тук е мениджър курс, който означава в неговия пълен работен ден роля той помага с изпълнението и логистика на CS50. Дейвън: Да, здравейте, момчета. Ще видите много за мен в работно време. Ще се преподава секции. И ако те застрелям имейли напред, Вероятно ще се реагира. Така че ще видим много от вас всички семестър. И добре дошли на CS50. DAVID J. Malan: И сега Gabriel, който себе си е просто първокурсник миналата година, но за последните няколко години има оперира своя версия на CS50 в Бразилия, при което той свалил всички content-- на курса което е ясно е заснет и пуснат online-- така че той може да го преведете на Португалски и след това учи повече от 100 на съучениците си над Разбира се на няколко години, преподаване на родния си език програмата на курса. GABRIEL: Здравейте. [APPLAUSE] GABRIEL: Здравейте, аз съм Гавриил. Аз съм главата TF на курса. И аз се надявам, че ще обичам CS50. Това е CS50. DAVID J. Malan: Сега за Роб. О, вие искате въведение? ROB: Не, аз не знам. [СМЯХ] DAVID J. Malan: И Rob Boden. [СМЯХ] ROB: Здравейте, аз съм на Роб. Това е петата ми година участва с курса. Всяка година, това е просто по-добре и по-добре клас, така че вие ​​сте ясно Ще бъде страхотно. Надявам се всички да се забавляват с него. Отивам да се забавляват с него. Така че ще се видим. DAVID J. Malan: И време няма да позволи us-- [APPLAUSE] Времето не ще ни позволи да се въведат всички на сцената и на всичките им колеги които пазаруват класове днес. Но позволете ми да се въведе Белинда и CS50 Puzzle Ден, който очаква това събота, на която е първият от мащабни събития курса. Това по-специално означава да чука дома точката че компютърната наука е в крайна сметка Не става дума за програмиране, а по-скоро за решаване на по-общ проблем. И Пъзел Day, тъй като ще видите, ще ви донесе и вашите съученици together-- ние се надяваме тази събота. BELINDA: OK. Здравейте, момчета. Така че, благодаря. Така че като наш знаменит капитан каза, името ми е Белинда. Аз съм второкурсник в Quincy House. Аз, също като вас, момчета, взе CS50 миналата година, наистина го обичаше. Имам слабост към вие на третия ред. И аз съм горд да кажа, аз съм сега в сериозна връзка с CS50 [недоловим]. OK. Това ми беше куц версия на шега. Както и да е, така че се движат по, Просто исках да покани вие всички до I-Lab, или HBS кошери. Отиваме да се има Пъзел Day 12:00-3:00. И това е една чудесна възможност за вас момчета, за да отговарят на вашите колеги CS приятели, решаване на някои не-CS пъзели, като капитан споменато, а също и да яде някои безплатна храна, печелят някои страхотни награди, като подарък карти, $ 75 на човек, и also-- какво е то? Wii U или нещо такова? Wii U? Да. За нашата томбола. Awesome. Така че аз ще се придържаме около след клас. И ако вие имате всеки въпроси, да ме уведомите. DAVID J. Malan: И вие ще видите, отвъд това няма нищо да направя днес. Първият проблем, определен ще излезе в петък. Но, за да ни отведе у дома днес, бих искал да ви представя на специално още един член на персонала, Колтън Огдън тук, чиито ръце в момента са защитени над вас с този MIDI контролер да чука дома точката допълнително че компютърните науки, също има приложимост далеч отвъд инженерство и стъблото и компютърни науки себе си, простираща се дори до такива области като музика. Колтън има любезно offered-- Мислех един от тях щеше да определи фокуса. Андрю, ако можем да призове фокус тук само за миг. Какво Колтън е направил предварително е програма това устройство, тази подложка на бутони , който виждате на снимката тук, като контролер MIDI, при което всеки от тези бутони е свързан с конкретна музикална нота или звук, по-общо на запис, така че, като играят модели на тези бутони, подобно на моделите на бита, може да представлява други по-високи концепции ниво. Той ще бъде в състояние в крайна сметка да ни отведе у дома си днес? Без повече приказки, ако бихме могли да намаляване на осветлението, и включване на екрана зад Колтън. АУДИТОРИЯ: Woo! DAVID J. Malan: Това е CS50. [За възпроизвеждане на музика] [APPLAUSE] Това е за CS50. Ние ще се видим в петък. Някои торта ви очаква в трансепт. [За възпроизвеждане на музика]