>> Дејвид: Добро, моје име је Дејвид Малан и то је ЦС50.
А, то није ваша типично средње школе рачунара
Наука наравно.
Овај курс је мало нешто посебно.
И то не зато што Ја сам га наставе.
то је зато што је ово један на, ми волимо да мислимо,
оних ретких предмета који заправо стеже свој мозак толико
и ваш распоред толико
да до краја семестра да те искрено осећају паметније.
Дакле, то је начин на који сам осетио
када сам узео ову Наравно, још 1996.
Био сам влада велики
у то време овде живе у кући Матхер.
А, И.
[Навијање]
Као што су остали, пет других тамо.
Дакле, био сам влада велике у то време.
И био сам велики владе
јер сам увек бих волео историју.
Сам волео уставно право у средњој школи.
И тако, ја кренула на том путу новоуписаних студената годину дана раде оно што ја радим
најбоље, радиш оно што сам знао да сам волео.
И ја сам увек бих био мало Геек,
Увек сам бабблед са рачунарима.
Али, ја сам, можда иронично у ретроспективи,
Увек сам прегледан момци који узимали рачунарство
у мојој средњој школи, мој пријатељима као прави залуђеници.
Па ипак, на крају урадио, студент друге године године, ја се овог малог курс
зове ЦС50 што заправо ме препала удаљен своје
прву годину.
И био сам корисник асистент на време.
Дакле, ја сигурно био се већ квалификовали, бар,
бити међу онима, који Геекс
који сам направио забава у средњој школи.
Али, био сам уплашен.
Постоји, то је овај репутацију у том тренутку и можда још
у делу који је, то је страшно курс.
То је пуно посла.
Било је тешко, а ипак, то је један од оних ствари где је, Боже мој,
кора је била далеко гора од свог залогаја.
Нашао сам ја студент године, по први пут,
заправо проналажење домаћи забавно.
И Им 'не казивање то само на терен овог курса за вас.
ово је прави реализације за мене.
Сада, мислим, у једном тренутку, ја сам преко линије
да истина геекдум где сам заправо користи да се радујем
до петка увече зато што Сам могао узети испред
моје мало МацБоок и рад на ЦС50 проблем поставља.
Дакле, у том тренутку, мислим да сам је јасно прелазе линију.
А, наш циљ на овом курсу није да се обрати свима вама
у то лице, али, само да кажем
да постоји нешто посебно о томе, наравно,
нешто посебно о рачунарству
уопште, посебно ових дана.
И, више аклиматизовани смо све сам у технологије,
више играчке носимо то у нашем џепу
који су и сами рачунари.
Мислим, мој иПхоне је у ствари већи обавља рачунар
од мој лаптоп је био на колеџу.
То можете да урадите много уредан ствари са овим стварима.
А сада, већина у овој соби,
вероватно само коришћење других људи софтвер, алатке других људи,
решења других људи проблема, јер идемо
на иТунес, смо преузели нека апликација из Апп Сторе
и Валла можемо учинити нешто стварно уредан.
Али, до краја овај семестар,
можете бити особа да ради решавања проблема.
Можете бити решавање особа неки проблем, згради која апп,
да је комад софтвера, да је инструмент који, било,
један само ми амусес, амусес вас.
на пример, контролу, рецимо, ваше иТунес библиотека
са са апартманима јасно апп
који већ постоји, или можете наћи шатл распореди више
лако, на пример.
Тако је у ствари, један од првих ствари које сам учинио
након узимања ЦС50 је опет, вероватно је
у овом тренутку петак ноћи и суботу ноћи,
било је ово прилика у то време
Харвард, где је приказују шатл аутобуси.
И, на овај дан, они су и даље су штампане распореди.
Али, тамо је стварно нема значи мрежи налажења
кад следећи шатл је.
Сада, ја не брига, јер иако сам живео
у Матхер нисам био међу онима који су који су генерално је шатл.
Али, имао сам пуно пријатеља у Пфохо на пример.
А један од њих ме је замолио, Мислим да је у једном тренутку.
[Навијање]
Ок Пфохо је боље од Матхер очигледно.
Дакле, један од мојих пријатеља врсте
од ме можда размишљања могу да написати мало програма за врсту
помоћ мојих пријатеља проверите шатл распореди.
И тако је рођен неспретно названа шатл дечак,
овај комад лексика која је остао око за одређени број
година најмање међу неке од упперцлассмен.
У то време, то је то мало командне линије програма
сличне по духу ДОС.
То је био покренут у УНИКС окружењу.
Дакле, то није врло секси у све.
само уписали сте пар команде и то ти рекао
када су чункови.
Па, ових дана је нешто више софистициран.
И, то је заправо представљао прецизно типова
пројеката који студената у овом крају курса
прављења по условима краја.
Дакле, ово је верзија са четири, неки 15 година касније, у Схуттлебои.
Чини Гоогле мапе буде мало спор тамо.
Али, за оне од вас који су да одем одавде, након класе
и иду, рецимо, од Меморијална сала и треба
да одем до, рецимо, Куад.
Па, можете оставити у два минута, ако,
ово стварно није ради за вас још увек,
или сте као и многи други опције као што сте можда желели.
И, ускоро, можемо терен се то ЦС50,
то ће бити исто способност путем СМС-а.
Можете текст Схуттлебои путем телефона.
Вас позове Схуттлебои.
ЦС50 је број телефона ове године, добро,
невероватно је ово на располагању, 617-буг-ЦС50.
Дакле, који ће ускоро деби.
Дакле, не позива само
али зато што сам стечен опоменут за,
сада је се преусмеравају
нашем систему главу наставе мобилни телефон сараднички.
Дакле, само ћете га добити ако имате питања
о сада шатл распореду.
Али, то ће ускоро бити спроведен.
Дакле, друге ствари, заправо, да смо се провели овог лета
на заиста у припреми за овај семестар је цела хрпа
других проблема који смо желели да решимо.
На пример, постоји много ствари да иде
на у овом кампу на дан.
И, у ствари, ставио још један начин, постоји много
ствари дешава на овом кампу
да ја сигурно никада не искористити.
И, иако сам сада осваја са колико ствари
који се дешава, на кампус,
Ја још увек изгледа никада наћи времена.
Али, Валла, чак и тамо, ЦС50 је предавање.
Ту је, тако је то , ово је програм смо писали
за сакупљање свих дешавања на кампусу.
И ово је нешто што други студенти
у овом истом, наравно, имају решавати сами.
А, ми смо рад са других субјеката на кампус
да заиста би се то догодило.
Али указују на ЦС50 овај термин је да су сви
од ових малих програма које смо ради о томе да ли овај
или да ли једна за збирни све вести харвардском
на једном месту, све Гоогле Невс,
све ове ствари иду да оно што се назива АПИ,
за програмирање апликација интерфејса.
И то је само фантазија говоре о способности
за изнајмљивање другим људима, људи у овој соби,
заправо радиш нешто са истим подацима.
Дакле, до краја условима, ако се одлучите
да спроведе коначни пројекат се односе на вести или догађаји
или мапе, добро смо, у бар што, наравно,
ће да се све више лако ове године тако што сте
са интерфејсом; врста функције, да тако кажемо,
софтвер који можете да користите у сопствене пројекте ићи горе
и шире, где студенти, можда су отишли у време прошлости
јер је то оквир није на месту за њих.
И опет, то све почело, за мене барем,
пре 15 година спровођење Схуттлебои.
И онда е-маил мој пријатељ Кен у Пфохо.
Рекао сам хеј шта ти мислиш?
Да ли је ово било корисно?
Он је послат из на Пфохо отворене листе и Валла,
касније све ове године сам очигледно још увек мужу
овог пројекта.
И уредан ствар о томе, и то је где превише курс
као што је овај у инжењерингу и рачунарство, мислим,
је мало посебна, да, када то урадите ваш дом радови
и када то урадите своје пројекте у овом предмету, знате,
многе од њих, да ћете ставити страну и стварно не поново користити.
Али, неке од њих, те воља.
И тамо је то стварно моћна ствар, барем за мене,
ово заиста узбудљиво ствар, када би се нешто
и других људи заправо брига, други људи не само осмех
и погладити своје на назад, а затим некако иде
о својим животима.
Они заправо користе оно што се у сопственом животу, чак и ако је
нешто као глупо или као једноставан као само проналажење
када могу да одем одавде
ухватити следећи превоз на Куад.
Дакле, до краја смислу, то је једна циљева за овај курс;
да вас оснажити момци само идентификују неки проблем да ли
је на кампус или надамо се и ван кампуса,
и заправо користе своје вештине, свој ум и решити
да је проблем у неким део, технолошки.
Дакле, то је наравно како ми кажемо у програм
и курсеви званични опис који вас учи како
да мислим и да вас учи како
у решавању проблема ефикасније.
Па, шта то значи?
Па, када имате 600 Мегахертз у џепу
или три гигахерца под свој радни сто у кући,
можете решити много проблеми ефикасно само
од смицања силу.
Али, постоји много проблеми у овом свету,
да ли је претраживање, рецимо, Фацебоок мрежи
или на интернет преко Гоогле,
да није битно колико брзо вашем рачунару,
не постоји начин у паклу сте иде за претрагу милијарди
веб страница брзо, осим ако заиста приступ овом
Проблем интелигентно.
Ви не само претраживање, на пример,
огроман списак свих веб страна на земљи од врха
да изгледа дно нешто у вези
без обзира на услове за претраживање сте тражите надамо Гоогле
и вероватно Гоогле и Фацебоок и све
од ових великих ентитета имају много паметних људи мисле
о томе како они могу проналажење података брже,
како могу да обрађују информације ефикасније, и,
како могу само уопштено повратак брже приказивање резултата
тако да можете још увек радите,
више занимљивих ствари са овим уређајима.
И тако, шта ми значи, међутим, колико, подучавање људи како
да мислим више пажљиво, више алгоритамски.
Па, ово мало визуелни увек изгледа као да иде преко добро.
А, чини се да је памћење.
И ја сам чак и питао само јуче бивши ученик,
Ох ћете да урадите именик ствар поново.
А ја згодан велик део на лицу места одлучио је у реду да ли ћемо градити
именик ствар.
А он ме је питао када поцепао га у пола десно,
Био сам као и да технички смо га поцепао на пола али не и
на путу, у рачунару Наука пут ћу бити у могућности
на хабање ово на пола.
И тако, овде је проблем које смо представили за неко време.
Дакле, овде је телефонског именика.
Има је бар хиљада или тако страна.
А једноставан циљ на дохват руке врло реалном свету је да се пронађе,
рецимо, особа овде.
Дакле, Мајк Смит, последњи име почиње са С. Дакле,
Ја сам типичан човек, ја покупити ову књигу телефон.
И било ко тамо, шта да ли би, типично лице,
не да почнете проналажењу Мајк Смит, очигледно не знајући
унапред шта страну Он је заправо он.
У реду, тако да отприлике иде у средини, десно.
И у овом тренутку у причу, Вероватно сам у Н или М,
знате, отприлике половина пут кроз именик.
Испада, последњи пут сам урадио овом примеру сам некако нашао
ја сам у пратњи одељку.
Дакле, то је заправо није једнако избалансиране између кроз М
и Н до З. Али, данас, смо, у ствари, у М,
у реду тако, сада сам у М.
Али оно што је сада моја ПОНЕТИ само
као нормалан људски офф улици?
Где да идем следећи за Мајк Смит.
[Нечујан] И тако, само вероватно на пола, зар не,
С јер долази после М. И тако, овде лежи визуелни драме.
То није стварно цепа га на пола, зар не.
И какве преварени доле у центру.
Али, ми сада знамо да је Мајк бар не у тој половини.
Ми смо буквално може избацити пола проблема далеко.
И ја сам са леве стране проблем то је у основи још увек
Иста ствар, наћи Мајк Смит је заиста велики књигу.
Али, проблем је сада пола велике.
Ако је имала хиљаду страна раније, сада је добио 500.
Знаш шта, ја могу да урадим исту ствар поново.
Могу врсту рекурзивно или пута учинити исту ствар.
Сада нисам сасвим у С. Ја сам на Т И тако,
Ох сам отишао мало предалеко.
Али, ја сада знам да је Мајк не право, ту ће
да једног дана буде нека класа, где Ја само не могу сузе ствар брана,
ЈА кладити.
Али сада, ја знам да је не са десне стране.
Дакле, сада проблем је четвртина.
Дакле, ја сам отишао из хиљада до 500 до 250 страна.
И опет, ако наставите логике, и даље математике,
Ја сам ово сецкање Проблем на пола, на пола,
на пола све док коначно сам ни сам ће не наћи било Смитх
у свему, мало вероватно, или идем да пронађе један И'м лоокинг фор.
Али, то је, дакле, моли питање, је ли то било боље
од једноставног приступа само говорећи, знате,, нопе, Б,
не, почевши са лева на десно иде линеарно кроз књигу?
Па, да инстинктивно.
То ће бити много брже.
Али, колико мање?
Па, ако сам хиљаду страница телефонски именик или рецимо 1.024
за оне од вас који као и овлашћења две,
колико времена може сам треба да поделе тај проблем
на пола пре него што пронађете Господин Смит?
>> Десет.
>> Давид: Па, десет, десно.
Ако имате 1.024 страна, а ви дели их на пола, на пола,
на пола, на пола, и то десет пута што значи да идем
од 1.000 стране Тражим особу
за само десет страна окреће.
И то је врста уредан, али, знате, ако мислите да
о томе сте радили све ово за свој живот.
То није тако драматична.
Али сада, да је телефонски именик није само за Бостон,
то је за цео САД и цео свет
и ово је милијардама страница у њему,
па замислите именик са четири милијарде страница.
Колико окреће страницу сам ће морати да максимално урадити
да пронађе Мајк Смит четири милијарде странице телефонског именика?
>> Дневник бази два.
>> Давид: Па да, ако си врста
на математику типа ово је дневник базу два.
Али, ако мислите да четири милијарди до две милијарде
на једну милијарду, тако да пола милијарде.
Мислим, да је заправо вхиттлес иде сама
доле прилично дарн брзо.
У ствари, са 32 халвингс од телефонског именика и
од четири милијарде, ја ћу сићи на једну страну.
И то је када се ове ствари добија снажан, мислим.
То је када се ови идеје се неодољив
када можете имати четири милијарди страница проблема
и у 32 корака које можете наћи особа коју тражите.
И тако, то је оно што мислимо када кажемо да ћете научити како
да мислим више пажљиво, више алгоритамски,
више интелигентно о решавању проблема.
И враћа се огромна када заиста може да учини,
и опет, на овај тачка Гооглес
света Фацебоокс који су луксуз
да је велики скуп података.
Иоу'ве гот да се обрате ове проблеме
На овај начин иначе је једноставно не иде на посао.
Па, шта је шта урадио Студент заправо памтимо?
И ми волимо да радимо ствари које су мало глуп понекад
на врсту узети ивици офф
онога што је иначе много нових материјала.
И тако, он је заправо, ова бивши студент ми је послао овај линк
коју сам пред отишао, само за удараца и онда жали
на крају, издвајали се на УТубе овде.
Дакле, ја мислио бих поделити оно што не-рачунарски научник значи
кад сузе именик на пола.
[Смех]
[Тишина]
[Нечујан]
>> Знаш да више од 200 страна, лепо чисте линије, легитимна суза.
[Смех]
>> Давид: па, претпостављам, његов начин функционише превише.
Дакле, оно што сам из овог Наравно, све те година је
да, Схуттлебои, а затим да диплому у рачунарству,
и онда да доктора наука у рачунарству.
И то није оно што ми покушавамо
да се окрену већина ученика У овом курсу се.
Већина вас у овом Наравно, не иде да иду
на у великим рачунарске науке.
Неки од вас можда мање, али за неке
од вас ће бити терминала курс.
И то је савршено у реду јер је овај курс је, у ствари,
структурирани на начин где се чак и ако само платите чланарину
за неколико месеци и стварно фокус у
и ви стварно се колико из овог курса као што можете,
ћете, у ствари, бити добро опремљена да се врати
на свет економије, биологије, психологије,
примењене математике, а заправо искористити оно што је на крају
као занимљив курс као што се надамо да концептуално
као што је фундаментално практичан.
А и то је нешто што је можда мало ретко налази.
Мислио сам да бих подијелити неколико Коментари који студенти
од прошле јесени ставите у овом протеклих година Фила водич када је питао
о томе шта желите рећи будуће студенте.
Па, ако већ нисте гледали на ове коментаре,
један студент рекао је овај курс ће се поштено износ
своје време, до.
али, ако ставите ваш рад у читав нови свет, у целини,
ако сте ставили на рад, ако стави у рад, у реду,
тако да је ово његова граматика није моје, Дакле, ако сте ставили, ставили у рад,
читав нови свет ће се отворити до вас.
Невероватно колико сам сазнаје у само 12 недеља.
Још један ученик је написао, боље да се овом
или идете да га жалим.
Друга је написао, још мало искрено, да ће почети дупе
и оставити осећај велике.
И онда на крају, ово је можда нешто могу само да
показују у писаној форми, али, други од дна овде.
[Смех]
Дакле, нисам сигуран да ли имате много пријатеља
који је ово, наравно, али ми врста је много штете
за студенте из прошле године.
Увели смо на почетку, неколико предавања, неколико квизова
пар проблеми скупова, овај појам лолцатс.
Не можете видети шта Ја овде видим
али у тренутку ћете видети млади човек по имену срећан мачке
који је лидер тзв лолцат.
Ово је један од глупо Интернет унапред
да ја искрено мислим дихотомија
између ове две господе овде и шта ми сада имамо
на екрану се можда.
[Смех]
Један од најважнијих неприкладан користи овог позоришта до данас.
И, зашто да не правимо мало реалније мало више лични
овај појам заправо решавања проблем ефикасније.
Једноставан проблем на један дан било које школе је да седне
или устати и почети рачунајући студената,
Право прозивку врста.
Па, већина наивни али ипак,
веома коректан приступ који наставник може да је једна, две,
три, четири, пет, шест, седам,
и ми бисмо овде доста неко време.
Дакле, шта је маргинална побољшања на овом и
да ли можда учинио као дете?
Како се рачунају људи брже?
И, немојте почети читање ван мог упутства?
Шта би сте учинио као дете?
Почетак бројања туос, право, као и тако да сам прилично добар у две,
четири, шест, осам, десет, 12.
Дакле, то је нешто занимљиво право.
Дакле, колико побољшање је да постоји?
Дакле, очигледно је фактор два.
То ми треба дупло више времена.
Али, знате шта, као што ћемо наћи у овом семестру,
велика ствар, као и убрзавању време извршавања је само фактор
два није све да занимљиво
јер је аналогни овде у свету рачунара је
да сам процесор сам рачунар, и пакао,
ако сам само чекати 12 месеци, 18 месеци,
И рачунар ће бити само стању по природи, по броју
од гигахерца сам у да будем у стању
да рачунају људи у ову собу брже.
Дакле, ове врсте, ова врста линеарног спеедупс као фактор
два фактора од три, па чак фактор десет, кога је брига?
У реду, можемо бацити хардвера на проблем.
Ми можемо чекати ствари.
Можемо развијати брже машине.
Али, интелектуално, да која је врста паметан
али то није стварно фундаментално променити
проблем.
Ја сам још увек иде са леве стране на десно, напред ка назад.
То је стварно исти алгоритам.
Али, понуду која можемо да урадимо боље.
Можемо да урадимо паметније од овога 428 00:18:14,654 ---> 00:18:18,104 and do fundamentally a faster implementation. 429 00:18:18,104 ---> 00:18:19,204 But, to demonstrate this, 430 00:18:19,494 ---> 00:18:21,444 we need you to humor us for just a moment. 431 00:18:21,684 ---> 00:18:22,684 And it's at this point 432 00:18:22,684 ---> 00:18:25,164 where it'll be me talking less and you talking more. 433 00:18:25,164 ---> 00:18:27,704 But I do need you to execute step one together, 434 00:18:27,704 ---> 00:18:30,164 which is if you would humor us, please stand up. 435 00:18:31,634 ---> 00:18:34,494 The directions here on the board, you know are, okay, 436 00:18:34,494 ---> 00:18:36,514 a couple of you have to sit down. 437 00:18:37,284 ---> 00:18:41,404 Those of you in back, there we go, alright. 438 00:18:41,804 ---> 00:18:42,824 Thank you. 439 00:18:42,824 ---> 00:18:44,554 So, the program here is before you. 440 00:18:44,554 ---> 00:18:46,814 You are now the computers executing this program. 441 00:18:46,814 ---> 00:18:48,934 It's fairly self explanatory at this point. 442 00:18:48,934 ---> 00:18:50,754 Yes, you should be number one. 443 00:18:51,184 ---> 00:18:53,644 Get it? Right, many of you are probably thinking this already 444 00:18:53,644 ---> 00:18:54,994 anyway, first freshman year. 445 00:18:55,484 ---> 00:18:58,794 So, think to yourself, you're the number one. 446 00:18:58,794 ---> 00:19:01,574 So, step three here, pair off with someone standing, 447 00:19:01,764 ---> 00:19:03,784 add your two numbers together and adopt that sum 448 00:19:03,784 ---> 00:19:05,754 as your new number and we'll do a sanity check. 449 00:19:06,494 ---> 00:19:41,524 [ Noises from crowd ] 450 00:19:42,024 ---> 00:19:47,184 Do you know how many we have? 451 00:19:47,184 ---> 00:19:47,314 >> [Inaudible] 452 00:19:47,314 ---> 00:19:47,464 >> No [inaudible]. 453 00:19:47,784 ---> 00:19:57,014 >> We need to have an answer key. 454 00:19:57,014 ---> 00:19:57,214 [ Silence ] 455 00:19:57,214 ---> 00:19:57,954 >> Yeah. 456 00:19:58,494 ---> 00:20:17,534 [ Noises from crowd ] 457 00:20:18,034 ---> 00:20:20,454 >> David: At this point the algorithm should be 458 00:20:20,454 ---> 00:20:21,724 winding down. 459 00:20:22,494 ---> 00:20:32,544 [ Noises from crowd ] 460 00:20:33,044 ---> 00:20:46,024 Maybe we should have gone with my approach after all. 461 00:20:46,274 ---> 00:20:46,534 >> 43. 462 00:20:47,104 ---> 00:20:49,864 >> 163. 463 00:20:50,814 ---> 00:20:56,274 >> David: Ooh arithmetic in front of 300 plus people. 464 00:20:56,274 ---> 00:20:56,341 [ Laughter ] 465 00:20:56,341 ---> 00:21:00,964 What's our final tally going to be? 466 00:21:00,964 ---> 00:21:01,514 >> 180. 467 00:21:01,514 ---> 00:21:01,581 [ Laughter ] 468 00:21:01,581 ---> 00:21:02,474 >> 1,200. 469 00:21:03,934 ---> 00:21:08,224 >> 386. 470 00:21:09,344 ---> 00:21:14,114 >> David: 386, and are you the last one standing? 471 00:21:14,114 ---> 00:21:16,404 Is that everyone? 472 00:21:16,644 ---> 00:21:17,314 Do you know the answer? 473 00:21:17,314 ---> 00:21:17,524 >> What? 474 00:21:17,954 ---> 00:21:22,794 >> David: Do you know what the answer is? 475 00:21:22,924 ---> 00:21:25,194 We didn't bring an answer key with us so, 476 00:21:26,114 ---> 00:21:31,034 386 is in fact precisely the right answer for the first time. 477 00:21:31,517 ---> 00:21:33,517 [ Cheering ] 478 00:21:34,000 ---> 00:21:36,000 [Аплауз] 479 00:21:36,484 ---> 00:21:37,024 That's okay. 480 00:21:37,024 ---> 00:21:37,091 [Аплауз] 481 00:21:37,091 ---> 00:21:39,154 Very, very nicely done. 482 00:21:39,154 ---> 00:21:40,734 So, what was the takeaway 483 00:21:40,734 ---> 00:21:42,554 because that definitely felt a little slower 484 00:21:42,554 ---> 00:21:43,584 than my very simple 485 00:21:43,584 ---> 00:21:46,204 but nonetheless very correct approach of just going onesies 486 00:21:46,204 ---> 00:21:48,784 and twosies and just getting it done with from left to right. 487 00:21:49,104 ---> 00:21:50,664 But, what did we really just do there? 488 00:21:50,664 ---> 00:21:53,454 Well, if there were roughly, let's say, 400 of you standing 489 00:21:53,454 ---> 00:21:56,184 at one point, and then half of you, very quickly, 490 00:21:56,184 ---> 00:21:57,784 from what I could tell, wanted to sit down. 491 00:21:57,784 ---> 00:22:01,554 So, half of you sat down, we went from 400 to 200 then 492 00:22:01,554 ---> 00:22:05,154 to 100 then to 50 then to 25. 493 00:22:05,374 ---> 00:22:07,784 So again, there's that same divide 494 00:22:07,784 ---> 00:22:09,864 and conquer idea we had with the phonebook. 495 00:22:09,864 ---> 00:22:13,044 Again, with every iteration we halved the size of the problem, 496 00:22:13,044 ---> 00:22:14,104 we halved it, we halved it. 497 00:22:14,344 ---> 00:22:17,594 So, in theory, your algorithm should've been much faster 498 00:22:17,774 ---> 00:22:20,744 than my linear approach because my approach would've taken say 499 00:22:20,844 ---> 00:22:24,764 400 steps or maybe if I'm slightly clever 200 steps. 500 00:22:25,024 ---> 00:22:28,644 But, yours would've taken far fewer, right from 400 to 200, 501 00:22:28,644 ---> 00:22:34,634 100, 50, 25, 13, six; so fewer than ten steps 502 00:22:34,634 ---> 00:22:36,854 in the end versus my 200 or 400. 503 00:22:36,854 ---> 00:22:39,984 And there's the germ of a really interesting idea. 504 00:22:39,984 ---> 00:22:42,954 And yes, mathematically what you just did was something that's a 505 00:22:42,954 ---> 00:22:45,714 little logarithmic in nature by log base two, 506 00:22:45,714 ---> 00:22:47,194 we divided in two and two again. 507 00:22:47,194 ---> 00:22:48,974 And we'll revisit this later in this semester. 508 00:22:49,174 ---> 00:22:51,994 But therein lies again a very intelligent implementation. 509 00:22:51,994 ---> 00:22:53,664 And, we are just scratching the surface 510 00:22:53,664 ---> 00:22:57,744 of the very clever the very intelligent efficient approaches 511 00:22:58,064 ---> 00:23:00,164 to problems that we might ultimately solve. 512 00:23:00,484 ---> 00:23:04,494 So, who are the people you just chatted with if briefly? 513 00:23:04,494 ---> 00:23:07,674 A common concern in a course like this is that everyone 514 00:23:07,674 ---> 00:23:09,404 to the left of you and everyone to the right 515 00:23:09,404 ---> 00:23:12,014 of you must clearly know more than you. 516 00:23:12,014 ---> 00:23:13,604 Well, that's absolutely not the case. 517 00:23:13,604 ---> 00:23:14,744 And in fact, in recent years, 518 00:23:14,774 ---> 00:23:16,754 this course has made a concerted effort to reach 519 00:23:16,754 ---> 00:23:19,454 out to those less comfortable, so to speak. 520 00:23:19,634 ---> 00:23:22,174 And by that, we mean not people who've never touched a computer 521 00:23:22,174 ---> 00:23:24,074 before because that's really hard to find 522 00:23:24,074 ---> 00:23:26,504 around here these days, but folks who use email, 523 00:23:26,504 ---> 00:23:28,314 use Facebook, maybe even right now 524 00:23:28,314 ---> 00:23:31,644 but are not necessarily quite sure what to do 525 00:23:31,644 ---> 00:23:34,314 when something goes wrong or when they are asked 526 00:23:34,314 ---> 00:23:37,594 about anything technological, you know, the hands go up 527 00:23:37,714 ---> 00:23:39,144 or they kind of push the hardware 528 00:23:39,144 ---> 00:23:42,384 to a friend who's perhaps more versed in it than they. 529 00:23:42,384 ---> 00:23:45,794 Well, these are some statistics from last year's semester. 530 00:23:45,794 ---> 00:23:49,494 So, when asked, when we asked our 400 so students last year, 531 00:23:49,874 ---> 00:23:52,424 you know, what is your level of comfort coming into this class, 532 00:23:52,424 ---> 00:23:56,784 well 34% wrote themselves down as among those less comfortable. 533 00:23:56,784 ---> 00:23:59,654 So, if you have come into this room and are still thinking now, 534 00:23:59,904 ---> 00:24:02,554 that, you know what, this term less comfortable describes me, 535 00:24:02,804 ---> 00:24:04,994 know that you are in very good company. 536 00:24:04,994 ---> 00:24:06,994 But, realize too that, if you're coming in this course 537 00:24:06,994 ---> 00:24:10,254 with a background in computer science and you were really 538 00:24:10,254 ---> 00:24:13,194 that geek in middle school and high school who was writing code 539 00:24:13,194 ---> 00:24:15,314 and teaching yourselves languages, well that's fine too 540 00:24:15,314 ---> 00:24:17,884 because there's definitely a nontrivial sized audience 541 00:24:17,884 ---> 00:24:20,954 with that background as well, about 13%, last term. 542 00:24:21,104 ---> 00:24:23,144 And then, there's everybody else, sort of someone 543 00:24:23,144 ---> 00:24:24,784 who doesn't think they're less comfortable, 544 00:24:24,784 ---> 00:24:26,894 they definitely don't think they're more comfortable 545 00:24:26,894 ---> 00:24:29,364 but they're just in a course to get something out of it. 546 00:24:29,364 ---> 00:24:32,034 So, realize this course does draw quite the spectrum 547 00:24:32,034 ---> 00:24:32,584 of students. 548 00:24:32,714 ---> 00:24:36,034 And, to put this in more concrete terms, 71% of students, 549 00:24:36,034 ---> 00:24:38,514 last year, had zero courses behind them. 550 00:24:38,804 ---> 00:24:40,754 So, if you're entering this course thinking oh everyone 551 00:24:40,754 ---> 00:24:43,334 who takes CS50 was a computer science whiz 552 00:24:43,334 ---> 00:24:44,794 in high school, it's not the case. 553 00:24:44,934 ---> 00:24:47,554 Most people are presumably just interested in it. 554 00:24:47,554 ---> 00:24:50,094 And a few, yes, absolutely have taken some courses, some, 555 00:24:50,354 ---> 00:24:53,174 or at least one person last year had taken five 556 00:24:53,174 ---> 00:24:54,334 courses previously. 557 00:24:54,594 ---> 00:24:56,634 So, we definitely have some outliers but again the meat 558 00:24:56,634 ---> 00:24:59,674 of the curve is in those lower values altogether. 559 00:24:59,874 ---> 00:25:01,794 And another interesting statistic we shared 560 00:25:01,794 ---> 00:25:03,864 over the past couple of years is the gender ratio. 561 00:25:03,864 ---> 00:25:06,434 So, historically, at least in computer science, there is a bit 562 00:25:06,434 ---> 00:25:07,954 of a male female skew. 563 00:25:07,954 ---> 00:25:10,924 I couple of years ago it was much more marked than last year. 564 00:25:10,924 ---> 00:25:12,904 So, we're almost now at the %40 level. 565 00:25:12,904 ---> 00:25:15,994 And if I can throw down a gauntlet just for the sake 566 00:25:15,994 ---> 00:25:18,034 of having a third pie chart next year, 567 00:25:18,034 ---> 00:25:19,364 that's even more equitable. 568 00:25:19,534 ---> 00:25:22,014 I would point out that there's absolutely no reason 569 00:25:22,014 ---> 00:25:24,134 from the courses perspective that males 570 00:25:24,134 ---> 00:25:25,474 and females shouldn't be enrolling 571 00:25:25,474 ---> 00:25:26,284 in this kind of course. 572 00:25:26,534 ---> 00:25:29,714 In relatively equal numbers and realize to 38 percent, 573 00:25:29,744 ---> 00:25:32,464 48 percent, we're actually quite pleased to see that we're almost 574 00:25:32,464 ---> 00:25:37,014 at that, at least, statistically even value of 50%. 575 00:25:37,054 ---> 00:25:39,104 So, if you are, in fact, female, do rest assure too 576 00:25:39,104 ---> 00:25:41,804 that this is not, in fact, a male dominated class. 577 00:25:42,314 ---> 00:25:46,324 Well, this just so happens to be CS50's 20th birthday. 578 00:25:46,574 ---> 00:25:48,234 I, well thank you. 579 00:25:48,584 ---> 00:25:50,584 [ Cheering ] 580 00:25:50,934 ---> 00:25:52,934 [Аплауз] 581 00:25:53,284 ---> 00:25:55,554 That's very nice of you because we brought cake 582 00:25:55,554 ---> 00:25:56,434 for you actually. 583 00:25:56,634 ---> 00:25:58,324 And so, when you exit here later today, 584 00:25:58,464 ---> 00:26:01,024 you'll actually get a chance to meet many 585 00:26:01,024 ---> 00:26:03,164 of the courses teaching fellows who'll be lingering 586 00:26:03,164 ---> 00:26:03,784 in the hallway. 587 00:26:03,784 ---> 00:26:06,924 And yes it'll be a nice sort of incentivized way 588 00:26:06,924 ---> 00:26:08,064 of meeting the teaching fellows. 589 00:26:08,284 ---> 00:26:11,354 But, we do take a trip up to a little bakery 590 00:26:11,354 ---> 00:26:14,434 and again consistent with the course is playful nature while 591 00:26:14,434 ---> 00:26:16,984 nonetheless is expecting nontrivial amount 592 00:26:16,984 ---> 00:26:18,714 of work while we're having that fun. 593 00:26:18,864 ---> 00:26:20,364 But, we do have one of these cakes for you. 594 00:26:20,364 ---> 00:26:20,431 [ Laughter ] 595 00:26:20,431 ---> 00:26:23,604 So, if you're laughing that's actually good because even 596 00:26:23,604 ---> 00:26:25,474 if you're among one of those less comfortable 597 00:26:25,474 ---> 00:26:26,754 at least you're aware of it. 598 00:26:27,244 ---> 00:26:31,184 Those of you in the 14 percent might prefer this flavor. 599 00:26:31,184 ---> 00:26:31,334 [ Laughter ] 600 00:26:31,334 ---> 00:26:35,354 And then, if you don't know what the hell is going on right now, 601 00:26:35,354 ---> 00:26:43,384 we also have this for the rest of you. 602 00:26:43,384 ---> 00:26:43,451 [ Cheering ] 603 00:26:43,451 ---> 00:26:43,518 [Аплауз] 604 00:26:43,518 ---> 00:26:47,584 So, those are being chopped up into pieces outside as we speak. 605 00:26:47,584 ---> 00:26:49,614 So again, let's take things up a notch 606 00:26:49,614 ---> 00:26:52,514 and at least introduce some basic tenant 607 00:26:52,514 ---> 00:26:53,664 that we'll then take for granted 608 00:26:53,664 ---> 00:26:55,154 in the remaining of this semester. 609 00:26:55,154 ---> 00:26:58,524 So, we all probably know that computers ultimately boil 610 00:26:58,524 ---> 00:27:01,984 down somehow to zeros and ones, these things called bits. 611 00:27:01,984 ---> 00:27:02,694 What does that mean? 612 00:27:02,834 ---> 00:27:04,664 Well you can think of it frankly as a light bulb, 613 00:27:04,664 ---> 00:27:07,254 a bit is a light bulb that's either on or it's off. 614 00:27:07,254 ---> 00:27:09,484 It's a switch, it's either on or it's off. 615 00:27:09,484 ---> 00:27:11,564 Now, computer scientists generally think of off 616 00:27:11,564 ---> 00:27:13,884 as the number zero arbitrarily and the, 617 00:27:13,884 ---> 00:27:15,974 and the notion of on as one. 618 00:27:16,274 ---> 00:27:17,654 So, if you throw a light switch 619 00:27:17,654 ---> 00:27:20,234 on that's one turn it off that's a zero. 620 00:27:20,444 ---> 00:27:23,034 Or, equivalently, turn the light on that's the value 621 00:27:23,034 ---> 00:27:25,554 of true turn it off that's the value of false. 622 00:27:25,554 ---> 00:27:26,514 So, these are just synonyms. 623 00:27:26,724 ---> 00:27:30,984 At the end of the day, yes, all computation, all stuff that goes 624 00:27:30,984 ---> 00:27:33,984 on underneath the hood in a computer does ultimately boil 625 00:27:33,984 ---> 00:27:35,154 down to zeros and ones. 626 00:27:35,154 ---> 00:27:36,254 And, when you stop to think about it, 627 00:27:36,454 ---> 00:27:38,904 it's pretty dam remarkable what the world has done 628 00:27:39,114 ---> 00:27:41,034 with these basic building blocks including some 629 00:27:41,034 ---> 00:27:42,674 of the devices you're holding in your hand. 630 00:27:42,864 ---> 00:27:44,894 Well, why are zeros and ones useful? 631 00:27:44,894 ---> 00:27:46,314 My God, even in the real world we 632 00:27:46,314 ---> 00:27:48,474 at least have ten digits, zero through nine. 633 00:27:48,734 ---> 00:27:49,724 Why so limited? 634 00:27:49,904 ---> 00:27:51,954 Well in hardware terms it's very easy. 635 00:27:51,954 ---> 00:27:54,204 It's much easier to represent two states, right. 636 00:27:54,204 ---> 00:27:56,704 If computers are plugged into the wall, usually, 637 00:27:56,914 ---> 00:28:00,304 you have this easy source of binary nature. 638 00:28:00,304 ---> 00:28:01,284 It's either on or off. 639 00:28:01,284 ---> 00:28:03,194 Electricity is flowing or it's not. 640 00:28:03,374 ---> 00:28:05,224 So, that's kind of one of the initial reasons 641 00:28:05,224 ---> 00:28:07,414 that the world went with just zeros and ones in computers. 642 00:28:07,414 ---> 00:28:09,174 But, you can use them as building blocks. 643 00:28:09,454 ---> 00:28:12,304 So, this actually is a little small on the screen here 644 00:28:12,524 ---> 00:28:15,644 but we can count in binary or we can represent anything we want 645 00:28:15,644 ---> 00:28:18,704 in binary just as we can, say, decimal, just as we can, 646 00:28:18,704 ---> 00:28:20,354 even in fact, with alphabetical letters. 647 00:28:20,514 ---> 00:28:21,884 And so, here's the quick system. 648 00:28:21,884 ---> 00:28:24,964 In just a couple minutes time you'll now know how to count, 649 00:28:24,964 ---> 00:28:27,484 how to write, how to speak binary much 650 00:28:27,484 ---> 00:28:28,654 like your own laptop. 651 00:28:28,654 ---> 00:28:31,724 Well, you have, in the world of binary, sort of just 652 00:28:31,724 ---> 00:28:34,344 like grade school columns or values. 653 00:28:34,344 ---> 00:28:36,954 So, in grade school we learn this is the ones column this is 654 00:28:36,954 ---> 00:28:39,464 the tens column, the hundreds column and so forth. 655 00:28:39,674 ---> 00:28:42,084 In other words, why is the number we know 656 00:28:42,324 ---> 00:28:46,344 as 123 the number 123? 657 00:28:46,344 ---> 00:28:48,364 Well, my teacher taught me this is the ones column, 658 00:28:48,364 ---> 00:28:50,694 this was the tens, this was the hundreds. 659 00:28:50,914 ---> 00:28:51,884 Well what did that mean? 660 00:28:51,884 ---> 00:28:54,064 Well, to figure out what the total value is 661 00:28:54,064 ---> 00:28:56,594 of what is otherwise the string of digits, 662 00:28:56,594 ---> 00:28:57,884 just hash marks on the board. 663 00:28:58,214 ---> 00:29:02,024 Well, we have one 100, so that's 1 times 100 664 00:29:02,264 ---> 00:29:03,934 and then plus what two 10's 665 00:29:03,974 ---> 00:29:09,434 so that's 2 times 10 plus three ones, so that's 3 times 1, okay, 666 00:29:09,774 ---> 00:29:11,694 so I seem to have gotten back to where I started. 667 00:29:11,784 ---> 00:29:16,124 But, this very simple process of just multiplying the digits 668 00:29:16,354 ---> 00:29:19,344 by the value of the column is exactly what binary is 669 00:29:19,344 ---> 00:29:19,864 all about. 670 00:29:19,864 ---> 00:29:22,984 But, in binary you use powers of two not powers of ten. 671 00:29:23,224 ---> 00:29:25,194 So, here's a series of eight light bulbs. 672 00:29:25,474 ---> 00:29:29,064 Computer scientists like to use values like two and eight and 16 673 00:29:29,064 ---> 00:29:32,824 and 24 and 32 because they're all generally convenient values 674 00:29:32,824 ---> 00:29:33,164 to use. 675 00:29:33,404 ---> 00:29:35,074 So, when we talk about eight values 676 00:29:35,074 ---> 00:29:36,664 in sequence this is like called the byte. 677 00:29:37,084 ---> 00:29:39,424 And these days we rarely talk in just bytes, 678 00:29:39,424 ---> 00:29:42,554 we talk megabytes gigabytes and terabytes these days. 679 00:29:42,584 ---> 00:29:44,104 But it's all ultimately the same thing. 680 00:29:44,324 ---> 00:29:48,714 Here's eight bits AKA one byte, just simple jargon. 681 00:29:49,034 ---> 00:29:50,604 So, all of these light bulbs are off. 682 00:29:50,604 ---> 00:29:52,544 So, the math is actually really easy. 683 00:29:52,544 ---> 00:29:54,624 So there on the right, though it's small to see, 684 00:29:54,624 ---> 00:29:56,944 is the one's column, the twos, the fours, the eights, 685 00:29:57,004 ---> 00:29:59,664 the 16s, 32s, 64s, 128s. 686 00:29:59,934 ---> 00:30:01,644 Alright, maybe it's hard to memorize at first 687 00:30:01,644 ---> 00:30:03,784 but it's just multiplied by two from right to left. 688 00:30:03,784 ---> 00:30:05,044 So, you can always recreate this. 689 00:30:05,284 ---> 00:30:08,824 Well, they're all off so that's 0 times placeholder, 690 00:30:08,824 ---> 00:30:10,014 0 times placeholder. 691 00:30:10,184 ---> 00:30:13,804 So, this is the number 0 represented in binary. 692 00:30:13,804 ---> 00:30:16,244 In other words, how do you write the number we know 693 00:30:16,244 ---> 00:30:17,734 as 0 in binary? 694 00:30:18,034 ---> 00:30:22,514 Well, one, two, three, four, five, six, seven, eight, 695 00:30:22,784 ---> 00:30:24,304 and technically just like in decimal, 696 00:30:24,534 ---> 00:30:27,384 all of these leading zeros, they don't add anything 697 00:30:27,444 ---> 00:30:29,394 to the formula they're just there 698 00:30:29,394 ---> 00:30:31,304 because we arbitrarily decided we want eight 699 00:30:31,304 ---> 00:30:32,324 of these things in a row, right. 700 00:30:32,324 ---> 00:30:33,624 If they're physical objects, we have eight 701 00:30:33,624 ---> 00:30:34,764 so they've got to all be off. 702 00:30:34,764 ---> 00:30:36,524 So, we could've just gotten away with one zero. 703 00:30:36,814 ---> 00:30:38,324 Well how do you represent the number one? 704 00:30:38,594 ---> 00:30:40,794 Well, instinctively you're going to throw one of the switches. 705 00:30:40,794 ---> 00:30:41,894 You're going to turn a bulb on. 706 00:30:42,134 ---> 00:30:44,934 So, there is the number one because we now put a one, 707 00:30:45,294 ---> 00:30:48,054 a light bulb that's on, in the one's position. 708 00:30:48,234 ---> 00:30:49,474 How are we going to represent two? 709 00:30:49,474 ---> 00:30:52,354 Well, we're actually going to throw two switches now at least 710 00:30:52,354 ---> 00:30:53,794 versus this state, we have to turn 711 00:30:53,794 ---> 00:30:56,004 on the two's column turn off the ones column 712 00:30:56,284 ---> 00:30:59,644 and now we have the value of one in the twos column. 713 00:30:59,644 ---> 00:31:01,384 So, that's the total value of two. 714 00:31:01,704 ---> 00:31:04,034 Now, a quick mental exercise; what's going to happen 715 00:31:04,034 ---> 00:31:05,024 with the next sequence? 716 00:31:05,024 ---> 00:31:06,524 How do I present the number three? 717 00:31:06,824 ---> 00:31:08,364 Well, I need one from the twos column, 718 00:31:08,364 ---> 00:31:10,324 one from the threes column and ah ha. 719 00:31:10,324 ---> 00:31:11,964 So, now I've incremented that one. 720 00:31:12,174 ---> 00:31:13,824 And now, this same basic pattern repeats. 721 00:31:13,824 ---> 00:31:14,774 What's the number four? 722 00:31:14,874 ---> 00:31:17,014 Well let's see, I just need a one in the fours column 723 00:31:17,014 ---> 00:31:18,864 and then zeros in the twos and ones. 724 00:31:19,234 ---> 00:31:21,134 So then, it continues that way. 725 00:31:21,134 ---> 00:31:22,524 And, it's just this sequence of steps. 726 00:31:22,714 ---> 00:31:25,864 And in the notion of binary is really not all that complicated. 727 00:31:25,864 ---> 00:31:27,484 At the top there we have eight zeros. 728 00:31:27,854 ---> 00:31:29,874 Below that we have seven zeros and a one. 729 00:31:30,114 ---> 00:31:32,214 Below that we have six zeros, a one, 730 00:31:32,494 ---> 00:31:34,204 and a zero and that's binary. 731 00:31:34,454 ---> 00:31:38,164 Now, thankfully, we computer scientists, we programmers 732 00:31:38,164 ---> 00:31:41,674 by terms end are not going to often be writing in binary, 733 00:31:41,674 ---> 00:31:43,694 talking in binary, thinking in binary 734 00:31:43,894 ---> 00:31:47,204 because we've built many layers of the traction on top of that. 735 00:31:47,204 ---> 00:31:49,434 In fact, people rarely talk about bits except 736 00:31:49,434 ---> 00:31:51,344 in a networking context they talk about bytes 737 00:31:51,404 ---> 00:31:53,144 because one bit, not that useful, 738 00:31:53,354 ---> 00:31:55,444 eight bits these days still not that useful, 739 00:31:55,444 ---> 00:31:56,484 but at least eight bits, 740 00:31:56,484 ---> 00:31:59,914 one byte is at least getting us toward more useful units 741 00:31:59,914 ---> 00:32:00,484 of measure. 742 00:32:00,764 ---> 00:32:02,734 But, when we start looking underneath the hood, 743 00:32:02,814 ---> 00:32:05,324 when we do certain problems such as look at files 744 00:32:05,324 ---> 00:32:06,764 and look perhaps at network traffic, 745 00:32:07,014 ---> 00:32:08,304 it will become interesting 746 00:32:08,304 ---> 00:32:10,844 to know how you're representing data because you're going 747 00:32:10,844 ---> 00:32:13,774 to have to figure out how to display that same information. 748 00:32:13,774 ---> 00:32:16,954 And, in fact, we, if we only have zeros and ones, 749 00:32:17,164 ---> 00:32:21,744 how do we go about representing, say alphabetical letters? 750 00:32:21,744 ---> 00:32:23,994 Well, we're going to have to have some mapping 751 00:32:24,104 ---> 00:32:25,774 between binary and letters. 752 00:32:25,824 ---> 00:32:27,564 But that's as of yet unclear. 753 00:32:27,564 ---> 00:32:30,464 But to hammer this point home and to give me a break 754 00:32:30,464 ---> 00:32:33,614 from speaking at, I thought I'd pause for a moment and see 755 00:32:33,614 ---> 00:32:35,774 if we can't recruit eight volunteers, 756 00:32:36,134 ---> 00:32:37,344 one byte eight people. 757 00:32:37,674 ---> 00:32:41,224 Can I get eight people for whom it is not too awkward 758 00:32:41,224 ---> 00:32:41,754 to come on up. 759 00:32:41,804 ---> 00:32:45,384 good, good one, two, three, four, five, six, seven, 760 00:32:45,384 ---> 00:32:48,464 eight very enthusiastic eight, come on down. 761 00:32:49,024 ---> 00:32:51,584 So, you all, for just a moment here, oh and you have 762 00:32:51,644 ---> 00:32:53,914 to be willing to not be on the internet because there is 763 00:32:53,914 ---> 00:32:55,294 in fact a camera in the back of this room. 764 00:32:55,634 ---> 00:32:58,114 So, turn back now if you don't want to be on the, 765 00:32:58,374 ---> 00:33:00,314 hello mom, in perpetuity. 766 00:33:01,134 ---> 00:33:05,084 So, let's see, you here will be the 128th column. 767 00:33:05,344 ---> 00:33:08,504 And let me ask that you simply hold this before you. 768 00:33:08,504 ---> 00:33:10,124 And actually, if you could scooch this way just a little 769 00:33:10,124 ---> 00:33:12,484 bit, then I will get out of your way. 770 00:33:12,484 ---> 00:33:14,174 You'll be the 64's column, 771 00:33:15,074 ---> 00:33:18,164 you shall be the 32's column and the 16's. 772 00:33:18,424 ---> 00:33:25,444 32's, 16s, 8's, 4's, 2's and 1's. 773 00:33:25,444 ---> 00:33:26,134 All right. 774 00:33:26,134 ---> 00:33:28,414 So perfectly lined up with the place holders from before, 775 00:33:28,574 ---> 00:33:30,614 but we need a little bit of mapping, so a quick set up. 776 00:33:30,844 ---> 00:33:34,754 We just need an arbitrary way of mapping binary numbers, 777 00:33:34,754 ---> 00:33:37,314 which really could be converted very easily to decimal numbers. 778 00:33:37,314 ---> 00:33:39,734 So we need a way of converting numbers to letters 779 00:33:39,804 ---> 00:33:42,524 if our computers are actually going to show us emails 780 00:33:42,794 ---> 00:33:46,604 or type URL's or actually display non numeric information. 781 00:33:46,764 ---> 00:33:49,934 And, in fact, there is a system for that, it's called ASCII, 782 00:33:50,204 ---> 00:33:53,044 an acronym whose meaning is not 783 00:33:53,044 ---> 00:33:56,354 so interesting, but whose utility is. 784 00:33:56,554 ---> 00:33:58,984 This is just a mapping from letters to numbers 785 00:33:58,984 ---> 00:34:00,984 and there's actually a lot more numbers on the screen, 786 00:34:00,984 ---> 00:34:02,484 and you guys, don't worry, aren't going to have 787 00:34:02,524 ---> 00:34:04,174 to test yourselves with this in just a moment. 788 00:34:04,424 ---> 00:34:06,324 But there's a mapping between numbers and letters 789 00:34:06,324 ---> 00:34:07,884 and I'm just going to get us started by pointing 790 00:34:07,884 ---> 00:34:08,664 out a couple of these. 791 00:34:08,954 ---> 00:34:12,284 The numbers of interest right now are going to be, 792 00:34:12,284 ---> 00:34:14,084 whoops, are going to be this. 793 00:34:14,854 ---> 00:34:17,434 Whoops. So in this column here, I can't seem to zoom 794 00:34:17,434 ---> 00:34:19,124 in simultaneously, we have decimal. 795 00:34:19,194 ---> 00:34:19,964 Dec for decimal. 796 00:34:20,134 ---> 00:34:22,384 And then we have the character on the right hand side. 797 00:34:22,614 ---> 00:34:25,084 So if I hop over into this column, thought it's a bit small 798 00:34:25,084 ---> 00:34:28,834 on the screen, the number 65 represents what letter? 799 00:34:30,024 ---> 00:34:32,484 Capital A. And the number 97? 800 00:34:33,134 ---> 00:34:35,714 Lowercase A. All right. 801 00:34:35,714 ---> 00:34:38,644 So those two alone, right, so do not go home and try 802 00:34:38,644 ---> 00:34:39,854 to remember ASCII chart. 803 00:34:39,854 ---> 00:34:42,164 Come quiz time, do not try memorizing an ASCII chart. 804 00:34:42,374 ---> 00:34:45,864 Memorize two, 65 is capital A and 97 is lowercase A. 805 00:34:46,044 ---> 00:34:47,884 And from there you can bootstrap yourself to all 806 00:34:47,884 ---> 00:34:49,184 of the other alphabetical characters. 807 00:34:49,404 ---> 00:34:51,534 But all this chart says, and I just downloaded this chart 808 00:34:51,534 ---> 00:34:54,084 from ASCIItable.com, this is a standard that's been 809 00:34:54,084 ---> 00:34:55,544 around for many, many, many years, 810 00:34:55,684 ---> 00:34:57,224 but most computers still use it. 811 00:34:57,394 ---> 00:34:58,784 What we now have is a means 812 00:34:58,784 ---> 00:35:02,194 of encoding alphabetical information using what's 813 00:35:02,194 ---> 00:35:03,184 ultimately numeric. 814 00:35:03,184 ---> 00:35:05,814 So if these guys are just switches, light bulbs, 815 00:35:06,064 ---> 00:35:08,614 computers, we can actually convey messages. 816 00:35:08,904 ---> 00:35:10,974 So each of you has some hints on the back. 817 00:35:11,364 ---> 00:35:13,574 We're going to have three rounds here where these guys are going 818 00:35:13,574 ---> 00:35:15,884 to spell out in English, in ASCII, 819 00:35:16,104 ---> 00:35:18,014 a very short message, a three letter word. 820 00:35:18,754 ---> 00:35:21,364 It will involve them either raising their hand, 821 00:35:21,364 ---> 00:35:24,274 thereby representing a one or just standing there awkwardly, 822 00:35:24,274 ---> 00:35:25,994 thereby representing a zero. 823 00:35:26,484 ---> 00:35:28,754 So why don't we proceed immediately with round one 824 00:35:28,904 ---> 00:35:31,014 and you can either raise or not raise your hands. 825 00:35:31,704 ---> 00:35:35,064 So the audience doesn't get off the hook. 826 00:35:35,104 ---> 00:35:37,964 What number are they currently representing? 827 00:35:39,174 ---> 00:35:39,954 66. Right. 828 00:35:39,954 ---> 00:35:42,864 Not hard because we have a one, a hand up in the 64s column, 829 00:35:42,864 ---> 00:35:44,214 a hand up in the 2's column. 830 00:35:44,214 ---> 00:35:47,094 64 times one plus two times one is 66. 831 00:35:47,124 ---> 00:35:48,254 They're representing the number 6, 832 00:35:48,254 ---> 00:35:52,264 which means the first letter is B. So not too bad, right? 833 00:35:52,674 ---> 00:35:53,234 Round two. 834 00:35:53,314 ---> 00:35:56,654 First letter was a B. 835 00:35:56,654 ---> 00:35:56,824 [ Laughter ] 836 00:35:56,824 ---> 00:36:01,104 >> Seventy Nine. 837 00:36:02,454 ---> 00:36:04,374 >> David: Can someone second that? 838 00:36:04,374 ---> 00:36:04,924 Yes. All right. 839 00:36:04,924 ---> 00:36:10,084 So 79, which means it's now an O. So B,O. 840 00:36:10,084 ---> 00:36:10,984 There's a third letter. 841 00:36:10,984 ---> 00:36:13,284 Actually that is kind of, yeah. 842 00:36:14,114 ---> 00:36:14,644 Third round. 843 00:36:14,834 ---> 00:36:15,724 Third and final round. 844 00:36:15,864 ---> 00:36:19,594 What number is this? 845 00:36:22,244 ---> 00:36:23,374 I heard an 87. 846 00:36:23,674 ---> 00:36:24,394 Someone else agree? 847 00:36:25,434 ---> 00:36:25,924 All right, yeah. 848 00:36:26,134 ---> 00:36:27,764 This is in fact 87, which maps to, 849 00:36:27,764 ---> 00:36:30,984 and this is a very clever set up at 850 00:36:30,984 ---> 00:36:34,184 which point you all B, O, W, it's bow. 851 00:36:34,384 ---> 00:36:34,834 Very good. 852 00:36:35,104 ---> 00:36:37,194 So actually besides that little souvenir, 853 00:36:38,784 ---> 00:36:40,794 that was not a very enthusiastic applause, 854 00:36:40,794 ---> 00:36:42,004 so I'll take care of you. 855 00:36:42,254 ---> 00:36:44,074 So we do have a little something for these guys here now 856 00:36:44,074 ---> 00:36:44,764 that they just appeared 857 00:36:44,764 ---> 00:36:47,424 on center stage doing perhaps the geekiest thing they could. 858 00:36:47,914 ---> 00:36:49,894 So maybe if we could humor them if only 859 00:36:49,894 ---> 00:36:51,364 because I'm feeling a little bit awkward now. 860 00:36:51,364 ---> 00:36:52,954 A little round of applause for these guys here. 861 00:36:53,494 ---> 00:36:59,624 [Аплауз] 862 00:37:00,124 ---> 00:37:00,764 All yours. 863 00:37:00,764 ---> 00:37:01,124 All right. 864 00:37:01,284 ---> 00:37:02,314 Thank you very much. 865 00:37:02,364 ---> 00:37:08,554 So, so, it turns out that we can take this one step further, 866 00:37:08,764 ---> 00:37:11,624 but you are now entering a community of people 867 00:37:11,794 ---> 00:37:13,954 who understand things like this. 868 00:37:14,494 ---> 00:37:23,164 [ Silence ] 869 00:37:23,664 ---> 00:37:25,344 It's slowly spreading, yes? 870 00:37:25,479 ---> 00:37:27,479 [ Laughter ] 871 00:37:27,614 ---> 00:37:29,274 It's not cool that you understand this now. 872 00:37:29,714 ---> 00:37:31,944 So we've already done some damage here today, but yes, 873 00:37:32,394 ---> 00:37:34,354 there is now such a thing as geek humor 874 00:37:34,354 ---> 00:37:36,864 that you might just catch a little bit more on to. 875 00:37:36,864 ---> 00:37:38,944 So what are we going to do throughout this semester? 876 00:37:39,154 ---> 00:37:44,044 So there's 12 weeks, zero index, so 13 weeks in total. 877 00:37:44,044 ---> 00:37:45,354 You'll find throughout the semester 878 00:37:45,354 ---> 00:37:48,244 that computer scientists tend to count starting from zero 879 00:37:48,244 ---> 00:37:49,964 for reasons that will soon become clear. 880 00:37:50,174 ---> 00:37:52,434 But what we're going to do this week, starting this Friday, 881 00:37:52,434 ---> 00:37:54,304 is introduce you to programming. 882 00:37:54,304 ---> 00:37:56,954 Now you may already be coming at this course with a background 883 00:37:56,954 ---> 00:37:58,644 in the same, and that's perfectly fine, 884 00:37:58,644 ---> 00:37:59,714 but we'll also be able 885 00:37:59,714 ---> 00:38:01,844 to introduce some more sophisticated topics 886 00:38:01,844 ---> 00:38:03,804 than are typically covered, things like events 887 00:38:03,804 ---> 00:38:05,774 and threading, so just to toss out a couple 888 00:38:05,774 ---> 00:38:07,264 of buzz words for those unfamiliar. 889 00:38:07,404 ---> 00:38:09,494 But what we're going to do is not dive 890 00:38:09,494 ---> 00:38:12,764 into what the typically traditional language like Java 891 00:38:12,764 ---> 00:38:17,084 or C++ or C sharp catch phrases that you might have heard 892 00:38:17,084 ---> 00:38:19,444 in the past, but we're going to use a programming environment, 893 00:38:19,444 ---> 00:38:21,034 a graphical programming environment 894 00:38:21,034 ---> 00:38:23,934 that was actually developed by MIT's media lab. 895 00:38:23,934 ---> 00:38:26,354 And this is an environment that allows you to program, 896 00:38:26,354 ---> 00:38:30,024 quite literally, by dragging and dropping puzzle pieces 897 00:38:30,024 ---> 00:38:31,444 that fit together logically 898 00:38:31,444 ---> 00:38:33,634 that lets you implement these things called loops 899 00:38:33,634 ---> 00:38:35,494 and conditions and Boolean expressions 900 00:38:35,734 ---> 00:38:38,664 and you can actually, on day one, after this Friday, 901 00:38:38,884 ---> 00:38:40,834 write a program that actually some 902 00:38:40,834 ---> 00:38:42,394 of your friends might care about. 903 00:38:42,484 ---> 00:38:43,604 So in yester year, say 904 00:38:43,604 ---> 00:38:46,674 when you've taken a computer science course in high school, 905 00:38:46,874 ---> 00:38:49,504 odds are one of your first programs was the equivalent 906 00:38:49,504 ---> 00:38:51,704 of hello world, like wow mom, 907 00:38:51,704 ---> 00:38:54,864 I just made the computer type some characters on the screen. 908 00:38:54,864 ---> 00:38:56,984 It's a very underwhelming experience. 909 00:38:57,294 ---> 00:39:00,824 Much more interesting is it to implement a little something 910 00:39:00,824 ---> 00:39:04,114 like this, as one of last year's students did. 911 00:39:04,644 ---> 00:39:07,114 So I give you the work of a former classmate. 912 00:39:07,434 ---> 00:39:10,954 It's a love story, of sorts, about dancing cookies. 913 00:39:11,494 ---> 00:40:25,544 [Музика] 914 00:40:26,044 ---> 00:40:27,684 So this was actually from a student 915 00:40:27,714 ---> 00:40:29,004 who had never programmed before. 916 00:40:29,004 ---> 00:40:30,854 And just to give you a teaser of this interface, 917 00:40:30,854 ---> 00:40:33,104 and we're only going to use this for one week time, 918 00:40:33,104 ---> 00:40:35,114 really to get the comfort levels up 919 00:40:35,114 ---> 00:40:36,294 and to really get folks excited 920 00:40:36,294 ---> 00:40:38,484 about what you can actually make these machines do, 921 00:40:38,694 ---> 00:40:41,244 this is an environment where you'll be programming by, 922 00:40:41,244 ---> 00:40:43,034 for at least a week, just dragging 923 00:40:43,034 ---> 00:40:45,154 and dropping puzzle pieces that fit together, 924 00:40:45,334 ---> 00:40:47,144 as we'll see, in a logical fashion. 925 00:40:47,144 ---> 00:40:50,114 And it lets you do fun, silly things quickly. 926 00:40:50,114 ---> 00:40:52,554 And for any of you who are a little bit familiar with things 927 00:40:52,554 ---> 00:40:56,564 like Java and C++, it's usually a good semester or two 928 00:40:56,564 ---> 00:40:59,754 or three before you finally get to start writing something 929 00:40:59,754 ---> 00:41:02,884 that another person might actually enjoy watching. 930 00:41:02,884 ---> 00:41:06,674 Well, in week one of the course, or the second week, zero index, 931 00:41:06,834 ---> 00:41:09,214 where we dive into a little more traditional environment. 932 00:41:09,214 ---> 00:41:10,854 In this course we'll spend much of our time 933 00:41:10,854 ---> 00:41:13,454 on a language called C. This is one 934 00:41:13,454 ---> 00:41:15,634 of the earliest languages that, unlike Java, 935 00:41:15,914 ---> 00:41:19,924 actually gives us much greater access for better or for worse, 936 00:41:19,924 ---> 00:41:22,604 to manipulating hardware and actual memory, 937 00:41:22,604 ---> 00:41:24,204 and we can do a lot of damage with that. 938 00:41:24,384 ---> 00:41:27,974 In fact, any time you read of web servers being exploited 939 00:41:27,974 ---> 00:41:29,524 or computers being hacked into, 940 00:41:29,754 ---> 00:41:32,254 very often to this day it's the result 941 00:41:32,464 ---> 00:41:36,804 of people having run software in a language called C or C++ 942 00:41:37,164 ---> 00:41:41,334 without sufficient care given to what are called buffer overruns 943 00:41:41,334 ---> 00:41:44,934 or lengths of arrays, so some fairly technical concepts 944 00:41:44,934 ---> 00:41:46,544 that are not that hard to understand, 945 00:41:46,764 ---> 00:41:49,634 but there's been a lot of humans making a lot of mistakes 946 00:41:49,634 ---> 00:41:53,074 for years and with this language we'll actually understand some 947 00:41:53,074 ---> 00:41:55,514 of those security implications. 948 00:41:55,774 ---> 00:41:57,354 But each week, typically, 949 00:41:57,354 ---> 00:41:59,774 we'll introduce also an interesting domain 950 00:41:59,774 ---> 00:42:01,784 that will inspire that week's problem set. 951 00:42:01,784 ---> 00:42:06,004 So we'll also take a look this week at the field of cryptology, 952 00:42:06,244 ---> 00:42:10,074 cryptanalysis, the notion that you can encipher information 953 00:42:10,074 ---> 00:42:12,024 in such a way that people can't read your messages, 954 00:42:12,374 ---> 00:42:14,524 but if clever enough perhaps you can, in fact, 955 00:42:14,584 ---> 00:42:16,934 crack what are otherwise secret messages. 956 00:42:17,154 ---> 00:42:20,674 In week three we'll then look at some basic fundamentals 957 00:42:20,674 ---> 00:42:23,404 of computer science like searching and sorting 958 00:42:23,404 ---> 00:42:25,934 and we'll actually look at this notion 959 00:42:25,934 ---> 00:42:27,754 of recursion, how to debug things. 960 00:42:27,754 ---> 00:42:31,624 In short, we'll take things up to the level of problem solving 961 00:42:31,744 ---> 00:42:33,804 and not so much about mere syntax 962 00:42:34,084 ---> 00:42:36,754 and implementing short little cookie cutter programs. 963 00:42:36,754 ---> 00:42:40,114 In week four we'll introduce more sophisticated 964 00:42:40,114 ---> 00:42:40,834 problems still. 965 00:42:41,094 ---> 00:42:43,124 What does it mean to manage memory? 966 00:42:43,154 ---> 00:42:45,604 What does it mean to run out of memory? 967 00:42:45,604 ---> 00:42:48,424 What does it mean to actually segfault, 968 00:42:48,424 ---> 00:42:50,654 if you've heard this expression, and odds are you haven't, 969 00:42:50,654 ---> 00:42:52,304 but very bad things happen and frankly 970 00:42:52,304 ---> 00:42:55,174 by terms end you'll understand terms like my code segfaulted 971 00:42:55,404 ---> 00:43:00,084 which actually is generally not going to be a good thing. 972 00:43:00,084 ---> 00:43:02,414 But then again, we'll introduce some domain specific stuff. 973 00:43:02,414 ---> 00:43:03,014 So actually one 974 00:43:03,014 ---> 00:43:05,234 of my internships during graduate school was to work 975 00:43:05,234 ---> 00:43:08,374 for the local Middlesex County District Attorney's office doing 976 00:43:08,424 ---> 00:43:11,034 forensic investigations in a digital sense. 977 00:43:11,074 ---> 00:43:13,084 The local Mass state police would bring 978 00:43:13,084 ---> 00:43:16,514 to our office hard drives and floppy disks and sometimes 979 00:43:16,514 ---> 00:43:18,624 for no reason mice and keyboards. 980 00:43:18,624 ---> 00:43:21,624 And we would be tasked with finding evidence. 981 00:43:21,744 ---> 00:43:25,694 Now it turns out, maybe just an FYI, that the criminals 982 00:43:25,694 ---> 00:43:28,674 in Cambridge, Massachusetts, at least, 983 00:43:28,944 ---> 00:43:30,474 not necessarily that clever. 984 00:43:30,474 ---> 00:43:32,644 Very often our forensic analysis boiled 985 00:43:32,644 ---> 00:43:34,684 down to booting the computer up and double clicking 986 00:43:34,684 ---> 00:43:37,934 on the My Documents folder, and therein laid the evidence. 987 00:43:38,464 ---> 00:43:41,214 But what we'll do this week is give you a sense 988 00:43:41,214 ---> 00:43:43,164 of what it actually means to store information 989 00:43:43,164 ---> 00:43:44,954 on a hard drive, on a flash drive, 990 00:43:44,954 ---> 00:43:48,764 and why can't otherwise private information be disclosed 991 00:43:48,764 ---> 00:43:51,914 to third parties when you drop off a computer to be repaired 992 00:43:51,914 ---> 00:43:53,754 or even when you discard it. 993 00:43:53,804 ---> 00:43:55,394 Well someone might very well be sifting 994 00:43:55,394 ---> 00:43:57,364 through those hard drives and it's really not that hard 995 00:43:57,364 ---> 00:43:59,614 to find data if you know how to look for it. 996 00:43:59,814 ---> 00:44:01,674 Well, in week five we'll look 997 00:44:01,674 ---> 00:44:05,154 at more sophisticated data structures, tools and techniques 998 00:44:05,154 ---> 00:44:07,074 that you can use ala phone books 999 00:44:07,074 ---> 00:44:11,894 and ala searching huge data sets much more intelligently. 1000 00:44:11,894 ---> 00:44:14,524 And the week's problem set will task you competitively 1001 00:44:14,734 ---> 00:44:17,514 to see just how fast the code you can write is 1002 00:44:17,694 ---> 00:44:19,504 and how little memory you can use. 1003 00:44:19,774 ---> 00:44:23,294 Toward terms end though we'll take things up to a higher level 1004 00:44:23,294 ---> 00:44:26,024 in terms of programming languages and put C behind us 1005 00:44:26,254 ---> 00:44:28,614 and introduce a web programming language known as PHP, 1006 00:44:29,184 ---> 00:44:31,284 one of the popular languages these days. 1007 00:44:31,284 ---> 00:44:33,364 Much of Facebook is still written in PHP, 1008 00:44:33,364 ---> 00:44:36,514 at least outward facing, and it's just a very easy language 1009 00:44:36,514 ---> 00:44:39,524 to learn quickly once you already know another. 1010 00:44:39,524 ---> 00:44:42,134 So with PHP we'll be able to solve problems 1011 00:44:42,134 ---> 00:44:44,664 and implement websites that do interesting things. 1012 00:44:44,664 ---> 00:44:46,474 The news site I showed you, the events site, 1013 00:44:46,714 ---> 00:44:47,594 the shuttle boy site, 1014 00:44:47,594 ---> 00:44:50,454 all of those all happen to be written in PHP. 1015 00:44:50,454 ---> 00:44:52,314 But by no means is that prerequisite. 1016 00:44:52,314 ---> 00:44:54,174 What you'll also find throughout this course is 1017 00:44:54,174 ---> 00:44:57,564 that you're not going to exit this course knowing C. You're 1018 00:44:57,564 ---> 00:44:59,634 not going to exit this course knowing PHP. 1019 00:44:59,634 ---> 00:45:03,184 Those are not interesting skills to claim, but knowing how 1020 00:45:03,184 ---> 00:45:06,564 to program, knowing how to use data structures and algorithms 1021 00:45:06,564 ---> 00:45:09,244 in an interesting way, that's a compelling story. 1022 00:45:09,244 ---> 00:45:11,464 Even I, all these years later, throughout college 1023 00:45:11,464 ---> 00:45:14,804 and graduate school, the only time I ever learned a language 1024 00:45:15,054 ---> 00:45:18,744 was probably in CS50 where it was still taught in C and CS51, 1025 00:45:18,744 ---> 00:45:20,654 which is one of the successor courses. 1026 00:45:20,714 ---> 00:45:24,764 Everywhere along the way since has been go learn this language 1027 00:45:24,764 ---> 00:45:26,094 and then work on this problem set 1028 00:45:26,154 ---> 00:45:28,264 because computer science is not supposed to be 1029 00:45:28,264 ---> 00:45:31,324 about here's a language, let's spend seven weeks teaching you 1030 00:45:31,324 ---> 00:45:32,604 where the semi colons are. 1031 00:45:32,764 ---> 00:45:34,734 There are much more interesting ideas out there. 1032 00:45:34,804 ---> 00:45:35,804 Databases, for one. 1033 00:45:35,804 ---> 00:45:37,684 And in week two we'll introduce you 1034 00:45:37,684 ---> 00:45:41,384 to this query language called SQL that'll allow you 1035 00:45:41,594 ---> 00:45:43,114 to store information in databases 1036 00:45:43,114 ---> 00:45:45,124 and actually implement some fairly interesting 1037 00:45:45,404 ---> 00:45:46,244 final projects. 1038 00:45:46,274 ---> 00:45:47,394 The week after we'll look 1039 00:45:47,394 ---> 00:45:49,244 at what's called client side programming, 1040 00:45:49,244 ---> 00:45:52,074 doing interesting things on a user's computer, 1041 00:45:52,074 ---> 00:45:53,974 taking advantage of their CPU cycles, 1042 00:45:54,244 ---> 00:45:57,084 doing things ala Google maps and these websites 1043 00:45:57,084 ---> 00:45:58,774 that actually use JavaScript, 1044 00:45:58,774 ---> 00:46:00,354 which is actually a language we'll introduce 1045 00:46:00,354 ---> 00:46:03,224 to let you do client side things, make more interesting, 1046 00:46:03,224 ---> 00:46:05,874 more sophisticated user interfaces, but at the end 1047 00:46:05,874 ---> 00:46:08,374 of the day have to be really mindful when implemented 1048 00:46:08,564 ---> 00:46:11,794 of a lot of sticky issues like network speeds, 1049 00:46:11,794 ---> 00:46:13,584 network performance and security. 1050 00:46:13,814 ---> 00:46:16,684 So it's not about again just coding something up that's fun 1051 00:46:16,684 ---> 00:46:19,184 to use or pretty to look at, but actually thinking 1052 00:46:19,184 ---> 00:46:21,524 about the design that'll be the interesting process. 1053 00:46:21,664 ---> 00:46:24,844 And then, the end result aesthetically will often be a 1054 00:46:24,844 ---> 00:46:27,164 really neat toy to show yourself or a friend. 1055 00:46:27,164 ---> 00:46:29,604 And then we'll look at hardware. 1056 00:46:29,604 ---> 00:46:30,734 We're going to take for granted 1057 00:46:30,734 ---> 00:46:32,694 that there are these physical boxes throughout much 1058 00:46:32,734 ---> 00:46:35,934 of the semester that will do what we tell them to do. 1059 00:46:36,324 ---> 00:46:37,464 But how are they doing that. 1060 00:46:37,464 ---> 00:46:39,464 So we'll actually take a peak under the hood and talk 1061 00:46:39,464 ---> 00:46:42,984 about what a compiler really is, what a CPU really is 1062 00:46:42,984 ---> 00:46:46,324 and actually consider what's making all of this fanciness 1063 00:46:46,324 ---> 00:46:49,424 from stupid YouTube videos on down possible. 1064 00:46:50,014 ---> 00:46:51,254 So what are the expectations? 1065 00:46:51,254 ---> 00:46:52,584 Attending lectures and sessions, 1066 00:46:52,924 ---> 00:46:55,794 completing nine problem sets assigned roughly weekly, 1067 00:46:55,794 ---> 00:46:57,994 two quizzes, the final project and there is 1068 00:46:57,994 ---> 00:46:59,464 in fact no final exam. 1069 00:46:59,464 ---> 00:47:02,824 Grades, it's always a question, broken down as follows here. 1070 00:47:02,824 ---> 00:47:04,174 You can take the course pass-fail. 1071 00:47:04,174 ---> 00:47:06,994 But let me say it here, and I've said it many times. 1072 00:47:07,254 ---> 00:47:09,864 I personally care relatively little about grades. 1073 00:47:09,914 ---> 00:47:11,764 I think they are a wonderful, well, 1074 00:47:11,914 ---> 00:47:15,344 they are a useful pedagogical tool with which to motivate 1075 00:47:15,344 ---> 00:47:18,704 and unfortunately sometimes de-motivate, but you'll find 1076 00:47:18,704 ---> 00:47:22,494 in this course that at the end of the day it's more 1077 00:47:22,494 ---> 00:47:26,464 about seeing how far you can go from weeks zero to week 12, 1078 00:47:26,464 ---> 00:47:28,464 as we say in the syllabus than it is 1079 00:47:28,464 ---> 00:47:30,934 about absolutely ranking all students in this course. 1080 00:47:30,934 ---> 00:47:33,244 So if you're coming into this course among those less 1081 00:47:33,244 ---> 00:47:36,154 comfortable, though a large demographic do not assume 1082 00:47:36,344 ---> 00:47:39,404 that that's automatically putting you in the lower third 1083 00:47:39,564 ---> 00:47:41,194 of the so called distribution. 1084 00:47:41,194 ---> 00:47:44,464 At terms end do I sit down with the TF's and discuss each 1085 00:47:44,464 ---> 00:47:45,614 and every one of the students. 1086 00:47:45,784 ---> 00:47:48,984 We take into account where a student came from, 1087 00:47:49,184 ---> 00:47:51,574 what kind of trajectory they were actually on and so 1088 00:47:51,574 ---> 00:47:55,024 at the end of the day please focus more on, and I don't mean 1089 00:47:55,024 ---> 00:47:56,934 to sound too grand, the process of learning 1090 00:47:57,144 ---> 00:47:58,154 and less on the numeric's. 1091 00:47:58,254 ---> 00:48:00,604 And you'll actually see that we grade problem sets, 1092 00:48:00,604 ---> 00:48:04,074 in particular, very coarsely, whereby along three axis, 1093 00:48:04,074 ---> 00:48:07,634 you will get a score of 1, 2, 3, 4, or 5, 1094 00:48:07,674 ---> 00:48:09,354 where 3, is in fact good. 1095 00:48:09,604 ---> 00:48:13,574 3 is not C. 3 is good, 4 is better, 5 is best. 1096 00:48:13,574 ---> 00:48:16,344 But more on that as the problem sets are released. 1097 00:48:16,714 ---> 00:48:19,934 So the course's website is where you will find, as in most cases, 1098 00:48:19,934 ---> 00:48:23,504 a whole lot of useful things, if not silly things, too. 1099 00:48:23,684 ---> 00:48:25,414 And we have the luxury, as computer scientists 1100 00:48:25,414 ---> 00:48:27,244 of implementing it ourselves. 1101 00:48:27,244 ---> 00:48:27,924 So over the course 1102 00:48:27,924 ---> 00:48:30,234 of the semester you will see various new features 1103 00:48:30,234 ---> 00:48:30,754 rolling out. 1104 00:48:30,754 ---> 00:48:32,064 You'll find out over the course of the semester 1105 00:48:32,064 ---> 00:48:34,594 that the bulletin board is a wonderful place, 1106 00:48:34,594 ---> 00:48:35,914 certainly in the course of this size, 1107 00:48:35,914 ---> 00:48:38,384 to turn when you have questions about the problem set, 1108 00:48:38,544 ---> 00:48:41,394 questions about some computer science concept. 1109 00:48:41,394 ---> 00:48:43,844 You'll be able to check your grades, download all handouts 1110 00:48:44,034 ---> 00:48:46,514 in advance of lecture typically will I post the slides, 1111 00:48:46,514 ---> 00:48:48,144 if you're the type who wants to scribble on notes. 1112 00:48:48,414 ---> 00:48:51,154 But as you've seen, usually I shy away from long lists 1113 00:48:51,154 ---> 00:48:54,054 of details and more like pictures of cats 1114 00:48:54,284 ---> 00:48:56,284 and other visual cues. 1115 00:48:56,704 ---> 00:48:59,794 So you'll find, too, that we will provide printouts of code 1116 00:48:59,794 ---> 00:49:02,294 when we actually think it particularly advantageous 1117 00:49:02,294 ---> 00:49:03,554 to write right on the paper. 1118 00:49:03,844 ---> 00:49:07,204 Software, videos will be available, usually around 1 to 2 1119 00:49:07,204 ---> 00:49:09,254 to 3 days maximally after each lecture. 1120 00:49:09,504 ---> 00:49:12,114 So the courses are being filmed and every lecture will go online 1121 00:49:12,334 ---> 00:49:14,664 in various formats including QuickTime and MP3's 1122 00:49:14,664 ---> 00:49:16,534 for downloads to iPods and such. 1123 00:49:16,774 ---> 00:49:17,824 And also you will find a link 1124 00:49:17,824 ---> 00:49:19,584 to download what we call the virtual terminal room, 1125 00:49:19,824 ---> 00:49:22,324 which as you'll see is related to virtual office hours. 1126 00:49:22,634 ---> 00:49:25,044 Books are expensive and in the computer world also not 1127 00:49:25,044 ---> 00:49:25,644 that useful. 1128 00:49:25,894 ---> 00:49:30,104 They are on the shelves of the coop, although we're told 1129 00:49:30,104 ---> 00:49:33,214 that last year they ordered like 120 books for the course 1130 00:49:33,474 ---> 00:49:36,374 and 30 were actually purchased, but this perhaps speak 1131 00:49:36,554 ---> 00:49:39,344 to the fact that there are places like Amazon.com, 1132 00:49:39,344 ---> 00:49:42,764 so if you are the type who actually enjoys the sort 1133 00:49:42,764 ---> 00:49:45,564 of support structure that a book provides, if you like to read 1134 00:49:45,564 ---> 00:49:47,774 up more than say a course's typical materials offer, 1135 00:49:47,774 ---> 00:49:50,304 by all means, procure one or more of the books 1136 00:49:50,344 ---> 00:49:52,164 that we recommend here and discuss more 1137 00:49:52,164 ---> 00:49:53,354 in detail in the syllabus. 1138 00:49:53,604 ---> 00:49:55,454 But realize there are so many resources 1139 00:49:55,454 ---> 00:49:57,214 that this course provides in printed form 1140 00:49:57,214 ---> 00:49:58,804 and electronic form, and my God, 1141 00:49:58,804 ---> 00:50:00,114 there's the whole internet out there. 1142 00:50:00,364 ---> 00:50:02,314 Books are not something that are required 1143 00:50:02,314 ---> 00:50:03,404 for this particular course. 1144 00:50:03,984 ---> 00:50:05,844 Lectures, in general, will be Monday's and Wednesday's, 1145 00:50:06,064 ---> 00:50:08,784 except for this Friday and next Friday, 1146 00:50:09,044 ---> 00:50:10,964 simply because of shopping period and Labor Day. 1147 00:50:10,964 ---> 00:50:13,494 So we'll meet this Friday, next Wednesday, next Friday, 1148 00:50:13,694 ---> 00:50:16,214 but there after this is just a Monday, Wednesday course. 1149 00:50:16,514 ---> 00:50:18,934 So this little visual cue here is to remind me that yes, 1150 00:50:19,044 ---> 00:50:22,124 we do distribute videos in QuickTime formats, MP3's, 1151 00:50:22,174 ---> 00:50:25,034 fun ways that you can, if you're actually this type, 1152 00:50:25,194 ---> 00:50:27,714 maybe in the 14 percent, watch a computer science lecture 1153 00:50:27,714 ---> 00:50:35,204 on your iPod, but it reminded me that at terms end last year, 1154 00:50:35,204 ---> 00:50:37,124 the course culminates in final projects, 1155 00:50:37,124 ---> 00:50:39,354 in which students can design most anything they want, 1156 00:50:39,354 ---> 00:50:41,424 and we actually had some students tackle some 1157 00:50:41,424 ---> 00:50:42,504 iPhone applications. 1158 00:50:42,714 ---> 00:50:45,434 Some one of these at least is now in the Apple store. 1159 00:50:45,434 ---> 00:50:46,274 It's called Rover. 1160 00:50:46,394 ---> 00:50:48,894 It's been adopted essentially by Harvard agencies 1161 00:50:48,894 ---> 00:50:49,994 and it's the iPhone version 1162 00:50:49,994 ---> 00:50:51,974 of the unofficial guide to life at Harvard. 1163 00:50:51,974 ---> 00:50:53,104 They did a brilliant job. 1164 00:50:53,774 ---> 00:50:56,034 I bring this slide up too, just to point 1165 00:50:56,304 ---> 00:50:58,504 out what other technologies might very well be 1166 00:50:58,504 ---> 00:50:59,264 down the road. 1167 00:50:59,264 ---> 00:51:00,964 Some of you may have seen this before, 1168 00:51:00,964 ---> 00:51:03,094 but just to give you a teaser of apparently what's 1169 00:51:03,094 ---> 00:51:06,764 in the pipeline, I thought I would offer this brief 1170 00:51:07,354 ---> 00:51:09,654 distraction here. 1171 00:51:10,494 ---> 00:51:32,554 [Музика] 1172 00:51:33,054 ---> 00:51:36,764 >> With the MacBook wheel, Apple has replaced the keyboard 1173 00:51:36,764 ---> 00:51:39,284 with a sleek, touch sensitive click wheel. 1174 00:51:39,504 ---> 00:51:42,344 Apple CEO Steve Jobs introduced the product yesterday 1175 00:51:42,614 ---> 00:51:43,974 at the annual Mac Expo. 1176 00:51:44,304 ---> 00:51:47,444 Senior product innovator says the MacBook wheel will make 1177 00:51:47,574 ---> 00:51:49,094 typing a thing of the past. 1178 00:51:49,094 ---> 00:51:51,534 >> At Apple our philosophy is create products that are simple 1179 00:51:51,534 ---> 00:51:54,474 to use and nothing's more simple than a single giant button. 1180 00:51:54,754 ---> 00:51:56,634 >> Gilman showed me how the revolutionary new 1181 00:51:56,634 ---> 00:51:57,344 computer works. 1182 00:51:57,704 ---> 00:52:00,414 >> Gilman: Just open the intuit-type alphabet menu here, 1183 00:52:01,064 ---> 00:52:04,794 scroll to the letter you need and center click to select it 1184 00:52:05,424 ---> 00:52:07,074 and click again to capitalize 1185 00:52:07,624 ---> 00:52:09,784 and repeat this process for each new letter. 1186 00:52:09,784 ---> 00:52:11,194 It couldn't be simpler. 1187 00:52:14,214 ---> 00:52:16,414 You could also let the predictive sentence technology 1188 00:52:16,534 ---> 00:52:17,564 complete the sentence for you. 1189 00:52:17,944 ---> 00:52:21,344 >> Gilman says the MacBook wheel has also simplified organization 1190 00:52:21,344 ---> 00:52:23,684 of files, so searching your hard drive will be a snap. 1191 00:52:24,204 ---> 00:52:26,444 >> Gilman: Just press both sides of the wheel concurrently 1192 00:52:26,794 ---> 00:52:29,124 and center click and there, you have an alphabetical list 1193 00:52:29,124 ---> 00:52:31,084 of every file on your hard drive. 1194 00:52:31,274 ---> 00:52:33,194 Everything is just a few hundred clicks away. 1195 00:52:33,414 ---> 00:52:36,174 >> Apple is calling the MacBook wheel the most intuitive product 1196 00:52:36,424 ---> 00:52:37,364 every designed. 1197 00:52:37,544 ---> 00:52:38,684 >> Here at Apple we like to think 1198 00:52:38,684 ---> 00:52:40,884 that we're giving customers features they don't even know 1199 00:52:40,884 ---> 00:52:41,624 they want yet. 1200 00:52:41,914 ---> 00:52:44,134 >> While the MacBook wheel won't hit the shelves for another 3 1201 00:52:44,134 ---> 00:52:46,784 to 15 months, many apple users already have it 1202 00:52:46,784 ---> 00:52:47,494 on their wish list. 1203 00:52:47,714 ---> 00:52:50,064 >> I'll buy almost anything [inaudible] and made by Apple. 1204 00:52:50,244 ---> 00:52:52,304 >> Alex [inaudible] was one of the lucky few to get to try 1205 00:52:52,304 ---> 00:52:55,424 out a MacWheel and spent 45 minutes typing an email 1206 00:52:55,424 ---> 00:52:56,004 to his friend. 1207 00:52:56,324 ---> 00:52:57,934 >> I never really realized how much I hated keyboards 1208 00:52:57,934 ---> 00:52:59,174 until I saw this thing. 1209 00:52:59,174 ---> 00:53:02,994 >> I like how it automatically says, sent with a MacBook Wheel, 1210 00:53:02,994 ---> 00:53:04,344 so people automatically know you have one. 1211 00:53:04,464 ---> 00:53:06,994 >> With a price tag of just under 2600 dollars 1212 00:53:07,024 ---> 00:53:09,704 for the lowest end MacBook Wheel, it is an investment. 1213 00:53:10,214 ---> 00:53:12,834 But the super thin laptop features numerous innovations, 1214 00:53:12,834 ---> 00:53:15,154 like the new ultra thin hummingbird battery, 1215 00:53:15,474 ---> 00:53:16,854 which can power the MacBook Wheel 1216 00:53:16,904 ---> 00:53:19,454 for a fill 19 minutes before needing to be recharged 1217 00:53:19,614 ---> 00:53:22,234 and the computer is virtually unbreakable unless dropped 1218 00:53:22,234 ---> 00:53:22,604 or hit. 1219 00:53:22,884 ---> 00:53:24,664 But Apple isn't resting on its laurels, 1220 00:53:24,664 ---> 00:53:26,904 Bryan Gilman says they're already hard at work 1221 00:53:26,904 ---> 00:53:28,774 on the next generation of the MacBook Wheel, 1222 00:53:28,774 ---> 00:53:31,344 which will be four ounces lighter due to its lack 1223 00:53:31,414 ---> 00:53:32,904 of streaming hard drive or wheel. 1224 00:53:32,904 ---> 00:53:35,214 For the Ugly news Network, I'm Jeff Tate. 1225 00:53:35,504 ---> 00:53:36,254 >> Thank you for that, Jeff. 1226 00:53:36,364 ---> 00:53:38,024 It remains to be seen if the wheel will catch 1227 00:53:38,234 ---> 00:53:40,504 on in the business world where people use computers 1228 00:53:40,504 ---> 00:53:43,024 for actual work and not just dicking around. 1229 00:53:43,274 ---> 00:53:44,774 Moving on, police warn. 1230 00:53:44,774 ---> 00:53:45,554 >> David: So I've seen that thing 1231 00:53:45,554 ---> 00:53:47,774 at least a half a dozen times now, including once 1232 00:53:47,774 ---> 00:53:51,064 at like two a.m. last night and I was scrolling down on YouTube 1233 00:53:51,064 ---> 00:53:52,514 and literally like an hour prior, 1234 00:53:52,514 ---> 00:53:55,514 some guy in all seriousness posted, just a wheel? 1235 00:53:55,514 ---> 00:53:57,484 That's the stupidest product I've ever seen. 1236 00:53:57,484 ---> 00:53:58,194 [ Laughter ] 1237 00:53:58,194 ---> 00:54:02,754 And then the rants ensued in the thread thereafter. 1238 00:54:03,084 ---> 00:54:05,464 So besides lectures there are also sections 1239 00:54:05,464 ---> 00:54:06,764 and it is your teaching fellow 1240 00:54:06,764 ---> 00:54:08,554 and the course's course assistants that you will get 1241 00:54:08,554 ---> 00:54:11,354 to know very well over the course of this semester. 1242 00:54:11,804 ---> 00:54:14,024 Sectioning won't begin for a week or so's time. 1243 00:54:14,024 ---> 00:54:15,784 More on that in the lectures to come. 1244 00:54:15,784 ---> 00:54:18,034 But know that the course will have several different tracks 1245 00:54:18,264 ---> 00:54:20,854 of sections, much like First Knight's has for music. 1246 00:54:21,114 ---> 00:54:24,164 Sections targeted more at those less comfortable, 1247 00:54:24,354 ---> 00:54:26,644 those more comfortable and those somewhere in between. 1248 00:54:26,824 ---> 00:54:30,254 And we also offer most Sunday nights before a problem set is 1249 00:54:30,294 ---> 00:54:33,784 due on the following Friday is what we call code walkthrough's 1250 00:54:33,784 ---> 00:54:36,574 where one of the course's teaching fellows will lead a 1251 00:54:36,574 ---> 00:54:39,424 session targeted specifically at the week's problem set 1252 00:54:39,424 ---> 00:54:41,964 and will help you answer the question where do I begin, 1253 00:54:42,094 ---> 00:54:43,174 how should I approach this? 1254 00:54:43,174 ---> 00:54:45,694 And that too will be filmed and made available online 1255 00:54:45,924 ---> 00:54:47,904 and always linked on the course's website. 1256 00:54:48,224 ---> 00:54:50,394 So this course has a huge staff. 1257 00:54:50,594 ---> 00:54:53,644 Our staff is larger than Harvard's average class size. 1258 00:54:53,644 ---> 00:54:55,824 We have over 50 people involved in the production 1259 00:54:55,824 ---> 00:54:57,264 of this course on a weekly basis. 1260 00:54:57,544 ---> 00:55:00,514 Some of them teaching fellows who hold sections, grade work, 1261 00:55:00,704 ---> 00:55:02,124 hold office hours and more. 1262 00:55:02,124 ---> 00:55:04,984 Course assistants who are former students, who are offering 1263 00:55:04,984 ---> 00:55:08,384 on a volunteer basis in fact multiple hours of office hours 1264 00:55:08,384 ---> 00:55:09,554 in the computer lab per week. 1265 00:55:09,864 ---> 00:55:11,534 System administrators, folks doing all 1266 00:55:11,534 ---> 00:55:12,984 of our AV and video production. 1267 00:55:12,984 ---> 00:55:14,824 Someone who will actually be taking notes for you. 1268 00:55:15,104 ---> 00:55:18,304 So it is actually my opinion that scribbling 1269 00:55:18,304 ---> 00:55:19,524 down almost every word that someone 1270 00:55:19,524 ---> 00:55:21,584 like me says is not a very good use of one's time. 1271 00:55:21,584 ---> 00:55:23,824 It's much more interesting I think to actually engage 1272 00:55:24,044 ---> 00:55:25,964 with what's on the screen, what's being presented. 1273 00:55:25,964 ---> 00:55:29,134 And so what we will do as a course is post PDF's online 1274 00:55:29,134 ---> 00:55:31,864 within a couple of days of lectures of scribe notes, 1275 00:55:31,864 ---> 00:55:33,834 which is essentially an authoritative version 1276 00:55:33,834 ---> 00:55:38,234 of course notes, unedited, but documenting what went 1277 00:55:38,234 ---> 00:55:41,544 on in lecture that day, thereby hopefully freeing your minds 1278 00:55:41,544 ---> 00:55:44,724 and pencils from jotting information down. 1279 00:55:44,904 ---> 00:55:46,014 We have some of our team here. 1280 00:55:46,014 ---> 00:55:47,924 Most of our team is actually shopping courses. 1281 00:55:47,924 ---> 00:55:49,774 But if a few of your guys would like to come on stage 1282 00:55:49,774 ---> 00:55:52,164 for a moment with our head teaching fellow 1283 00:55:52,164 ---> 00:55:53,534 and assistant head teaching fellow. 1284 00:55:53,684 ---> 00:55:56,914 Allow me to ask the latter to say a quick hello. 1285 00:55:57,494 ---> 00:56:02,624 And as these guys come up in absentia allow me to say 1286 00:56:02,624 ---> 00:56:06,144 that also on staff this year besides the folks you see here 1287 00:56:06,144 ---> 00:56:10,774 are Alex, Alice, Andrew, Batul, Charlotte, Chris, Dan, Dan, 1288 00:56:10,774 ---> 00:56:16,294 Daniel, David, David, David, Derek, Dev, Didi, Doug, Drew, 1289 00:56:16,294 ---> 00:56:21,374 Erica, Fil, Glen, Greg, Janice, Jason, Jean, Jeff, Jesse, John, 1290 00:56:21,374 ---> 00:56:25,394 John, Jonathan, Jordan, Josh, Karim, Kelly, Ken, Kent, 1291 00:56:25,654 ---> 00:56:30,194 Kyu Bok, Lee, Madhura, Marta, Matthew, Michael, Michelle, 1292 00:56:30,194 ---> 00:56:34,714 Mike, Mike, Nathan, Patrick, Peter, Peyton, Rose, Saba, 1293 00:56:34,924 ---> 00:56:38,794 Sanjay, Shannon, Stacey, Ted, Wellie, Yair and me. 1294 00:56:39,684 ---> 00:56:42,004 So our course is teaching fellows and course assistants, 1295 00:56:42,004 ---> 00:56:45,644 Cansu and Yuhki, would you like to say a quick hello? 1296 00:56:46,194 ---> 00:56:48,574 >> Hi. It's definitely a great honor 1297 00:56:48,574 ---> 00:56:50,624 to be back here for the third time. 1298 00:56:51,044 ---> 00:56:53,654 And if you're one of those who are like less comfortable. 1299 00:56:53,654 ---> 00:56:53,721 [ Laughter ] 1300 00:56:53,721 ---> 00:57:00,254 I think I can [inaudible]. 1301 00:57:00,654 ---> 00:57:00,754 Okay. 1302 00:57:00,754 ---> 00:57:00,821 [ Laughter ] 1303 00:57:00,821 ---> 00:57:03,444 If you're one of those [inaudible]. 1304 00:57:03,444 ---> 00:57:07,094 There's no need to be afraid. 1305 00:57:07,094 ---> 00:57:09,764 I walked in here two years ago with no experience what so ever, 1306 00:57:09,794 ---> 00:57:14,394 and I thought that I was like dumb and I was sure 1307 00:57:14,394 ---> 00:57:15,594 that I was going to fail the class. 1308 00:57:15,594 ---> 00:57:18,824 And I came back for the third time. 1309 00:57:18,904 ---> 00:57:21,184 I did not fail the class. 1310 00:57:22,544 ---> 00:57:25,554 This course is great because it has such a good community. 1311 00:57:25,554 ---> 00:57:30,274 As you can tell by the names listed by David. 1312 00:57:30,274 ---> 00:57:32,984 All the CA's and TF's are here to help you. 1313 00:57:32,984 ---> 00:57:36,574 So if you have any questions at all, just come up to us. 1314 00:57:36,574 ---> 00:57:40,564 Not taking this class because it's hard is not a good excuse. 1315 00:57:42,234 ---> 00:57:43,424 So, hi. 1316 00:57:43,424 ---> 00:57:45,034 >> [Inaudible]. 1317 00:57:45,034 ---> 00:57:51,224 >> Hi, so well both as a student and TF, 1318 00:57:51,224 ---> 00:57:55,254 I've really enjoyed being a part of this course. 1319 00:57:55,254 ---> 00:57:58,724 And even though it's a course that requires a lot of work 1320 00:57:58,774 ---> 00:58:01,274 from you, we've put a lot of work in to it for you as well 1321 00:58:01,274 ---> 00:58:03,874 to make it as enjoyable and as fun as possible. 1322 00:58:03,964 ---> 00:58:08,914 So, we really hope that all of you stay and take part 1323 00:58:09,104 ---> 00:58:11,174 in this very special experience. 1324 00:58:11,674 ---> 00:58:11,874 >> Thanks. 1325 00:58:11,874 ---> 00:58:14,044 >> David: So you will find, thank you, all of you, 1326 00:58:14,044 ---> 00:58:15,014 you will meet them in the hallway 1327 00:58:15,014 ---> 00:58:16,154 in just a few minutes as well. 1328 00:58:16,474 ---> 00:58:18,414 So you'll find that this course, perhaps more 1329 00:58:18,414 ---> 00:58:21,064 so than many is very much a shared experience. 1330 00:58:21,064 ---> 00:58:22,324 This is not a competitive course. 1331 00:58:22,324 ---> 00:58:23,714 This is not your premed course. 1332 00:58:23,994 ---> 00:58:26,084 This is a course which ultimately yes is 1333 00:58:26,084 ---> 00:58:28,564 about doing independent work, as you'll see each week 1334 00:58:28,604 ---> 00:58:29,714 by way of the problem sets. 1335 00:58:30,054 ---> 00:58:32,264 But you can't help but to get close to someone 1336 00:58:32,514 ---> 00:58:35,504 when you're fighting with some bug and banging your head 1337 00:58:35,544 ---> 00:58:39,714 against the computer screen proverbially to try 1338 00:58:39,714 ---> 00:58:41,084 to track down some bug. 1339 00:58:41,324 ---> 00:58:43,804 And I think you'll find that past students will concur 1340 00:58:43,804 ---> 00:58:45,614 that you exit this course with a lot 1341 00:58:45,614 ---> 00:58:48,494 of friends among students and also on staff. 1342 00:58:48,724 ---> 00:58:50,004 So where does that happen? 1343 00:58:50,244 ---> 00:58:51,844 Well, within office hours in the basement 1344 00:58:51,844 ---> 00:58:53,864 of the science center there's some large computer labs 1345 00:58:53,864 ---> 00:58:56,664 and we pretty much take them over five nights a week. 1346 00:58:56,834 ---> 00:58:59,454 These won't start for some time, and this, to be honest, 1347 00:58:59,494 ---> 00:59:00,854 is perhaps the most beautiful picture 1348 00:59:00,854 ---> 00:59:02,174 of the science center I've ever seen. 1349 00:59:02,604 ---> 00:59:04,604 [ Laughter ] 1350 00:59:05,034 ---> 00:59:07,024 It does not look like that on the inside. 1351 00:59:07,134 ---> 00:59:11,524 But it is a place where a good percentage of students do choose 1352 00:59:11,524 ---> 00:59:14,014 to spend time to get one on one assistance with each 1353 00:59:14,014 ---> 00:59:15,444 of the week's problem sets. 1354 00:59:15,444 ---> 00:59:19,504 Each week we will offer more than 100 hours of assistance one 1355 00:59:19,504 ---> 00:59:21,854 on one in the science center per the schedule 1356 00:59:21,854 ---> 00:59:23,144 that will eventually go online. 1357 00:59:23,394 ---> 00:59:26,344 And for those of you who live, say in the quad, or in Mather, 1358 00:59:26,344 ---> 00:59:28,044 or who just don't want to trek all the way 1359 00:59:28,044 ---> 00:59:29,894 to the science center to ask that quick question, 1360 00:59:30,144 ---> 00:59:32,624 we also offer what are called virtual office hours, 1361 00:59:32,624 ---> 00:59:35,134 much like remote technical support where you'll be able 1362 00:59:35,134 ---> 00:59:38,364 to log into a glorified chat room, in which yes, 1363 00:59:38,364 ---> 00:59:40,474 you can type back and forth with a TF or a CA, 1364 00:59:40,474 ---> 00:59:43,264 but you can also share your screen or share control 1365 00:59:43,264 ---> 00:59:45,224 of your mouse with them subject to your consent 1366 00:59:45,434 ---> 00:59:47,814 so that they can help you troubleshoot any problem 1367 00:59:47,814 ---> 00:59:49,654 or any question you have remotely. 1368 00:59:49,654 ---> 00:59:51,814 To give you a sense of what's involved in the course, 1369 00:59:52,084 ---> 00:59:53,724 these are statistics from last year. 1370 00:59:53,724 ---> 00:59:55,814 So you will, I think it's quite fair to say, 1371 00:59:55,814 ---> 00:59:57,414 work your ass off in this course. 1372 00:59:57,624 ---> 00:59:59,304 But per my promise from the start, 1373 00:59:59,584 ---> 01:00:01,744 this is one of those experiences 1374 01:00:01,984 ---> 01:00:04,544 that I don't think a typical student regrets. 1375 01:00:04,684 ---> 01:00:06,784 If you flip through, for instance, the Q Guide forms 1376 01:00:06,814 ---> 01:00:09,884 that are all on the course's website, you'll find that only 1377 01:00:10,134 ---> 01:00:12,074 by putting in the time to a course 1378 01:00:12,074 ---> 01:00:14,934 like this do you really exit having felt 1379 01:00:14,934 ---> 01:00:16,334 like you got something out of it 1380 01:00:16,334 ---> 01:00:19,704 and frankly might very well even have emerged even smarter. 1381 01:00:19,984 ---> 01:00:23,324 So what does it mean to actually write programs 1382 01:00:23,364 ---> 01:00:24,944 and implement problem sets? 1383 01:00:24,944 ---> 01:00:26,764 Well, the first problem set last year, 1384 01:00:27,054 ---> 01:00:28,244 a quick retrospective here, 1385 01:00:28,244 ---> 01:00:30,484 was to implement your very own programming scratch. 1386 01:00:30,684 ---> 01:00:32,534 And we spend just the first week there, and the goal is 1387 01:00:32,534 ---> 01:00:34,834 to implement your own game or animation or art 1388 01:00:35,064 ---> 01:00:37,104 or anything that appeals to you. 1389 01:00:37,104 ---> 01:00:40,214 In week one, then do you implement some basic C programs 1390 01:00:40,254 ---> 01:00:42,554 to get acclimated to some more traditional programming 1391 01:00:42,554 ---> 01:00:44,224 environments at the command line, 1392 01:00:44,224 ---> 01:00:47,004 at Linux so you get comfortable with some of these basics 1393 01:00:47,004 ---> 01:00:49,004 that will certainly serve you well in the long run. 1394 01:00:49,294 ---> 01:00:51,704 Last year's Problem Set 2 was about cryptography. 1395 01:00:51,944 ---> 01:00:55,274 We gave students the opportunity to implement some ciphers, 1396 01:00:55,274 ---> 01:00:57,684 some algorithms that let them encrypt information. 1397 01:00:57,914 ---> 01:01:00,424 And we also offered some students the opportunity 1398 01:01:00,424 ---> 01:01:01,284 to do the opposite. 1399 01:01:01,554 ---> 01:01:03,324 Each problem set, many problem sets, 1400 01:01:03,324 ---> 01:01:05,484 as you'll see are implemented in two editions. 1401 01:01:05,694 ---> 01:01:08,514 A standard edition that we expect almost everyone to do, 1402 01:01:08,514 ---> 01:01:09,734 say 90 percent of the class. 1403 01:01:10,194 ---> 01:01:12,974 And then a hacker edition, which presents the material 1404 01:01:12,974 ---> 01:01:14,564 from a more sophisticated angle, 1405 01:01:14,564 ---> 01:01:16,294 expects perhaps a bit more clever work 1406 01:01:16,294 ---> 01:01:17,654 for those more experienced, 1407 01:01:17,904 ---> 01:01:19,934 and for this one did those students get handed 1408 01:01:19,934 ---> 01:01:23,714 in the hacker edition pre existing user names 1409 01:01:23,714 ---> 01:01:26,304 and passwords in encrypted form and they had to figure 1410 01:01:26,494 ---> 01:01:27,824 out what those passwords for. 1411 01:01:27,824 ---> 01:01:30,844 We actually got into trouble for this a few years ago because all 1412 01:01:30,844 ---> 01:01:32,764 of the sudden FAS Computer Services saw 1413 01:01:32,764 ---> 01:01:38,904 like 50 people running a crack program on nice.fas.Harvard.edu, 1414 01:01:39,174 ---> 01:01:41,704 so they now have been given a heads up for programs like that. 1415 01:01:42,094 ---> 01:01:44,574 Last year students implemented the game of 15. 1416 01:01:44,794 ---> 01:01:46,824 Not all that much fun to play as a party favorite, 1417 01:01:46,824 ---> 01:01:48,484 moving the numbers up down, left, right, 1418 01:01:48,584 ---> 01:01:50,114 but a real stepping stone 1419 01:01:50,114 ---> 01:01:52,194 to implementing something interactive 1420 01:01:52,244 ---> 01:01:54,264 that involves a human and the hacker edition 1421 01:01:54,264 ---> 01:01:56,654 for this one had students implementing God mode, 1422 01:01:56,654 ---> 01:01:59,484 which actually solved this thing for the human, 1423 01:01:59,484 ---> 01:02:02,594 maybe cheat mode is the more apt term, in Sudoku, 1424 01:02:02,814 ---> 01:02:05,604 which was a step up toward that, where we provided the students, 1425 01:02:05,604 ---> 01:02:08,384 you, with a framework with a whole bunch of code 1426 01:02:08,384 ---> 01:02:11,184 that you needed to first understand before taking things 1427 01:02:11,184 ---> 01:02:13,044 the final mile and implementing some 1428 01:02:13,044 ---> 01:02:14,394 of the remaining functionality. 1429 01:02:14,644 ---> 01:02:17,034 And then we dabbled in forensics and this grew 1430 01:02:17,034 ---> 01:02:20,444 out of a real world experience between me and a friend. 1431 01:02:20,674 ---> 01:02:22,914 For this problem set last year, this buddy and I, 1432 01:02:22,914 ---> 01:02:25,044 who he being a particularly good photographer, 1433 01:02:25,284 ---> 01:02:29,604 strolled around campus and we shot photographs of unique, 1434 01:02:29,774 ---> 01:02:33,484 non obvious, but identifiable places on campus. 1435 01:02:33,484 ---> 01:02:34,904 And this was using his digital camera. 1436 01:02:34,904 ---> 01:02:36,324 All of these JPEGs got stored 1437 01:02:36,324 ---> 01:02:37,854 on a digital flash card or what not. 1438 01:02:38,134 ---> 01:02:40,754 And then I accidentally formatting the thing, 1439 01:02:40,754 ---> 01:02:41,474 or erased it. 1440 01:02:41,584 ---> 01:02:44,514 Well, it turns out formatting something or erasing something, 1441 01:02:44,514 ---> 01:02:45,914 usually means neither. 1442 01:02:45,914 ---> 01:02:48,134 It just means doing a little bit of work 1443 01:02:48,254 ---> 01:02:50,374 to make the human think their data has been erased, 1444 01:02:50,374 ---> 01:02:51,974 when in reality it hasn't. 1445 01:02:52,384 ---> 01:02:53,604 It's just been forgotten. 1446 01:02:53,934 ---> 01:02:56,624 And so we tasked last year's students with writing a program 1447 01:02:56,624 ---> 01:03:01,214 in C to actually recover these photos for my friend. 1448 01:03:01,214 ---> 01:03:03,294 We gave everyone a forensic image, so to speak, 1449 01:03:03,294 ---> 01:03:06,104 a big file representing that compact flash card, and they had 1450 01:03:06,104 ---> 01:03:08,114 to recover the several dozen photographs. 1451 01:03:08,114 ---> 01:03:10,314 And they also had to solve this little murder mystery. 1452 01:03:10,604 ---> 01:03:12,624 We provided folks with this image here. 1453 01:03:13,714 ---> 01:03:17,384 Those of you who've seen this before might be doing 1454 01:03:17,384 ---> 01:03:19,654 that squinting thing right now where you're trying to look 1455 01:03:19,754 ---> 01:03:22,184 through the picture, well you look pretty awkward, 1456 01:03:22,184 ---> 01:03:23,764 because this is not a magic eye puzzle. 1457 01:03:23,764 ---> 01:03:25,314 This is just random red noise 1458 01:03:25,314 ---> 01:03:29,484 that actually has behind it an actual message. 1459 01:03:29,484 ---> 01:03:33,844 And it turns out, I think it was Colonel, let's see, 1460 01:03:33,844 ---> 01:03:35,014 I've got my little solution here. 1461 01:03:35,014 ---> 01:03:36,724 Last year it was Colonel Mustard 1462 01:03:36,784 ---> 01:03:38,734 in the study with the candlestick. 1463 01:03:38,884 ---> 01:03:41,634 And this was the murder message recovered by students 1464 01:03:41,634 ---> 01:03:42,784 who wrote code to do so. 1465 01:03:42,784 ---> 01:03:44,694 And then in Problem Set 6 last year. 1466 01:03:44,694 ---> 01:03:45,604 We challenged students 1467 01:03:45,604 ---> 01:03:48,504 with implementing the fastest spell checker possible. 1468 01:03:48,504 ---> 01:03:49,414 What do we mean by that? 1469 01:03:49,774 ---> 01:03:54,054 Well, we handed the students a big text file containing 140 1470 01:03:54,114 ---> 01:03:58,424 plus thousand English words, and we said write a program 1471 01:03:58,424 ---> 01:04:01,914 that loads all of these words into memory, but very quickly 1472 01:04:01,914 ---> 01:04:05,024 and very efficiently can tell us yea or nay, 1473 01:04:05,214 ---> 01:04:08,274 is this document perfectly spelled or are there errors? 1474 01:04:08,274 ---> 01:04:10,694 And what we provided was a testing framework, a harness, 1475 01:04:11,004 ---> 01:04:14,144 that students, if they wanted to compete, could run their code 1476 01:04:14,144 ---> 01:04:16,914 against some benchmarks, against some testing programs 1477 01:04:16,944 ---> 01:04:17,604 that we wrote. 1478 01:04:17,814 ---> 01:04:20,394 And then, ranked on the course's website from fastest 1479 01:04:20,394 ---> 01:04:23,274 to slowest were the running times, 1480 01:04:23,424 ---> 01:04:25,614 the amount of time it took for each student's code 1481 01:04:25,614 ---> 01:04:28,094 to actually execute, complete opt in. 1482 01:04:28,094 ---> 01:04:29,274 It's by no means required. 1483 01:04:29,484 ---> 01:04:32,814 And we took a bullet for the team and made sure that one 1484 01:04:32,814 ---> 01:04:35,694 of our own teaching fellows intentionally, I think, 1485 01:04:35,694 ---> 01:04:37,294 was at the very bottom of the list. 1486 01:04:37,694 ---> 01:04:39,204 So, there was definitely a lower bound. 1487 01:04:39,204 ---> 01:04:41,984 But the odd, the funny thing was we saw this 1488 01:04:41,984 ---> 01:04:45,734 in the cue guide evaluation, this problem set of all things, 1489 01:04:45,974 ---> 01:04:48,764 was apparently the one that people sunk the most time into. 1490 01:04:48,984 ---> 01:04:51,624 Not because it took any longer than all the other p sets, 1491 01:04:51,854 ---> 01:04:54,444 but they would come back from like dinner, look at the board, 1492 01:04:54,444 ---> 01:04:57,074 and realize dam my friend, my roommate just ever 1493 01:04:57,074 ---> 01:04:59,984 so slightly inch higher than me and so it incentivized people 1494 01:04:59,984 ---> 01:05:02,524 if only to one up their friends and roommates. 1495 01:05:03,164 ---> 01:05:05,684 In Problem Set 7, last year, we asked students 1496 01:05:05,684 ---> 01:05:08,964 to implement their own E*Trade like website, whereby you had 1497 01:05:08,964 ---> 01:05:10,194 to create a website using 1498 01:05:10,194 ---> 01:05:12,864 that language call PHP a database called mysql 1499 01:05:13,374 ---> 01:05:17,224 that actually lets people log in and then manage a portfolio 1500 01:05:17,224 ---> 01:05:19,124 of stocks, buy stocks quote unquote, 1501 01:05:19,204 ---> 01:05:21,344 sell stocks quote unquote, get stock quotes. 1502 01:05:21,344 ---> 01:05:21,974 And from where? 1503 01:05:22,194 ---> 01:05:24,504 Well, we have the students; we had the student patch 1504 01:05:24,504 ---> 01:05:27,394 into Yahoo Finance where they grabbed merely the Real time 1505 01:05:27,394 ---> 01:05:29,974 stock quotes to actually simulate the process 1506 01:05:30,334 ---> 01:05:31,844 of buying and trading stocks. 1507 01:05:31,844 ---> 01:05:35,004 Unfortunately some students, perhaps some economics majors 1508 01:05:35,004 ---> 01:05:37,174 or just folks with too much free time figured 1509 01:05:37,174 ---> 01:05:38,644 out last year how to gain the system. 1510 01:05:38,904 ---> 01:05:41,414 So, even though we gave everyone 10,000 virtual dollars, 1511 01:05:41,694 ---> 01:05:46,044 I think our winner turned teaching fellow this year 1512 01:05:46,044 ---> 01:05:49,754 actually, right don't push them away make them one of your own, 1513 01:05:49,894 ---> 01:05:52,634 for a billion dollars something like that ridiculous. 1514 01:05:53,084 ---> 01:05:54,774 Turns out we weren't really checking whether 1515 01:05:54,774 ---> 01:05:56,534 or not people were trading after hours. 1516 01:05:56,794 ---> 01:06:00,204 And it turns out that also, Yahoo stalk quotes are not 1517 01:06:00,204 ---> 01:06:02,044 in fact perfectly Real time which means 1518 01:06:02,044 ---> 01:06:04,794 if you just have a real E*Trade account you can see the future 1519 01:06:05,004 ---> 01:06:06,484 and see where the stocks are going. 1520 01:06:06,484 ---> 01:06:06,551 [ Laughter ] 1521 01:06:06,551 ---> 01:06:11,974 So, apparently you can exploit that if you put your mind to it. 1522 01:06:12,174 ---> 01:06:13,394 and then, in Problem Set 8, 1523 01:06:13,394 ---> 01:06:15,364 the course's final problem set last year, 1524 01:06:15,614 ---> 01:06:18,744 we had students implement a mash up where they take Google News 1525 01:06:18,744 ---> 01:06:22,514 and Google Maps and mash them together using JavaScript, 1526 01:06:22,514 ---> 01:06:25,674 PHP and SQL in such a way that they had a website 1527 01:06:25,674 ---> 01:06:27,724 that they could find all of the local news 1528 01:06:27,724 ---> 01:06:31,174 from whether it's zip code 02138 or 90210. 1529 01:06:31,174 ---> 01:06:34,334 And, you would actually pull the local current even articles 1530 01:06:34,604 ---> 01:06:36,794 by this thing called XML and integrate it 1531 01:06:36,794 ---> 01:06:38,434 into the view of a Google Map. 1532 01:06:38,904 ---> 01:06:42,404 And then, at very course's end was the true climax 1533 01:06:42,404 ---> 01:06:42,954 of the course. 1534 01:06:42,984 ---> 01:06:45,174 This course culminates in final projects, 1535 01:06:45,174 ---> 01:06:47,014 which ultimately will be your opportunity 1536 01:06:47,014 ---> 01:06:49,894 to design your very own piece of software, designed by you 1537 01:06:50,124 ---> 01:06:51,644 or two or three friends. 1538 01:06:51,824 ---> 01:06:55,594 And the course then climaxes with the new and improved, 1539 01:06:55,594 ---> 01:06:59,024 with the second annual computer science 50 fair 1540 01:06:59,024 ---> 01:07:01,084 which last year was an exhibition across the street 1541 01:07:01,084 ---> 01:07:02,344 in one of the engineering buildings 1542 01:07:02,594 ---> 01:07:06,484 with 300 laptops atop tables, popcorn was popping, 1543 01:07:06,484 ---> 01:07:08,484 music was playing, stress balls 1544 01:07:08,484 ---> 01:07:10,774 with CS50's logo were being thrown around. 1545 01:07:11,074 ---> 01:07:13,324 And this was an opportunity for our 300 plus students 1546 01:07:13,324 ---> 01:07:16,364 to exhibit their final projects not only to each other but also 1547 01:07:16,364 ---> 01:07:19,724 to some 900 attendees in total. 1548 01:07:19,724 ---> 01:07:21,774 And we also invited some recruiters as well. 1549 01:07:21,774 ---> 01:07:24,044 So, that is what you have to look forward in this course. 1550 01:07:24,234 ---> 01:07:27,024 You also have cake to look forward to in the hallway. 1551 01:07:27,284 ---> 01:07:29,934 This is CS50 and we'll see you on Friday. 1552 01:07:30,494 ---> 01:07:38,498 [Аплауз]