[Duke luajtur muzikë] [MUSIC - Rossini, "RANZ DES VACHES "nga WILLIAM TELL] [MUSIC - BEAT ANGLISHT, "MARS I KRERËVE kthyeshëm "] [Duartrokitje dhe brohoritjet] DAVID Malan: Pra, kjo është CS50. Emri im është David Malan. Dhe 73% prej jush nuk kanë përvojë të mëparshme me shkenca kompjuterike, në kundërshtim me atë që ju mund të mendoni. Pra, sot ne menduam se do të chip larg në se mungesa e familjaritetit, por edhe t'ju japë një ndjenjë të, për ato prej jush me shumë komoditet, e cila drejtime ju mund të shkoni këtë semestër. Pra, le të fillojë me këtë. Unë me të vërtetë nuk kanë asnjë ide se çfarë është brenda një kompjuter, edhe pse, si ju, unë përdorin atë çdo ditë. Por kjo është një lloj kuti, dhe ka Inputet jo shumë në të. Minimalisht, nuk ka, çfarë? Ndoshta një kabllo të energjisë. Dhe me të vërtetë me këtë një përbërës, energji elektrike, ne duket të jetë i aftë të bërë mjaft këto ditë. Por në fund të ditës, ne duhet të paraqesin gjërat se ne lidhje me kujdes. Ne duhet të paraqesin informacione në disa forma. Dhe ju jeni me siguri të paktën paksa të njohur me idenë nga binar ose bit njëfarë mënyre apo tjetër, kompjutera reduktuar në zero dhe ato. Por mund ne përqafojmë se dhe të paktën vënë një grimë e dritës për këtë? Pra, unë kam këto pak llambat tavolinë këtu. Unë kam një prizë elektrike këtu. Dhe unë jam duke shkuar për të propozojë që brenda e kompjuterit im është të paktën njëri prej këto gjëra, diçka të aftë e duke u ndezur ose off. Në këtë rast, kjo është me të vërtetë një llambë tavolinë, por në nivel më të ulët, kjo është diçka quajtur një tranzitor. Por në botën tonë, kjo është një llambë tavolinë, kështu që Unë jam duke shkuar për të shkuar përpara dhe plug kjo në energji elektrike time këtu. Dhe unë pretendojnë se duke përdorur këtë të thjeshtë, pajisje të thjeshtë, kjo switch thjeshtë, unë mund të paraqesin informacione. Për shembull, tani, unë jam përfaqësojnë asgjë, e drejtë? Unë jam që përfaqësojnë atë që unë do të thërrasë 0 ose false, e kundërta e diçkaje në të vërtetë të qenit të pranishëm. Por në qoftë se unë thjesht të kthehet në këtë kaloni, tani unë kam një të përfaqësuara 1. Pra, duke përdorur këtë pjesë shumë të thjeshtë kujtesës, në qoftë se ju do, unë mund të përfaqësojë informacion. Tani për fat të keq, kompjuteri im nuk mund të bëjë të gjithë se shumë. Ajo mund të përfaqësojnë vetëm dy vlera në të gjithë botën - 0 ose 1. Por çfarë është një zgjidhje e qartë, tani, në qoftë se ne duam të zgjeruar kompjuterik tonë kujtesës dhe përfaqësojnë më shumë se vetëm 0 dhe 1? E pra, le të rrëmbyer një grimë të tillë. Le të kap një tjetër kaloni, një tjetër tranzitor, megjithatë ju dëshironi të mendoni rreth saj. Më lejoni të shkojnë përpara dhe plug kjo në kompjuterin tim si. Dhe unë jam duke shkuar për të kërkuar, tani, që nga energji elektrike duke përdorur një pak më shumë dhe kthyer më shumë nga këto çelsin në dhe off, unë mund të përfaqësojnë më shumë të tilla informacion. Deri tani, kjo është 1. Nëse unë dua të përfaqësojnë tani 2, unë mund ta bëjë këtë. Por zakonisht, konventë, si ne do të përfundimisht shohin, do të kenë më bëjë këtë. Pra, kjo është 0, kjo është 1. Kjo do të jetë 2. Dhe jo çuditërisht, kjo do të jetë 3. Pra, në këtë mënyrë, ende, mund të ne numërimin deri edhe më tej? Nëse unë të marrë një grimë e tretë, një kaloni tretë, çfarë është numri më i lartë mundem tani llogariten deri tek nga 0? 7 Pra, në qoftë se unë jam duke filluar në 0, e drejtë? Sepse në qoftë se unë të kthehet në këtë dritë mbi dhe fakt ky plug tretë dhe përfundimtar dritë në prizë elektrike time këtu, atëherë unë kam aftësinë për të përfaqësuar ndonjë prej dy vlerave këtu, dy vlera këtu, dy vlera këtu - dhe kështu që unë mund të përfaqësojë 2 herë 2 herë 2, ose tetë vlera të mundshme. Dhe në qoftë se unë të fillojë të kontabilitetit në 0, kështu që kjo është 0, 1, 2, 3, 4, 5, 6, 7. Pra, kjo binar. Ajo me të vërtetë është aq e thjeshtë sa se. Dhe unë do të argumentojnë se kjo është në të vërtetë mjaft të njohur për shumicën të gjithë në këtë dhomë. Më lejoni të shkojnë përpara dhe të hapur një editor teksti pak këtu. Dhe ju mund të kujtojnë nga klasën e shkollës që kemi pasur gjëra të tilla si qindra vendi, vendi dhjetëra, dhe ato vend. Dhe kujtojnë se në qoftë se keni pasur disa decimal të Numri i, si diçka të rastit si 123, ju do të në thelb shkruar qe jashtë në formën prej këtyre tri kolona. Dhe pse eshte 1, 2, 3 çka ne e dimë si 123? Mirë, në kolonën pari nga e majta, ne kemi e 100 plus dy 10s, kështu që është 120, plus tre 1s, kështu që është 123. Tani kjo botë që ne vetëm të ndriçohet është pikërisht njëjtë si ju keni qenë i njohur me vite të tëra, përveç tani, kolona tona nuk janë fuqitë e 10. Ata janë vetëm kompetencat e 2. Pra, kurse kjo është vendi ato, kjo do të jetë vendi twos, kjo është do të jetë vendi i katër këmbët. Dhe për shkak se unë jam vetëm duke përdorur thjeshtë e mekanizmave për të kthyer gjërat mbi dhe off - me energji elektrike është i rrjedh apo energji elektrike nuk është i rrjedh - Unë nuk kanë mjaft ekspresive njëjtë 0 varg si përmes nëntë. Ne jemi duke shkuar për të mbajtur atë super e thjeshtë në këtë botën e kompjuterëve. Kam vetëm 0 ose 1 - off apo on, e vërtetë apo e rreme. Dhe kështu ajo që unë jam duke përfaqësuar të drejtë tani është 1, 1, 1, sepse secili nga këto dritat është e ndriçuar. E pra, që më jep një plus 4 One 2, kështu që qe eshte 6, plus një 1, dhe që është 7. Dhe prandaj e bën këtë sekuencë prej tre bit të përfaqësojnë numrin 7. Pra, të gjithë këtë kohë, brenda tuaj kompjuter, të ketë qenë ndonjë numër i transistorëve, çdo numri i bit. Por në fund të ditës, ne mund të paraqesin informacione si thjesht si ajo. Tani për fat të keq, ne kemi numëruar vetëm deri në 7 në CS50 kështu largët, por shpresojmë se ne mund të bëjë një grimë më mirë se kaq. Dhe me të vërtetë mundemi. Supozoni se ne si njerëz vetëm vendosur në mënyrë arbitrare se ne jemi duke shkuar të shoqërojnë si numrat 1 dhe 2, 3, 4, 5, 6, 7, me letra specifike e alfabeti. Dhe për arsye historike, unë jam duke shkuar për fillojnë disi arbitrare, por unë jam i duke shkuar për të thënë, njerëzit, ne jemi duke shkuar për të vendosë si një standard, globalisht, që 65 paraqet numrin A. letër 66 do të përfaqësojë B. Dot, dot, dot. 90 do të përfaqësojë Z. letër Dhe le të supozojmë, nëse ne me të vërtetë vënë disa menduar në të, ne mund të dalë me numrat për pikë thirrje dhe vogle shkronja dhe në të vërtetë, njerëz të tjerë që kanë bërë për ne. Deri tani kemi pasur bit me të cilën ne mund të përfaqësojnë numrat, numrat me të cilat ne mund të përfaqësojë letra, dhe me Letrat ne tani mund të fillojnë kompozimin email dhe karaktere shtypje në ekran. Pra më lejoni të ftoj, nëse unë mund të, tetë trima vullnetarë - të cilët nuk e mendjes shfaqeshin jo vetëm në kamera, por në internet - për të ardhur deri këtu dhe përfaqësojnë tetë të tilla bit, në vend se këta tre. Pra, si në lidhje me një, dy? Si rreth tre? Si rreth katër në dritën blu, pesë në fund? Rreth dikë gjatë këtu? Gjashtë në front, shtatë në front, dhe tetë në para, si edhe. Kështu që unë vetëm ka ndodhur në mënyrë që të vijnë të përgatitur me një bandë e tërë e rrëshqet të letrës. Dhe në këto copa letre janë numra që përfaqësojnë atë kolona ju djema janë duke shkuar për të përfaqësuar. Pra, ju do të jetë - çfarë është emri juaj? STUDENT: Anna Leah. DAVID Malan: Anna Lea, ju do të jetë kolona 128s. Ju jeni? STUDENT: Chris. DAVID Malan: Chris do të jetë kolona 64s. Ju jeni? STUDENT: Dan. DAVID Malan: Dan do të jetë kolona 32s. STUDENT: Pramit. DAVID Malan: Pramit do të jetë kolona 16s. STUDENT: Lillian. DAVID Malan: Lillian do të jetë 8s. STUDENT: Jill. DAVID Malan: Jill do të jetë kolona 4s. STUDENT: Mary. DAVID Malan: Maria do të jenë 2s, dhe? STUDENT: David. DAVID Malan: David do të jetë kolona 1s. Pra, nëse ju djema mund të futemi pak përpara në mënyrë që të gjithë mund ta shohin. Çfarë ju djema nuk e shoh është se në mbrapa e këtyre rrëshqet e letrës është një fletë mashtrojnë pak që është gati të udhëzojë këto tetë bit ose të ngrenë dorën e tyre apo jo ngrenë dorën e tyre. Nëse dora e tyre shkon lart, ata janë të përfaqëson një 1. Nëse dora e tyre qëndron poshtë, ata janë përfaqëson një 0. Ndërkohë, ne publiku duhet të jetë në gjendje të kuptoj se, bazuar në këtë , hartes çka tre-letër fjalë këto folks janë gati për të përcaktuar. Pra, në një moment të vetëm, ju jeni duke shkuar për të lexoni rreshtin e parë off pasme të fletë mashtrojnë tuaj, dhe ju jeni ose duke shkuar për të rritur apo të rritur jo dorën tuaj. Nëse ju jeni një 1, që ju të rritur, nëse ju jeni një 0, ju qëndroni atje ajër, ashtu si kjo. Go. Çfarë numri, së pari dhe më kryesorja, janë këta njerëz përfaqësojnë? 66. 66, e drejtë? Ne kemi një 1 në kolonën 64s, a 1 në kolonën 2S. Kjo më jep mua 66, kështu që shfaqet për t'u përfaqësuar B. So ju djema keni shkruar - OK, kjo është e mjaftueshme. B. Pra, tani le të lëvizë mbi Letra jonë e dytë. Go. Kush është më e shpejtë në matematikë këtu? Pra 79. Përsëri, në qoftë se ne të shtoni deri gjitha kolonat në të cilin ka një 1, aktualisht, vetëm si ne e bëmë para se me thjeshte shembuj të 7, ne tani marrë numrin 79. I cili sipas hartës sonë është shkronja O. Pra, ne jemi pothuajse atje. B, O. Dhe së fundi, shkoni. Cilat janë ato përfaqësojnë tani? Më pak konsensus. Kjo është vetëm një shushurimë absolute. Po, kjo është në fakt 87. Mirë. Pra, nëse ne tani hartë që back up për të - le të të fillojnë thirrjen tabelë tonë ASCII, Kodi Standard Amerikan për Informacione Interchange. Kjo na jep letrën - jo "bo", por "harku". Dhe kjo është një e përsosur cue për ju djema për të marrë një hark dhe kreu në shpinë. Shumë falemnderit. [Duartrokitje] DAVID Malan: Ju mund t'i mbani ato. Edhe pse në të vërtetë, dikush do të si një llambë tavolinë, gjithashtu? [Hoot nga publiku] DAVID Malan: Desk llambë? [Qeshura] DAVID Malan: Really? Llambat tavolinë për të gjithë? Dakord. Pra, duke filluar me shumë të thjeshta e parime, ne kemi tani jo vetëm që numërohen nga 0 deri të gjithë rrugën deri në 7, ne kemi Supozohet se vetëm duke hedhur më shumë bit ose më shumë dritat ose transistorëve më shumë në këtë problem, ne mund të përfaqësojnë numra të mëdha dhe më të mëdha, dhe Ergo, shkon të mëdha dhe më të mëdha të alfabetet, si anglisht. Dhe vetëm le të marrin në besim për sot që në mënyrë të ngjashme, ne mund të fillojmë të përfaqësojnë grafika dhe video dhe çdo Numri i mediave të tjera me të cilat ne jemi i njohur sot. Pra, kjo është CS50, dhe në këtë klasë krahas prej jush janë, përsëri, shumë e shumë shokët e klasës që kanë sa më pak përjetojnë si ju. Dhe unë përmend kjo vetëm për shkak mjaft shpesh, duke përfshirë si kohët e fundit si një nga studente këshillimin ngjarjet dhe në i paedukuar mjaft pranverën e kaluar e këshilluar Ngjarja, ne shpesh dëgjojmë nxënësit mohojmë kur vjen deri në tabelën CS, mirë, Unë kam qenë duke menduar në lidhje me marrjen e kësaj klasa intro, por unë nuk jam me të vërtetë një Personi kompjuter. Ose, por të gjithë me siguri di më shumë se unë. Dhe unë vënë këtë në font të madh të jetë e mundur, për të përcjellë këtë mesazh që që nuk është në fakt rast. Dhe në qoftë se ju jeni pyesin, duhet Unë, në fakt, të jetë këtu? Kuptojnë se jo vetëm që ky kurs të Hyrje titulli Computer Shkenca, ajo është Hyrje në kompjuter Shkenca I. Pra, nuk është me të vërtetë një hyrje të dytë të tillë. Pra, ju nuk jeni, në fakt, në vendin e gabuar. Dhe në mesin e qëllimeve kam për sot janë të qetësoj çfarëdo shqetësimi të tillë ju mund të ketë, por edhe për të pikturuar një fotografia e asaj që është në dyqan për Nxënësit më pak dhe më të rehatshme njësoj në këtë kurs. Por pare, nje fjalë në njërën nga fletëpalosje ju keni sot, ndër të cilat janë një numër i Fakte. Ajo ka qenë një vizion i yni për disa kohë tani për të futur një kategorizimin e ri opsion në këtë kurs - domethënë, SAT / UNSAT. Filozofikisht për mua, ajo është shumë më shumë, shumë më e rëndësishme se Nxënësit në këtë klasë të angazhohen me materiale, të sfidohet nga materiale, dhe shqetësohen shumë, shumë më pak rreth mekanika e rezultateve aktuale dhe klasat letër në semestër fundi, por me të vërtetë përqafojnë Kursi dhe materiale të saj. Dhe me të vërtetë kjo ndihet, më në përgjithësi, për çfarë është interesante për ta, për të të ndjehen të sfiduar dhe shpërblehet, por pa frikën e dështimit. Dhe me të vërtetë, kjo është një shumë e përsëritur Tema hyrëse në këtë dhe të tjera kurse në fusha të tjera, që ju keni ky ankth kur është fjala për vënë gishtat e dikujt në ujëra të panjohura. Unë vetë, përsëri në vitin 1995, ishte një studente. Unë kam qenë shumë e fokusuar në një flotacion Gov këtu. Dhe unë ende do të rritur gjithmonë me një grimë e një interes në shkenca kompjuterike. Unë kam qenë gjithmonë kureshtar. Por pastaj përsëri, madje, kam pasur këtë frikë e edhe shkelën këmbë në CS50, aq shumë kështu që unë nuk e kam edhe dyqan atë vit fillestar. Dhe arsyeja e vetme që kam vënë një këmbë në i paedukuar mjaft dera vit ishte sepse unë u lejohet të marrë atë të kalojë / dështojnë. Por edhe të kalojë / dështojnë kërkohet që të shkoj deri nervore të bëni një takim me Profesor Kernehan në atë kohë, sjellë këtë fletë të madhe letre, dhe të kërkojë atë për nënshkrimin e tij dhe e tij leje për të eksploruar këto ujëra të panjohura. Dhe kjo nuk ka ndihmuar në vitet e fundit se kur e bëjnë këtë në CS50, kur ne përdoret për të kalojë / dështojnë, në mënyrë të ngjashme do të dhjetra ose qindra të shokëve tuaj kanë për të dalë, Zoti na ruajt, në front i Sanders me këtë formë, që në disa mendjet përfaqëson një paaftësi, Unë guxoj të them, për të kryer janë të nivelit kolegët tuaj. Cili është qesharake, por unë mendoj nuk ka se mentaliteti. Dhe kurrë nuk ka qenë në këtë kulturë i SAT / UNSAT, ose të kalojë / dështojnë më shumë në përgjithësi, në këtë kurs, apo me të vërtetë në këtë kampus. Pra, këtë vit ne kemi ndryshuar atë. Unë do të jetë sa gjysma e ekstazë kjo klasë ose më shumë përfundoi duke marrë CS50 SAT / UNSAT. Në një vit kohë, ajo do të jetë e mrekullueshme në qoftë se pothuajse të gjithë është. Pas kësaj ndoshta ne do të punojmë on notave letër në Harvard Kolegji më në përgjithësi. Por tani për tani, ne do të bëjmë këtë brenda tonë sferë vet, dhe unë do të përzemërsisht inkurajuar ju për të shqyrtuar ato dhe Fakte bëni pyetje si ju e gjykojnë të arsyeshme, në mënyrë që shpresojmë se ju, ndryshe nga mua, nuk do të mjaft kanë se faktor njëjtin ndjejë kur eksploruar çfarë është ndoshta një vend të panjohur. Pra, çfarë është CS50? Kjo është një hyrje në ndërmarrjet intelektuale e kompjuterit shkenca dhe arti i programimit. Por çfarë do që me të vërtetë do të thotë? E pra, deri tani, kemi biseduar shumë shkurtimisht informacion në lidhje me përfaqësimin. Por mendoj se ne të vërtetë duan të bëjë diçka me të. Ne kemi nevojë për të futur nocionin e ajo që ne do të thërrasë një algoritmi. Një algoritmi eshte nje procedure, nje proces, një grup i udhëzime për duke bërë diçka. Dhe një algoritmi mund të jetë diçka thjeshtë super. Për shembull, një shembull me të cilin disa ju mund të jetë i njohur është ky Gjëja këtu. Pra, ky libër këtu është gjithnjë e më datë, por një herë e një kohë, ajo përmbante një tërësi shumë të emrave dhe numrat e telefonit. Dhe me të vërtetë, në qoftë se unë të kërkuar për të gjetur dikush në këtë libër telefonit - thonë, dikush me emrin Majk Smith - Unë mund të gjeni Mike Smith në çdo numër mënyra mjaft i thjeshtë. Unë mund të fillojë në fillim dhe lëvizin në tek faqja 1, nuk ka. Page 2, nuk janë atje. Page 3. Është se algoritmi, është se Procesi, saktë? Pra, kjo është e saktë, e drejtë? Unë jam natyrë e një idiot për të bërë atë në se mënyra, por në fund unë do të gjeni mbiemrin S, dhe shpresojmë se Mike është në atë seksion, dhe unë do të bëhet bërë me algorithm tim. Por sigurisht kjo nuk është intuitive. Shumica e çdo qenie njerëzore të arsyeshme në këtë dhomë nuk do të kishte bërë këtë. Çfarë do të kishit bërë? Ju do të keni shkuar drejt në mes, e drejtë? Afërsisht të qëndër. Dhe ti e kupton, oh, këto janë Znj Pra, Mike Smith, emri i fundit ishte Smith, nuk është e qartë, atëherë në gjysma e majtë e librit. Ai duhet të jetë në drejtim të S është në të djathtë. Dhe në këtë pikë, edhe pse shumica prej nesh mos e bëni këtë në realitet, ne mund të fjalë për fjalë të gris këtë problem në gjysmë. [Brohoritje dhe duartrokitje] DAVID Malan: Faleminderit. [Brohoritje dhe duartrokitje] DAVID Malan: Ju mund të vërtetë të gris këtë Problemi në gjysmë, duke lënë mua me të, fjalë për fjalë, një gjysmë si problem i madh. Pra, nëse ky libër telefoni ishte - dhe kjo ndoshta ishte - rreth 1000 faqe, tani kjo është vetëm 500. Në qoftë se unë bëj këtë përsëri dhe unë të kuptojë, oh, Damn, unë shkova shumë larg, unë jam në Ts seksion, unë mund të në mënyrë të ngjashme - fjalë për fjalë apo figurativisht - gris librin e telefonit - kjo ishte në fakt shumë më e lehtë në atë kohë. Unë fjalë për fjalë mund të shqyej librin e telefonit në gjysmë, duke lënë mua tani me jo jo 1000, 500 - 250 faqe. Dhe unë mund të shkoj 125, dhe gjysma e se, dhe gjysma e se, dhe gjysma e se, derisa më në fund unë do të lihet me vetëm një faqe të vetme. [Qeshura] DAVID Malan: Kjo është Pjesa I dështojnë. Një faqe e vetme në të cilën Mike është shpresë. Tani ato algoritme të ndryshme mund të jenë të lloj i vlerësuar apo të vlerësohen në mënyra të ndryshme. I pari ishte shumë lineare, e drejtë? Kthejeni faqen, shikoni për Mike. Kthejeni faqen, shikoni për Mike. Është shumë lineare. Nëse ka një faqe më shumë në telefon libër, ajo ndoshta do të marrë mua një më shumë dyta, një njësi më shumë nga koha, megjithatë ne jemi duke njehsuar kohën. Kështu që unë mund të tërheqë këtë linjë si kjo këtu, ku si madhësia e Rritjet e problemeve nga e majta në të djathtë - Libri i telefonit merr të vogla për të madhe - dhe koha do të rritet në Boshti vertikal, madhe libër telefoni është. Pra, n është vetëm një variabël i përgjithshëm që shkencëtarët kompjuter të përdorur për të përfaqësuar disa vlera, disa numër. Pra, n do të rritet linear. Dyfishojë madhësinë e librit të telefonit, është duke shkuar për të marrë mua dy herë më shumë kohë, ka shumë të ngjarë, për të gjetur Mike. Tani unë mund të ketë qenë i zgjuar në lidhje me këtë, e drejtë? I was getting bored shpejt. Mund të ketë bërë këtë duke twos. Kështu dy faqe, atëherë katër, pastaj gjashtë, pastaj tetë. Dhe unë mund të fillojnë të fluturojnë nëpërmjet saj një pak më të shpejtë, megjithëse në rrezik të vogël të duke tejkaluar Mike, por kjo nuk është kurba do të jetë mbi të gjitha që të ndryshme. Ajo është ende do të jetë një e drejtë line, por pak më të shpejtë. Por çfarë kam bërë? Unë në fakt e bëri diçka të rrënjësisht të mirë. Kam arritur atë që ne do të thërrasë logaritmike , koha log n, ku kjo e gjelbër Linja ka një shumë, shumë, shumë edge pak drejt saj. Dhe në vend, ajo sugjeron, si ajo lloj i afrohet pafundësinë ndonjëherë kështu gradualisht, se unë në fakt mund të marrë një 1000 faqe- librin e telefonit, dyfishojë madhësinë e saj vitin e ardhshëm - sepse mendoj shumë më shumë njerëz lëvizin në qytet. Deri tani unë kam marrë 2000 faqe, por si hapa shumë më shumë është se zgjuar algorithm do të marrë? Vetëm një. Unë do të thotë, kjo është një gjë e fuqishme. Nëse shkojmë në 4.000 faqet vitin e ardhshëm, që do të marrë mua vetëm dy hapa më shumë. Kështu që ju mund të hedhin më të mëdha Problemet në mua, jo ndryshe nga web është hedhur probleme më të mëdha dhe më të mëdha çdo ditë në Googles dhe Facebooks e bota, dhe kjo nuk është tillë një punë e madhe. Sepse kam vënë mendim shumë dhe kujdes në Algoritmi im me të cilin për të zgjidhur Problemet efikase. Dhe me të vërtetë, që do të jetë një nga qëllimet e këtij kursi. Ju do të, së bashku rrugën, mësojnë se si të programit. Ju do të mësoni se si të programit në ndonjë numër të gjuhëve. Por në fund të ditës, sigurisht është në lidhje me zgjidhjen e problemeve dhe marrjen e më të mirë në zgjidhjen e problemeve - dhe, si në raste si ky, zgjidhjen e problemeve në mënyrë më efikase. Tani deri tani, ne kemi bërë këtë mjaft intuitive. Le të futur diçka në mënyrë të drejtë generic quajtur pseudokod. Pra, ne do të merrni përfundimisht, në këtë kurs, të gjuhë të ndryshme programimi. Por sot ne do të bëjmë atë në anglisht-si Sintaksa, ku ju vetëm lloji i thonë çfarë ju thotë, por ju jeni ndonjëherë në mënyrë ngjeshur dhe ju mos u bëni merak rreth gramatika dhe fjali të plota. Ju vetëm të shprehë veten si koncize të jetë e mundur. Pra pseudokod është anglisht-si Sintaksa që përfaqëson një gjuhë programimi. Dhe për këtë qëllim, më lejoni të propozoj që ne tani të modeluar procesin ne vetëm përshkruar i numërimit diçka pak ndryshe, këtë herë duke marrë një shikoni në këtë video pesë-minutësh të prodhuar nga miqtë tanë në TED që përcakton se çfarë është pseudokod, përcakton se çfarë menduarit algorithmic është, dhe madje edhe pse shembull ju jeni gati për të parë është, në vetvete, super e thjeshtë, kjo është do të fillojnë të na japë mendor model, fjalorin, me të cilin do të të bëjë shumë, shumë më tepër komplekse Algoritme mjaft shpejt. [FILLO video playback] [Duke luajtur muzikë] Transmetuesi: Çfarë është një algoritmi? Në shkenca kompjuterike, një algoritmi është një vendosur e udhëzimeve për zgjidhjen e disa Problemi hap pas hapi. Në mënyrë tipike, algoritme janë ekzekutuar nga kompjuterat, por ne njerëzit kanë Algoritmet, si edhe. Për shembull, si do të shkojë Rreth numëruar numrin e njerëzve në një dhomë? E pra, në qoftë se ju jeni si unë, ju ndoshta do të Pika në çdo person, një në një kohë, dhe numërimin deri nga 0. 1, 2, 3, 4, dhe kështu me radhë. E pra, kjo është një algoritëm. Në fakt, le të përpiqemi për të shprehur atë një pak më zyrtarisht në pseudokod - Anglisht-si sintaksa që i ngjan një gjuhë programimi. Le N 0 të barabartë. Për çdo person në dhomë, të vendosur N barabartë me N plus 1. Si për të interpretuar këtë pseudokod? E pra, një linjë deklaron, në mënyrë që të flasin, një ndryshore të quajtur N dhe initializes vlera e saj me 0. Kjo thjesht do të thotë se në fillim të algorithm tonë, gjë me të cilën ne jemi duke numëruar ka një vlerë prej 0. Pas të gjitha, para se të fillojë numërimi, ne nuk kemi numëruar ende asgjë. Thirrja e kësaj N ndryshueshme është vetëm një konventë. Unë mund të ketë ndonjë gjë më e quajti atë. Tani linjë dy demarks fillimi i një lak, një sekuencë e hapave që do të përsëris disa numrin e herë. Pra, në shembullin tonë, ne jemi duke marrë hap është duke numëruar njerëzve në dhomë. Nën dy linjës është linjë tre, i cili përshkruan saktësisht se si ne do të shkojnë për numërim. Kryeradhë nënkupton se ajo është tre të linjës që do të përsëriten. Pra, çfarë është duke thënë se është pseudokod se pas duke filluar nga 0, per secilin person në dhomë, ne do të rritet nga N 1. Tani është ky algoritëm korrekt? E pra, le të më përplaste mbi një grimë. A do të punojë në qoftë se ka dy njerëz në dhomë? Le të shohim. Në një linjë, ne kemi nisja N në 0. Për secilin prej këtyre dy njerëzve, ne pastaj Rritja N nga 1. Pra, në udhëtimin e parë përmes loop, ne update N nga 0 në 1. Në udhëtimin e dytë përmes se njëjtë lak, ne Përditëso N 1-2. Dhe kështu deri në fund të këtij algoritmi s, n është 2, të cilat me të vërtetë përputhet me numrin e njerëz në dhomë. Deri më tani, në mënyrë të mirë. Si në lidhje me një rast qoshe, pse? Supozoni Ndodhen 0 njerëz në dhomë - përveç meje, kush është duke bërë numërimin. Në një linjë, ne kemi nisja N në 0. Këtë herë, edhe pse, linja tre nuk ekzekutuar fare pasi nuk ka një person në dhomë. Dhe kështu N mbetet 0, që përputhet Numri i njerëzve në dhomë. Shumë e thjeshtë, e drejtë? Por njerëzit e numërimit në një kohë është shumë e paefektshme, shumë, apo jo? S'ka dyshim se ne mund të bëjmë më mirë. Pse nuk llogariten dy njerëz në një kohë? Në vend të llogaritur 1, 2, 3, 4, 5, 6, 7, 8, dhe kështu me radhë, pse nuk e llogarisin, 2, 4, 6, 8, dhe kështu on? Kjo edhe tingëllon më të shpejtë, dhe kjo me siguri është. Le të shprehim këtë optimization në pseudokod. Le N 0 të barabartë. Për secilën palë e njerëzve në dhomë, vendosur N barabartë me N plus 2. Ndryshimi Pretty thjeshtë, apo jo? Sesa njerëzit numërimin e në një kohë, ne vend të llogarisë ata të dy në një kohë. Ky algoritëm është kështu dy herë aq shpejt sa fundit. Por a është kjo e saktë? Le të shohim. A do të punojë në qoftë se ka dy njerëz në dhomë? Në një linjë, ne kemi nisja N në 0. Për këtë një palë të njerëzve, ne pastaj Rritja N nga dy. Dhe kështu deri në fund të këtij algoritmi-së, N është 2, të cilat me të vërtetë përputhet me numrin e njerëz në dhomë. Supozoni tjetër që ka 0 njerëz në dhomë. Në një linjë, ne kemi nisja N në 0. Si më parë, tre linja nuk ekzekuton fare, pasi që nuk ka ndonjë palë e njerëzve në dhomë. Dhe kështu N mbetet 0, e cila në të vërtetë përputhet me numrin e njerëz në dhomë. Por, çfarë nëse janë tre njerëz në dhomë? Si e bën këtë algoritëm fare? Le të shohim. Në një linjë, ne kemi nisja N në 0. Për një palë të këtyre njerëzve, ne pastaj Rritja N nga 2. Por atëherë çfarë? Nuk është një tjetër palë e plotë të njerëzve në dhomë, kështu që nuk ka dy linja zbatohet më. Dhe kështu deri në fund të këtij algoritmi-së, N eshte akoma 2, e cila nuk eshte korrekte. Në të vërtetë, ky algoritëm është e thënë të jetë buggy, sepse ajo ka një gabim. Lejon dëmshpërblim me disa pseudokod ri. Le të barabartë 0 n për çdo palë e njerëzve në dhomë. Bëje N barabartë me N plus 2. Nëse një person mbetet unpaired, vendosur N barabartë me N plus 1. Për të zgjidhur këtë problem të veçantë, ne kemi futur, në përputhje katër, një kusht, i njohur ndryshe si një degë se vetëm ekzekuton në qoftë se ka një Personi që ne nuk mund të palë me tjetrën. Dhe kështu që tani, nëse ka një apo tre apo ndonjë numër i rastësishëm i njerëzve në dhomë, ky algoritëm tani do të numëroni ato. Mund të bëjmë edhe më mirë? E pra, ne mund të mbështeteni në 3s apo 4S apo edhe 5s dhe 10s, por përtej kësaj, ajo është duke shkuar për të marrë një pak e vështirë për pikë. Në fund të ditës, nëse ekzekutohet nga kompjuterat apo njerëzve, algoritme janë vetëm një grup e udhëzimeve me e cila për të zgjidhur problemet. Këto ishin vetëm tre. Çfarë problemi do të zgjidhë me një algoritmi? [VIDEO END rishikim] DAVID Malan: Kjo është e vetmja kohë Unë do të shfaqet në formë të kartonave. Por, ku kjo histori lë jashtë, tani, është se si mund të bëjmë më mirë? Threes dhe katërkëmbëshe, ne pretendojnë, ne mund të llogarisë njerëz shumë më të shpejtë, por mund të kemi të bëjë thelbësisht më mirë se kjo? Dhe unë bast mundemi. Në qoftë se ne kemi prezantuar një grimë e vet tonë pseudokod këtu, unë jam duke shkuar për të propozojë se ne mund të arrijmë një linjë si kjo. Ne nuk jemi duke shkuar për të numëruar njerëzit një, dy, tre, katër. Ne nuk jemi duke shkuar për të shkuar dy, katër, gjashtë, tetë. Ne jemi duke shkuar për të bërë thelbësisht më mirë duke rimenduar problemin, dhe në këtë rasti, leveraging një tjetër underutilized burim. Në një moment të vetëm, unë shpresoj se ju do të fal dhe humor na duke qëndruar deri në vendi, në të cilën pikë ne jemi duke shkuar për të kërkoni secili prej jush të marrë në tuaj Mendjet numri 1. Ju jeni pastaj do të gjithnjë e më të ajër, si koha kalon, të gjejnë dikush tjetër që është në këmbë, të kombinuar Numrat tuaj së bashku duke shtuar ato. Njëri prej jush është që të racës, atëherë do të ulet poshtë e parë, dhe personi tjetër është duke shkuar për të përsëritur. Pra, me fjalë të tjera, nga mbjellëse të gjithë ju me numrin 1, dhe pastaj kombinuar ato 1s në 2s dhe atyre 2s në 4s, gjithnjë e më shumë me të gjithë ulur poshtë, ne duhet, në fund të ky algoritëm, kanë vetëm një kredi Shpirti që nuk ulen të shpejtë të mjaftueshme, por i cili ka tërë numërimin audienca në mendjen e tij apo të saj. Pra, nëse ju do të, le të shkojë përpara dhe të - Hapi i parë - të qëndrojë deri në vend. Dhe ekzekutuar. [Turmën duke pëshpëritur] DAVID Malan: A e dini se Lauren ku është? 729? [Turmën duke pëshpëritur] DAVID Malan: Të gjithë të drejtë? [Turmën duke pëshpëritur] DAVID Malan: Të gjithë të drejtë, ne duhet të jetë pranë përfundimit. Ne e shohim një shoku qëndronte këtu ende. Kush tjetër duhet të çiftëzohet? Nëse ju djema doni të çiftuar off. Dikush up krye. Pse nuk mundem të japë një dorë këtu. Për shumë pak njerëz të cilët janë ende qëndruar, çfarë bëni ju numrat keni në mendjen tuaj? STUDENT: 78. DAVID Malan: 78 plus - kush është duke qëndruar këtu poshtë? STUDENT: 39. DAVID Malan: Plus 39. Plus kush tjetër është ende në këmbë? 81? OK, kush tjetër? Një tjetër 81? Wow. Dhe pastaj çfarë është në shpinë? STUDENT: 49. DAVID Malan: 49, plus? STUDENT: 98. DAVID Malan: 98 plus? Është se dikush tjetër? 12? Good job. [Qeshura] DAVID Malan: Oh, 112 - oh. Good job! [Qeshura] [Duartrokitje] DAVID Malan: Çdokush tjetër ende në këmbë? Na vjen keq? STUDENT: 99. DAVID Malan: 99. Çdokush tjetër ende në këmbë? Dhe numri i përgjithshëm i nxënësve këtu është e vërtetë, sipas te - ju keni një numër? Oh, numri aktual i njerëzve në dhomë, sipas parasysh që vllezër mësimore ishin bërë në rrugën e të gjithëve ne, ishte 729. Pra, nga një dhomë të nxënësve të Harvardit të cilët numërohen veten e tyre, Përgjigja është 637. [Qeshura] DAVID Malan: Pra ngushtë. Por ende. OK, kështu që është një mësim moment, e drejtë? Kjo është ajo që ne tani e përshkruajnë si një bug. Diku përgjatë rrugës, ne e bëmë disa aritmetike e gabuar, apo dikush u ul, ose majtas, apo diçka shkoi keq. Por kjo është në rregull. Sepse edhe akoma, ne mori mjaft të ngushtë. Dhe unë do të argumentojnë se ne mori të gabuar përgjigjeni një shumë më shpejt se unë do të ketë përdorimin e më shumë qasjen time lineare. Pra, le të supozojmë që kemi bërë në fakt të marrë që korrigjuar, por mendoj se tani në lidhje me atë po ndodhte çdo herë, kundrejt mia vet algorithm treguar naive. Një, dy, tre. Nëse ka të vërtetë janë 729 apo 637 njerëz këtu, që do të marrë mua fjalë për fjalë 637 ose 729 pointings i gishtit dhe rrisim numërimin tim total. Dhe unë mund të bëjë një pak më të mirë nga duke shkuar dy, katër, gjashtë, tetë, dhe dyfishtë që shpejtësia, ndoshta edhe e trefishtë ose katërfishtë, në varësi se si edhe unë mund të të bëjë që numëruar në kokën time. Por, kjo qasje që ju djema e mori ishte tërësisht i ndryshëm. Sepse në fillim, të gjithë ju u ngrit. Pra, të gjitha 729. Dhe pastaj fjalë për fjalë gjysma e ju ul. Dhe pas kësaj, një tjetër gjysma prej jush u ul. Dhe pas kësaj, një tjetër gjysma prej jush u ul. Dhe numri i përgjithshëm i herëve që ju djema mund të ketë ulur është afërsisht tetë ose nëntë, ose dhjetë herë gjithsej, në varësi të asaj numërimin ynë i përgjithshëm është. Dhe ne mund të lloj të bëjë kjo mënyrë tjetër. Nëse do të kishim 1.024 njerëz në dhomë, Numri i përgjithshëm i herë ju mund të përgjysmojë 1.024 njerëz është 10. Tani mendoni rreth saj në drejtim tjetër. Supozoni, qesharake, që kemi pasur, të themi katër milliard njerëz në këtë dhomë, ose një dhomë pak më e madhe. Sa herë do të kemi shkuar përmes këtij algoritmi, të tilla që gjysma e asaj klase ulet? Është vetëm do të marrë 32 të tillë operacionet, madje edhe në një klasë të madhësisë së katër miliard më. Pse? Sepse katër miliard më shkon në dy miliard, shkon në një milion, shkon në 500 milionë, shkon në 250 milion, dot, dot, dot. Unë mund ta bëni vetëm se ndarja e disa 32 herë, në të cilën pikë, të gjithë me përjashtim të një person do të jetë lënë në këmbë. Dhe kjo, gjithashtu, është një lloj i fuqishëm Ideja se gjithnjë e më shumë ne do të përpiqemi për të levave në këtë kurs, dhe në programimi dhe shkenca kompjuterike më shumë në përgjithësi, këto mikrobe e një ideje me të cilat ne pastaj mund të zgjidhin shumë probleme, shumë më të fuqishëm. Pra, kemi filluar me mjaft e thjeshtë që pseudokod dhe një djalë në një dhomë, por tani me një dhomë të tërë plot me njerëz kemi bërë krejtësisht të mirë. E pra, le të tani tranzicionin nga pseudokod për disa kodin aktual. Kjo gjuhë që ju jeni gati për të parë ndodhë të quhet JavaScript, dhe ne do të kthehen në këtë drejtim Semestri së fundi. Kjo është një gjuhë programimi që ju përdorin për të bërë faqet e internetit dhe të tjera të tilla software këto ditë. Dhe ne kemi përdorur atë, në sajë të një mik i yni në Stanford, për të shifroj disa informata fshehur këtu. Ky është arti i Steganography, kështu që të flasin, ku ju mund të fshehin Informacioni në atë që ndryshe duket jenë zhurma ose një krejtësisht ndryshe image krejt. Por mishëruar në këtë imazh të veçantë është me të vërtetë një mesazhi sekret në terezi. Pra më lejoni të shkoj përpara dhe tërheq lart image njëjtë këtu, kjo Ora në një shfletues web. Dhe unë jam duke shkuar për të tundë dorën time në disa nga detajet për sot, veçanërisht për ato prej jush që kjo duket si jo vetëm JavaScript greke, por, si një gjuha krejtësisht të panjohura. Por ky është një shembull i një gjuhë programimi. Dhe tani për tani, të marrë në besim që kjo vija e parë të kodit - dhe nga kodi, unë vetëm do të thotë tekst. Teksti që unë mund të keni shtypur fjalë për fjalë në Microsoft Word, nëse unë kam software drejtë për të pastaj të bëjë diçka me të. Programim kodin burim, programimi Kodi, është me të vërtetë vetëm tekst, dhe ajo duket të ndryshme bazuar në atë gjuhë ju jeni duke përdorur, jo ndryshe dhe anglisht Spanjisht dhe rusisht të gjitha të duken të ndryshme kur ju shkruani ato në tastierën tuaj. Pra këtë linjë të parë, tani për tani të marrë në besimi, thjesht hap një grafik nga internet, se grafik zhurmshme ne vetëm e pa. Kjo linjë tjetër këtu është një shembull i një loop, dhe ne fakt panë se njëjtë Zhargoni në video TED. Një lak është diçka që ndodh përsëri dhe përsëri, dhe edhe pse kjo duket absolutisht e fshehtë, me fjalen për të, dhe disa kllapa, dhe disa semicolons. Ne do të kthehen me atë para se të gjatë, por se loop ka në thelb është thënë programin, iterate mbi të gjitha prej këtyre dots zhurmshme, nga e majta në të drejtë, fund e krye. Sepse në fund të ditës, një imazh pëlqen kjo - dhe ju mund të vërtetë lloji i shohin atë në këtë projektor - është me të vërtetë vetëm një rrjet i dots. Pra, ne mund të identifikojë secilin prej këtyre dots nga një y koordinativ, x,, dhe me këtë Programi, tani ne mund të fillojnë të bëjë diçka për këto pika. Pra, ajo që unë jam duke shkuar për të shkuar përpara dhe këtu nuk është që unë jam duke shkuar për të bërë disa ndryshime. Së pari unë jam duke shkuar për të shkuar përpara dhe për të hequr qafe nga të gjithë që të gjelbër dhe kaltërosh zhurma, dhe unë jam duke shkuar për të shkuar përpara dhe shtypni poshtë pa dyshim sintaksa fshehtë. im për imazhin. vendosur në blu e lokacionit x, presje, Vendndodhja y, me 0. Me fjalë të tjera, unë dua të vetëm fik të gjitha blu dots në atë foto. Unë jam duke shkuar për të shkuar përpara dhe tani klikoni kjo Run / Save button, dhe ju do të njoftim në anën e djathtë, image rezultuar duket. Tani gjelbër e saj super, por që nuk është për t'u habitur, sepse unë fjalë për fjalë u kthye off, duke bërë A 1 A 0, të gjithë blu në atë foto. E pra, tani le ta bëjmë atë një pak më shumë. im për imazhin, dot setGreen, x, y. Dhe kjo vetëm do të thotë iterate nga e majta në të djathtë dhe pastaj fund e krye. Kthejeni atë me një vlerë të nga 0, si edhe. Ruaj. Dhe në projektor, ju nuk mund të vërtetë me të vërtetë shoh ndonjë gjë në të gjitha. Në ekranin tim laptop, në qoftë se unë vetëm të kolegëve në rrugën e drejtë, unë mund të shoh një grimë e një image, sepse ata janë ende disa të kuqe në atje. Nëse ju keni dëgjuar ndonjëherë RGB akronim - e kuqe, jeshile, blu - ajo duke iu referuar kësaj përbërjeje një imazh i përdorur vetëm ato tri ngjyra. Dhe tani, ne kemi hedhur larg të gjitha jeshile, të gjitha blu, por nuk ka shumë të kuqe. Pra më lejoni të maniak deri kuqe. Si mund të bëj se? E pra, së pari, unë jam duke shkuar për të pyetur ky program një pyetje. Unë jam duke shkuar për të shkuar përpara dhe le të thërrasë atë një ndryshore, ashtu si në algjebër. Ju mund të keni X ose y ose Z. Unë jam duke shkuar për të deklarojë një ndryshore dhe thonë, të vënë në këtë variabël, përkohësisht, vlera e Imazhet getRed vlerën te x, y. Dhe përsëri, ne do të kthehen për të gjithë i këtij detaje në të ardhmen. Por tani për tani, vetëm të marrë në besim që kjo linjë është kërkuar programin, çfarë është vlera e kuqe në x, y? Në atë pikë të caktuar? Atëherë unë jam duke shkuar për të bërë diçka për të. Atëherë unë jam duke shkuar për të bërë image dot caktuar kuqe në x, y, y por këtë herë unë jam duke shkuar për rritur atë duke bërë herë të kuqe, le të themi, 10. Pra, të rritur atë nga një faktor i 10. Më lejoni të zoom jashtë tani dhe të mund të klikoni Run / Save. Dhe voila, se ishte atje tërë kohë, edhe pse sytë tona njerëzore nuk mund të mjaft të shohin atë. Pra, përsëri, kjo tani është kodi i vërtetë, një shembull i një gjuhë që ne do të vijë përsëri në para se të gjatë. Por e kuptojnë, veçanërisht ato prej jush me asnjë përvojë të tillë, ajo është mjaft e më shpejt që ne vetë do të jetë shkruar kodin se si atje. Në fakt, një mjet me të cilin ju jeni të gjithë disi i njohur, ndoshta, është e CS50 Kursi i vet-pazar mjet, i cili ishte restartohet në fakt këtë verë nga disa i CS50 nxënësit e veta ish, tani kthehet TFS. Pra, kjo ndodh të jetë një website ndërtuar në një gjuhë që quhet PHP. Ajo përdor një bazë të dhënash të quajtur MySQL, gjërat me të cilat ne do të marrë në duart tona pista më vonë në semestër. Por besoj se kjo apo jo, edhe diçka si kjo në fund të fundit redukton në thjeshte e sythe dhe kushtet dhe degët, si ato ne pamë vetëm një Momenti më parë në video TED. Ajo që unë mendova se do të bëni tani është të mos ndajnë vetëm diçka që ne kemi bërë Stafi për kampus, por diçka një ish-student - tre Nxënësit, në fakt - e bëri këtë vit të kaluar, Sierra, Danieli dhe Sam, i fundit prej të cilëve nuk kishte asnjë para Përvoja programing kur ai mori CS50. Dhe për projektin e tyre finale, ata ekspozuar, në Panairin CS50, një Aplikimi quhet wrdly, e cila është një web-based program për të cilën ata e bënë kjo video që unë mendova se do të ndajnë për ju jap një kuptim të vetëm atë që është të jetë e mundur deri në fund të termit së. [Duke luajtur muzikë] DAVID Malan: Kjo është nga Zero Javës të javës 12 të këtij viti kaluara. [Duartrokitje] DAVID Malan: Si një ngacmues, gjithashtu, me të vërtetë për të ngjall oreksin tuaj është që ajo që është të jetë e mundur, ju mund të keni parë tashmë, ose mund të shohim së shpejti, market.cs50.net, një mjet i ri që ekipi Kursi ka qenë duke punuar në, këtë herë në bashkëpunim me Student Harvardit Agjencitë, të tilla që duke filluar këtë vit dhe duke vazhduar me shpresë në këtë vijnë verë ju do të keni një standard mundësi në kampus për të blerë dhe shesin gjëra me interes për ju. Dhe me partneritet nëpërmjet HSA, ju do të gjithashtu të jetë në gjendje të heqë off artikuj në njërën nga dyqane fizike HSA-së në disa Pika në të ardhmen, në mënyrë që të gjërat prokurë, veçanërisht si ju diplomuar dhe nuk domosdoshmërisht duan të hidhni gjëra, por në fakt paguajnë atë përpara për folks që mund të pasojnë ty këtu në kampus. Pra, më shumë që do të vijnë. Por pak më konkretisht, një mjet që është dalë nga CS50 në vitet e fundit vjet, me të cilën disa prej jush mund të jetë njohur dhe të tjerët prej jush mund të jetë googling tani, në CS50.net/2x, ju do të gjeni një lidhje me një zgjatje Chrome e cila është demonstrative se si ju mund të përdorin JavaScript njëjtën gjuhë, që ne përdoret me kullës Eifel një moment më parë, për të zbatuar shpejtësinë 2x rishikim për videot gjitha iSites Harvard. Kjo është diçka që është ndërtuar në vet lojtar CS50 e videove. Por kjo, gjithashtu, në qoftë se ju të filloni të gërmoj në kodin burimor, të cilat ne do të për fat të mirë të bërë në dispozicion, ju do të shihni se si ju mund edhe të zgjidhur problemet si kjo, përshpejtimin e Widgets në faqet e internetit me të cilat ju jeni tashmë të njohur mirë. Pra, një fjalë tani në kurs dhe pritjet dhe çfarë shtrihet përpara. Në përgjithësi, ne me të vërtetë do të mblidhen këtu të hënave dhe të mërkurën - edhe pse kjo e premte, ne do të mblidhen, sepse i Javës Shopping - 1:00-14:00, edhe pse nganjëherë deri në 02:30. Duke pasur parasysh se ju mund prandaj duam apo keni për të marrë disa klasë at 2:00 pm tutje, apo edhe më parë, e kuptojnë Kursi është përkrahës i asaj që quhet regjistrimit simultan, ku ne do të mbështetur një peticion për Bordin dhe Ad dekanët juaj banor në emër tuaj, nëse ju keni një konflikt diku në këtë 1:00-02:30 varg. Kreu në se online URL për detaje shtesë. Por në aspektin e strukturës mbështetëse që karakterizon CS50, për studentët më shumë dhe më pak të rehatshme njësoj, ne ofrojnë këngë të dallueshme të seksioneve. Dhe kjo është një çift i javësh jashtë, por para se të gjatë, ju do të kërkohet që të nivelin tuaj rehati. A jeni në mesin e atyre më pak të rehatshme, më rehatshme, ose diku në mes? Dhe ne do të kemi tre të dallueshme gjurmët që kujdesem për pikërisht ato audienca. Pra, në asnjë pikë në afat duhet të ju madje edhe ndjehen si ju jeni të konkurrojnë kundër çdo nxënës me më shumë apo sfond pak se ju. Në të vërtetë, kursi është menduar të jetë shumë më bashkëpunues dhe më shumë më i hapur se kaq. Në kushtet e përcakton problem, ju do të gjetur, gjithashtu, se përveç Edicioni standardi i problemit çdo javë e caktuar, nuk është shpesh një "hacker Edicioni "që është menduar të jetë në shënjestër në 5% deri 10% ose më shumë prej demografik i cili është me të vërtetë në mesin e atyre më të rehatshme dhe do të donte më shumë një sfidë se standardi Edicioni i asaj pset pret. Më shumë detaje mbi ato që do të gjendet në planin mësimor. Por edhe aty mund të gjenden detaje në kurset ditë më vonë. Zakonisht problemi përcakton janë për shkak të enjteve. Megjithatë, ju mund të zgjasë shumë tuaj Afatet këtë vjeshtë nga të enjteve Premteve thjesht duke u takuar në gjysmë të rrugës, na kështu që të flasin, duke iu përgjigjur një pak të ngrohtë-up pyetje në disa prej problemit të javës grupe, që automatikisht do të pastaj ju japin një shtesë 24 orë. Ne gjithashtu do të bjerë ulët tuaj Rezultati, sipas planit mësimor. Për të ju jap një kuptim të asaj që problemi grupe janë - sepse kjo është me të vërtetë Problemi i rrjedhës së përcakton që në fund të fundit përcaktojnë pothuajse çdo Përvoja studentit, aq më shumë se leksione, më shumë se seksione, më shumë kështu që më shumë se çdo tjetër Aspekti i kursit. Vitin e kaluar, për shembull, kemi filluar, si ne do të fillojnë këtë vit, me Scratch. Veçanërisht kjo e premte, ne do të përdorim, për vetëm koha një ditë, një grafik Gjuha programuese, me të cilat ne do të fillosh programimin duke zvarritur dhe duke rënë copa mister që vetëm mblidhen fizikisht nëse kjo ka kuptim për të bërë kështu që logjikisht. Javën e ardhshme, ne do të shpejt të tranzicionit C, një mjaft të vjetër, por shumë e vogël dhe gjuha e thjeshtë që do të na lejojë që të të vërtetë të shkojnë 0-60 gjatë prej vetëm disa javë, dhe pastaj parley këto aftësi të njëjta dhe njohuritë e konstruktet themelore të programimit në të nivelit të lartë gjuhë si PHP, Javascript, dhe ende të tjerët ende. Vitin e kaluar, pset tretë në kurs ishte ajo e cryptography, nje domain-specifike aplikimi cilës ne Nxënësit sfiduar të zbatojë ndonjë numri i shifra, programe me të cilat për përleshje apo unscramble informacion, për të encrypt atë. Për edicionin e hacker, nga ana tjetër, Ne u dhamë nxënësve Hacker një skedar nga një kompjuter standart Unix përmbajnë emrat e përdoruesit dhe fjalëkalimet, Ky i fundit prej të cilave ishin koduar, dhe ne sfiduar ato haker Nxënësit të decrypt, sa më mirë ata mund, ato fjalëkalime, ende në se domain njëjtë. Scramble, një lojë me të cilën disa e ndoshta ju jeni njohur. Një copë mjeko-ligjore, ku ne kërkojmë që studentët për të shërohen të dhënave që kishin qenë fshihet ndryshe nga dixhital tim kartë compact flash kamera, duke në fakt shkrim software të kuptoj se, ku ishin zero dhe ato në që aparat fotografik dixhital që më parë përbërë një grafik JPEG? Një sfidë e vitit të kaluar terezi përfshin shkrim shpejtë spell-checker të jetë e mundur, duke konkurruar kundër miqtë dhe shokët e klasës nëse ata do të donim. Zbatimi n pudre Huff ', një program i compression. Dhe pastaj duke i dhënë fund të semestrit me CS50 Financave, një web-bazuar aplikimi me që ju të krijoni një faqe interneti Etrade-si për të blerë dhe shitur aksione, në mënyrë që të flasin, me të vërtetë duke tërhequr gati kohë reale kuotat Yahoo! Financojë. Ajo që ne nuk e ka bërë vitin e kaluar ishte një grup problem që mbetet megjithatë një favorite. Nëse ju nuk keni për të shkuar shuttle.cs50.net, ju do të shihni një përdorues kryesh pak si kjo. Por dy vjet më parë, klasa zbatuar, duke përdorur Google Maps dhe Google Earth plug-në dhe pak e tru me ngarje rreth kampus, në mënyrë që objektivi i kësaj loje ishte, si ju mund të shihni disa nga fytyrat, është që të përzënë rreth kampus duke kërkuar për Stafi, bursistët e mësimdhënies dhe CAS-it, dhe Kur ju bëni, duke i vënë ata onto tuaj ecejakeve autobus. Asnjë prej tyre në fakt duket të jetë këtu, kështu që ne jemi duke shkuar për të hyrë në një kod mashtrojnë. [Qeshura] DAVID Malan: Nuk shkojmë. Dakord. Dhe këtu tani është stafi laced gjithë kampus. Dhe si ju mund të shihni, në të djathtë anë e ekranit, autobuzi ka vende bosh. Dhe objektivi ishte për të shkruar Kodi me të cilat për të simuluar kjo lëvizëse dhe picking up dhe në rënie off i udhëtarëve. Se një, shumë, duke përdorur një gjuhë quajtur JavaScript. Pra, të kuptojnë se si programet që do të të jetë në të njëjtën trajektore tonë kjo vit, si edhe. Në terma, tani, i mbështetjes shtesë, ne kemi orarit të punës. Siç mund ta keni parë në shtëpinë tuaj sallë ngrënie apo në Annenberg, ne do të jetë në ngrënie shtëpi Sallat e katër netë në javë - Leverett, Pfoho, Eliot dhe Annenberg këtë vit, 20:00-23:00. Dhe çfarë ne kemi menduar se ne do të bëjmë këtë vit është diçka pak më ndryshe. Nëse keni dëgjuar rumblings vitin e kaluar se kjo ishte shumë pak stresues, kjo ore viti zyra, si ne do të përshkruajnë javën e ardhshme, do të jetë më organike, ku pas mbërritjes, ju do të jetë dërguar në një tryezë të veçantë ku anëtarët e shumta të stafit presin, dhe ne do të bëjmë gjëra shumë më tepër organikisht. Jo më radhë, iPad nuk është më, por në vend të ketë më intime Bisedat rreth një tryezë të vetëm tetë apo më shumë studentë, kështu që ne përafërt ndjehen të asaj që ndryshe do të jetë një klasë shumë më e vogël. Ne ofrojmë, si edhe, këto gjëra ne quajtur walkthroughs, video filmuar në të çuar përpara nga një prej mësimdhënies rrjedhës së fellows, Zamyla, në të cilën ajo ecën ju nëpërmjet problemit të javës grupe, duke ofruar këshilla dhe truket për sfidat që shtrihen përpara. Dhe anasjelltas, pas grupe me probleme, janë shkak, këtë vit, ne gjithashtu do të lëshojë clips pak quajmë post-mortems se në të vërtetë ju ecin nëpër Zgjidhjet përfaqësuese, të dyja të mira dhe të keq, me anë të të cilit ju mund të konkludoj se si ju mund të ketë ose duhet të kenë zbatuar zgjidhje tuaj. Dhe çfarë ne do të ofrojmë për herë të parë edhe këtë vit, veçanërisht për ata studentë të cilët mbrojnë veten i kurs të tjera Burimet por megjithatë janë duke luftuar të gjithë shumë, kurs vetë do të çiftuar ata studentë, si burimet e lejojnë, me tutorët në mënyrë që ju keni një shumë më intime mundësi se salla ngrënie shtëpi të lejojë për ndihmë një-në-një. Tani një paraqitje e shkurtër finale në disa nga lojrat fund në horizont. Ju mund të jenë të njohur me Hackathon CS50. E pra, vjen këtë dhjetor, nga ora 8:00 PD në ora 7:00 në fillim të Leximi periudhe, do të jetë një mundësi për të mbledhur me shokët e klasës - kjo do të jetë rreth 9:00 - gjatë së cilës ju pikiatë në finale juaj zbatimi i projektit së bashku shokët, miqtë, dhe ushqim. Kjo do të jetë rreth 01:00, kur grupi i parë i ushqimit arriti. Dhe kjo është rreth 04:00 se vit veçanti në Hackathon CS50. Por kulmi i vërtetë i kursit është menduar për Panairin CS50, një kampus të gjerë Ekspozita e projekteve tuaja final vetanak, në të cilën familja dhe miqtë janë të gjithë ftuar, si rekrutuesit tanë dhe miqtë tanë nga industria. Kjo, për shembull, është një pamje e 2.000 njerëz-plus që kam ndjekur vitet e kaluara. Shprehjet si kjo nuk janë të rralla, dhe në mënyrë të ngjashme të bëjë tuaj Shokët e klasës kënaqësi në gjërat ju keni arritur. Dhe në të vërtetë, për këtë qëllim, ne kemi një ngjarje e start-e-gjata, si edhe. Nëse gjërat si kjo apel për ju, ose ju jeni të paktën kurioz për atë që kjo, e dinë se një traditë e re e Kursi është quajtur CS50 Dita Puzzle. Dhe kjo ishte krijuar një çift i vjet mbrapa me të vërtetë të sinjalizojë në kampus se shkenca kompjuteri nuk është në lidhje programimit, dhe kjo sigurisht nuk është rreth përqafimit vetëm ata studentë të cilët kanë përvojë të mëparshme. Është me të vërtetë në lidhje me zgjidhjen e problemeve më në përgjithësi. Dhe kështu Dita Puzzle, mbi disa kaluara vjet tani, ka evoluar në një bukur Partneriteti me miqtë tanë në Facebook, ku nuk do të jetë i pabesueshëm shpërblime dhe pica përtej lumit në i-lab kjo e shtune vjen. Kokë për atë URL me dy ose tre miq në qoftë se ju do të donte që të marrim pjesë në këtë traditë të re. Kështu që unë do të doja të kërkojë që ju të mbani një gjë në mendje, dhe ne kemi marrë vetëm një dy clip minutë në të cilën për të mbyllur sot. 73% është numri për të kujtuar. Cake, gjithashtu, do të ju presin jashtë këtij pjesë e futur anësore si ne shtyjë në vetëm një çift ​​prej momentet, e cila eshte nje traditë i rrjedhës, si edhe. Por kjo është quote kyç nga syllabus sigurisht për të mbajtur në mendje. Ajo që ka rëndësi në fund të fundit në këtë kurs nuk është aq shumë ku ju deri në fund relative të shokëve tuaj, por ku ju, në Javën e 12, deri në fund të afërm të veten në Javën 0. Por paraqitje e shkurtër që ne do të largohet nga ju me sot këtu është kjo e fundit këtu nga Daniel tonë të njëjtë, kush e bëri Video wrdly vetëm një moment më parë. Unë ju lë me këtë paraqitje e shkurtër e çfarë shtrihet përpara. Dhe si ne të bërë këtë, në qoftë se ne mund të kemi CS50 Stafi nga frontin e dhomës për të ardhur deri në fazën për të pikturuar të gjitha më i nje pamje vizuale si tek çfarë ju pret këtë vit - marrjen e vështirë. Ne do të përfundojnë me këtë këtu në ekran. [Duke luajtur muzikë] DAVID Malan: Kjo është CS50. [MUSIC - MATT & KIM, "Është e mirë"] Kryetari 1: I love CS50 më shumë se macet. 2 Gjuha: Whoaaaa! [Qeshura] DAVID Malan: Ky, pra, është CS50. Ne do të shihemi të premten. [Duartrokitje dhe brohoritjet] Transmetuesi: Në CS50 ardhshëm, një skenë demo nuk shkon siç është planifikuar. DAVID Malan: Ne duam të gjejmë Mike Smith në këtë libër telefoni. E pra, çfarë janë instinktet tuaja? Unë mund të hidhen afërsisht në mes të librin e telefonit, shikim poshtë, shohim se Unë jam në M, dhe unë e di tani se Mike Smith nuk eshte me e majta. Ai duhet të jetë në të djathtë. Dhe kështu në këtë pikë, ne fjalë për fjalë mund lotsjellës - në këtë pikë, ne mund të vërtetë lot - në këtë pikë, ne mund të figurshme gris librin e telefonit në gjysmë. [Cingëllimë UKELELE]