>> David: Karibu, jina langu ni David Malan na hii ni CS50. Na, hii si high yako mfano shule ya Sayansi ya Kompyuta shaka. Bila shaka hii ni kitu kidogo maalum. Na si kwa sababu mimi nina mafundisho yake. ni kwa sababu hii ni moja, sisi kama kudhani, wale kozi nadra kuwa kweli akauminya ubongo wako sana na ratiba yako kiasi kwamba kwa muhula wa mwisho wewe dhati ya kujisikia smartare. Kwa hiyo, hiyo ilikuwa njia nilihisi wakati mimi mwenyewe alichukua kozi hii tena katika 1996. Mimi ni kubwa serikali wakati hapa wanaoishi katika Mather House. Na, I. [Cheering] Kama ni mengine, kuna wengine tano. Kwa hiyo, mimi nilikuwa mkubwa wa serikali kwa wakati huo. Na mimi nilikuwa wa serikali kuu kwa sababu siku zote I'd walipenda historia. Mimi walipenda sheria kikatiba katika elimu ya juu. Na kwa hiyo, mimi kuweka mbali katika mwaka huu njia freshmen kufanya nini mimi bora, kufanya nini nilijua walipenda. Na daima I'd kidogo ya geek, I'd babbled daima na kompyuta. Lakini, mimi mwenyewe, labda Suala la kushangaza katika retrospect, I'd daima viewed guys ambao walikuwa kuchukua kompyuta sayansi katika shule yangu ya juu, rafiki yangu kama geeks ya kweli. Na bado, hatimaye hivyo, sophomore mwaka mimi kuchukua kozi hii kidogo CS50 aitwaye ambayo kwa kweli alikuwa na hofu yangu mbali freshman yangu mwaka. Na mimi nilikuwa msaidizi user wakati huo. Kwa hiyo, nilikuwa tayari hakika sifa, angalau, kwa kuwa miongoni mwa wale, wale geeks ambaye mimi alifanya fun wa katika elimu ya juu. Lakini, mimi nilikuwa hofu. Kuna, ilibidi sifa hii kwa wakati na labda bado katika sehemu ambayo ilikuwa ni, ilikuwa ni kweli inatisha. Ni mengi ya kazi. Ilikuwa ngumu na bado, ni moja ya mambo hayo ambayo, Mungu wangu, na gome alikuwa makubwa zaidi kuliko bite yake. Nikajikuta sophomore mwaka, kwa mara ya kwanza, kwa kweli kupata kazi ya nyumbani fun. Na mimi si maneno tu ya lami kozi hii na wewe. hii ilikuwa ni utambuzi halisi kwa ajili yangu. Sasa, nadhani, wakati mmoja, mimi msalaba line kwa geekdum kweli ambapo mimi kwa kweli kutumika kwa kuangalia mbele Ijumaa usiku kwa sababu mimi nilikuwa curl up mbele ya MacBook wangu kidogo na kazi ya seti CS50 tatizo. Kwa hiyo, katika hatua hiyo, mimi nadhani alikuwa wazi msalaba line. Na, lengo letu katika kozi hii si kugeuka wote ndani ya mtu, bali, tu kusema kwamba, kuna kitu kidogo maalum kuhusu kozi hii, ni sayansi kidogo kitu maalum kuhusu kompyuta kwa ujumla hasa siku hizi. Na, acclimated zaidi we've got wote katika teknolojia, na vinyago zaidi sisi kubeba kuzunguka katika mifuko yetu wenyewe kompyuta. I mean, iPhone yangu ni ya kweli ya juu kufanya kompyuta kuliko Laptop yangu ilikuwa katika chuo. Unaweza kufanya mambo mengi neat kwa hayo. Na sasa, wengi wetu katika nafasi hii, labda tu kutumia programu ya watu, nyenzo za watu wengine, ufumbuzi wa watu wengine na matatizo kwa sababu sisi kwenda kwenye iTunes, sisi download baadhi App kutoka hazina ya App na walla tunaweza kufanya kitu kweli neat. Lakini, kwa mwisho wa muhula huu, unaweza kuwa mtu wa kufanya kutatua tatizo. Unaweza kuwa na mtu wa kutatua tatizo fulani, kujenga kwamba App, kwamba kipande cha programu, kwamba chombo kwamba, aidha, mmoja amuses mimi tu, amuses wewe. kwa mfano, kudhibiti, kusema, iTunes yako maktaba kutoka kwa vyumba yako wazi ni App kuwa tayari lipo au unaweza kupata ratiba shuttle kwa urahisi zaidi kwa mfano. Kwa hiyo kwa kweli, moja ya mambo ya kwanza kabisa mimi baada ya kuchukua CS50 alikuwa tena, labda saa usiku hatua hii ya Ijumaa na Jumamosi usiku, kuna nafasi hii wakati ambako alikuwa akikimbia mabasi Harvard shuttle. Na, leo hii, bado wana ratiba iliyochapishwa. Lakini, kwa kweli kulikuwa hakuna njia ya kupata online nje wakati shuttle pili ilikuwa. Sasa, mimi si huduma, kwa sababu hata mimi kuishi katika Mather mimi si miongoni mwa wale ambao kwa ujumla alichukua shuttle. Lakini, mimi nilikuwa na mengi ya marafiki katika Pfoho kwa mfano. Na mmoja wao akaniuliza, nadhani kwa wakati mmoja. [Cheering] Okay Pfoho bora kuliko Mather inaonekana. Kwa hiyo, mmoja wa marafiki wa aina yangu got me kufikiri labda naweza kuandika program kidogo aina ya msaada rafiki yangu kuangalia ratiba ya shuttle. Na hivyo kuzaliwa ya awkwardly aitwaye shuttle kijana, kipande cha Lexicon kwamba ina kukaa kote kwa baadhi ya idadi ya muda wa miaka kati ya baadhi ya upperclassmen ya. Wakati huo, hii ilikuwa ni amri kidogo line mpango sawa katika roho na Dos. Ni mbio katika mazingira tarakilishi za UNIX. Kwa hiyo, haikuwa sexy sana wakati wote. Wewe tu amri typed michache na kuwaonya wakati shuttles walikuwa. Naam, siku hizi ni zaidi kidogo ya walimwengu. Na, ni kweli uwakilishi wa usahihi na aina ya miradi ambayo wanafunzi katika kozi hii hadi mwisho kufanya kwa masharti mwisho. Kwa hiyo, hili ni toleo la nne, baadhi ya miaka 15 baadaye, ya Shuttleboy. Google Maps inaonekana ni kuwa kuna taratibu kidogo. Lakini, kwa wale wa wewe ambao kupata nje ya hapa baada ya daraja na kwenda, sema, kutoka Memorial Hall na haja ya kwenda, kusema, Quad. Naam, unaweza ama kuondoka katika dakika mbili, kama kwa njia, kweli hii si kazi kwa wewe bado tu, au unaweza kuwa kama wengi chaguzi nyingine kama wewe ili kama. Na, upesi, tunaweza lami hii kutoka CS50, itakuwa na uwezo huo SMS. Unaweza Nakala Shuttleboy kupitia simu. You wito Shuttleboy. namba ya simu CS50 mwaka huu, pia, la kushangaza huyu alikuwa inapatikana, 617-bug-CS50. Kwa hiyo, ambayo mara ya kwanza. Hivyo si kuiita bado tu kwa sababu I've Gotten akamkemea kwa, sasa hivi ni kuwa kupelekwa kwa simu kiini mfumo wetu wa kichwa mafundisho ya wenzake. Hivyo, itabidi kupata huyo kama una maswali kuhusu ratiba ya shuttle sasa. Lakini, hivi karibuni kutekelezwa. Kwa hiyo, mambo mengine, kwa kweli, kwamba sisi wenyewe kutumia huu majira ya kweli katika maandalizi kwa ajili ya muhula huu ni rundo zima la matatizo mengine ambayo sisi alitaka kutatua. Kwa mfano, kuna mengi ya mambo yote ambayo inaendelea katika chuo hiki ni siku ya kutolewa. Na kwa kweli, weka kwa njia nyingine, kuna mengi ya mambo yote kwenda katika chuo hiki kwamba hakika mimi kamwe kuchukua faida ya. Na, hata, ingawa mimi niko sasa kuzidiwa na jinsi mambo mengi ambayo ni kwenda, kwenye Chuo hicho, mimi bado wanaonekana kamwe kupata muda. Lakini, walla, hata pale, hotuba ya CS50. Hiyo ni wapi, hivyo hii ni, hii ilikuwa ni mpango sisi aliandika totala wote wa matukio ya juu ya chuo. Na hii imekuwa kitu ambacho wanafunzi wengine katika kozi hiyo na kukabiliana peke yao. Na, tumekuwa kufanya kazi na mashirika mengine ya Chuo hicho kwa kweli kufanya hili kutokea. Lakini uhakika na CS50 muda huu ni kwamba wote wa programu hizi kidogo tumekuwa kazi kama hii moja au kama moja kwa aggregating wote wa habari Harvard katika sehemu moja, yote Habari Google, mambo yote haya ni kwenda na nini huitwa API's, maombi ya programu gränssnitt. Na hii ni dhana tu kusema kwa uwezo wa kuruhusu watu wengine, watu katika chumba hiki, kwa kweli kufanya kitu fulani na data huo. Kwa hiyo, kwa suala mwisho, kama umeamua kutekeleza mradi wa mwisho kuhusiana na habari au matukio au ramani, pamoja na sisi, angalau kama kozi, nitafanya kwamba wote rahisi zaidi mwaka huu na kutoa kwa interface ni; ya aina ya kazi, hivyo kusema, software kuwa unaweza kutumika katika miradi yako mwenyewe na kwenda juu na nje ambapo wanafunzi, pengine, zimeweza zamani kwa sababu mfumo huu si mahali kwa ajili yao. Na tena, haya yote, wakaanza kwa ajili yangu angalau, baadhi ya miaka 15 iliyopita kutekeleza Shuttleboy. Mimi basi emailed rafiki yangu Ken katika Pfoho. Mimi alisema hey nini unafikiri? Je, hii muhimu? Yeye barua pepe ni kutoka katika orodha ya Pfoho wazi na walla, miaka yote hii baadaye mimi bado inaonekana milking mradi huu. Na kitu neat kuhusu hilo, na hii ni pale pia kozi kama hii katika uhandisi na sayansi ya kompyuta, nadhani, ni kidogo maalum, ni kwamba, wakati kufanya kazi na nyumba yako wakati wewe kufanya miradi wako katika kozi hii, kujua, wengi wao, ndiyo, you'll kuweka kando na si kweli kutumia tena. Lakini, baadhi ya hayo, wewe. Na kuna jambo hili kwa kweli nguvu, angalau kwa ajili yangu, kwa kweli jambo hili kusisimua, wakati wewe kufanya kitu na watu wengine kwa kweli huduma, watu wengine si tabasamu tu na Pat aina yako ya nyuma na kisha kwenda kuhusu maisha yao. Wao kwa kweli matumizi yale yaliyofanywa katika maisha yao wenyewe hata kama ni kwa ajili ya kitu kama silly au kama rahisi kama tu wanaweza kupata wakati kutoka nje ya hapa catch ya shuttle ijayo ya Quad. Kwa hiyo, kwa suala mwisho, hiyo ni moja ya malengo ya kozi hii, ili kuwawezesha you guys tu kutambua baadhi ya matatizo kama hayo ya juu ya chuo au hopefully vizuri zaidi ya Chuo hicho, na kwa kweli matumizi na ujuzi wako mwenyewe, akili yako mwenyewe na kutatua tatizo katika baadhi ya sehemu, tekniskt. Kwa hiyo, hii pia ni kweli kama sisi kusema katika Muhtasari na kozi maelezo rasmi kwamba inafundisha jinsi ya kufikiri na inafundisha jinsi ya kutatua matatizo kwa ufanisi zaidi. Naam, nini inamaanisha? Naam, wakati you've got 600 megahertz mfukoni au tatu gigahertz chini ya dawati wako nyumbani, unaweza kutatua matatizo mengi ya ufanisi kwa nguvu tu shear brute. Lakini, kuna matatizo mengi katika ulimwengu huu, kama ni kutafuta, kusema, mtandao wa Facebook au ya internet via Google, kuwa haijalishi jinsi ya kufunga kompyuta husika ni, hakuna njia ya Jahannamu utaenda tafuta mabilioni ya kurasa za mtandao wa haraka isipokuwa kama kweli njia hii tatizo akili. Si tu tafuta, kwa mfano, orodha kubwa ya mtandao kurasa zote duniani kutoka juu mpaka chini kutafuta kitu kuhusiana na suala lolote tafuta you're kutafuta hopefully Google Google na huenda ikatengeneza na kuungana na yeyote wa mashirika hayo makubwa kuwa na kura ya watu smart kufikiria juu ya jinsi gani wanaweza kupata data zaidi haraka, ni jinsi gani wanaweza mchakato wa habari kwa ufanisi zaidi, na jinsi gani wanaweza tu kurudi kwa jumla matokeo ya haraka zaidi ili unaweza kufanya, lakini mambo ya kuvutia zaidi kwa vifaa hivi. Na hivyo, je, sisi maana, ingawa, kwa jinsi ya mafundisho ya watu jinsi ya kufikiria kwa makini zaidi, zaidi algorithmically. Naam, hii Visual daima kidogo inaonekana kwenda juu vizuri. Na, inaonekana kuwa kukumbukwa. Na mimi hata kuulizwa jana tu kwa mwanafunzi wa zamani, oh unakwenda kufanya kitu phonebook tena. Na mimi pretty much papo iliamua alright uhakika tutaweza kujenga kitu phonebook. Na yeye akaniuliza wakati akararua katika haki nusu, nilikuwa kama vizuri kitaalam sisi yeah akararua katika nusu lakini si katika njia, kwa njia ya sayansi ya kompyuta mimi kuwa na uwezo wa machozi jambo hili katika nusu. Na hivyo, hapa tatizo kwamba sisi fram kwa muda. Kwa hiyo, hapa's phonebook ya. Ni got angalau kurasa elfu au hivyo. Na lengo rahisi upande sana mziki dunia ni kupata, kusema, mtu hapa. Kwa hiyo, Mike Smith, jina mara kwa kuanzia na S. hiyo, mimi ni binadamu mfano, mimi pick up hii kitabu cha simu. Na mtu yeyote huko nje, kitu gani wewe, mtu wa kawaida, kufanya kuanza kutafuta Mike Smith, ni wazi bila kufahamu mapema kile Ukarasa yeye ni kweli juu. Haki, hivyo kwenda mellan katikati, kulia. Na katika hatua hii ya hadithi, mimi pengine katika au M N, wewe kujua njia, mellan nusu kupitia phonebook ya. Zinageuka, wakati mimi mara mfano huu kwa namna fulani mimi nikajikuta katika sehemu ya escort. Kwa hiyo, ni kweli si sawa uwiano kati ya A kwa njia ya M na N kupitia Z. Lakini, leo, sisi, kwa kweli, katika M's, alright hivyo, sasa mimi niko kwenye M's. Lakini nini takeaway yangu sasa kama kawaida mbali za binadamu wa mitaani? Niende ijayo kwa Mike Smith. [Inaudible] Na hivyo, pengine tu kwa nusu hii, haki, kwa sababu S inakuja baada ya M. Kwa hiyo, ipo haya ya kuigiza Visual. Hiyo siyo kweli akamtikisatikisa katika nusu, sawa. Mimi aina ya cheated chini ya kituo. Lakini, sasa najua kwamba Mike ni angalau kwa nusu. Tunaweza literally kutupa nusu ya tatizo mbali. Na mimi niko kushoto na tatizo hilo bado kimsingi jambo hilo, kupata Mike Smith katika kitabu kweli kubwa. Lakini, tatizo ni nusu sasa kama kubwa. Kama alikuwa kurasa elfu moja kabla, sasa ni got 500. Unajua nini, siwezi kufanya kitu kimoja tena. Mimi aina ya recursively au kurudia kufanya kitu kimoja. Sasa mimi siyo kabisa katika S. I'm saa T. Na hivyo, oh nilikwenda mbali kidogo sana. Lakini, sasa najua kwamba Mike si haki, kuna kwenda kuwa baadhi ya darasa Someday ambapo mimi tu hawezi machozi kitu bwawa, I bet. Lakini sasa, najua yeye si haki. Hivyo, sasa imekuwa tatizo quartered. Kwa hiyo, I've gone kutoka kwa elfu 500 katika kurasa 250. Na tena, kama wewe kuendelea na mantiki, kuendelea hisabati, mimi nina tatizo hili chopping nusu, kwa nusu, katika nusu mpaka hatimaye mimi ama kwenda kupata yoyote Smith wa wakati wote, uwezekano, au mimi naenda kupata moja I'm looking for. Lakini, kwamba, basi, begs swali, ni bora zaidi kuliko njia yoyote ya rahisi kusema tu, unajua, A, nope, B, hakuna, kuanzia kushoto kwenda kulia kwenda linearly kupitia kitabu? Naam, instinctively ndiyo. Ni itakuwa haraka sana. Lakini, kiasi kidogo? Naam, kama mimi na elfu Ukarasa simu kitabu au wanasema hebu 1,024 kwa ajili ya wale miongoni mwenu walio kama nguvu ya mbili, mara ya ngapi ili mimi na mgawanyiko na tatizo hili katika nusu kabla ya kupata Mheshimiwa Smith? >> Kumi. >> David: Kwa hiyo, kumi, haki. Kama una kurasa 1,024 na mgawanyiko katika nusu, katika nusu, katika nusu, katika nusu, mimi kufanya hivyo mara kumi maana mimi kwenda kutoka kurasa 1,000 kwa mtu I'm kutafuta katika kurasa kumi tu zamu. Na kwamba ni aina ya neat, lakini, unajua, kama wewe ni wewe kufikiria kufanya hivi tumekuwa zote za maisha yako. Ni kwamba makubwa. Lakini sasa, kwamba phonebook si tu kwa ajili ya Boston, ni kwa Marekani nzima au dunia yote na jambo hili ana mabilioni ya kurasa katika hilo, hivyo kufikiria ni phonebook kwa kurasa bilioni nne. Ngapi zamu Ukarasa ni mimi naenda kufanya maximally kupata Mike Smith katika phonebook ya bilioni nne ukurasa? >> Ingia msingi mbili. >> David: Basi yeah, ikiwa ni aina ya aina ya math hii ni logi msingi mbili. Lakini, kama unafikiri 4-2000000000 to bilioni moja, hivyo nusu bilioni. I mean, kwamba kwa kweli huenda whittles yenyewe chini pretty darn kufunga. Kwa kweli kwa 32 halvings ya phonebook hata kutoka bilioni nne, I'll kupata chini ya ukurasa mmoja. Na kwamba wakati mambo haya anapata nguvu, nadhani. Kwamba wakati haya mawazo kupata kulazimisha wakati unaweza kuwa na bilioni nne Ukarasa tatizo na hatua 32 unaweza kupata mtu you're looking for. Na hivyo, kuwa ni nini maana wakati sisi tunasema kwamba utasikia kujifunza jinsi ya kufikiria kwa makini zaidi, zaidi algorithmically, zaidi juu ya kutatua matatizo ya akili. Na faida ni kubwa wakati unaweza kweli kufanya hivyo, na tena, na hatua hii ya Googles ya dunia Facebooks walio na anasa ya kuwa na datasets kubwa. You've got kwa njia matatizo haya kwa njia hii vinginevyo ni si tu kwenda kufanya kazi. Naam, nini nini mwanafunzi wa kweli wanakumbuka? I, sisi kama kwa kufanya mambo ambayo ni kidogo kidogo silly wakati mwingine kwa namna ya kuchukua makali mbali ya nini vinginevyo mengi ya habari mpya. Na hivyo, huyo kweli, mwanafunzi huyu wa zamani aliyenituma link hii ambayo mimi akaenda mbele, tu kwa mateke na kisha beklagade ni saa mwisho, akavuta hadi uTube hapa. Kwa hiyo, mimi napenda kubadilishana mawazo gani mwanasayansi yasiyo ya kompyuta ina maana wakati machozi ya phonebook katika nusu. [Kicheko] [Silence] [Inaudible] >> Unajua kurasa zaidi ya 200, nice line safi, halali machozi. [Kicheko] >> David: hivyo, nadhani, njia yake ya kazi pia. Kwa hiyo, kile got nje ya kozi hii wale miaka yote iliyopita ni ndiyo, Shuttleboy, na kisha ndiyo shahada ya sayansi ya kompyuta, na kisha ndiyo ya PhD katika sayansi ya kompyuta. Na kwamba si kile sisi ni kujaribu kuwawezesha wanafunzi wengi katika kozi hii ndani. Wengi wenu katika kozi hii si kwenda kuendelea na katika kuu sayansi ya kompyuta. Baadhi ya unaweza madogo, lakini kwa baadhi yenu hii itakuwa kozi terminal. Na hiyo kikamilifu faini kwa sababu bila shaka hii ni, kwa kweli, iliyoundwa kwa namna ambapo hata kama wewe tu kulipa haki yake yako kwa miezi kadhaa na kwa kweli mkazo katika na kwa kweli kuchukua kama nje mengi ya kozi hii kama unaweza, unaweza, katika ukweli, kuwa pamoja na vifaa na kurudi nyuma kwa ulimwengu wako wa uchumi, biolojia, saikolojia, kutumiwa math, na kwa kweli kufanya matumizi ya nini hatimaye kama kuvutia kozi kama tunatarajia conceptually kama ni msingi wa vitendo. Na kwamba pia ni jambo ambalo ni nadra kidogo labda kupata. Nilidhani I'd kushiriki comments kadhaa kwamba wanafunzi kutoka kuanguka mara kuweka mwongozo huu cue miaka iliyopita alipoulizwa kuhusu nini ungependa kuwaambia wanafunzi baadaye. Naam, kama si tayari inaonekana katika maoni hayo, mwanafunzi mmoja alisema kozi hii itachukua kiasi cha usawa wa muda wako juu. lakini, kama wewe kuweka kazi yako katika dunia nzima mwezi, kwa ujumla, kama wewe kuweka kazi, kama wewe kuweka kazi katika, alright, hivyo hii ni sarufi yake si yangu, hivyo kama wewe kuweka, kuweka katika kazi, a wote wa ulimwengu mpya itakuwa wazi juu yako. Ajabu kiasi gani mimi kujifunza katika wiki 12 tu. mwanafunzi mwingine aliandika, wewe bora kuchukua au utaenda majuto yake. Mwingine aliandika, zaidi kidogo bluntly, itakuwa kick ass yako na kuacha wewe hisia kubwa. Na kisha hatimaye, huyu ni labda kitu inaweza tu kuonyesha kwa maandishi, lakini, pili kutoka chini ya hapa. [Kicheko] Basi, mimi nina uhakika kama una marafiki wengi waliochukua kozi hii lakini sisi aina ya alifanya mengi ya uharibifu wa wanafunzi wa mwaka jana. Sisi kuletwa, mwanzoni mihadhara kadhaa, na Quizzes wachache, wanandoa matatizo seti, hii dhana ya lolcats. Huwezi kuona nini Mimi naona hapa lakini katika muda utaona kijana mmoja aitwaye furaha cat ambaye ni kiongozi wa lolcat ili aitwaye. Hii ni moja ya mbele ya kijinga internet kwamba nadhani shahiri ya dichotomy kati ya waungwana hizi mbili hapa na nini sasa na juu ya screen ni labda. [Kicheko] Moja ya matumizi ya zaidi ya huu ukumbi muafaka hadi sasa. Na, kwa nini sisi kufanya kweli zaidi kidogo kidogo zaidi ya binafsi ya kweli wazo hili kutatua tatizo kwa ufanisi zaidi. Tatizo rahisi ya siku moja ya shule yoyote kukaa chini au kusimama na kuanza kuhesabu wanafunzi, haki roll wito wa kila aina. Naam, wengi wasiojua lakini hata hivyo, njia sahihi sana kuwa mwalimu anaweza kuchukua ni moja, mbili, tatu, nne, tano, sita, saba, na tunatarajia kuwa hapa muda kabisa. Hivyo, nini maendeleo ya kukokotoa hata hii unaweza fanya kama kid? Jinsi gani unaweza kuhesabu watu kwa haraka? Na, je, kuanza kusoma maelekezo mbali yangu mwenyewe? Gani umefanya kama kid? Kuanza kuhesabu twos, haki, kama hivyo I'm pretty bora katika mbili, nne, sita, nane, kumi, 12. Kwa hiyo, hiyo ni kitu ya kuvutia haki. Kwa hiyo, ni kiasi gani cha maendeleo ya ni kwamba huko? Kwa hiyo, ni wazi kuwa sababu ya mbili. Inachukua nusu yangu kama muda mwingi. Lakini, unajua ni nini, kama tutaweza kupata katika muhula huu, mpango kubwa, kama kasi ya juu mbio wako wakati kwa sababu tu ya mbili ni wale wote kuvutia kwa sababu ya Analog hapa duniani kompyuta ni kwamba mimi ni CPU mimi ni kompyuta, pia heck, kama mimi tu kusubiri miezi 12, 18 iliyopita, mimi kompyuta ya mapenzi tu kwa kuwa na uwezo wa asili, na idadi ya gigahertz mimi ndani yangu kwa kuwa na uwezo wa kuhesabu watu katika nafasi hii kwa kasi zaidi. Kwa hiyo, hizi aina, hawa aina ya speedups linear kama sababu ya mbili sababu ya tatu, hata sababu ya kumi, ambao wasiwasi? Haki, tunaweza kutupa vifaa saa tatizo. Tunaweza kusubiri mambo nje. Tunaweza kuendeleza mashine kwa kasi zaidi. Lakini, kielimu, yeah kwamba ilikuwa aina ya wajanja lakini hakuwa na mabadiliko ya kweli kimsingi tatizo. Mimi bado kwenda kushoto na kulia, mbele nyuma. Ni kweli ya algorithm moja. Lakini, mimi kutoa kwamba tunaweza kufanya vizuri. Tunaweza kufanya smartare kuliko huu na kufanya Kimsingi utekelezaji kwa kasi zaidi. Lakini, kwa kuonyesha hii, tunahitaji wewe ucheshi yetu kwa muda tu. Na ni katika hatua hii ambapo nitakuwa mimi kuongea chini na kuzungumza zaidi. Lakini mimi haja ya wewe kutoa hatua moja pamoja, ambayo ni kama ingekuwa ucheshi yetu, tafadhali simama juu. Hapa maagizo ya bodi, unajua ni, sawa, michache una kukaa chini. Wale wa wewe nyuma, kuna sisi kwenda, alright. Asante. Kwa hiyo, mpango wa hapa mbele yenu. Sasa ya kompyuta utekelezaji mpango huu. Ni haki binafsi maelezo katika hatua hii. Ndiyo, unapaswa kuwa na namba moja. Kupata? Haki, wengi wenu ni kufikiri pengine tayari anyway hii, kwanza freshman mwaka. Kwa hiyo, nadhani na wewe mwenyewe, wewe ni namba moja. Kwa hiyo, hatua ya tatu hapa, jozi mbali na hapo mtu, kuongeza idadi wako wawili pamoja na kukubali kuwa jumla kama namba yako mpya na tutaweza kufanya hundi sanity. [Noises kutoka] Unajua watu wangapi sisi? >> [Inaudible] >> No [inaudible]. >> Tunahitaji kuwa na muhimu jibu. [Silence] >> Yeah. [Noises kutoka] umati wa watu >> David: Katika hatua hii algorithm lazima vilima vya chini. [Noises kutoka] umati Labda tunapaswa kuwa wamekwenda kwa mtazamo wangu baada ya wote. >> 43. >> 163. >> David: Ooh arithmetic mbele ya watu 300 plus. [Kicheko] What's Tally yetu ya mwisho itakuwa? >> 180. [Kicheko] >> 1200. >> 386. >> David: 386, na ni wewe mara moja hapo? Je, kila mtu? Unajua jibu? >> Gani? >> David: Je, unafahamu jibu ni? Hatukuwa kuleta jibu la muhimu na sisi hivyo, 386 kwa kweli ni usahihi jibu sahihi kwa mara ya kwanza. [Cheering] [Applause] Hiyo ni sawa. [Applause] Very, very nicely done. Hivyo, nini ilikuwa ya takeaway sababu dhahiri inaonekana polepole kidogo kuliko mfumo wangu rahisi sana lakini hata hivyo sahihi sana ya kwenda tu onesies na twosies na kupata tu ni kufanyika kwa kutoka kushoto kwenda kulia. Lakini, nini sisi kwa kweli kufanya tu pale? Naam, kama kuna mellan, hebu kusema, 400 yenu amesimama wakati mmoja, na kisha nusu ya wewe, kwa haraka sana, kutokana na kile mimi naweza kumwambia, alitaka kukaa chini. Kwa hiyo, nusu ya wewe akaketi, tukaenda 400-200 kisha 100 basi 50 basi kwa 25. Basi tena, kwamba kuna mgawanyiko wazo moja na kushinda sisi alikuwa na phonebook ya. Tena, na sisi kila iteration halved ukubwa wa tatizo, sisi halved hiyo, sisi halved yake. Kwa hiyo, katika nadharia, algorithm yako lazima tumekuwa kasi zaidi kuliko mtazamo wangu linear kwa sababu mfumo wangu ingekuwa ve kuchukuliwa hatua kusema 400 au labda kama nina kidogo wajanja hatua 200. Lakini, wako mbali ingekuwa ve kuchukuliwa machache, haki ya 400-200, 100, 50, 25, 13, sita, hivyo chini ya kumi katika hatua ya mwisho dhidi yangu 200 au 400. Na kuna ya kijidudu ya wazo kweli kuvutia. Na ndiyo, mathematically nini alifanya tu kwamba ni kitu kidogo logarithmic katika asili kwa logi msingi mbili, sisi umegawanyika katika wawili na wawili tena. Na tutaweza kurekebisha hii baadaye katika muhula huu. Lakini uongo humo tena utekelezaji akili sana. Na, sisi ni scratching tu ya usawa wa mbinu ya wajanja sana akili sana ufanisi na matatizo ili tupate hatimaye kutatua. Kwa hiyo, ambao ni watu wewe tu kama aliongea kwa kifupi? A wasiwasi kawaida katika kozi ya kama hii ni kwamba kila mmoja kwa upande wa kushoto wa wewe na kila mtu haki ya lazima kwa uwazi kujua zaidi kuliko ninyi. Naam, hiyo si kesi kabisa. Na kwa kweli, katika miaka ya hivi karibuni, bila shaka hii imefanya juhudi za kufikia nje kwa wale chini ya starehe, hivyo kusema. Na kwa kuwa, sisi maana si watu kamwe ve kuguswa na kompyuta mbele kwa sababu hiyo kwa kweli ni vigumu kupata kuzunguka hapa siku hizi, lakini folks ambao wanatumia email, matumizi Facebook, pengine hata sasa hivi lakini si lazima uhakika kabisa kufanya wakati kitu huenda vibaya au wakati wao ni kuulizwa kuhusu kitu chochote teknolojia, unajua, mikono kwenda au aina ya kushinikiza vifaa kwa rafiki ambaye ni mtaalamu katika labda zaidi kuliko wao. Naam, haya ni baadhi ya takwimu kutoka muhula wa mwaka jana. Hivyo, alipoulizwa, wakati sisi aliuliza 400 wetu ili wanafunzi wa mwaka jana, unajua, ni nini ngazi yako ya faraja kuja katika darasa hili, pamoja na 34% aliandika wenyewe chini kama kati ya wale chini ya starehe. Kwa hiyo, kama una kuja katika chumba hiki na bado kufikiri sasa, kwamba, unajua ni nini, tamko hili chini inaelezea vizuri mimi, najua kuwa wewe ni katika kampuni vizuri sana. Lakini, kutambua pia kwamba, ikiwa ni kuja katika kozi hii na ujuzi wa sayansi ya kompyuta na wewe walikuwa kweli kuwa geek katika shule ya kati na high shule ambaye alikuwa kuandika kanuni na wenyewe kufundisha lugha, pamoja na kwamba ni mzuri sana kwa sababu kuna dhahiri ni nontrivial ukubwa wa watazamaji na background kwamba pia, juu ya 13%, mara mrefu. Na kisha, kuna mtu mwingine yeyote, aina ya mtu ambaye hawezi kufikiri wao uko chini ya starehe, wao dhahiri sidhani wao uko vizuri zaidi lakini re tu katika kozi ya kupata kitu nje yake. Kwa hiyo, kufikia kozi hii haina kuteka kabisa wigo wa wanafunzi. Na, kuweka hii katika sheria thabiti zaidi, 71% ya wanafunzi, mwaka jana, alikuwa kozi sifuri nyuma yao. Kwa hiyo, ikiwa ni kuingia kozi hii kufikiri oh kila mtu ambaye anachukua CS50 ni sayansi ya kompyuta whiz katika elimu ya juu, siyo hivyo. Watu wengi huenda ikatengeneza hamu yake tu. Na wachache, ndiyo, wamechukua kabisa baadhi ya kozi, baadhi, au angalau mtu mmoja mwaka jana alikuwa na kupelekwa kozi tano hapo awali. Kwa hiyo, sisi dhahiri kuwa baadhi outliers lakini tena nyama ya Curve ni katika maadili wale chini kabisa. Na mwingine statistic kuvutia sisi pamoja juu ya wanandoa wa zamani wa miaka ni uwiano wa kijinsia. Kwa hiyo, kihistoria, angalau katika sayansi ya kompyuta, kuna kipande cha skew mume wa kike. Mimi miaka kadhaa iliyopita ni alama zaidi kuliko mwaka jana. Kwa hiyo, tuko karibu sasa katika ngazi ya 40%. Na kama naweza kutupa chini ya Gauntlet tu kwa ajili ya kuwa na wa tatu pie chati mwaka ujao, hiyo ni sawa zaidi. Napenda uhakika kuwa kuna sababu hakuna kabisa kutoka katika mtazamo kozi kwamba wanaume na wanawake wanapaswa kuwa kujiandikisha katika aina hii ya shaka. Kwa kiasi sawa idadi na kutambua kwa asilimia 38, asilimia 48, sisi ni kweli kabisa penda kuona kwamba sisi ni karibu saa kwamba, angalau, hata statistiskt thamani ya 50%. Hivyo, kama wewe ni, kwa kweli, mwanamke, kufanya wengine pia kuwahakikishia kuwa hii si, kwa kweli, mume inaongozwa darasa. Naam, huyu hivyo hutokea kuwa CS50 20 ya kuzaliwa. I, pia asante. [Cheering] [Applause] Hiyo ni nzuri sana ya kwa sababu hatukuleta keki kwa wewe kweli. Na hivyo, wakati ukitoka hapa baadaye leo, you'll kweli kupata nafasi ya kukutana na watu wengi wa kozi ya mafundisho wenzako ambao utakuwa kupoteza katika barabara ya ukumbi huo. Na ndiyo utakuwa ni namna nzuri ya njia incentivized ya mkutano wenzako mafundisho. Lakini, sisi kuchukua safari hadi mkate kidogo na tena thabiti na bila shaka ni playful asili wakati hata hivyo ni kiasi kutarajia nontrivial ya kazi wakati sisi ni kuwa na kwamba fun. Lakini, sisi ni moja ya keki hizo kwa ajili yenu. [Kicheko] hiyo, ikiwa ni kweli laughing hiyo nzuri kwa sababu hata kama wewe ni miongoni mwa mmoja wa wale waliokuwa chini ya starehe angalau wewe kujua. Wale wa ndani ya asilimia 14 ili kupendelea hii ladha. [Kicheko] Na kisha, kama hawajui Jahannamu kinachoendelea hivi sasa, sisi pia kwa ajili ya wengine wenu. [Cheering] [Applause] Basi, wale ni kuwa kung'olewa juu katika vipande nje kama sisi kusema. Basi tena, hebu kuchukua mambo up a notch na angalau kuanzisha baadhi ya mpangaji msingi kwamba tutaweza kisha mpeleke kwa nafasi ya kukaa kwa muhula huu. Basi, sisi sote pengine kujua kwamba kompyuta hatimaye chemsha chini kwa namna fulani na zeros na watoto, haya mambo aitwaye bits. Hiyo ina maana gani? Vizuri unaweza kufikiria ni kusema ukweli kama balbu ya mwanga kidogo ni balbu mwanga wa aidha kwenye au ni mbali. Ni kubadili, ni ama au ni mbali. Sasa, wanasayansi kompyuta kwa ujumla kufikiria mbali kama idadi arbitrarily na sifuri, na dhana ya juu kama mmoja. Kwa hiyo, kama kutupa mwanga juu ya kubadili kwamba moja kugeuka kuwa mbali ya kuwa ni ya sifuri. Au, equivalently, kugeuza mwanga juu ya kuwa wa thamani ya upande wa kweli ni kuwa mbali ya thamani ya uongo. Kwa hiyo, haya ni visawe tu. Mwisho wa siku, ndiyo, yote computation, mambo yote ambayo inaendelea chini ya Hood katika kompyuta gani hatimaye chemsha chini zeros na watoto. Na, wakati kuacha kufikiria kuhusu hilo, ni ajabu gani pretty bwawa duniani amefanya kwa haya husaidia kujenga msingi ikiwa ni pamoja na baadhi ya vifaa wewe kufanya katika mkono wako. Naam, kwa nini ni muhimu zeros na watoto? Mungu wangu, hata katika ulimwengu wa kweli sisi angalau kuwa na tarakimu kumi, sifuri kwa njia ya tisa. Kwa nini hivyo mdogo? Vizuri katika vifaa suala ni rahisi sana. Ni rahisi zaidi kwa kuwakilisha nchi mbili, kulia. Kama kompyuta ni plugged katika ukuta, kwa kawaida, unaweza kuwa na chanzo rahisi ya asili kisha. Ni ama au mbali. Umeme unaotokana au siyo. Kwa hiyo, hiyo ni aina ya moja ya sababu ya awali ya ulimwengu akaenda pamoja zeros tu na watoto katika kompyuta. Lakini, unaweza kutumia watu kama jengo vitalu. Kwa hiyo, hii kwa kweli ni kidogo kidogo juu ya screen hapa lakini tunaweza kuhesabu katika kisha au tunaweza kuwakilisha kitu tunataka katika kisha tu kama sisi unaweza kusema, decimal, kama tunaweza, hata kwa kweli, kwa barua herufi. Na hivyo, hapa ni mfumo wa haraka. Kwa muda tu dakika kadhaa utasikia sasa kujua jinsi ya kuhesabu, jinsi ya kuandika, namna ya kuzungumza kisha kiasi kama Laptop yako mwenyewe. Naam, una, katika ulimwengu wa aina kisha, wa darasa la shule kama nguzo au maadili. Kwa hiyo, katika shule darasa la sisi kujifunza hii ni wale safu hii ni safu ya makumi, mamia ya safu na hivyo nje. Kwa maneno mengine, kwa nini idadi sisi kujua kama 123 namba 123? Naam, mwalimu wangu alifundisha yangu hii ni wale column, huyu alikuwa makumi, hii ilikuwa ni mamia. Naam, hiyo inamaanisha nini? Naam, kwa mfano gani thamani ni ya nini vinginevyo kamba ya tarakimu, hash tu alama juu ya bodi. Naam, sisi ni moja 100, hivyo kuwa ya 1 mara 100 na kisha plus kile mbili 10 wa ili wa 2 mara 10 pamoja na tatu ndio, ili ya 3 mara 1, sawa, hivyo mimi kuonekana kuwa na Gotten nyuma ambapo mimi kuanza. Lakini, utaratibu huu rahisi sana ya tarakimu kuzidisha tu kwa thamani ya safu ni sawa kabisa kisha ni yote juu. Lakini, katika kisha kutumia nguvu za mamlaka mbili si ya kumi. Kwa hiyo, hapa ni mfululizo wa balbu nane mwanga. Kompyuta wanasayansi kama kutumia maadili kama mbili na nane na 16 na 24 na 32 kwa sababu maadili yote kwa ujumla re nafasi ya kutumia. Kwa hiyo, wakati sisi majadiliano maadili kuhusu nane katika mlolongo huu ni kama kuitwa byte. Na siku hizi sisi mara chache majadiliano katika ka tu, sisi majadiliano gigabytes megabytes na terabytes siku hizi. Lakini zote hatimaye kitu kimoja. Here's nane bits aka byte moja, jargon rahisi tu. Kwa hiyo, yote ya balbu mwanga haya ni mbali. Kwa hiyo, math ni rahisi kweli kweli. Kwa hiyo kuna upande wa kulia, ingawa ni ndogo na kuona, ni safu ya mtu, na twos, ya fours, kwa eights, ya 16s, 32s, 64s, 128s. Sawa, labda ni vigumu kwa kukariri kwa mara ya kwanza, lakini ni wingi tu na wawili kutoka kulia na kushoto. Kwa hiyo, unaweza daima recreate huu. Naam, wao uko mbali ili wote wa nyakati placeholder 0, 0 mara placeholder. Kwa hiyo, hii ni idadi 0 kuwakilishwa katika kisha. Kwa maneno mengine, jinsi gani unaweza kuandika idadi sisi kujua kama 0 katika kisha? Naam, moja, mbili, tatu, nne, tano, sita, saba, nane, na utaalamu kama katika decimal, yote haya zeros kiongozi wao wala kuongeza chochote formula ya wao uko pale tu kwa sababu sisi arbitrarily aliamua sisi nataka nane ya mambo haya katika mstari, kulia. Kama uko kimwili vitu, tuna nane hivyo nimepata wote kuwa mbali. Kwa hiyo, tunaweza ve Gotten tu mbali na sifuri moja. Vizuri jinsi gani unaweza kuwakilisha namba moja? Naam, instinctively utaenda kutupa mmoja wa switches ya. Utaenda upande wa balbu ya. Hivyo, kuna idadi ya moja kwa sababu sasa kuweka moja, bulb mwanga juu, katika nafasi ya mtu. Jinsi gani tunaweza kuwakilisha mbili? Naam, sisi ni kweli kwenda kutupa switches sasa angalau mbili dhidi ya hali hiyo, sisi kugeuka katika safu mbili za kugeuka mbali wale wa safu na sasa tuna thamani ya mtu katika safu ya twos. Kwa hiyo, hiyo ni thamani ya mbili. Sasa, ni wepesi wa akili zoezi, nini kitatokea kwa mtindo ijayo? Je, mimi sasa idadi ya tatu? Naam, mimi haja mmoja kutoka safu ya twos, mmoja kutoka katika safu threes na ha ah. Kwa hiyo, sasa I've incremented hiyo. Na sasa, hiyo ya msingi mfano kurudia. Nini idadi nne? Naam hebu tazama, mimi tu wanahitaji moja katika safu fours na kisha zeros katika twos na wadogo. Hivyo basi, kwa njia hiyo itaendelea. Na, ni hii tu mlolongo wa hatua. Na katika wazo la kisha ni ngumu kwa kweli si wote. Kwa juu kuna tuna zeros nane. Chini ya kwamba tuna zeros saba na mtu mmoja. Chini ya kwamba tuna zeros sita, ni mmoja, na ni sifuri na hilo kisha. Now, thankfully, we computer scientists, we programmers by terms end are not going to often be writing in binary, talking in binary, thinking in binary because we've built many layers of the traction on top of that. In fact, people rarely talk about bits except in a networking context they talk about bytes because one bit, not that useful, eight bits these days still not that useful, but at least eight bits, one byte is at least getting us toward more useful units of measure. But, when we start looking underneath the hood, when we do certain problems such as look at files and look perhaps at network traffic, it will become interesting to know how you're representing data because you're going to have to figure out how to display that same information. And, in fact, we, if we only have zeros and ones, how do we go about representing, say alphabetical letters? Well, we're going to have to have some mapping between binary and letters. But that's as of yet unclear. But to hammer this point home and to give me a break from speaking at, I thought I'd pause for a moment and see if we can't recruit eight volunteers, one byte eight people. Can I get eight people for whom it is not too awkward to come on up. good, good one, two, three, four, five, six, seven, eight very enthusiastic eight, come on down. So, you all, for just a moment here, oh and you have to be willing to not be on the internet because there is in fact a camera in the back of this room. So, turn back now if you don't want to be on the, hello mom, in perpetuity. So, let's see, you here will be the 128th column. And let me ask that you simply hold this before you. And actually, if you could scooch this way just a little bit, then I will get out of your way. You'll be the 64's column, you shall be the 32's column and the 16's. 32's, 16s, 8's, 4's, 2's and 1's. All right. So perfectly lined up with the place holders from before, but we need a little bit of mapping, so a quick set up. We just need an arbitrary way of mapping binary numbers, which really could be converted very easily to decimal numbers. So we need a way of converting numbers to letters if our computers are actually going to show us emails or type URL's or actually display non numeric information. And, in fact, there is a system for that, it's called ASCII, an acronym whose meaning is not so interesting, but whose utility is. This is just a mapping from letters to numbers and there's actually a lot more numbers on the screen, and you guys, don't worry, aren't going to have to test yourselves with this in just a moment. But there's a mapping between numbers and letters and I'm just going to get us started by pointing out a couple of these. The numbers of interest right now are going to be, whoops, are going to be this. Whoops. So in this column here, I can't seem to zoom in simultaneously, we have decimal. Dec for decimal. And then we have the character on the right hand side. So if I hop over into this column, thought it's a bit small on the screen, the number 65 represents what letter? Capital A. And the number 97? Lowercase A. All right. So those two alone, right, so do not go home and try to remember ASCII chart. Come quiz time, do not try memorizing an ASCII chart. Memorize two, 65 is capital A and 97 is lowercase A. And from there you can bootstrap yourself to all of the other alphabetical characters. But all this chart says, and I just downloaded this chart from ASCIItable.com, this is a standard that's been around for many, many, many years, but most computers still use it. What we now have is a means of encoding alphabetical information using what's ultimately numeric. So if these guys are just switches, light bulbs, computers, we can actually convey messages. So each of you has some hints on the back. We're going to have three rounds here where these guys are going to spell out in English, in ASCII, a very short message, a three letter word. It will involve them either raising their hand, thereby representing a one or just standing there awkwardly, thereby representing a zero. So why don't we proceed immediately with round one and you can either raise or not raise your hands. So the audience doesn't get off the hook. What number are they currently representing? 66. Right. Not hard because we have a one, a hand up in the 64s column, a hand up in the 2's column. 64 times one plus two times one is 66. They're representing the number 6, which means the first letter is B. So not too bad, right? Round two. First letter was a B. [Kicheko] >> Seventy Nine. >> David: Can someone second that? Yes. All right. So 79, which means it's now an O. So B,O. There's a third letter. Actually that is kind of, yeah. Third round. Third and final round. What number is this? I heard an 87. Someone else agree? All right, yeah. This is in fact 87, which maps to, and this is a very clever set up at which point you all B, O, W, it's bow. Very good. So actually besides that little souvenir, that was not a very enthusiastic applause, so I'll take care of you. So we do have a little something for these guys here now that they just appeared on center stage doing perhaps the geekiest thing they could. So maybe if we could humor them if only because I'm feeling a little bit awkward now. A little round of applause for these guys here. [ Applause ] All yours. All right. Thank you very much. So, so, it turns out that we can take this one step further, but you are now entering a community of people who understand things like this. [ Silence ] It's slowly spreading, yes? [ Laughter ] It's not cool that you understand this now. So we've already done some damage here today, but yes, there is now such a thing as geek humor that you might just catch a little bit more on to. So what are we going to do throughout this semester? So there's 12 weeks, zero index, so 13 weeks in total. You'll find throughout the semester that computer scientists tend to count starting from zero for reasons that will soon become clear. But what we're going to do this week, starting this Friday, is introduce you to programming. Now you may already be coming at this course with a background in the same, and that's perfectly fine, but we'll also be able to introduce some more sophisticated topics than are typically covered, things like events and threading, so just to toss out a couple of buzz words for those unfamiliar. But what we're going to do is not dive into what the typically traditional language like Java or C++ or C sharp catch phrases that you might have heard in the past, but we're going to use a programming environment, a graphical programming environment that was actually developed by MIT's media lab. And this is an environment that allows you to program, quite literally, by dragging and dropping puzzle pieces that fit together logically that lets you implement these things called loops and conditions and Boolean expressions and you can actually, on day one, after this Friday, write a program that actually some of your friends might care about. So in yester year, say when you've taken a computer science course in high school, odds are one of your first programs was the equivalent of hello world, like wow mom, I just made the computer type some characters on the screen. It's a very underwhelming experience. Much more interesting is it to implement a little something like this, as one of last year's students did. So I give you the work of a former classmate. It's a love story, of sorts, about dancing cookies. [ Music ] So this was actually from a student who had never programmed before. And just to give you a teaser of this interface, and we're only going to use this for one week time, really to get the comfort levels up and to really get folks excited about what you can actually make these machines do, this is an environment where you'll be programming by, for at least a week, just dragging and dropping puzzle pieces that fit together, as we'll see, in a logical fashion. And it lets you do fun, silly things quickly. And for any of you who are a little bit familiar with things like Java and C++, it's usually a good semester or two or three before you finally get to start writing something that another person might actually enjoy watching. Well, in week one of the course, or the second week, zero index, where we dive into a little more traditional environment. In this course we'll spend much of our time on a language called C. This is one of the earliest languages that, unlike Java, actually gives us much greater access for better or for worse, to manipulating hardware and actual memory, and we can do a lot of damage with that. In fact, any time you read of web servers being exploited or computers being hacked into, very often to this day it's the result of people having run software in a language called C or C++ without sufficient care given to what are called buffer overruns or lengths of arrays, so some fairly technical concepts that are not that hard to understand, but there's been a lot of humans making a lot of mistakes for years and with this language we'll actually understand some of those security implications. But each week, typically, we'll introduce also an interesting domain that will inspire that week's problem set. So we'll also take a look this week at the field of cryptology, cryptanalysis, the notion that you can encipher information in such a way that people can't read your messages, but if clever enough perhaps you can, in fact, crack what are otherwise secret messages. In week three we'll then look at some basic fundamentals of computer science like searching and sorting and we'll actually look at this notion of recursion, how to debug things. In short, we'll take things up to the level of problem solving and not so much about mere syntax and implementing short little cookie cutter programs. In week four we'll introduce more sophisticated problems still. What does it mean to manage memory? What does it mean to run out of memory? What does it mean to actually segfault, if you've heard this expression, and odds are you haven't, but very bad things happen and frankly by terms end you'll understand terms like my code segfaulted which actually is generally not going to be a good thing. But then again, we'll introduce some domain specific stuff. So actually one of my internships during graduate school was to work for the local Middlesex County District Attorney's office doing forensic investigations in a digital sense. The local Mass state police would bring to our office hard drives and floppy disks and sometimes for no reason mice and keyboards. And we would be tasked with finding evidence. Now it turns out, maybe just an FYI, that the criminals in Cambridge, Massachusetts, at least, not necessarily that clever. Very often our forensic analysis boiled down to booting the computer up and double clicking on the My Documents folder, and therein laid the evidence. But what we'll do this week is give you a sense of what it actually means to store information on a hard drive, on a flash drive, and why can't otherwise private information be disclosed to third parties when you drop off a computer to be repaired or even when you discard it. Well someone might very well be sifting through those hard drives and it's really not that hard to find data if you know how to look for it. Well, in week five we'll look at more sophisticated data structures, tools and techniques that you can use ala phone books and ala searching huge data sets much more intelligently. And the week's problem set will task you competitively to see just how fast the code you can write is and how little memory you can use. Toward terms end though we'll take things up to a higher level in terms of programming languages and put C behind us and introduce a web programming language known as PHP, one of the popular languages these days. Much of Facebook is still written in PHP, at least outward facing, and it's just a very easy language to learn quickly once you already know another. So with PHP we'll be able to solve problems and implement websites that do interesting things. The news site I showed you, the events site, the shuttle boy site, all of those all happen to be written in PHP. But by no means is that prerequisite. What you'll also find throughout this course is that you're not going to exit this course knowing C. You're not going to exit this course knowing PHP. Those are not interesting skills to claim, but knowing how to program, knowing how to use data structures and algorithms in an interesting way, that's a compelling story. Even I, all these years later, throughout college and graduate school, the only time I ever learned a language was probably in CS50 where it was still taught in C and CS51, which is one of the successor courses. Everywhere along the way since has been go learn this language and then work on this problem set because computer science is not supposed to be about here's a language, let's spend seven weeks teaching you where the semi colons are. There are much more interesting ideas out there. Databases, for one. And in week two we'll introduce you to this query language called SQL that'll allow you to store information in databases and actually implement some fairly interesting final projects. The week after we'll look at what's called client side programming, doing interesting things on a user's computer, taking advantage of their CPU cycles, doing things ala Google maps and these websites that actually use JavaScript, which is actually a language we'll introduce to let you do client side things, make more interesting, more sophisticated user interfaces, but at the end of the day have to be really mindful when implemented of a lot of sticky issues like network speeds, network performance and security. So it's not about again just coding something up that's fun to use or pretty to look at, but actually thinking about the design that'll be the interesting process. And then, the end result aesthetically will often be a really neat toy to show yourself or a friend. And then we'll look at hardware. We're going to take for granted that there are these physical boxes throughout much of the semester that will do what we tell them to do. But how are they doing that. So we'll actually take a peak under the hood and talk about what a compiler really is, what a CPU really is and actually consider what's making all of this fanciness from stupid YouTube videos on down possible. So what are the expectations? Attending lectures and sessions, completing nine problem sets assigned roughly weekly, two quizzes, the final project and there is in fact no final exam. Grades, it's always a question, broken down as follows here. You can take the course pass-fail. But let me say it here, and I've said it many times. I personally care relatively little about grades. I think they are a wonderful, well, they are a useful pedagogical tool with which to motivate and unfortunately sometimes de-motivate, but you'll find in this course that at the end of the day it's more about seeing how far you can go from weeks zero to week 12, as we say in the syllabus than it is about absolutely ranking all students in this course. So if you're coming into this course among those less comfortable, though a large demographic do not assume that that's automatically putting you in the lower third of the so called distribution. At terms end do I sit down with the TF's and discuss each and every one of the students. We take into account where a student came from, what kind of trajectory they were actually on and so at the end of the day please focus more on, and I don't mean to sound too grand, the process of learning and less on the numeric's. And you'll actually see that we grade problem sets, in particular, very coarsely, whereby along three axis, you will get a score of 1, 2, 3, 4, or 5, where 3, is in fact good. 3 is not C. 3 is good, 4 is better, 5 is best. But more on that as the problem sets are released. So the course's website is where you will find, as in most cases, a whole lot of useful things, if not silly things, too. And we have the luxury, as computer scientists of implementing it ourselves. So over the course of the semester you will see various new features rolling out. You'll find out over the course of the semester that the bulletin board is a wonderful place, certainly in the course of this size, to turn when you have questions about the problem set, questions about some computer science concept. You'll be able to check your grades, download all handouts in advance of lecture typically will I post the slides, if you're the type who wants to scribble on notes. But as you've seen, usually I shy away from long lists of details and more like pictures of cats and other visual cues. So you'll find, too, that we will provide printouts of code when we actually think it particularly advantageous to write right on the paper. Software, videos will be available, usually around 1 to 2 to 3 days maximally after each lecture. So the courses are being filmed and every lecture will go online in various formats including QuickTime and MP3's for downloads to iPods and such. And also you will find a link to download what we call the virtual terminal room, which as you'll see is related to virtual office hours. Books are expensive and in the computer world also not that useful. They are on the shelves of the coop, although we're told that last year they ordered like 120 books for the course and 30 were actually purchased, but this perhaps speak to the fact that there are places like Amazon.com, so if you are the type who actually enjoys the sort of support structure that a book provides, if you like to read up more than say a course's typical materials offer, by all means, procure one or more of the books that we recommend here and discuss more in detail in the syllabus. But realize there are so many resources that this course provides in printed form and electronic form, and my God, there's the whole internet out there. Books are not something that are required for this particular course. Lectures, in general, will be Monday's and Wednesday's, except for this Friday and next Friday, simply because of shopping period and Labor Day. So we'll meet this Friday, next Wednesday, next Friday, but there after this is just a Monday, Wednesday course. So this little visual cue here is to remind me that yes, we do distribute videos in QuickTime formats, MP3's, fun ways that you can, if you're actually this type, maybe in the 14 percent, watch a computer science lecture on your iPod, but it reminded me that at terms end last year, the course culminates in final projects, in which students can design most anything they want, and we actually had some students tackle some iPhone applications. Some one of these at least is now in the Apple store. It's called Rover. It's been adopted essentially by Harvard agencies and it's the iPhone version of the unofficial guide to life at Harvard. They did a brilliant job. I bring this slide up too, just to point out what other technologies might very well be down the road. Some of you may have seen this before, but just to give you a teaser of apparently what's in the pipeline, I thought I would offer this brief distraction here. [Music] >> With the MacBook wheel, Apple has replaced the keyboard with a sleek, touch sensitive click wheel. Apple CEO Steve Jobs introduced the product yesterday at the annual Mac Expo. Senior product innovator says the MacBook wheel will make typing a thing of the past. >> At Apple our philosophy is create products that are simple to use and nothing's more simple than a single giant button. >> Gilman showed me how the revolutionary new computer works. >> Gilman: Just open the intuit-type alphabet menu here, scroll to the letter you need and center click to select it and click again to capitalize and repeat this process for each new letter. It couldn't be simpler. You could also let the predictive sentence technology complete the sentence for you. >> Gilman says the MacBook wheel has also simplified organization of files, so searching your hard drive will be a snap. >> Gilman: Just press both sides of the wheel concurrently and center click and there, you have an alphabetical list of every file on your hard drive. Everything is just a few hundred clicks away. >> Apple is calling the MacBook wheel the most intuitive product every designed. >> Here at Apple we like to think that we're giving customers features they don't even know they want yet. >> While the MacBook wheel won't hit the shelves for another 3 to 15 months, many apple users already have it on their wish list. >> I'll buy almost anything [inaudible] and made by Apple. >> Alex [inaudible] was one of the lucky few to get to try out a MacWheel and spent 45 minutes typing an email to his friend. >> I never really realized how much I hated keyboards until I saw this thing. >> I like how it automatically says, sent with a MacBook Wheel, so people automatically know you have one. >> With a price tag of just under 2600 dollars for the lowest end MacBook Wheel, it is an investment. But the super thin laptop features numerous innovations, like the new ultra thin hummingbird battery, which can power the MacBook Wheel for a fill 19 minutes before needing to be recharged and the computer is virtually unbreakable unless dropped or hit. But Apple isn't resting on its laurels, Bryan Gilman says they're already hard at work on the next generation of the MacBook Wheel, which will be four ounces lighter due to its lack of streaming hard drive or wheel. For the Ugly news Network, I'm Jeff Tate. >> Thank you for that, Jeff. It remains to be seen if the wheel will catch on in the business world where people use computers for actual work and not just dicking around. Moving on, police warn. >> David: So I've seen that thing at least a half a dozen times now, including once at like two a.m. last night and I was scrolling down on YouTube and literally like an hour prior, some guy in all seriousness posted, just a wheel? That's the stupidest product I've ever seen. [ Laughter ] And then the rants ensued in the thread thereafter. So besides lectures there are also sections and it is your teaching fellow and the course's course assistants that you will get to know very well over the course of this semester. Sectioning won't begin for a week or so's time. More on that in the lectures to come. But know that the course will have several different tracks of sections, much like First Knight's has for music. Sections targeted more at those less comfortable, those more comfortable and those somewhere in between. And we also offer most Sunday nights before a problem set is due on the following Friday is what we call code walkthrough's where one of the course's teaching fellows will lead a session targeted specifically at the week's problem set and will help you answer the question where do I begin, how should I approach this? And that too will be filmed and made available online and always linked on the course's website. So this course has a huge staff. Our staff is larger than Harvard's average class size. We have over 50 people involved in the production of this course on a weekly basis. Some of them teaching fellows who hold sections, grade work, hold office hours and more. Course assistants who are former students, who are offering on a volunteer basis in fact multiple hours of office hours in the computer lab per week. System administrators, folks doing all of our AV and video production. Someone who will actually be taking notes for you. So it is actually my opinion that scribbling down almost every word that someone like me says is not a very good use of one's time. It's much more interesting I think to actually engage with what's on the screen, what's being presented. And so what we will do as a course is post PDF's online within a couple of days of lectures of scribe notes, which is essentially an authoritative version of course notes, unedited, but documenting what went on in lecture that day, thereby hopefully freeing your minds and pencils from jotting information down. We have some of our team here. Most of our team is actually shopping courses. But if a few of your guys would like to come on stage for a moment with our head teaching fellow and assistant head teaching fellow. Allow me to ask the latter to say a quick hello. And as these guys come up in absentia allow me to say that also on staff this year besides the folks you see here are Alex, Alice, Andrew, Batul, Charlotte, Chris, Dan, Dan, Daniel, David, David, David, Derek, Dev, Didi, Doug, Drew, Erica, Fil, Glen, Greg, Janice, Jason, Jean, Jeff, Jesse, John, John, Jonathan, Jordan, Josh, Karim, Kelly, Ken, Kent, Kyu Bok, Lee, Madhura, Marta, Matthew, Michael, Michelle, Mike, Mike, Nathan, Patrick, Peter, Peyton, Rose, Saba, Sanjay, Shannon, Stacey, Ted, Wellie, Yair and me. So our course is teaching fellows and course assistants, Cansu and Yuhki, would you like to say a quick hello? >> Hi. It's definitely a great honor to be back here for the third time. And if you're one of those who are like less comfortable. [ Laughter ] I think I can [inaudible]. Okay. [ Laughter ] If you're one of those [inaudible]. There's no need to be afraid. I walked in here two years ago with no experience what so ever, and I thought that I was like dumb and I was sure that I was going to fail the class. And I came back for the third time. I did not fail the class. This course is great because it has such a good community. As you can tell by the names listed by David. All the CA's and TF's are here to help you. So if you have any questions at all, just come up to us. Not taking this class because it's hard is not a good excuse. So, hi. >> [Inaudible]. >> Hi, so well both as a student and TF, I've really enjoyed being a part of this course. And even though it's a course that requires a lot of work from you, we've put a lot of work in to it for you as well to make it as enjoyable and as fun as possible. So, we really hope that all of you stay and take part in this very special experience. >> Thanks. >> David: So you will find, thank you, all of you, you will meet them in the hallway in just a few minutes as well. So you'll find that this course, perhaps more so than many is very much a shared experience. This is not a competitive course. This is not your premed course. This is a course which ultimately yes is about doing independent work, as you'll see each week by way of the problem sets. But you can't help but to get close to someone when you're fighting with some bug and banging your head against the computer screen proverbially to try to track down some bug. And I think you'll find that past students will concur that you exit this course with a lot of friends among students and also on staff. So where does that happen? Well, within office hours in the basement of the science center there's some large computer labs and we pretty much take them over five nights a week. These won't start for some time, and this, to be honest, is perhaps the most beautiful picture of the science center I've ever seen. [ Laughter ] It does not look like that on the inside. But it is a place where a good percentage of students do choose to spend time to get one on one assistance with each of the week's problem sets. Each week we will offer more than 100 hours of assistance one on one in the science center per the schedule that will eventually go online. And for those of you who live, say in the quad, or in Mather, or who just don't want to trek all the way to the science center to ask that quick question, we also offer what are called virtual office hours, much like remote technical support where you'll be able to log into a glorified chat room, in which yes, you can type back and forth with a TF or a CA, but you can also share your screen or share control of your mouse with them subject to your consent so that they can help you troubleshoot any problem or any question you have remotely. To give you a sense of what's involved in the course, these are statistics from last year. So you will, I think it's quite fair to say, work your ass off in this course. But per my promise from the start, this is one of those experiences that I don't think a typical student regrets. If you flip through, for instance, the Q Guide forms that are all on the course's website, you'll find that only by putting in the time to a course like this do you really exit having felt like you got something out of it and frankly might very well even have emerged even smarter. So what does it mean to actually write programs and implement problem sets? Well, the first problem set last year, a quick retrospective here, was to implement your very own programming scratch. And we spend just the first week there, and the goal is to implement your own game or animation or art or anything that appeals to you. In week one, then do you implement some basic C programs to get acclimated to some more traditional programming environments at the command line, at Linux so you get comfortable with some of these basics that will certainly serve you well in the long run. Last year's Problem Set 2 was about cryptography. We gave students the opportunity to implement some ciphers, some algorithms that let them encrypt information. And we also offered some students the opportunity to do the opposite. Each problem set, many problem sets, as you'll see are implemented in two editions. A standard edition that we expect almost everyone to do, say 90 percent of the class. And then a hacker edition, which presents the material from a more sophisticated angle, expects perhaps a bit more clever work for those more experienced, and for this one did those students get handed in the hacker edition pre existing user names and passwords in encrypted form and they had to figure out what those passwords for. We actually got into trouble for this a few years ago because all of the sudden FAS Computer Services saw like 50 people running a crack program on nice.fas.Harvard.edu, so they now have been given a heads up for programs like that. Last year students implemented the game of 15. Not all that much fun to play as a party favorite, moving the numbers up down, left, right, but a real stepping stone to implementing something interactive that involves a human and the hacker edition for this one had students implementing God mode, which actually solved this thing for the human, maybe cheat mode is the more apt term, in Sudoku, which was a step up toward that, where we provided the students, you, with a framework with a whole bunch of code that you needed to first understand before taking things the final mile and implementing some of the remaining functionality. And then we dabbled in forensics and this grew out of a real world experience between me and a friend. For this problem set last year, this buddy and I, who he being a particularly good photographer, strolled around campus and we shot photographs of unique, non obvious, but identifiable places on campus. And this was using his digital camera. All of these JPEGs got stored on a digital flash card or what not. And then I accidentally formatting the thing, or erased it. Well, it turns out formatting something or erasing something, usually means neither. It just means doing a little bit of work to make the human think their data has been erased, when in reality it hasn't. It's just been forgotten. And so we tasked last year's students with writing a program in C to actually recover these photos for my friend. We gave everyone a forensic image, so to speak, a big file representing that compact flash card, and they had to recover the several dozen photographs. And they also had to solve this little murder mystery. We provided folks with this image here. Those of you who've seen this before might be doing that squinting thing right now where you're trying to look through the picture, well you look pretty awkward, because this is not a magic eye puzzle. This is just random red noise that actually has behind it an actual message. And it turns out, I think it was Colonel, let's see, I've got my little solution here. Last year it was Colonel Mustard in the study with the candlestick. And this was the murder message recovered by students who wrote code to do so. And then in Problem Set 6 last year. We challenged students with implementing the fastest spell checker possible. What do we mean by that? Well, we handed the students a big text file containing 140 plus thousand English words, and we said write a program that loads all of these words into memory, but very quickly and very efficiently can tell us yea or nay, is this document perfectly spelled or are there errors? And what we provided was a testing framework, a harness, that students, if they wanted to compete, could run their code against some benchmarks, against some testing programs that we wrote. And then, ranked on the course's website from fastest to slowest were the running times, the amount of time it took for each student's code to actually execute, complete opt in. It's by no means required. And we took a bullet for the team and made sure that one of our own teaching fellows intentionally, I think, was at the very bottom of the list. So, there was definitely a lower bound. But the odd, the funny thing was we saw this in the cue guide evaluation, this problem set of all things, was apparently the one that people sunk the most time into. Not because it took any longer than all the other p sets, but they would come back from like dinner, look at the board, and realize dam my friend, my roommate just ever so slightly inch higher than me and so it incentivized people if only to one up their friends and roommates. In Problem Set 7, last year, we asked students to implement their own E*Trade like website, whereby you had to create a website using that language call PHP a database called mysql that actually lets people log in and then manage a portfolio of stocks, buy stocks quote unquote, sell stocks quote unquote, get stock quotes. And from where? Well, we have the students; we had the student patch into Yahoo Finance where they grabbed merely the Real time stock quotes to actually simulate the process of buying and trading stocks. Unfortunately some students, perhaps some economics majors or just folks with too much free time figured out last year how to gain the system. So, even though we gave everyone 10,000 virtual dollars, I think our winner turned teaching fellow this year actually, right don't push them away make them one of your own, for a billion dollars something like that ridiculous. Turns out we weren't really checking whether or not people were trading after hours. And it turns out that also, Yahoo stalk quotes are not in fact perfectly Real time which means if you just have a real E*Trade account you can see the future and see where the stocks are going. [ Laughter ] So, apparently you can exploit that if you put your mind to it. and then, in Problem Set 8, the course's final problem set last year, we had students implement a mash up where they take Google News and Google Maps and mash them together using JavaScript, PHP and SQL in such a way that they had a website that they could find all of the local news from whether it's zip code 02138 or 90210. And, you would actually pull the local current even articles by this thing called XML and integrate it into the view of a Google Map. And then, at very course's end was the true climax of the course. This course culminates in final projects, which ultimately will be your opportunity to design your very own piece of software, designed by you or two or three friends. And the course then climaxes with the new and improved, with the second annual computer science 50 fair which last year was an exhibition across the street in one of the engineering buildings with 300 laptops atop tables, popcorn was popping, music was playing, stress balls with CS50's logo were being thrown around. And this was an opportunity for our 300 plus students to exhibit their final projects not only to each other but also to some 900 attendees in total. And we also invited some recruiters as well. So, that is what you have to look forward in this course. You also have cake to look forward to in the hallway. This is CS50 and we'll see you on Friday. [Applause] ==== Transcribed by Automatic Sync Technologies ====