[За възпроизвеждане на музика] [MUSIC - ROSSINI, "RANZ DES Vaches "от Вилхелм Тел] [MUSIC - на английски BEAT "МАРТ На въртящия глави "] [Аплодисменти и аплодисменти] DAVID Malan: Значи това е CS50. Моето име е Дейвид Malan. И 73% от вас са без предварителен опит с компютърни науки, противно на това, което може би си мислите. Така че днес ние решихме, че ще чип далеч по това непознаване, но и ще ви даде усещане за това, за тези от вас, с повече комфорт, който посоки можете да отидете този семестър. Така че нека да започнем с това. Аз наистина нямам идея какво е вътре в компютър, въпреки че, като теб, I го използвате всеки ден. Но това е някаква кутия, а има и не са толкова много входове в него. Минимално, има, какво? Вероятно захранващ кабел. И наистина с тази съставка, електроенергия, като че ли е в състояние да прави доста малко тези дни. Но в края на деня, ние трябва да представят нещата че ни е грижа за. Ние трябва да представят информация в някаква форма. И вие вероятно сте поне смътно запознати с идеята от двоичен или бита един или друг начин, компютри намалява до нули и единици. Но можем да прегърне, че и най-малко сложи малко светлина за това? Така че аз имам тези малки настолни лампи тук. Имам електрически контакт тук. И аз ще предложа вътре на компютъра е най-малко една от тези неща, нещо, което може да да бъде включена или изключена. В този случай, това е наистина една настолна лампа, но в по-ниско ниво, това е нещо, нарича транзистор. Но в нашия свят, това е една настолна лампа, така че Аз ще отида напред и да включите тази в моя електроенергия тук. И аз твърдя, че използването на този прост, просто устройство, този прост ключ, I могат да представят информация. Например, точно сега, аз съм представлява нищо, нали? Аз съм представлява това, което аз ще се обадя на 0 или неверни, обратното на нещо действително присъства. Но ако просто завъртете този ключ, сега вече представляваше едно. Така че използването на този много просто парче памет, ако щете, аз може да представлява информация. Сега за съжаление, моя компютър Не мога да направя всичко, което много. Тя може да бъде само две стойности в целия свят - 0 или 1. Но това, което е очевидно решение, сега, ако искаме да разширим нашата компютър памет и представлява повече не е само 0 и 1? Ами, нека да вземеш друг такъв битов. Да вземеш друг ключ, друг транзистор, обаче искате да мисля за това. Нека да вървим напред и включете тази в моя компютър, както добре. И аз ще твърдят, сега, че от с помощта на малко повече електроенергия и обръщат все повече от тези ключове на и разстояние, аз може да представлява повече такива информация. Така че точно сега, това е едно. Ако искам да сега представляват 2, което можех да направя това. Но обикновено, конвенция, както ще в крайна сметка виждам, ще трябва да го направя. Така че това е 0, това е едно. Това ще бъде 2. И не е изненадващо, че това ще бъде 3. Така че по този начин, все пак, може да ние разчитаме на още по-далеч? Ако получа трета малко, трета превключвател, това, което е най-голям брой мога сега брои до от 0? Така 7, ако аз съм се започне на 0, нали? Защото, ако изключите тази светлина и всъщност включите тази трета и последна светлина в електрически контакта си тук, тогава имам възможността да представляват всички от следните две стойности тук, две стойности тук, тук две стойности - и за да мога да представляват два пъти 2 пъти 2, или осем възможни стойности. И ако започна отчитане на 0, така че това е 0, 1, 2, 3, 4, 5, 6, 7. Така че тази бинарна. Това наистина е толкова просто като това. И щях да твърдят, че това всъщност е доста запознат с най- всички в тази стая. Нека да вървим напред и да отворите малък текстов редактор тук. И вие да си спомните, от началното училище че имаме неща като стотици място, десетки място, и тези, място. И припомни, че ако сте имали някои десетичната номер, като нещо произволно като 123, може да бъде възприета пишат, че под формата от тези три колони. И защо е 1, 2, 3, какво ние знаем като 123? Е, в най-лявата колона, ние имаме един 100 плюс два 10s, така че това е 120, плюс три 1-ци, така че това е 123. Сега този свят, че ние просто свети е точно същата, както сте били запознати с продължение на години, с изключение на сега, нашите колони не са сили на 10. Те са просто степени на 2. Така че, като има предвид, че е от тях място, това ще бъде на двойки място, това е ще бъде на четири крака място. И тъй като аз съм само с помощта на най-простите на механизми, които да обърне нещата и изключване - ток тече или електроенергия, която не тече - Аз съвсем не притежава същите изразителни диапазон, от 0 до девет. Ние ще продължим да го супер проста в този свят на компютри. Аз имам само 0 или 1 - и изключване на фалшиви или истински. И така, какво представлява точно сега 1, 1, 1, тъй като всеки от тях светлини свети. Е, това ми дава една 4 плюс един два, така че това е 6, плюс един милион, и това е 7. И значи ли това, поредица от три бита представлява броят 7. Така че през цялото това време, вътрешната страна на компютър, са произволен брой транзистори произволен брой битове. Но в края на деня, ние може да представлява информация най-просто, че. Сега за съжаление, ние сме Брой до 7 в CS50 до този момент, но се надяваме, ние можем да направим малко по-добре. И наистина можем. Да предположим, че ние като хора само произволно реши, че ще да свържа числа като 1 и 2, 3, 4, 5, 6, 7, с конкретни букви на азбуката. И по исторически причини, аз ще начало донякъде произволно, но аз съм щях да кажа, хората, ние ще реши като стандарт, в световен мащаб, че 65 е броят на буквата A. 66 ще представлява B. Dot, точка, точка. 90 ще представлява Z. писмо И нека предположим, ако наистина се въведе някакъв мисъл в нея, ние може да излезе с номера за удивителни знаци и малки букви, и наистина, други хора са направили, че за нас. Така че сега имахме бита с които можем да представляват числа, числа, с които можем да представляват букви, и с писма може да започне да композира имейли и печатни знаци на екрана. Така че нека ме покани, ако можех, осем смели доброволци - които не се интересуваме се появяват не само пред камерата, но в интернет - да дойде тук и да представляват осем такива бита, а не тези тримата. Така че какво ще кажеш за един, два? Какво ще кажеш за три? Какво ще кажете за четирима в светлина синьо, пет на края? За някой тук? Six отпред, седем пред, и осем отпред, както добре. Така че аз просто така се случи, за да са подготвени с един куп листчета. И на тези хартийки са числа които представят какво колони вие ще представлявате. Така ще бъде - как ти е името? Студентът: Anna Лия. DAVID Malan: Анна Лия, ти ще бъде 128s колона. Вие сте? Студентът: Chris. DAVID Malan: Chris ще е 64s колона. Вие сте? Студентът: Dan. DAVID Malan: Dan ще бъде 32s колона. Студентът: Pramit. DAVID Malan: Pramit ще е 16S колона. Студентът: Лилиан. DAVID Malan: Лилиан ще бъде 8s. Студентът: Jill. DAVID Malan: Jill ще е 4S колона. Студентът: Mary. DAVID Malan: Мария ще бъде 2S, и? Студентът: David. DAVID Malan: Давид е 1S колона. Така че, ако вие може да засили малко напред, така че всеки може да види. Какво вие не виждате, е, че на гърба на тези листчета е малко мамят лист, че е на път да инструктира тези осем бита или вдигне ръка или не вдигне ръка. Ако ръката им върви нагоре, те са представлява 1. Ако ръката им остава надолу, те са представлява 0. В същото време, ние публиката трябва да бъде в състояние да разбера, на базата на тази картографиране, какво трибуквени думи тези хора са на път да се посочат. Така че в един момент, ти започваш да се прочетете на първа линия на гърба на ви мамят лист, а вие сте или ще се повиши или не вдигнете ръката си. Ако сте един, вие се повиши, ако ти си 0, стоиш там опасно, просто ей така. Go. Какъв номер, на първо място, са тези момчета представлява? 66. 66, нали? Имаме един в 64s колона, за 1 в 2s колона. Това ми дава 66, така че се появява да се представлява B. Така че момчета са написани - OK, това е достатъчно. B. Така че сега нека преминем към нашето второ писмо. Go. Кой е най-бързият в математиката тук? Така 79. Отново, ако съберем всички колони , в която има един, в момента, просто както направихме преди с най-простата примери на 7, сега Номерът се получава 79. Кои според нашите карти е писмо O. Така че ние сме почти там. B, O. И накрая, проверете. Какво те представлява в момента? По-малко консенсус. Това е просто абсолютно шепот. Да, това е в действителност 87. Добре. Така че, ако ние сега карта, която се обратно горе - нека почнат да ни ASCII таблица, American Standard Code за Обмен на информация. Това ни дава писмото - не "бо", но "лък". И това е перфектно тъкмо навреме за вас, момчета да се поклони и главата на гърба. Благодаря Ви много. [APPLAUSE] DAVID Malan: Можете да ги запазите. Въпреки, че всъщност, някой ще като настолна лампа, също? [HOOT ОТ ПУБЛИКАТА] DAVID Malan: Настолна лампа? [СМЯХ] DAVID Malan: Наистина ли? Настолни лампи за всички? Добре. Така че, като се започне с най-простите принципи, а сега сме не само брои от 0 нагоре по целия път до 7, ние сме Предполага се, че само с хвърляне повече бита или повече светлини или повече транзистори на този проблем, ние можем представляват по-големи и по-големи номера, и ергономични, по-големи и по-големи диапазони на азбуки, като английски. И само да вземем на доверие за днес По същия начин, че може да започнем да представляват графични и видео и всяко редица други медии, с които ние сме запознати днес. Така че това е CS50, и в този клас заедно от вас са, отново, много съученици, които имат най-малко преживяваме като вас. И Споменавам това само защото доста често, включително наскоро, един от първокурсник съветва събития и най- второкурсник миналата пролет консултиране събитие, често чуваме учениците отказват когато идва до масата CS, добре, Мислех си за да приемате това интро клас, но аз не съм истински компютър човек. Или, но всеки със сигурност знае повече от мен. И го сложа в най-големия шрифт възможно, за да предадат това послание, че това не е в действителност случай. И ако се чудите, трябва Аз, всъщност, да си тук? Осъзнайте, че не само, че това разбира се е заглавие Въведение в Computer Science, е Въведение в Computer Science I. Така че има наистина второ такова въвеждане. Значи не си в действителност, на грешното място. И сред целите, които имам за днес са да успокои такива притеснения може да има, но и да нарисува картина на това, което е в магазина за ученици по-малко и по-удобни така в този курс. Но първо, няколко думи за една от подаяния имате днес, сред които редица често задавани въпроси. Той е бил визията на нашите за известно време сега, за да се въведе нова класификация опция в този курс - а именно, сателитна / Ненасит. Философски погледнато, за мен това е много по-голяма, Много по-важно, че учениците от този клас се ангажират с материал, се оспорва от материал, и се тревожи много, много по-малко за механиката на действителните резултати и писмо оценки в семестър края, но наистина прегърнат курс и на неговия материал. И наистина това се чувства по-общо, за това, което е интересно за тях, за да чувстват оспорени и възнаградени, но без страх от провал. И наистина, това също е повтарящ се Темата в този и други встъпителна курсове в други области, които трябва този трепет, когато става въпрос за пускането пръстите един в непознати води. Самият аз, през 1995 г., е първокурсник. Бях много фокусирана върху е концентратор пра тук. И все пак винаги съм израснал с малко на интерес към компютърните науки. Винаги съм бил любопитен. Но тогава, дори, имах този страх от дори да е стъпвал в CS50, толкова много така че аз дори не пазаруват то първата година. И единствената причина да сложи крак в година вратата второкурсник е, защото аз е позволено да вземат да го давате / провалят. Но дори Успешно / неуспешно изисква да получа смелост да си запиша час с проф. Kernehan по това време, донесе този голям лист хартия, и да поиска му за неговия подпис и му разрешение да проучи тези непознати води. И това не е помогнал през последните години че когато правите това в CS50, когато използвани за да бъде Успешно / неуспешно, подобно би десетки или стотици съучениците си трябва да излезе, не дай Боже, в пред Sanders с тази форма, че в някои съзнанието представлява неспособност, Смея да твърдя, да изпълнява са на едно ниво вашите колеги. Което е смешно, но аз мисля, там е, че манталитета. И никога не е имало в тази култура на SAT / Ненасит или Успешно / неуспешно повече Като цяло, в този курс или наистина по този кампус. Така че тази година ние променихме това. Бих бил възторжен половина на този клас или повече приключи нагоре като CS50 сб / Ненасит. В срок от една година, би било чудесно ако почти всички са. След това може би ще работим на Буквите в Харвард Колеж по-общо. Но за сега, ще направим това в рамките на нашата собствена сфера и бих сърце съветваме ви да прегледате тези често задаваните въпроси и задават въпроси, както намерите за добре, така че се надяваме, че, за разлика от мен, ще не съвсем имат същия фактор страх, когато проучване на това, което е вероятно на непознато място. Така че това, което е CS50? Това е въведение към интелектуална предприятия на компютъра науката и изкуството на програмирането. Но какво всъщност означава това? Е, този момент, ние говорихме много за кратко за представяне на информацията. Но да предположим, че ние всъщност искат да се направи нещо с нея. Трябва да въведем понятието това, което ние ще се обадя на един алгоритъм. Един алгоритъм е процедура, процес, набор от инструкции за прави нещо. И един алгоритъм може да бъде нещо супер проста. Например, един пример, с които някои от вас може би са запознати е това нещо тук. Така че тази книга тук е все по- дата, но едно време, тя съдържа един куп имена и телефонни номера. И наистина, ако исках да се намери някой в ​​този телефонния указател - да речем, някой си Майк Смит - Мога да намеря Mike Smith във всеки брой на сравнително прости начини. Аз може да започне в началото и преминете към стр. 1, не съществува. Page 2, не е там. Page 3. Това алгоритъм, е, че процес, нали? Така че това е правилно, нали? Малко съм идиот, за да го прави в този начин, но в крайна сметка ще го направя намерите фамилия S, и да се надяваме Mike е в този раздел, и ще стане направи с моя алгоритъм. Но със сигурност това не е интуитивен. Най-всеки разумен човек в тази стая не би направил това. Какво щеше да направиш? Щеше да отида право в средата, нали? Приблизително в средата. И разбираш, о, това са г-жа Така Mike Smith, фамилно име е Смит, не е ясно, след това в лявата половина на книгата. Той трябва да бъде към S е в правото. И в този момент, въпреки че повечето от нас не го прави в действителност, ние можем да буквално разкъса този проблем на половина. [Аплодисменти и аплодисменти] DAVID Malan: Благодаря ви. [Аплодисменти и аплодисменти] DAVID Malan: Можете да буквално да разкъса тази Проблемът на половина, оставяйки ме с, буквално, един проблем два пъти по-голям. Така че, ако този телефон книга е - и да го вероятно е - около 1000 страници, сега това е само 500. Ако аз направя това отново и осъзнавам, о, По дяволите, аз отидох твърде далеч, аз съм в Ts раздел, мога също - образно или буквално - откъснете в телефонния указател - това е всъщност много по-лесно това време. Аз буквално може да се откъснете от телефонния указател на две, оставяйки ме сега с 1000 не не, 500 - 250 страници. И аз мога да отида 125, и половината от това, и половината от това, и половината от това, докато най-накрая ще бъдат оставени с само една единствена страница. [СМЯХ] DAVID Malan: Това е най- част I успявало. Една-единствена страница, на която Майк се надяваме е. Сега тези различни алгоритми могат да бъдат сортиране на определени или оценени в различни начини. Първият от тях беше много линейна, нали? Обърни страницата, потърсете Mike. Обърни страницата, потърсете Mike. Това е много линейна. Ако има още една страница в телефона книга, тя вероятно ще ми отнеме още една секунда, още една единица от време, Въпреки това ние сме изчисляване време. Така че може да изготвя така тази линия тук, при което като размера на проблемни увеличава от ляво на дясно - телефонния указател става по-малък към по-голям - и времето ще се увеличава на вертикалната ос, по-голям телефонния указател е. Така че п е само обща променлива, която компютърни учени използват, за да представляват някаква стойност, някои номер. Така че п ще се повишават линейно. Два пъти размера на телефонния указател, това е Ще ми отнеме два пъти повече време, най-вероятно, за да намерите Mike. Сега можех да бъда умен за това, нали? Бях отегчен бързо. Би могъл да направи това, като двойки. Така че две страници, а след това четири, след шест, след това осем. И мога да започват да летят през него на малко по-бързо, макар и с незначителни риск от Превишение Mike, но това не е крива ще бъде по-различна. Тя все още продължава да бъде с права линия, но малко по-бързо. Но какво да направя? Аз всъщност направих нещо фундаментално по-добре. I постига това, което ние ще се обадя логаритмична времето, дневника на N, като тази зелена линия има много, много, много по права линия към него. И скоро, това предполага, тъй като някак подходи безкрайност все така постепенно, че в действителност може да вземе 1000 страници телефонен указател, удвои размера си следващата година - защото предполагам много повече хора се движат в града. Така че сега имам две хиляди страници, но как много повече стъпки е, че умни алгоритъм ще отнеме? Само един. Искам да кажа, че е нещо доста силно. Ако се върнем към 4000 страници следващата година, че ще ме вземат само още две стъпки. Така че можете да хвърлят по-голяма и по-голяма проблеми на мен, а не за разлика от Мрежата е хвърлят все по-големи проблеми всеки ден в Googles и Facebooks на света, и то не е толкова голям проблем. Защото аз слагам повече мисъл и грижи в ми алгоритъм, с която да се реши проблеми ефективно. И наистина, че ще бъде един от целите на този курс. Ще разбереш, по протежение на пътя, научите как да програмирате. Ще научите как да програмирате в произволен брой езици. Но в края на деня, време е за решаване на проблеми и получаване на по-добри в решаването на проблемите - и, както и в случаи като този, при решаването на проблеми по-ефективно. Сега този момент, ние сме направили това доста интуитивно. Да се ​​въведе нещо доста родово нарича pseudocode. Така че в крайна сметка ще получи, В този курс, за да различни езици за програмиране. Но днес ние ще го направя на английски език-като синтаксис, където можете просто вид казват какво искаш да кажеш, но ти си все така кратка и не се тревожи за граматика и цели изречения. Ти просто изразяват себе си като накратко е възможно. Така че pseudocode е английски като синтаксис, който представлява език за програмиране. И към тази цел, позволете ми да предложа ние сега се модел на процеса ние просто описано за преброяване нещо малко по различен начин, но този път да вземе виж това пет минути произведени видео от нашите приятели в TED, че определя какво pseudocode е, определя какво алгоритмично мислене е, и дори че например вие сте на път да се види е, в по себе си, супер проста, тя е ще започне да ни даде на психичното модел, лексиката, с която да направи много, много по-сложни алгоритми доста бързо. [Отваря файла VIDEO] [За възпроизвеждане на музика] Разказвач: Какъв е алгоритъмът? В компютърните науки, алгоритъм е набор от инструкции за решаване на някои проблем стъпка по стъпка. Обикновено алгоритми се изпълняват от компютри, но ние, хората имат алгоритми, както и. Например, как ще го за преброяване на броя на хора в една стая? Е, ако сте като мен, може би ще точка на всеки човек, един по време, и брои до от 0. 1, 2, 3, 4, и така нататък. Е, това е един алгоритъм. Всъщност, нека се опитаме да го изразят малко по-официално в pseudocode - English-подобен синтаксис, който прилича език за програмиране. Нека N равни 0. За всеки човек в стаята, задайте N равна на N плюс 1. Как да тълкуваме това pseudocode? Е, първа линия декларира, така да се каже, променлива наречена N и инициализира стойността си до 0. Това просто означава, че в началото на нашия алгоритъм, нещото, с което Разчитаме има стойност 0. В крайна сметка, преди да започнем да броим, ние не са преброили нищо все още. Извикването променлива N е просто допълнение. Бих могъл да я нарече най-нищо. Сега на втора линия demarks началото на линия, поредица от стъпки, които ще повторили някои брой пъти. Така че в нашия пример, стъпка взимаме разчита хората в стаята. Beneath втора линия е линия три, който описва как точно ние ще отидем за преброяване. Вдлъбнатината предполага, че това е трета линия, която ще се повтаря. Така че това, което казва, е, pseudocode че след като се започне от 0 за всеки човек в стаята, ще увеличаване на N от 1. Сега е този алгоритъм е правилно? Е, нека взрив върху него малко. Има ли работа, ако има двама души в стаята? Нека да видим. В съответствие едно, ние инициализира N на 0. За всеки от тези двама души, След това ние увеличаваме N от 1. Така че на първо пътуване през линия, ние актуализираме N от 0 до 1. На второ пътуване през същата линия, ние актуализираме N от 1 до 2. И така до края на този алгоритъм е, п е 2, които наистина съответства на броя на хора в стаята. Дотук добре. Какво ще кажете за един ъгъл случай, все пак? Предполагам има 0 души в стаята - освен мен, кой какво прави на отчитане. В съответствие едно, ние инициализира N на 0. Този път, обаче, трета линия не изпълнение на всички, тъй като не съществува човек в стаята. И така остава N 0, което съответства на Броят на хората в стаята. Много просто, нали? Но преброяване на хората един по един е доста неефективно, също, нали? Със сигурност можем да направим по-добре. Защо не се броят двама души наведнъж? Вместо броене 1, 2, 3, 4, 5, 6, 7, 8, и така нататък, защо не се брои, 2, 4, 6, 8, и така нататък? Той дори звучи по-бързо, и то със сигурност е така. Да изрази тази оптимизация в pseudocode. Нека N равни 0. За всяка двойка на хората в стаята, настроите N равна на N плюс 2. Много проста промяна, нали? Вместо да се брой хора, един в даден момент, вместо това разчита ги две в даден момент. Този алгоритъм е по този начин два пъти по-бързо от миналата. Но дали е вярно? Нека да видим. Има ли работа, ако има двама души в стаята? В съответствие едно, ние инициализира N на 0. За тази една двойка хора, След това ние увеличаваме N по две. И така до края на този алгоритъм е, N е 2, които наистина съответства на броя на хора в стаята. Да предположим, че има следваща 0 души в залата. В съответствие едно, ние инициализира N на 0. Както и преди, трета линия не изпълнява най-малко, тъй като няма никакви двойки на хората в залата. И така остава N 0, което наистина отговаря на броя на хора в стаята. Но какво, ако има три хора в стаята? Как работи този алгоритъм тарифа? Нека да видим. В съответствие едно, ние инициализира N на 0. За чифт от тези хора, След това ние увеличаваме N от 2. Но после какво? Там не е друг пълен чифт хора в стаята, така че втора линия не вече не се прилага. И така до края на този алгоритъм е, N все още е 2, което не е вярно. В действителност, този алгоритъм се казва, че е бъги, защото има грешка. Позволява обезщетение с някои нови pseudocode. Нека п равно 0 за всяка двойка на хората в стаята. Определете N равна на N плюс 2. Ако един човек остава несдвоен, настроите N равна на N + 1. За решаването на този конкретен проблем, ние сме въведени в съответствие с четири, а състояние, иначе известни като клон че тя изпълнява само ако има един лице, че не можем да двойка с друг. И така, сега, дали има едно или три или нечетен брой хора в стаята, този алгоритъм сега ще ги изброя. Можем ли да направим още по-добре? Е, ние може да разчита в 3s или 4s или дори 5s и 10s, но освен това, че е ще получите малко трудно да се посочи. В края на деня, независимо дали се извършва от компютри или хора, алгоритми са само набор на инструкции, които да решават проблеми. Това са само три. Какъв проблем бихте решили с алгоритъм? [END възпроизвеждане на видео] DAVID Malan: Това е единственият път, Аз ще се явявам в карикатура форма. Но къде, че историята свършва, сега, е как можем да се справим по-добре? Тройки и четворки, твърдим, че можем да разчитаме хора, много по-бързо, но можем ли да направи фундаментално по-добре от това? И аз залог можем. Ако въведем малко от нашата собствена pseudocode тук, аз отивам да предложи че можем да постигнем ред като този. Ние няма да се брои хора един, два, три, четири. Ние няма да отидем два, четири, шест, осем. Ние ще направим фундаментално по-добре от преосмисляне на проблема и в тази случай, деблокирането на иначе неизползван ресурс. В един момент, аз се надявам, че ще простя и ни настроение, изправяне в място, като в този момент, че ще изискват от всеки един от вас да поеме в умове на номер 1. Вие тогава ще все опасно, с течение на времето, да намерите някой друг, който стои, комбинирайте си номера заедно чрез добавянето им нагоре. Един от вас след това ще се състезаваш да седи надолу първа, и на другия човек ще се повтори. С други думи, чрез посяване на всички ти с номер 1, а след това комбиниране на тези 1s в 2s и тези 2s в 4s, с всички, все в седнало положение, трябва, в края на този алгоритъм, имате само един кредит душа, която не седна достатъчно бързо, но който има целия брой публика в ума си. Така че, ако ще, да вървим напред и - стъпка едно - се изправи на мястото си. И изпълни. [CROWD мърморене] DAVID Malan: Знаете ли където Lauren е? 729? [CROWD мърморене] DAVID Malan: Добре? [CROWD мърморене] DAVID Malan: Добре, ние трябва да се към края. Ние виждаме един човек стои тук още. Кой друг трябва да се свърже? Ако вие искате да оформите двойка. Някой отгоре. Защо да не подадат ръка тук. За много малко хора, които все още стои, какво ли номера имат в ума си? Студентът: 78. DAVID Malan: 78 плюс - който стои тук? Студентът: 39. DAVID Malan: Plus 39. Plus кой друг още стои? 81? Добре, кой друг? Друг 81? Wow. И тогава какво има в гърба? Студентът: 49. DAVID Malan: 49, плюс? Студентът: 98. DAVID Malan: 98 плюс? Това ли е някой друг? 12? Добра работа. [СМЯХ] DAVID Malan: О, 112 - о. Добра работа! [СМЯХ] [APPLAUSE] DAVID Malan: Някой друг още стои? Съжаляваме? Студентът: 99. DAVID Malan: 99. Някой друг още стои? А общият брой на учениците тук всъщност, по - имате ли номер? О, реалният брой на хората в стая, според предвид, че учебните събратя правят по пътя на всеки един, е 729. Тоест, от групичката студенти от Харвард , които се броят на Отговорът е 637. [СМЯХ] DAVID Malan: Толкова близо. Но все още. ОК, така че това е учение момент, нали? Това в момента е това, което описват като грешка. Някъде по пътя, ние направихме някои аритметична погрешно, или някой, седна, или наляво, или нещо се е объркало. Но това е добре. Защото дори все още, ние имам доста близо. И бих твърдят, че стигнахме до погрешно отговори на много по-бързо, отколкото си с моя по-линейна подход. Така че нека да приемем, че е в действителност се получи, че правилно, но мисля сега за това, което се случва всеки път, срещу моя собствена наивна посочи алгоритъм. Едно, две, три. Ако наистина е имало 729 или 637 души тук, че щеше да ми отнеме буквално 637 или 729 соченето с пръст и увеличаване моя общ брой. И мога да го направя малко по-добре от става две, четири, шест, осем, и удвои тази скорост, може би дори тройно или четворни, в зависимост колко добре мога направи това преброяване в главата ми. Но този подход, че вие ​​се е коренно различна. Защото в началото, всички от вас се изправи. Така че всичко 729. И тогава буквално половината от вас седна. И след това, друга половината от вас седна. И след това, друга половината от вас седна. И общият брой пъти, че момчета можеше да седна е приблизително осем или девет или десет пъти общо, в зависимост от това, което нашият общ брой е. И ние можем някак да направя това в обратна посока. Ако имахме 1024 души в залата, на Общият брой пъти, които могат да намаляване наполовина на 1024 души е 10. Сега мисля за това в другата посока. Да предположим, абсурдно, че сме имали, да речем четири милиарда хора в тази зала, или малко по-голяма стая. Колко пъти ще сме отишли чрез този алгоритъм, така че половината от този клас сяда? Той само ще вземе 32 такива операции, дори и в класа на размера четири милиарда. Защо? Тъй четири милиарда отива в две млрд., отива до един милион, отива в 500 млн., отива на 250 милиона, точка, точка, точка. Мога само да направя това разделение около 32 пъти, като в този момент, всички, с изключение един човек ще се оставя да престои. И това също е нещо мощно Идеята, че все по-често ще се опитаме да ливъридж в този курс, и по- програмиране и компютърни науки повече Като цяло, тези микроби на идеята с които след това могат да решават проблеми много, много по-силно. Така че започнахме доста прости с тази pseudocode и момче в една стая, но сега с цяла стая пълна с хора направихме фундаментално по-добре. Е, нека сега прехода от pseudocode до известна действителният код. Този език вие сте на път да се види случи да се нарича JavaScript, и ще се върнем към този към семестър в края. Това е език за програмиране, който използвате, за да направите уеб сайтове и други такива софтуер в наши дни. И ние сме го използвали, благодарение на приятел наш в Станфорд, за да кодира някаква скрита информация тук. Това е изкуството на стеганография, така да се каже, където можете да се скриете Информацията в това, което иначе изглежда е шум или напълно различна изображение напълно. Но вградени в този конкретен образ наистина е тайното послание на видове. Така че нека да вървим напред и издърпайте нагоре едно и също изображение тук, това време в уеб браузър. И аз ще махна с ръка на някои от подробностите за днес, по-специално За тези от вас, които това изглежда не само JavaScript, но гръцката, като напълно непознат език. Но това е пример за език за програмиране. И за сега, вземат на вярата, че този първи ред с код - и с код, аз просто означава текст. Текст, който бих могъл да буквално написали в Microsoft Word, ако имах правото софтуер, за да след това направи нещо с него. Програмиране сорс код, програмиране код, е наистина само текста и да го изглежда по различен начин въз основа на какъв език , който използвате, не за разлика от английски и Испански и руски всичко изглежда различно когато ги въведете на клавиатурата. Така че този първи ред, за сега поемат вяра, просто се отваря графика от интернет, че шумна графичен току-що видяхме. Това следващия ред тук е един пример за линия, а ние всъщност видях, че едно и също жаргон във видеото TED. A контур е нещо, което се случва отново и отново, и въпреки че това абсолютно изглежда загадъчен, с дума за, както и някои скоби, и някои точка и запетая. Ще се върна на това след дълго, но това линия има по същество е казва програмата, обхождане на всички на тези шумни точки, от ляво на надясно, отгоре до долу. Защото в края на деня, един образ харесва - и ще можете действително вид я видите на този проектор - наистина е само една мрежа от точки. Така че можем да идентифицираме всяка от тези точки от координатната, X, Y, и с този програма, сега можем да започнем да направи нещо с тези точки. Така че това, което аз ще отида напред и тук да е аз отивам да се направят някои промени. Първо аз ще отида напред и да се отървете на всичко това зеленикаво и синкаво шум, и аз отивам да вървим напред и въведете следната несъмнено загадъчен синтаксис. IM за изображение. настроите синьото от адрес Х, запетая, населено място Y, на 0. С други думи, аз искам просто да изключете всички на син точки в тази снимка. Отивам да се продължи напред сега и кликнете това Run / Save бутона, и ще забележите на дясната страна, полученото изображение се появява. Сега си супер зелено, но това не е изненадващо, защото аз буквално се обърна разстояние, като се прави 1 на 0, всички синьото на тази снимка. Е, сега да го направим малко повече. IM за изображението, точка setGreen, X, Y. А това означава само обхождане от ляво на дясно и след това горе до долу. Изключи го със стойност 0, както и. Запиши. И на проектора, можете да всъщност не наистина да видя нищо. На моя лаптоп екран, ако надникне в точно по правилния начин, мога да видя малко на образ, защото те са все още някои червено там. Ако някога сте чували съкращението RGB - червено, зелено, синьо - тя се позовава на този състав на изображението, използвайки само на тези три цвята. И точно сега, ние сме изхвърля всичко зелено, синьо всичко, но там не е много червено. Така че позволете ми коляно на червено. Как мога да направя това? Ами, първо, аз ще попитам тази програма въпрос. Аз ще отида напред и нека го наречем променлива, както по алгебра. Можете да имате X или Y или Z. Отивам да се декларира променлива и да кажа, поставени в тази променлива, временно, стойността на снимки getRed стойност на х, у. И пак ще се върнем към всички на този детайл в бъдеще. Но за сега, просто приемете на доверие, че този ред иска програмата, какво е червен стойност на х, у? В тази конкретна точка? Тогава аз ще направя нещо за него. Тогава аз ще направя снимката точка набор червено в X, Y, Y, но този път аз ще засили това, като направите червени пъти, да речем, 10. Така че това се увеличи с фактор 10. Позволете ми да намалите сега и кликване може Run / Save. И готово, че е бил там цялата време, въпреки че нашите човешки очи не можеше да го види. И отново, това сега е реално код, за пример за език, който ние ще дойдем Върнете се в скоро. Но осъзнавам, особено тези от вас, без такъв опит, това е доста скоро, че ние самите ще бъдат писане на код като че има. В действителност, един инструмент, с който ти си всичко донякъде познато, може би, е CS50 е собствен път-търговски инструмент, който е всъщност рестартира това лято от някои на собствените си бивши ученици CS50 е, сега се обръщат TFS. Така че това се случва да бъде построен сайт на език, наречен PHP. Той използва база данни, наречена MySQL, неща с които ние ще се докопаме мръсни късно през семестъра. Но вярвате или не, дори нещо като това в крайна сметка се свежда до простите линии и условията и отрасли, като тези, видяхме само Преди малко в клипа TED. Това, което аз мислех, че ще направя сега е да не акции Просто нещо, което служителите са направили за колежа, а по-скоро нещо бивш ученик - три студенти, в действителност - направени през изминалата година, Sierra, Даниил и Сам, последната от които не са имали предхождаща програмиране опит когато се CS50. Както и за тяхното окончателен проект, те изложен на показ, в Fair CS50, на приложение, наречено wrdly, което е уеб-базирана програма, за която те направиха това видео, че реших да споделя с ще ви даде усещане за точно това, което е е възможно до края на термина. [За възпроизвеждане на музика] DAVID Malan: Това е от седмица Нула до седмица 12 през изминалата година. [APPLAUSE] DAVID Malan: Като закачка, твърде, наистина за загрявка е това, което е възможно, трябва да сте видели вече, или може скоро да видите, market.cs50.net, а нов инструмент, който екип на курса има работи по, този път в сътрудничество с харвардски студент Агенции, така че в началото на този година и продължаване надяваме в този идващото лято ще имат стандартен възможност на територията на колежа да се купуват и продават неща, които ви интересуват. И с партньорството чрез HSA, ще също така да бъде в състояние да се откажа елементи отстъпка в една от физически магазини HSA е в някакъв точка в бъдеще, така че да се прокси неща, особено ти като завърша и не е задължително да изхвърлете неща, но всъщност го плащат изпраща хора, които могат да ви следват тук на територията на колежа. Така че повече за това да дойде. Но малко по-конкретно, инструмент , че е дошъл от CS50 през последните година, с което някои от вас може да бъде запознати и други от вас може да бъде Гугъл сега, в CS50.net/2x, ще намерите линк към разширяване Chrome което е демонстративен това как можете да използвате JavaScript, че един и същ език ние използва с Айфеловата кула преди малко, за изпълнение на 2x скорост на възпроизвеждане за всички Харвард клипове iSites. Това е нещо, което е вградено в собствена видео плейър CS50 е. Но това също, ако започнете да се копае в изходния код, които ние ще щастливо предоставят, ще видите как можете дори да решават проблеми като този, ускоряване джаджи в уеб сайтове с които вече сте добре запознати. Така че една дума сега на курса и очаквания и това, което предстои. Като цяло, ние ще наистина се събират тук в понеделник и сряда - макар този петък, ще се съберат, защото Пазаруване на седмица - 1:00-14:00, макар че понякога до 02:30 часа. Като се има предвид, че те биха могли да искат или трябва да се вземат някои клас в 14:00 нататък, или дори преди това, осъзнават Курсът е в подкрепа на това, което се нарича едновременно записване, при което ние ще подкрепи петиция до Ad съвет и си пребиваващ декани от ваше име, ако имате конфликт някъде в тази 1:00-2:30 диапазон. Ръководителят на този URL онлайн допълнителни подробности. Но от гледна точка на структурата за подкрепа която характеризира CS50, за студенти повече и по-малко удобни, така, ние Предлагаме различни песни на раздели. И това е след няколко седмици почивка, но Не след дълго ще бъдете помолени да вашия комфорт ниво. Вие сте сред тези, които по-малко удобни, по-удобно, или някъде по средата? И ще имаме три различни песни, които да се погрижат за точно в тези аудитории. Така че в нито един момент в срока трябва да дори се чувствате сякаш сте конкурентни срещу всеки студент с повече или по-малко опит от теб. Всъщност, разбира се е трябвало да бъде много по-голямо сътрудничество и много по-отворена от това. По отношение на проблема комплекти, ще че също така, че в допълнение към Стандартното издание на проблема всяка седмица настроен, че често се "хакер издание ", че е писано да бъдат насочени при 5% до 10%, или на демографски, който е наистина сред тези, по-удобно и бих желал повече на оспорване от стандартната издание на тази PSET очаква. Повече подробности за тези, които се намерено в учебната програма. Но и там може да се намери информация за курсовете края на ден. Обикновено проблемът определя се дължат в четвъртък. Въпреки това, можете да разширите много от вашите срокове тази есен от четвъртък до Петък просто по срещнем по средата, така да се каже, да отговорите на няколко загряване въпроси в някои от проблема на седмица комплекти, който автоматично ще След това ви даде допълнително 24 часа. Ние също ще падне най-ниската си оценка, съгласно учебната програма. За да ви дам представа за това какво на проблема комплекти са - защото това е наистина Проблемът на курса определя, че в крайна сметка определят почти всеки студента опит, още повече, че от лекции, повече, отколкото секции, повече така, отколкото повечето други аспект на курса. Миналата година, например, ние започнахме, като ще започне тази година, с нулата. Особено този петък, ще използваме, за само за един ден е време, графичен език за програмиране, с които ние ще начало програмиране чрез плъзгане и отпадане пъзел парчета, че само съберат физически дали има смисъл да го направят логично. Следващата седмица, ще бързо преминаване към C, доста стар, но много малък и прост език, който ще ни позволи да наистина отиде от 0 до 60 в течение Само за няколко седмици, след залог същите тези знания и умения на основни програмиране изгражда в по-високо ниво езици като PHP, JavaScript, а трети все още. Миналата година, на третия PSET в хода е, че на криптографията, а домейн-конкретно приложение, чрез което оспорени учениците относно осъществяване на броят на цифрите, програми, с които да катеря или разяснявам информация, да го криптиране. За хакер издание, от друга страна, дадохме на хакерски студенти файл от стандартен компютър Unix, съдържащ потребителски имена и пароли, последната от които са криптирани, и ние с опонентите, хакер учениците да разшифровате, доколкото могат, тези пароли, все още, че същия домейн. Катеря, една игра, с които някои от вас може би са запознати. A криминалистите парче, където искаме студенти за възстановяване на данни, които са били иначе заличава от моя собствен цифров компактна светкавица на фотоапарата карта, от пишейки софтуер, за да разбера, Къде бяха нули и единици в че цифров фотоапарат, който по-рано съставен на JPEG графичен? Предизвикателство на видове през миналата година включва най-бързо писане за проверка на правописа възможно, като се конкурира срещу приятели и съученици, ако те биха искали. Изпълнение Huff "N Puff, за компресиране програма. И след това се сложи край на семестър с CS50 Финанси, уеб-базирано приложение с които създавате ETrade-подобен сайт да купуват и продават акции, така че да говори, като всъщност дърпа почти Котировки в реално време Yahoo! Финансите. Това, което не съм направил миналата година е един проблем, който остава в стаята въпреки това любимо. Ако никога не сте отишли ​​в shuttle.cs50.net, ще видите на потребителя намесвам малко като този. Но преди две години, на класа прилага, като се използва Google Maps и Google Earth плъгин и малко на акъл с шофиране из университета, така че целта на тази игра е, както можете да видите някои от лицата, е да карам из университета търсите служители, приятели преподаване и КТД, както и Когато го направите, извеждайки на вашия автобус. Нито един от тях действително изглежда да е тук, така че ще да въведете мамят код. [СМЯХ] DAVID Malan: Ето. Добре. И тук вече е на персонала завързана целия кампус. И както можете да видите, от дясната страна страна на екрана, на автобус има празни места. И целта е да се напише код, с който да се симулира тази шофиране и бране и отпадане изключване на пътници. Това едно, също с помощта на език нарича JavaScript. Така че, да осъзнаят, че програми като, че ще бъде на същата нашата траектория тази година, както и. От гледна точка, сега, от допълнителна подкрепа, имаме работно време. Както може би сте виждали в собствения си дом трапезарията или в Annenberg, ние ще бъдем в къщата трапезария зали четири вечери в седмицата - Leverett, Pfoho, Елиът и Annenberg тази година, 20:00-23:00. И това, което решихме да направим тази година е нещо по-различно. Ако сте чули тътен миналата година, че това е малко прекалено стресиращо, това година на работното време, както ще опишем следващата седмица, ще бъде по-органичен, при която при пристигане, ще бъде изпратени в една определена маса където няколко членове на персонала очакват, и ние ще направим нещата много по- органично. Няма повече опашката, не повече IPAD, но по-скоро имат по-интимно разговори около масата на само осем или повече човека, така че да приблизителна усещането за това, което иначе ще бъде много по-малък клас. Ние предлагаме, както и тези неща, които Запознай нарича, видео заснет в предварително по един от преподаването на курса събратя, Zamyla, в който тя ходи ли до проблема за седмица комплекти, предлагащи съвети и трикове за предизвикателства, пред които ще бъдат изправени. И обратно, след проблемни групи са дължи, тази година, ние също така ще освободи малки клипове наричат ​​следсмъртни че всъщност ви преведе през представителни решения, както добро, така и лошо, чрез които можете да се направи извод колко бихте могли да имат или трябва да имат изпълнява своето собствено решение. И това, което ние ще предложим за първи път тази година, както и, по-специално за студентите, които се ползват на курса на друг ресурси, но въпреки това се борят твърде много, време себе си ще сдвоите тези студенти, както ресурсите позволяват, с преподаватели, така че имате много по-интимно възможност от трапезарии къща позволи една по-една помощ. Сега окончателно поглед към някои на крайните игри в очите. Може да бъде запознат с на CS50 Hackathon. Е, идва през декември, от 08:00 часа Ч. до 7:00, в началото на Четене период, ще има възможност да се съберат със съученици - това ще бъде около 21:00 - по време на който да се потопите в своя окончателен проекта изпълнението заедно съученици, приятели и храна. Това ще бъде около 01:00 AM, когато първата партида от храната пристигнали. И това е около 4:00, че съответната година в CS50 Hackathon. Но истинската кулминация на курса е предназначени за Fair CS50, един корпус-широк изложба на свои собствени окончателните проекти, към която семейството и приятелите са поканен, тъй като нашите работодатели и нашите приятели от индустрията. Това, например, е един поглед на 2000-те души, които са присъствали последните години. Изрази като тази не са рядкост, и по същия начин да си съученици наслаждават на нещата сте постигнали. И действително, за тази цел, ние имаме начало на периода случай, както и. Ако подобни неща апел към вас, или ти си най-малко любопитни за това какво това, знаем, че една нова традиция на Разбира се нарича CS50 Puzzle Day. И това бе създаден след няколко години назад наистина да сигнализира на кампуса че компютърната наука не е за програмиране, и то със сигурност не е за възприемане само тези студенти , които имат предишен опит. Това наистина е много за решаване на проблеми по-общо. И така Пъзел ден, през последните няколко години, се превърна в приятно партньорство с нашите приятели в Facebook, която ще има страхотна награди и пица по реката към I-лабораторията идната събота. Насочете се, че URL с две или три приятели, ако искате да участвате в тази нова традиция. Така че бих искал да ви помоля да запази един нещо в ума, а ние имаме само двеминути клип, на която да затвори днес. 73% е броят да запомните. Cake, също ще ви очакват извън това неф като ние отложи само с няколко минути, което е традиция на курса, както добре. Но това е ключът цитат от Разбира се на учебната програма да се има предвид. Какво в крайна сметка има значение в този курс не е толкова много, когато ти свърши спрямо съучениците си, но когато ви, в 12-та седмица, в крайна сметка по отношение на себе си в Седмица 0. Но поглед, че ще те оставя с тук днес, е този, последният тук от същия нашата Daniel, който направи wrdly видео само преди миг. Оставям ви с този поглед на това, което предстои. И тъй като ние направим това, ако бихме могли да имаме CS50 служители от предната част на стаята да дойде до етап, да нарисува всички на повече от визуално изображение за какво ви очаква тази година - се неловко. Ще завърша с това тук на екрана. [За възпроизвеждане на музика] DAVID Malan: Това е CS50. [MUSIC - MATT & KIM, "Всичко е наред"] SPEAKER 1: Обичам CS50 повече от котки. SPEAKER 2: Whoaaaa! [СМЯХ] DAVID Malan: Това, тогава, е CS50. Ние ще се видим в петък. [Аплодисменти и аплодисменти] Разказвач: На следващото CS50, на сцената Демото не върви по план. DAVID Malan: Искаме да се намери Mike Smith в този телефонния указател. Е, какви са вашите инстинкти? Мога да скочи около до средата на в телефонния указател, погледна надолу, видя, че Аз съм най-M, и аз знаем, че Mike Смит не е в ляво. Той трябва да е в дясно. И така, в този момент, ние може буквално да разкъса - В този момент, ние можем буквално разкъса - В този момент, ние можем образно разкъсване на телефонния указател на половина. [UKELELE дрънкане]