[POZADINSKA BUKA] Radi li to? PATRICK REBESCHINI: Možemo početi. U REDU. Veliki. Započnimo. Dakle, to je moje najveće zadovoljstvo da vas sve pozdraviti ovdje danas za prvog predavanja od, pa, Uvod za računarstvo i programiranje. Također poznat kao CS50 ili dobro, CPSC 100, službeno ovdje na Yaleu. Dakle, ne možemo biti više uzbuđeni da vas sve pozdraviti ovdje. Moje ime je Patrick Rebeschini. Ja sam šef instruktora za klasu. Ja sam ovdje predstavlja skupinu od oko 60 članova osoblja koji će raditi s vama tijekom semestra. Ovaj broj je gotovo 60 nas. Ipak, uz izvanredni razina obveza koje smo stavili u to klase, čini CS50 klasi na Sveučilištu Yale koji nudi najveća razina podrške za sve vas. I nismo mogli biti ponosni nude ovu klasu opet ovdje. U stvari, kao što će uskoro doživjeti, CS50 je puno više od klasa. To je zajednica. A vi ćete biti dio Uskoro ove zajednice. Ovo je druga godina kako Yale nudi ovu klasu. Gradimo na ekstremni Uspjeh prošle godine, gdje je prvi put, ovdje na ovom sveučilištu, preddiplomski asistent učenje usvojene su u učionicama. Sve je počelo s Ovaj razred prošle godine. Dakle, kao što znate, klasa se uči zajedno sa Sveučilišta Harvard. Učiti ovaj tečaj mi smo relying-- možemo računati na veliku stručnost David Malan i ekipa na Harvard. Tako je David bio je nastava CS50 za dobro, 10 godina sada. I svake godine on je bio pritom granice i poboljšanje iskustva u učionici. Opet, ne možemo biti sretni nastaviti ovu suradnju s njima. U stvari, jedna od Najzanimljiviji dijelovi, Ja ću reći za izvođenje ove klase sada, i na Harvard i ovdje na Yaleu, je stvarno nevjerojatno cross-oplodnje ideja, čiji je cilj poboljšanje učenje iskustvo za sve vas. Pa kao rezultat toga opsežna suradnja između dva sveučilište, CS50 je ponosan objaviti novu verziju ove godine s uočljivih promjena. David sve će nam reći o njima. Dakle please-- ovo biće rekao je, molim vas, pridružite mi se i dobrodošli kako bi se dobila Veliki pljesak pozdraviti Davida i Harvard kluba ovdje na Yaleu. [PLJESAK] DAVID Malan: Hvala. Hvala. Ovo je CS50, Harvard University-a i uvođenje Yale University-a za intelektualno poduzeća informatike i umijeće programiranja. I što to znači da je ovaj tečaj u konačnici, o rješavanju problema. Štoviše, mnogi od vas možda su došli iz srednje škole ili su proveli posljednjih nekoliko godina Pitate se što su neki od vaših prijatelja prošle godine ili u drugim razredima. Pa ipak, stvarnost je, bez obzira što mi učiniti na kraju dana u ovoj klasi, to će biti oko rješavanja problema. I kao takav, možda potrajati neke umirenje u činjenici da 73% studenata koji iskoristiti ovu klasu, i ovdje na Yaleu, kao i na Harvardu, nikada nisu uzeti CS razred prije. Dakle, ako ste sjedi ovdje u publika i danas pitate Zašto sjedite ovdje u publici danas, ili možda samo slijedio zajedno s nekoliko prijatelja, ili možda ste bili malo znatiželjan o tome što informatika i programiranje, ostvariti da je većina vaših kolega na lijevi i desno od tebe su jako puno u toj istoj demografski. I doista, ako gledamo Na prošlogodišnjem statistike unutar tijela studentskog CS50, oba ovdje i na Harvardu, 58% studenata opisuju kao manje ugodno. 9% je više udoban. I onda 33% je negdje između. I ne postoji nikakva formalna definicija onoga što ti kante znači. Vi vrsta znati da si manje ugodno ako ste. Ti si pomalo nelagodno s možda bude u klasi. Ti nisi sasvim siguran je li računalo znanost klasa je u konačnici za vas, i shvatiti da ste u vrlo dobrom društvu. I doista, stupnjevanje, i procjena, a povratne informacije i sve to noseća konstrukcija u klasi je u konačnici vrlo individualiziran. Više nego većina bilo druga klasa po dizajnu. I doista, što u konačnici pitanja u ovoj klasi nije toliko gdje ćete završiti up u odnosu na druge, ali gdje se u tjednu 11. ili zadnji, iu odnosu na sebe u tjednu 0 Ovdje je naš prvi. Dakle, što to znači? Pa, to znači da od onih 73% studenti prošle godine da nikad nije snimljen CS klasa prije, od strane početka semestra su su brbljanje na jeziku naziva Scratch, koji sami smo će vidjeti danas ovdje. I na kraju od semestar su oni otišli kroz cijeli ovaj popis izazova. Počevši s jezičnom zove c. Implementacija, što je na prvi pogled, ide da se malo izazov neke, ali prilično zadovoljavajuće jednom vas dobiti Super Mario odskakanje gore i dolje piramide provedena, iako, sa samo nešto što se zove ASCII art. Implementacija zadnji year-- ono onda studenti prošle godine ni nakon toga se provoditi svoje vlastiti Cezarova šifra i vigenèreova šifra. Tako algoritme šifriranja s kojom bi mogao otimati informacije, a zatim dešifrirati Informacije za slanje tajnih poruka. Igra od 15. Ako se sjećate iz djetinjstva ili neka stranka uslugu, da se malo plastična igra u kojoj se krećete brojeve gore, dolje, lijevo i desno pokušati ih dobiti u red, zapravo provedbi tu igru i rješavanje logiku potrebnu tamo. A onda smo bavio forenzika prošle godine. Dakle, do sredine semestra, studenti koji su imali nikada koristiti svoje klavijature za ovu svrhu prije, su pisanje softvera da se oporavi, da tako kažemo, JPEG ili fotografije da smo imali slučajno izbrisan iz digitalnog memorijsku karticu iz fotoaparata. Oporavak tajne poruke iznutra skenirana slika, i drugih takvih vrsta grafike kao dobro. Zatim smo prešli na davanje cijeli razred rječnik. Samo jako veliki tekst datoteku sa 150.000 engleskih riječi. I svatko je izazvao nekako čitati, da tako kažemo, te riječi u memoriju. U memoriju računala. I onda odgovoriti na pitanja oblika, je li to riječ? Je li to riječ? Je li to riječ? Zapravo samo provođenje čarolija provjeru. I onda izazovan svaki drugi s velikom board-- vođa odbora kako bi vidjeli tko bi mogao koristiti najmanju količinu memorije, u iznosu od najmanje vremena na zapravo provjeru pravopisa velikih dokumenata. Prebacili smo od tada pa do provedbi one vlastite web server. Dakle, ne čineći web stranice na drugim jezicima kao što su HTML, CSS, ako ste upoznati. Ali zapravo provedbi poslužitelj koji sluša na internetu za zahtjeve iz preglednika a onda reagirati na te zahtjeve. Zatim provedbu vlastitih E-trgovina poput web stranice, gdje studenti mogu kupiti i prodati dionice. Crtanje u gotovo realnom vremenu burze iz Yahoo Finance. I studenti mogu vidjeti kako je njihov portfelj razvija. I onda na kraju mash up Google News i Google Karte pri čemu su oba studenti by pojam izrazima kraja imao mogućnost da kliknu i okrugla, i traženje na Google karti. I onda vidim sve novinske članke koji su proksimalni tim određenim područjima. Dakle, zaista ide od nula do 60 godina. I usput da ono što smo imali prošle godine nazvao, haker dodaci. To podići letvicu dalje za one od vas koji bi dobro imati dobar količina iskustva da su u tom 9% više udoban. Dakle, shvatili da postoji vrlo visoki strop čak i unutar onih izazovi za studente dolaze iz različitog podrijetla. Jer je na kraju dan, mi smo u konačnici usmjerena jednostavno na tome. No, ono što čini znači, rješavanje problema? Tako ćemo predložiti da mi to destilirati ovako. Dakle, rješavanje problema je stvarno Upravo ta vrsta slici. Dakle, imaš inpute za neki problem, nešto što zapravo želite riješiti. Cilj je da se izlaze, rješenje za taj problem. A onda je u sredini je ono što ćemo nazvati crnu kutiju. Vi ne znaju ili čak zanima me što je u toj crnoj kutiji. Sve što znam je da kada hranite ulaz u nju, vi nadamo se dobiti izlaz ili otopina od njega. I dok danas ćemo gledati i kod ulaza i izlaza, mi ćemo dugoročno, a preko tijek cijelog semestra, usredotočiti na ono što je unutar tog okvira. A u njoj će ležati nešto što se zove algoritama. Korak po korak upute za zapravo rješavanju nekih problema. No, ono što je primjer nekih inputa? Pa možda jednostavno stvar u početak svake školske godine, netko Možda želite da se prisustvo. Tako smo mogli napraviti jedan, dva, tri, četiri, pet, šest, i kako bih zadržati Staza od tih informacija. Ja samo mogu ići jedan, dva, tri, četiri, pet, šest. I samo koristiti neku vrstu jednu brojki. Ili sam zapravo mogao snimiti ovo malo dulji rok. I kako mogu predstavljati sve su ljudi u ovoj sobi? Pa, ja mogu napraviti tako nešto, u redu. Vidim jednu osobu. U redu. Vidim drugu osobu, A treća osoba, i tako dalje. No, nitko ne broji ljude kao što je ovaj. Dakle, doslovno, većina nas, ako smo čak će izvući bilo što, vjerojatno će ići jedan dva tri četiri, možda se malo fancy, pet, šest, sedam, osam, devet, deset i tako dalje. I to je zapravo Sustav se zove predznak. Uno, kao Uno podrazumijeva jedno, gdje samo jedno slovo abecede. Upravo ste dobili ovu hash znak. A ja, za učinkovitost, samo nacrtao ove crticama, u konačnici kao ravne linije. Ali mogao sam ih ne odvedemo što manje stick figure. Gdje predstavljaju jedna osoba, jedan ulaz, Ja samo izvući štapić figura ili hash mark. No, to nije sve što je izražajan. Ako je sve što imam je to mljeveno meso oznake, a kamoli stick figure, kako bih mogao predstavljati nešto poput broja 15? Ili 15 ljudi u sobi? Možda ću morati učiniti nešto poput 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. To jednostavno ne razmjera vrlo dobro. Kao što ulazi dobili veliki, mi potreban bolji sustav od ovoga. I ispada da je Sustav koji računala koriste nije sve što je drugačije od onoga što vi i ja znamo. U stvari, većina ljudi u ovoj sobi, čak i ako ste među onima manje udoban, ne znaju kako se vaš Mac ili PC stvarno radi, vjerojatno ste barem čuli, da je Ispod haube se 0-a i 1-a. Takozvani binarni sustav. Dakle, doista, računala imaju više od Samo hash oznake u svom vokabularu, ali ne onoliko koliko se od vokabular kao i mi ljudi. Doista, mi ljudi ne koriste binarni. Bi znači 2, 0 i 1. No, decimalni, deca što znači 10, 0 do 9. Dakle, imamo puno više izražajan mogućnosti u našem normalnom ljudskom svijetu. Ali ja bih tvrditi da su ti sustavi, binarni i decimalni, i sve između i izvan nje, su zapravo sve vrlo poznato. Na primjer, razmislite ovaj primjer ovdje, 123. Dakle, to stvarno je, naravno, broj znamo kako je 123. Ali sve sam samo nacrtao je upravo to uzorak simbola, simboli takoreći. Sortiraj oblika na ploči kredom. Ali zašto onda odmah i intuitivno shvatiti ovo kao 123? Pa, ako ste bili poput ja u osnovnoj školi, vjerojatno saznao da je to 1s kolona, ​​to je stupac 10 s, to je stupac 100s. A zašto je to korisno? Pa, to je jednostavno aritmetička vam sada učiniti da se iz uzorka simbola na broj razumijemo intuitivno. Je ono, 100 puta 1, a zatim 10 puta 2 i 1 puta 3, što je naravno samo 100, a To je 20, a to je tri. I tako, ako dodamo one together-- ah. Dakle, u tome leži vrsta rasuđivanja Iza zašto je ovaj skup simbola znači nešto stvarno i numerički. Pa, računala učiniti istu stvar, ali samo oni mogu računati kao visok kao jedan. Dok sam bio u mogućnosti računati kao visok kao tri. A u stvari, da sam zadržao ide sam mogao ići kao visok kao devet u ovom sustavu. Računala imaju tek nule i one u svom pismu. Dakle, što to znači? Pa, to samo znači da ako na računalu želi predstavljati, recimo broj 0, možda pomoću tri characters-- tri slova abecede da tako kažemo, to je kako računalo predstavlja 0. Dakle, nije sve što je zastrašujuće do sada. To je upravo ono što mi ljudi će učiniti. A u stvari, većina nas bi samo ignorirati nule u svakom slučaju. Računalo, ako želi pohraniti broj 1, Ispada će to učiniti. I računala za pohranu broj 2 nije idući u obaviti unarnu sustav, koja aludira sam ranije. To zapravo ide na to. I to je vjerojatno gdje je uzorak počinje postati manje očito za većinu ljudi. To je 2, to je tri. Zanimljivo, ovo je sada 4. A sada to stvarno ne Čini se da su možda i zagonetan, ali ne i ako uzmemo u obzir ono binarno zapravo znači. To znači da imate dva slova svog alfabeta. Dakle, dva moguća likovi za svako rezervirano mjesto. Dakle, to zapravo znači da idemo Trebat 1s mjesto ili 2s mjesto, 4s mjesto, a zatim 8 i 16, 32 i 64. A u čemu je razlika tamo? Kao to su 1, 2, 4, 8, 16, 32, 64. I prije nego što smo imali 110, 100,000, 10.000. Što je sličnost postoji? A što je uzorak? Da. Student: Ovlasti 2 umjesto ovlasti od 10. DAVID Malan: Da. Ovlasti 2 umjesto potencije broja 10. I tako, ako sam htjela zadržati ide, 8, 16s i tako forth-- ali sada, ako imate ovu vrstu od indicija, sada binarni sustav je zapravo prilično jednostavan. Zašto je ovaj uzorak 0 godina u svijetu računala 0? Pa zato što je 4 puta 0, 2 Vremenska 0, 1 puta 0 i dobit ćete 0. Zašto je to broj 1? Isto rezoniranje, ali sada smo imaju 1 u 1. stupcu na. Zašto je to dvoje? Imamo 1 u 2s stupcu. I kako onda mogu predstavljati kažu, brojem 7 binarnom? Reci glasnije. STUDENT: Tri 1s. DAVID Malan: Tri 1s. Dakle 1, 1, 1, jer samo mi treba 4 plus 2 plus 1 daje mi 7. U redu. Pa od tamo kako radimo predstavlja 8 sa 3 rezervirana mjesta? Da. UČENIK: 1, 0, 0, 0. DAVID Malan: Da 1, 0, 0, 0. Pa ipak, možda, ja vrsta tehnički je potrebno dodati još jedan rezervirano mjesto na brodu. Ako želim da stane da ja zaista trebate učiniti nešto ovako. Tako sam zapravo trebate koristiti odmah 8s stupac, i to je u redu. No, čudna stvar u računalstvu je da to će nas stajati nešto. Trebate više RAM-a na računalu sada. Trebate više memorije jer vam je potrebno nešto fizički pohraniti da Dodatni malo, da tako kažemo. Binarne znamenke. I doista sve što se dogodilo Ovdje, kao i decimalnog sustava, ako ćemo držati dodajući brojeve gore i gore i gore, idemo na 5 do 6 7-8 to je kao da nosi 1, doslovno. A onda sve ostalo vraća na nulu. No, kako ćemo zapravo predstavljaju te stvari fizički u računalu? Dakle, na kraju dana, jedini fizički ulaz ide u moje računalo Ovdje je to kabel za napajanje, tako da električne energije ili elektrona iz zida. I tako kako mogu dobiti od nečega fizički kao što je to zapravo predstavlja ideju kao što je ovaj umjesto. Pa, što smo mogli učiniti? Mogli bismo uzeti u obzir da je sve u redu, možda ako struja teče Mogao sam ga spremiti i držati se toga. A ako sam drži na do neke električne energije, samo da će samovoljno predstavljaju 1. A ako sam povucite utikač a tamo nema ničega, ti znaš da je upravo događa samovoljno predstavljaju 0. Dakle, ako je nešto tamo, 1. Ako ništa tamo, 0. Ili možete napraviti ovo malo više vizualno. Ovdje je 0. Nema ništa zanimljivo tijeku na o stražnjem dijelu mog telefona. Ali ako dopustim malo malo struje teći, iako je malo svijetla ovdje, moja svjetiljka nastavio. Tako sam pohranjivanja naboj i ergo, ovaj telefon je sada predstavlja jedan. Dakle 0 1. Tako je s 1 iPhonea koliko visoko mogu ja računati korištenjem takvog pristupa? Mislim da se jedan. To nije sve što je uvjerljiv. Dakle, što više možemo učiniti? Pa da vidimo, je li netko o njihovom telefon odmah da sam mogao posuditi? Svatko tko ima telefon sa svjetiljkom sagrađena? Mogu li posuditi? Ne treba se otključana. U redu. Hvala ti. Dopustite mi da ovo posuditi. U redu. Dakle, ako ja sad pomicanje gore i ovdje, što ja zastupanje sada? Da. Dakle, to je tri, jer je to u 1s kolona, ​​to je u 2s stupcu. Dakle jedan plus 2 je 3. I onda ako mi pokušati dobiti stvarno creative-- oh, hvala. Vrlo preventivni. U redu. Sada imam tri iPhone. U redu. A sada učinimo neću ne dalje od toga. Što ja to predstavlja sada? Samo Sevens. Ali trebao sam fizički više memorije u ovom slučaju. No, to je sve što je. Možete misliti što se događa on-- Hvala you-- unutar vašeg telefona kao samo kao prekidač koji je koji se pali i gasi. A ako ste ikad čuli tranzistor riječ. Ili, ako ste ikad čuli Marketing govoriti Intel Inside, koji je govorio o vrsti hardvera To je unutar vašeg računala. Intel čini CPU, središnje jedinice za obradu, koje su kao mozak unutar vašeg računala. A ovi procesori i stvari oni su povezani da ima puno i puno sićušnih prekidača. Milijuni, milijarde prekidača koja može biti uključena ili isključena. Dakle računala, na sreću, poput naših Macove i računala, može računati put veći od 7 ili 8 jer su tako više od tri ili četiri bita. Put više od protuvrijednosti od Tri svjetiljke koje smo upravo imali. No, sada to počinje da se prilično nezanimljiv brzo. Ako sam sada žele zapravo biti u mogućnosti učiniti nešto zanimljivije, Želim biti u stanju skočiti na nešto ovako. Dakle, ASCII, to nije stvarno korisna akronim, ali American Standard Code za razmjene informacija. To samo znači, nekoliko godina prije mi ljudi odlučili, Znate što, želimo biti u mogućnosti to učiniti više s računalima nego samo brojeve. Mi ne želimo da upravo biti skupe kalkulatori, željeli bismo biti u mogućnosti to učiniti stvari kao što su obrada teksta, doduše, vrlo jednostavno. Kasnije smo imali e-poštu i druge takve medije. I tako je svijet odlučio nekoliko godina Prije prema ovom sustavu ASCII, znaš što? U određenim vrstama Programi bilo ti put vidi ekvivalent broja 65, kao što je uzorak bitova. I da bismo mogli učiniti matematika ovdje na brodu. Uzorak bitova koji predstavljaju 65. Ne mislim da je to 65 u decimale. Misli o tome kao proizvoljno, ali globalno, dosljedno kao glavni grad A. A onda je svijet odlučila, znaš što? Uzmimo još jedan uzorak bitova. A ako smo ikada vidjeli broj 66, neka je samo Pretpostavljamo da je to kapital B. Brzo naprijed do H i ja, ako vidite 72 ili 73, koje treba biti H i I, respektivno. I tako sve dok se cijeli Svijet dogovara ovaj. Tako da kada primite e-mail, ili koju bi dobili datoteku na USB stick, ili nešto slično that-- kada je vidiš da je uzorak bitova, znaš da bi trebao biti ovaj pismo ili neki drugi znak. No, to je kontekst specifične, u pravu. E-mail program može protumačiti te stvari su likovi, ali grafičkim kalkulatorom ili kalkulator može predstavljati ili protumačiti te stvari, naravno, kao i slova. Dakle, s koje je rekao, brzo malo pregleda. To je možda tri znak e-mail koji je poslan na mene. Ispod haube je sve u 0s i 1s, ali nije me briga. Mi ćemo početi sažetak iznad 0s i 1s do slova. I ako vidim uzorak 0s i 1s koje stvarno predstavlja 72, hint, hint, 73, a zatim 33, što je poruka? STUDENT: [nečujan] DAVID Malan: Dakle, ako mislite Prije leđa samo na trenutak, HI je poruka Pokušavao sam komunicirati, jer ovdje H 72, I je 73, a sada 33-- ne bi nužno znati unaprijed, ali ispada ako zaista vidi više grafikona i sustava da čovječanstvo dogovoreno godina Prije, to je samo uskličnik. I doista, postoji uzorak simboli i brojevi za svaki znak da bi mogli imati na tipkovnici. U redu. Idemo sažetak dalje. Ako ne želimo da se samo stvari poput brojeva i slova, mi zapravo želimo implementirati grafike. Pa, ako ste ikada Čuo akronim RGB. To je neka vrsta datum sada, ali to je još uvijek vrsta tamo. RGB je crvena, zelena, plava. A to je samo sustav govoreći, znaš što, neka je koristiti tri seta bitova. Skup 8 bitova, još jedan set od 8 bita, i još jedan set od 8 bitova. I neka je korištenje tih bitova pohraniti koliko crvena mi želite na našem ekranu, koliko će zeleni želimo na našem ekranu, i koliko plavo želimo na našem ekranu. A to samo znači da ako imaju lot-- veliki broj za crvene, to znači daj mi puno crveno. Ako imate veliki broj za zelena, daj mi puno zelene. A ako imate samo malo plave ili malog broja kao što je 33, daj mi malo plave. A ako vam se dogoditi da ih kombinirati Tri veličine, da tako kažemo, ste dobili učinimo, da jedva može vidjeti na projektor ovdje, ali ovo taman nijansa žute ili smeđe boje. No, to će reći, pomoću koje Obrazac 8 plus 8 plus plus 8-- da uzorak od 24 bita je kako računalo bi pohraniti tu nijansu žute u jednom maleni dot piksel na ekranu. Tako smo otišli iz 0s i 1s u decimalne Brojevi na slova abecede. Ili još zanimljivije, točkice u boji. Pa, što je, naravno, onda je sljedeće? Pa, što je slika koja vas pogledajte na Facebook ili dobiti na e-mail? Ili slično? Što je definicija tehnički za slike? Da. Što je slika sastavljena od, ako vas izgledati jako blizu, na zaslonu? Da. To je samo cijela hrpa piksela. U stvari, ako se uzme svoje laptop možda kasnije, i izgledati jako blisko na it-- ovisno o tome koliko skupo je prijenosno računalo i kako visoke kvalitete zaslon, možda vrlo dobro vidjeti sve mali točkice na ekranu. A ti točaka ili piksela, što znači da je 24 bita predstavljaju svaki piksel u tome Fotografija koja vidite na Facebooku, ili da jednostavno uzeo na vaš iPhone u zadnje vrijeme. I tako to je kako smo dobili stvari kao što su grafike. Pa, što je video? Video je samo skup slikama leti po ekranu ponovo i opet i opet. I tako videa zaista, samo su uzorci bitova koji predstavljaju mreža, redaka i stupovi točkice, leti po slici na ekranu, Nakon slika, poslije slike, poznatiji Filmovi. Dakle, to je to za ulaza i izlaza. Sve što imamo sada je Pretpostavka da, ti Znaš što, ako želimo računalo da predstavljaju informaciju, imamo sustav za to. Mi to možemo učiniti s 0s i 1s na kraju dana. No, možemo sažetak, tako govoriti, na vrhu toga tako da predstavljaju više zanimljivosti. I ovdje na van u CS50, te u informatika općenitije, sada stoje na ramenima od svih ljudi koji su došli prije nas koji su shvatili da je van. A sada samo pretpostaviti da računala može predstavljati ulaza i izlaza. Ali sada neka je zapravo učiniti nešto s njima. Dakle, algoritam je samo set uputa, korak po korak, za rješavanje nekih problema. A što bi jedan takav biti problem. Dakle, to je stara škola tehnologije, telefonski imenik. A unutar telefona knjiga cijela hrpa imena i brojeve. I ta imena su uglavnom razvrstani po abecednom redu. Dakle, ako sam htjela pronaći nekoga u ovaj telefon knjiga poput Mike Smith, što je tipičan ljudski učiniti? Pa, možete jednostavno otvoriti to se, pogledaj na prvoj stranici. Ne vidim Mike Smith. Okrenite na drugu stranicu, Ne vidim Mike Smith. I samo zadržati ide i ide. Je li to korak po korak pristup ispravan? Da. To je vrsta glupo, zar ne. To je neučinkovit, u pravu. Budući da će se zauvijek doći do Mike, ali to je točno. Jer, ako je Mike ovdje Ja ću ga doista naći. Dakle, što je nešto više razumna osoba će učiniti? Oni još uvijek može otvoriti prema naprijed, a možda i letjeti kroz telefonskog imenika dvije stranice u isto vrijeme. Dva, četiri, šest, osam. Ne mogu zapravo fizički to učiniti vrlo dobro. No, u teoriji, to bi trebalo biti dvostruko brže, dvije stranice odjednom. Je li to algoritam točno? STUDENT: [nečujan] DAVID Malan: Ne nužno. Dobro. Zašto to upozorenje? STUDENT: Zato što je mogao biti na jednom od stranica koje ste preskakanje. DAVID Malan: Da. Pa čak i ako sam se bliže i bliže. Što ako je samo slučajno, tako loše sreća, u sendviču između dvije stranice da letim iznad? Zato moramo popraviti za to. Mi zapravo trebaju onda kažu, čekaj malo, možda ako idemo predaleko, možda ako pogoditi dio T, za T dolazi nakon Smitha, onda bismo trebali najmanje dvostruko vratiti barem jednu stranicu. Tako pričvrstiti, ali postoji uvjetna problem postoji. Dakle, to je dva puta brže, ali možda imaju dvostruko vratiti samo malo. Ali nitko u njegovoj sobi, čak i ako stvarno ne koristiti telefon knjige više, će početi na početku. Što ćeš učiniti u potrazi za Mike Smith? Ti si idući u ići otprilike za J-ih. Ili, ako ne stvarno imati varati list na papiru, ti si idući u ići barem otprilike na sredini. A sigurno ne bi prednji dio knjige. Ti ćeš gledati dolje. A matematički vjerojatno ste će vidjeti odjeljak m, što je otprilike u sredini. I onda idete shvatiti, što je istina? Gdje je Mike? STUDENT: [nečujan] DAVID Malan: Da. Dakle, on je više na ovoj strani. I tako što možete učiniti? Pa, i figurativno i doslovno može li suza problem na pola puta? A onda znate da možete baciti Vezni problema daleko. A sada smo lijevo s temelja isti problem, ali to je upola velika. A što to sada je set instrukcija? Što je algoritam za pronalaženje Mike Smith? To je točno istu stvar. Sada se to dogodi da se M sekcija a to je Z dio, ali temeljni Formula je uvijek ista. Idi otprilike na sredini, pogledati dolje, oh, prokleto je. Sada sam u T presjeka, Ja sam otišao predaleko. No, ovdje također mogu vam primjenjuju istu logiku. Bacanje pola problema daleko i sada smo lijevo s problemom koji je četvrtina veličine. I možemo ponoviti, a mi možemo ponoviti, i mi možemo ponoviti sve dok teoretski postoji samo jedna stranica ostala na što Mike ili je ili nije. Zato što je tako moćan o ovoj ideji? Mislim nakon svega, to je prilično intuitivno. Nitko neće početi na počevši od telefonskog imenika i flip 1.000 stranica naći Mike Smith. Većina svatko u ovoj sobi ide raditi otprilike takav algoritam osim za kidanje. A zašto smo to učinili? Pa, uzeti u obzir učinkovitost. Razmislite samo koliko bolje ove algoritam tako da ga razbije na svoje sastavne dijelove. Pa što sam prvo učiniti? Uzela sam telefonski imenik. A računalni znanstvenik, i programer, općenito se ispostavilo, ide za početak brojanja sve na 0. Zašto? Pa, to je malo čudno da mi ljudi strani, u pravilu, počevši od jedan. Zato što je najmanji broj možemo jasno predstavljaju temelje čak i na našim starim Škola matematike? Pa, bilo je 0, da li to je u decimalnom ili binarno. I tako ćete vidjeti u svijetu računalstva i programiranja, Naime, počinjemo računajući sve od 0. Pa sam uzela telefonski imenik Korak 0. Idem otvoriti na Sredina imeniku. I to je zaista izraz onoga što sam učinio. A onda korak dva je pogled na imena. Korak tri je malo razlikuje konceptualno. Pitam ja osobno pitanje. Ako Smith je među imenima, Idem donijeti odluku. Ako je među imenima, onda ću nazvati Mike. I ja ću donijeti odluku temelji se na taj komad informacija. Međutim, ako ne, ako Smith ranije u knjizi na lijevoj strani, Idem otvoriti do sredine lijeve polovice knjige. A onda tu je pamet, Idem se vratiti na korak dva. Idem na vrstu stajati na vlastitim ramenima i samo ponoviti dosadašnji rad kao i ja. No, posao mi je ostalo je manje i manje i manje. No, to još uvijek ide na posao. Ali ako Mike, umjesto toga, što je kasnije u knjizi na desnoj strani, Idem otvoriti do sredine desne polovice knjige, a zatim se vratite na korak dva. No, tu je zapravo četvrtina scenarij. Mike je bilo ovdje ili ovdje, ili ovdje, or-- STUDENT: Ne postoji. DAVID Malan: Nije tamo. I doista, ako ne predviđaju ovo četvrti i posljednji scenarij naš program može biti lud ili pogrešno na neki način. Inače, otkaz u slučaju da nismo našli Mike uopće. I doista, ako ste ikada primijetili računalo vješanje, ili sve Odjednom riječ ili neka druga program samo neočekivano, a ponekad ti je greška Poruka je doslovno to. Ovaj program se neočekivano zatvoriti. To može biti bilo koji broj razloga. No, ponekad je nešto kao jednostavan kao taj. Ljudski programer koji je napisao taj softver nisu shvatili da, oh, tu je naprijed što se zapravo može dogoditi. A ako ne pisati kod u uhvatiti taj četvrti scenarij, to je zaista neočekivano ponekad što se računalo zapravo može učiniti. Sada ćemo zvati out Neke od tih stvari. Tako je u žuto ovdje, naglasili uvjete da odsad smo samo nazvati funkcije. Funkcije u svijetu programiranje su baš kao i akcijama, izjava o akcijama. Tako pokupiti, otvoren, pogledaj na, poziv, otvoren, otvoren, zatvorite. To je funkcija, procedura, akcija, bilo koji broj sinonima će raditi kao dobro. Sada ono što su te stvari sada žuta? Ako drugo, ako je drugo, ako se drugo, oni su ono što ćemo nazvati Uvjeti u programiranju, ili grane, odluka bodova, ako će. Ali kako ćete znati koje vilica na putu da se, da tako kažemo? Moramo istaknuti termini desno tamo, koji su to da, bez pitanja. Ti pravi lažni pitanja. Smith među imenima? Smith je ranije u knjizi? Smith je kasnije u knjizi? To su pitanja na koja postoji da ili ne, ili ekvivalentno istina ili laž, ili ekvivalentno, jedan ili nula odgovora. A u međuvremenu postoji još samo jedan komad. Ovaj ovdje ima kakav učinak? Bilo da program ili ne prije, kako bi ti opisati što je korak sedam i 10 rade? Što si rekao? STUDENT: rekurzivna korak. DAVID Malan: rekurzivna korak. Da, u biti. To je tehnički iterativan ovdje ako si upoznat. No, mi ćemo se vratiti na to. Ali to radi nešto jasno. Opet, to je induciranja ciklus, petlja, desno. Vi doslovno ide povratak na nekom ranijem koraku. I tako, istina, to će provesti neku vrstu ciklusa. Ali ne idući u dobiti zaglavi u to beskrajno, u pravu. Jer, ako ste stalno provjerava se Mike ovdje, ili na lijevo, ili nije ovdje, na kraju on neće biti tamo. A možete jednostavno zatvoriti zajedno po toj zadnjoj liniji. Dakle, to je to za rječnikom. A to je ono što bismo općenito nazvati pseudokod koda. To nije stvarna jezik. To je samo vrlo kratak engleski, ali ona komunicira točku. Nema formalna struktura ovdje. Vi samo koristiti da je malo riječi, nego kao jasne riječi kao što možete komunicirati svoje ideje. Sada kako je dobar taj algoritam i koliko bolje je to? Pa, mi ne moramo ući u Specifičnosti brojeva ili bilo čega kao što je to. Ali možemo pogledati na oblik ovog rješenja. Dakle, ako mi samo izvući neke xy zemljište Ovdje na horizontalnoj osi ovdje. Ajmo pozvati na veličinu problema. A računalni znanstvenik obično koriste n po varijable ovdje. Tako je n stranice, ili n ljudi u sobi, ili bez obzira na to je li pokušavate računati. A onda na vertikalnoj osi as lijevo, to bi bilo vrijeme da se riješi. Pa koliko sekundi to radi uzmi me naći Mike Smith? Ili koliko koraka je potrebno? Koliko stranica skreće to traje? Dakle, to je koliko to košta mi na vrijeme riješiti problem. I mi smo mogli izvući prvi algoritmi nagib, ako hoćete, kao samo ovaj pravac u crveno. I ja ću ga zvati n. Zašto je n? Zašto je baš ovaj jedan na jedan odnos? Pa, ako Verizon ili bez obzira na telefon tvrtke dodaje još jednu stranicu telefonski imenik iduće godine, koji bi mogli gurnuti Mike jedan više korak bliže kraju, ovisno o tome gdje je ta stranica. I tako je učinak po jednu se dodati još jednu sekundu. Ili još jedna stranica red. Jedan prema jedan omjeru. Nasuprot tome, drugi algoritam. Koliko brže je to intuitivno? Gdje sam otišao dvije stranice u isto vrijeme? Da. STUDENT: [nečujan] DAVID Malan: Da. Dakle, to će biti dvostruko brže. I mi bi privući to ovdje ovisno o mjerilu. Još uvijek je ravna crta, ali niže od crvene crte. Budući da za neki broj stranica, ako je potrebno što to mnogi koraci s Prvi algoritam, to će vas odvesti na pola onoliko koraka s drugom. I tako je žuta linija opisujući drugi algoritam je samo ide da se ispod nje. No, ono što je stvarno moćan je da razmišljati o treći i posljednji, i nevjerojatno intuitivno algoritam, koji ima ovaj oblik. Tehnički bismo nazvali to logaritamska krivulja. Prijava baze 2 n u ovom slučaju. Ali to nije važno. Ono što je važno je stvarno bitno drugačiji oblik koji ima. I vi možete uzeti u obzir koliko mnogo kraće ova linija stvarno je u dugoj vožnji. Ona je stalno u porastu. To ne poravnati savršeno. Ali, to postaje sve tako mnogo sporije kao problem postaje veći i veći. A možete misliti da je to ovaj way-- ako Verizon ne samo dodati jednu stranicu iduće godine, ali u parovima broj stranica u imeniku, Prvi algoritam možda uzeti dvostruko više koraka. Ako je 1000 ove stranice godine, 2.000 stranica iduće godine, Mike bi moglo biti da je mnogo dalje. Dakle, to je 1.000 dodatne korake kako bi ga pronašli. Drugi algoritam Možda tek 500-tinjak više korake kako bi ga, jer opet naći, Letim kroz njega dva u isto vrijeme. Ali što je s trećeg algoritma? Ako Verizon udvostručuje Veličina imenika iduće godine od 1.000 do 2000 stranica, koliko još koraka je moj treći algoritam će potrajati? Da, to je samo jedan. I to je moćna ideja. Možete uzeti 1.000 stranica zalogaj iz tog problema odjednom. A sada, ako uzmete u obzir glup scenarij, ali to vrsta govori o Snaga ove vrste intuition-- ako je telefonski imenik imala, kao, četiri milijarde stranice, osjeća se kao jako veliki problem. I doista, to bi moglo će mi četiri milijarde stranicu okreće se naći Mike Smith u tome slučaj s prvom algoritmu. No, koliko koraka i bi uzeti u trećem algoritam naći Mike među četiri milijardu komada papira? Dakle, četiri milijarde suza na pola. Možete dobiti dvije milijarde. Zatim milijarda, a zatim 500 milijuna, 250 milijuna, 125 million-- ali osjeća kao što je to će potrajati. Možda ću trebati 32 prstiju brojati do visoka. Ali, to je istina, kao malo kao 32 stranica suzama. Možete ići od četiri milijarde na jednu stranicu parcelacija originalni broj Članci u pola 32 puta dok ste s lijeve samo da je jedna stranica. Sada, naravno, ja sam varanje ovdje. To ne znači da mi samo bude neka vrsta glupo cijelosti s prva dva algoritmi. Ja sam varanje u nekom smislu, ili Stvarno sam uložio pretpostavku. Što je istina o telefonskom imeniku u izvornom obliku koja je omogućila mi čak koristiti taj treći algoritam? Da? PUBLIKA: Bilo je abecedni. DAVID Malan: To je abecedni, zar ne? Ako je bilo samo u random red, to je gubljenje vremena, cijeli ovaj razgovor. Moram gledati na svaki stranica ako je u slučajnim redoslijedom naći Mike Smith prije nego što sam može se zaključiti da je on tamo ili ne. I tako kutak smo cut je da imam Pretpostavlja se da je netko drugi u ovaj slučaj nije posao za mene. I to tako da u konačnici pozivnica postavlja se pitanje, dobro, čekaj malo. Kako sortirati 1.000 Stranice imenima i brojevima? To je zapravo neka druga Problem, nešto mi ćemo se vratiti u budućnosti. No, kada razmišljam o web kao što su Facebook i Google za Gmail i stvari kao što su Google-a vlastite indekse za pretraživanje, kada imate milijune ili milijarde komadići podataka koji se pohranjuju ovih dana, searching-- i ne spominjemo sortiranje one problems-- je u konačnici predstavlja izazov za sebe. I doista, to je onda samo jedan od tih izazova da ćemo se gledajući. Dakle, sada ćemo uzeti trenutak i pogledati CS50 sama i dati vam osjećaj što je u spremištu ovaj semestar. Doista, ako već niste, ne uzeti pogledati ovaj URL. A što se Patrick aludirao da, ove godine smo što značajno ulaganje sve više u prilog toku je struktura u smislu TAS i CAS, radno vrijeme, dijelovi dostupnost i digitalni materijali online, kao dobro. Doista, u smislu tečaj je predavanje, mi smo danas ovdje. A očekivanja ovo godine službeno tečaja se pobrinuti za danas, tečaj je zadnjem tjednu nastave, a naravno otprilike u sredini semestra sa svakom predavanju između njih dostupni općenito u petak poslijepodne on-line, kako za Yale studente i Harvard studenti ove godine. Doista, jedan od temeljne promjene je da smo usvajanja na Harvard paradigma vrlo mnogo kao što smo učinili ovdje prošli godine, a sada je u ovoj godini, tako da se na sličan način, još uvijek snimiti najviše kolegija predavanja u Cambridgeu ali bi im na raspolaganju ranije nego što su u prošlosti tako da oni od you-- ako vas bih, na primjer, dobiti na vremenu o materijalima na prvi vikend, a nego drugi vikend, imat ćete pristup tim vrstama materijala, pretraživati, ugraditi, hyperlinkable kako povezanih resursa sve ranije. Što se tiče teme, da vam osjećaj toku je trajectory-- a nešto od toga moglo biti žargon za sada, ali ne za dugo, budite uvjereni. Mi ćemo početi danas, u konačnici, s gledanjem na jednom programiranje jezik zove nule. Mi ćemo vam prijelaz nakon toga Sljedeći tjedan na nešto što se zove C a onda se gleda na drugu zgradu blokovi za rješavanje problema, stvari zovu polja i algoritmi, kako koristimo memoriju u našu korist i nedostatak, a stvari kao što su strukture podataka, a zatim prema kraju repa Klasa gleda na strojnog učenja i gleda na drugu jezik zove Python, kako web funkcionira, kako je internet više uglavnom radi, protokoli kao što su HTTP, jezici za baze podataka kao što su SQL, JavaScript za web, i na kraju vezali svi oni zajedno. I tako, istina, u kraju dana, te neće naučiti u ovoj klasi nule ili C ili Python ili SQL ili JavaScript. Vi ćete umjesto općenito učiti informatika i temelji istih, i vi ćete naučiti kako programirati u bilo kojem broju tih jezici na putu. Dakle, doista, jedan od ciljeva tečaja na kraju je da se skinu sve naravno a kotači za obuku od strane onih posljednjih tjedana tako da, nakon toga, možete vrati se svom fields-- je li to ili nije Ne informatika ili inženjering, u prirodnom znanosti, umjetnosti, humanističkih ili beyond-- i donijeti neke od ovog Naravno ideje i ovo polje je ideje i praktična vještine na vlastitu domenu kako bi se riješili problemi u njemu. Što ćemo raditi ovdje u međuvremenu u većini četvrtkom nakon danas je s glavama toku vodećih što ćemo nazvati Walkthroughs tečaja je problematična setovima. Dakle, svaki tjedan, kada smo su problem postaviti, mi ćemo hodati kroz na mjestu ovako toku izazovi, vam nudi neke savjete i Ukoliko i dizajn tehnike. No, ako niste u mogućnosti da bi oni osobno, shvatiti oni isti sredstva će biti ugrađen jedan od tečaj-a asistenti u problem se postavlja, kao dobro. Problem postavlja ove godine, za razliku od prošle godine, na temelju povratne informacije, i dalje će biti objavljen petkom. No, umjesto da se zbog naknadno petak, time dajući vam samo sedam dana, učinkovito će se zbog 10 dana kasnije. I doista, to će značiti da oni će preklapati vikenda. No, nadamo se i ove godine Posebno će to omogućiti učenicima bolje smjestiti plima i oseka u svojim planovima, da li je akademici ili extracurriculars ili atletika ili na polovici trajanja sezone. Možete prednjim opterećenje ili back-opterećenje Vaš tjedan s naglaskom na CS50 temelji na svoju ruku tjedna stvarnog opterećenja kolegija. Problem postavlja se će obuhvatiti niz jezika, iako ćemo se usredotočiti uglavnom rano na C prije nego što smo se fokusirati na kasnije više razina, više web-centric jezika. I onda par pitanja here-- trebao si uzeti klasa poput CS50 kao prve godine? Dakle, apsolutno. I doista, to nije nužno nešto treba odgoditi sve dok ne rezati zube na drugim vrstama nastave. No, umjesto toga, razmislite da je za mnoge studente, uključujući i mene natrag u dan, ovo je vrlo nepoznata polja, Pogotovo ako Nikad nisam uzeti AP CSA ili nešto slično u srednjoj školi. Ali shvatite da rano, da li je ovaj tečaj ili neki drugi uvodni tečaj, Sada je doista najbolje vrijeme, Mislim, pronaći neki novi put ili neki novi akademski interes, kao dobro. A zatim se s drugim courses-- tako da je jedan od ključnih razlika ovdje u odnosu na Harvardu je da smo samo uzeti četiri predmeta po semestru na Harvardu iz nekog razloga. A vi ste zapravo povući off nekih 36 predmeta u ukupnom tijekom svoje četiri godine, što znači općenito četiri ili pet klase. I ja mislim da je to sasvim pošteno reći te da se odriču CS50, po dizajnu, je vjerojatno nije tip klase da bi se trebali obično uzmi sa četiri druga tečajevi za ukupno pet jer psets su po dizajn prilično intenzivna. Zapravo, ja sam naučila ovo natrag u dan. Ne bih opisao CS50 i informatika, programiranje kao toliko teško kao što se je samo vremena. To nije nešto što gdje je nakon večere, te može se vratiti na svoj doma soba, sjesti i početi s naglaskom na pset razmišljanja, u redu, Ja ću prasak ovo Večeras a onda potez na moju sljedeću temu sljedećeg dana. Ponekad jednostavno udario u zid. Imate greške u kodu. Ne nužno znati kako riješiti neki problem. A jedan od ključnih značajki programiranje za sebe na ovaj dan je li samo vrste je potrebno poduzeti korak unazad ponekad spavati na njemu ili misle na njega tijekom od jog ili neke druge aktivnosti, a zatim se vratiti na njega svježe. A vi samo trebate ove prozore vremena. I doista, to je razlog zašto imamo produljio količinu vremena dostupno za problematična setovima ove godine, a isto tako, po tom URL-u stavio sam i ranije kako bi se Što je novo ovaj semestar, obrubljen problem postavlja tako da se oni su u osnovi nije ništa manje strog, i ponijeti sa sobom nisu ništa manje, ali ima puno manje prednji stvar, puno manje trčkaranje da morate učiniti na prednjoj svaki problem set, kao što ćete vidjeti, prije nego što možete zapravo zaroniti u mesu njega. Dakle, shvatite da oni i drugi Promjene su na vidiku za bolju prilagodbu studenata, ali u konačnici osigurati da su ponijeti sa sobom su doista kao visok kao moguć. Dakle, dok je više posla nego što može biti u tipičnom klase, nadamo se da će se vratiti za ti i ponijeti sa sobom za vas te vještine i ideje s kojom ste izašli su sve privlačniji kao rezultat. A da bi ste there-- i to je jedan od ključnih takeaways, kao Patrick aludirao earlier-- je potporna struktura tečaja je. Dakle, ne samo da CS50 imati jedan od najveći tečaj osoblje na kampusu. Ona također ima jednu od većina preddiplomski. Doista, CS50 prošle godine Bio je to prvi razred imati dodiplomski nastavni kadar. A dokaz tog uspjeha učiniti sada mnogi drugi predmeti unutar Yale CS ima toga, kao dobro. I za studente, posebno, Hoće li ovi TAS i naravno asistenti se podupire cijeli mreža podrške resursa, među njima dijelovima ili navodima, tjedni prilike imati više intimne diskusije i mišljenja materijala ciljanih za različite pjesme, za studente manje udoban, udobnije, ili negdje između. To će pratiti dostupnost predavanja po nekoliko dana svaki tjedan ponedjeljkom i utorkom. I onda ured hours-- jedan-na-jedan prilike za pomoć iz kolegija CA i TAS će biti srijedom i četvrtkom i nedjeljom na višekratnik puta, od kojih svi će biti objavljena na web stranici tečaja je, čak i više nego prošle godine, što je dobro. No, ono što je ključno za CS50, ako Nije, doduše, pomalo neobičan, je tečaj kultura koje smo pokušali uzgajati, kako u Cambridgeu već dugi niz godina i sad nedavno u New Havenu. A u stvari, u ovome Subota, ako niste čuli, je CS50 Puzzle Day, koja ima nema nikakve veze s računalnih znanosti ali je u potpunosti dizajniran za slanje poruka da je računalo znanost o rješavanju problema. I doista, ako želite da partner s jednim ili dvoje ili troje prijatelja i formiraju tim za CS50 Male dan, pogledati na reklamama koje su na putu van. I tri sata pizzu i zagonetke i nagrade čekaju. I doista, za Prvi put ove godine, neće se održati u suradnji s Harvard. Ona će biti ovdje, neovisno na Yaleu. Dakle, držati oko vanjska strana za oni ako nisu. Većina svakog petka u semestru ćemo pokušati napraviti veliku klasu osjećate malim i donijeti 50 studenata na ručak s osobljem toku je, s alumni, prijateljima iz industrije za razgovor o kakav je život nakon klasa kao CS50 i preko ljeta a nakon mature. Dakle, držati oko vanjska strana za pozivi na tome. Prvi put sve ove godine ćemo i mi održati prvi ikad CS50 kodiranje Natječaj, dodatna opt-in prilika sredinom semestra, nakon što su svi od nas su imali neki šest ili sedam tjedana programiranje u C pod njihovim pojasevima da se natječu, ako bi tako choose-- opet na teams-- pokušava riješiti što je mnoge izazove kao što možete u programiranju s vaši prijatelji protiv drugih. A prema repu semestra hoćemo charter neki autobusi, zapravo provesti neko vrijeme u Cambridge, ako želite željeli da nam se pridruže, jer je Takozvani CS50 hackathon. U 7 sati ćemo početi. Oko 9 sati, imat ćemo pizzu. Oko 1:00, imat ćemo burritos. I još netko budan na Vožnja autobusom kući oko 5:00, ćemo svratiti za palačinke na IHOP na putu home-- 12-satni priliku uroniti se sa kolegama i osobljem u konačnom projektu toku je, što je prilika ići daleko izvan Naravno je problematična seta te u osmišljavanju i provedbi većine ništa od interesa za vas, koji će u konačnici biti sadržanu ovdje Commons. Prvi CS50 sajam je zadnji put godine, kraj-of-semestru izložba ili slavlje ono što svi u razredu je ostvaren, naročito one, opet, koji je otišao iz ništa na nešto, od nula do 60, nemajući prije pozadinu i izlaganja, u konačnici, nešto za cijeli kampus i, ako online, da svijet vidi, kao dobro. Sada, ovo ovdje su samo neke od TAS i CAS čini CS50 moguće. Dopustite mi pozvati bilo od tih članova osoblja koji su ovdje da dođe na pozornicu, kao i glava toku je, ponuditi neke riječi inspiracija, kao dobro. ANDI: Bok, ljudi. Hoćete li me čuti? Hvala što ste nam se pridružili na ovome lijep, kišni četvrtak popodne. Moje ime je Andi. Ja sam mlađi u Berkeley. A zajedno s Stelios i ljeto, mi ćemo biti vaše tri glave nastava asistenti za ovu nadolazeću godinu. Pa, mislim, show hands-- koliko vas nemam namjeru biti CS niti tko stvarno ronjenje duboko u računalnoj znanosti kao glavni ovdje? Super. To je sjajno. Tako da sam zapravo globalne poslove i kognitivna znanost major. Doslovno sam došao Yale s namjerom da se nikad ne vlasništvo pogledati Broj ikada više u životu. Kad sam došao na Yale, to je nešto što nikada nije bio na mom radaru. Htio sam učiti o poeziji. Želio sam saznati o međunarodnim odnosima. Želio sam saznati o akvarel crteža. Da, nudimo razred na akvarel crteža. Ali ja nikada stvarno bio zainteresiran u ništa stabljike povezane. No, tada sam stariji dobio, više sam shvatio da svaki polje stvarno u nekim Osjećaj zapošljava računalne znanosti, ili ako ne informatika, računanja. U stvari, za moje globalno poslovi vršni kamen projekt, mi smo pomoću podataka analitike analizirati terorističkih napada za Boko Haram u Nigeriji. I tako, kao što možete vidjeti, bez obzira na onoga glavna ćete završiti provodi ili ono što vaše interese ovdje na Yaleu su, programiranje i osnove bez obzira na vještine su super koristan. I CS50 jako dobro opremljen za vrsta posuditi puno svojih resursa za vas, bez obzira na kako udoban ste ili kako zainteresirani ste u ostvarivanju klase. Ljeto je idući u pričati malo malo o tome što su momci će naučiti o ovoj godini. LJETO: Pozdrav svima. Ja sam ljeto Wu. Ja sam mlađi u Morse. A zapravo sam počeo kao CS50 student sebe. tako prije tri godine, bio sam na godinu dana razmaka. Ja nikad ne bih uzeo CS razred u srednjoj školi, ali sam mislio da je u slobodno vrijeme, bilo bi super da nauče kako kod. Tako sam brzo Google pretraživanje, tražio ono što je dostupno na internetu, i vidio ovaj video sa Muppets i DJ-i super web stranice. Bio sam kao, želim naučiti kako to učiniti. Zato sam uzeo naravno, i ja Samo se zaljubio u nju. Ali sjećam se tako ljubomoran na djeca koja su mogli prisustvovati hackathon, prisustvovati Puzzle dan, prisustvovati ured sati, dobiti pomoć od TAS u osobi. I tako ja nikada zamislili da bih dobiti priliku da se ovdje uključeni u naravno da je prvi put dobio mene zanima računalu znanost i to je razlog zašto Ja sam informatike glavna danas. Zato ću vas upozoriti, ovaj razred će vam se protežu. To će vas izazov. No, također će vas naučiti kako to učiniti stvari da nikada zamislili ste mogli. Stelios: Pozdrav svima. Moje ime je Stelios. Ja sam mlađi u Branford College i CS major. Ja sam također iz Atene, Grčka. Ja sam stvarno obličje naprijed za susret svima vama, razgovor s vama u dijelu, na radno vrijeme, na petak ručkove. Jako sam uzbuđen jer smo stavili toliko truda u stvaranju jedinstvene podrške Struktura za sve vas kako bi svoje iskustvo s naravno najbolje moguće. I nadam se da iako je većina ste vjerojatno ne uzima CS Naravno prije, nadam se da je CS50 za vas je ono što iskre interes da dalje nastaviti računala znanost u budućnosti, kao što je učinio s toliko mnogi ljudi u prošlosti. Dakle, hvala ti što si Ovdje, uzbuđeni da te vidim. Jason Hirschhorn. Jason Hirschhorn: Bok svima. Moje ime je Jason Hirschhorn. Ja živim u Silliman. A ja ode na Harvard kao undergrad a diplomirao u društvenim znanostima i minored u računalnoj znanosti. A jedan od mojih glavnih uloga ovdje je podržati ovaj prekrasni osoblje kao i oni vas sve podržava. U stvari, to nije sve. Ima 55 studenti i diplomanata ovdje da vas svi podržavaju. I usuđujem se reći jedan od najboljih dijelovi tečaja za vas sve je uzimajući za rad s ih, uzimajući ih znati, uzimajući ih vidjeti, kako u CS50 i izvan CS50 ovaj semestar a za mnoge semestra doći. Dakle, nadam se da ćete uzeti Naravno, jer Nadam se da doći u interakciju s divno osoblje imamo na sceni. GLAS: Pa, neka mi završiti rekavši da će biti zabavno. DAVID Malan: Pa, zahvaljujući našeg cijelog tima. Dopustite mi da dim svjetla i dopuštaju nešto više od našeg tima, oba iz Cambridgea i New Haven, pozdraviti kao što su ovi dečki turpijom. A nakon toga ćemo prijeći na prvi od naših programskih angažmana sa ovom jeziku zove ispočetka. Dakle, zahvaljujući tim. Neka je dim svjetla i čuti od nekoliko drugih. [PLJESAK] [VIDEO PLAYBACK] -U Misija CS50 je da bi vam više udoban sa potpuno novim načinom razmišljanja, ova računalna razmišljanje. -To Su računalne znanosti Zanimljivo, što nešto što nije stvarno shvatiti Bio je to moguće dok nisam uzeo klasu. -I Je kao, stoj. Ja sam stvarno prevodio moje misli u računalo pravo zatim. -Even Ako ne imati bilo koji pozadinu u računalnoj znanosti ili bilo iskustva, to je zapravo klasa za vas. -Pa Definitivno želim moji učenici na samo dobiti uzbuđen o računalnoj znanosti. Ne samo programiranje, ali razmišljati kao računalni znanstvenik stvarno ono što želim pokušati naučiti moje prve. -CS50 Je teško i nagrađivanje. -an Iskustvo. -Ekstravaganca. -To Je nas donosi na sljedeću razinu. [MUSIC SVIRA] -U TFS su, mislim, krv tečaja. -I'm Uzbuđeni da su moji učenici Ja pomažem imati taj aha trenutak da shvati što oni zapravo pokušava učiniti, shvatiti kako to učiniti pset. -CS50 Je definitivno teško naravno. No, za razliku od bilo koje druge Naravno stvarno na Yaleu, to je kao što je velik, podršku u zajednici. -Vi Apsolutno ne morate znati ništa o kodiranju biti u mogućnosti uzeti tečaj. -To Je nevjerojatno gledati koliko daleko ljudi dolaze u jednom semestru. -Ne Su sami sjedili u tvoja soba učenje kod, ali to je više nego samo klase. Bilo je to iskustvo. -U Najbolji način za naučiti pojmove i obraditi ih je podučavanje drugih. Što je telefonska Split? [MUSIC SVIRA] -I To je CS50. [MUSIC SVIRA] -Ovo Je CS50. -Got Problem? Tear ga na pola. [MUSIC SVIRA] Bacite. DAVID Malan: U redu. Tako ćemo tackle-- u malo Malo je, usput rečeno, to je je to tradicija neki razlog za 10 godina služiti tortu Na početak i kraj CS50. Zato vas čeka na kraju Danas, uz nastavnih programa, bit će neki kolač, kao i Osoblje toku je pozdraviti. Ali sada, neka je prijelaz na Prvi od naših jezika, u kojem ćemo provesti stvarno samo tjedan dana i jedan Problem postavljen na ovoj domeni, ispočetka. A vi ćete, ako ste programirana prije, mnogi od ideja, a Mogućnosti su poznati. No, vidjet ćete da je to je zabavno na putu shvatiti kako točno prevesti neke od ideja koje već znate na ovom okruženju stvarno impresionirati obitelj i prijatelji sa svojim radom, što može ići online, ako tako odlučite, poslije. A ako nemaju prethodno iskustvo i kod većine studenti manje udoban, shvatiti da mnoge od ideja koje smo Samo istraženo s reality-- stvari kao što su telefonski imenici i prisustvo i tako forth-- prijevod prilično lijepo na računalo, ali ne i ako koristite, u početku, jezik kao što je ovaj. Dakle, ovo je program napisan na jeziku koji se zove C. A mi ćemo provesti dosta vremena u C, na kraju. No, izgledi su, to će izgledati malo zagonetan za vas na prvi pogled. U stvari, ima puno čudno sintaksa, zagrade, uglate zagrade, vitičastim zagradama, citati i zarezom. I doista, ako zaronite u programiranje za prvi put gledajući i pokušava stvoriti stvari ovako, iskreno, ti se tako oprečnim tako često u samo glupo minutia da nema ništa intelektualno zanimljivo o tome. Ali, zamislite, ako bi mogao stvoriti taj isti program-- koji je, kao što ste mogli nekako zaključiti, vjerojatno ispisuje "Hello, world" na neki način. Možemo destilirati tu istu ideju u samo dva slagalice, ako će. Doista, ispočetka je zanimljiva zato što je to grafički jezik. Možete povući i ispustiti njih slagalice koji samo ispreplesti ako to čini logično smisla da to učini. I tako u nule, ćemo uskoro ćemo vidjeti, to je kako bi implementirati iste Program, sa samo dvije slagalice koji prilično mnogo učiniti ono što oni kažu. No, vidjet ćemo za koji trenutak da neki od građevnih blokova koji smo se aludira ranije i malo više su sve to u konačnici će predstavljati neke od naših najranijih programa. Mi ćemo imati stvari kao functions-- samo radnje koje se nešto učini, kao što su pozdravi, svijet. Mi ćemo imati petlje, stvari koje izazivaju ciklusa i opet, baš mi se sviđa učinio prije nekoliko trenutaka s pretraživanjem za Mike Smitha. Varijable, kao što je u algebri, ako vas imati X ili Y, koji može pohraniti broj. Pa, na neki program, možete zapravo pohranjivanje više od samog broja. Možete pohraniti riječi i rečenice i grafika i druge stvari na mjestu. Boolean izrazi, samo questions-- da ili ne, istina ili laž. Uvjeti, donošenje odluka na temelju tih da / ne odgovora. I onda ljubitelj takve stvari polje i teme i događaji i bilo koji broj ostalih osobine, a koji su svi map jako lijepo da se vrlo prijateljski blokova kao što je ovaj. Ovo će biti funkcija, A ljubičasta puzzle komad koji samo kaže ono što mu ime is-- u ovom slučaju, kažu. I onda često, tu je bijela kutija koja vas Možete upisati ili povući neke vrijednosti u. I to je ono što je općenito zove argument ili parametar. To je način promijeniti odnos zadano ponašanje slagalice komad ili funkcija, tako da to ne nešto običaj vam se sviđa govoreći: hello, svijet ili zdravo, Andy i zdravo, Jason ili neke druge kazne umjesto. Ako želite reći da je lot-- doslovno forever-- možete uzeti još jedan zagonetka komad zove zauvijek i samo u sendviču dva zajedno ovako. I to petlja, kao slika sugerira, znači samo pozdraviti, svijet zauvijek, opet i opet i opet. Ili, ako samo želite učiniti ga ograničen broj puta, kao što je 50 puta, tu će biti još zagonetka komad za that-- ponoviti 50 puta. U međuvremenu, ako želite da imaju varijablu u tom jeziku smo o da se igraju s, možete koristiti naranče blok kao što je ovaj. A ta varijabla sam samovoljno Zvao sam za cijeli broj. I samo sam ga postaviti jednak 0. I tako, možda sam u to case-- to variable-- predstavlja nečiji rezultat u igri. Možete početi od nule, a svaki put kada napraviti cilj ili nešto slično, ste dobili jedan dodatni bod. Ovdje možete postavljati pitanja u nule. Ako ćemo povući i ispustiti puzzle komada u trenutku kao što je ovaj, možete postaviti pitanja poput: dobro je i za manje od 50? Možda vam je potrebno 50 bodova za pobjedu. I tako će to biti postavlja se pitanje da ćeš pitati. Ili, općenitije, ti Moglo bi se reći je x manje od y, gdje ima dvije varijable uključene? Sada, ovo je puno veći na prvi pogled, ali stvarno nije sve što je složeniji. Ovo je samo kombinacija uvjeta i varijabli i Boolean izrazi pitati tri questions-- je x manje od y? Ako je tako, tako kažu. Recimo, x je manji od y. Inače, ako je x veći od y, drugi x mora biti jednaka y. I dok je Mike Smith, Bila su četiri scenarija, ovdje u svijetu brojeva, x je bilo manje, veća od ili jednaka. Sve što imamo su tri viljuške na cesti. A tu je i ljubitelj slagalice kao što je ovaj za stvari kao što su polja, kojima smo će biti u mogućnosti pohraniti informacije. Idemo vidjeti blokova koji omogućuju nas provesti više niti, Još jedna značajka ćemo koristiti, a onda i nešto što se zove događaja. No, prije nego što smo dobili na to točka i stvoriti još, u konačnici, naš vlastiti prilagođeni slagalice, neka je zapravo otvoriti samog programa. Dakle, ovo je ispočetka. To je dostupan na scratch.mit.edu. I vi ste dobrodošli da igraju sada ili kasnije, kao dobro. To se događa da se offline verziju. Za ljude koji ne nužno imati veliki internet, možete preuzeti Isti softver, kao dobro. I tu je zapravo samo tri Komponente ovog softvera. Na gornjem lijevom kutu ekran je vrsta fazi da Scratch, koji je po defaultu izgleda kao mačka, živi unutra. On može pomicati gore, dolje, lijevo i desno i raditi bilo koji broj drugih stvari, a može tražiti bilo koji broj načina na temelju na kostima koje ste dodijelili su mu. No, to je ono što ćemo nazvati sprite, neka vrsta karaktera. I vi možete imati višestruke likovi, kao što ćemo uskoro vidjeti. U sredini su sada sve te puzzle komada i ove kategorije ili palete istih. Pa sad, kliknuo sam na pokretu. I tako ja vidim sve od Prijedlog vezane slagalice ili blokova, tako funkcije koje imaju učiniti s ide gore, dolje, lijevo ili desno, ili neke druge operacije. Ali, ako sam kliknuo na izgled, vi mogao vidjeti stvari poput recimo blok što smo vidjeli prije samo trenutak. A ako ja kliknite na kontrolu, vidjet ćete stvari poput ponavljanja i zauvijek a ako je blok koji što smo vidjeli maloprije. I tako ćete naći da ćemo samo ispočetka površina neke od slagalice zajedno, ali to je sve prilično intuitivno i točke i klik. Doista, ispočetka je dizajniran za mlađe učenike pomoći im dati izlaz za kreativno razmišljanje. Pa ipak, divno, to je divno koračni kamena na točno ideja da ćemo istraživanje u C i Python i JavaScript, također. Na desnoj strani, na kraju, ovdje A ovo je tzv skripte područje. A to je samo prazna ploča s što počnete pisati program. I ja ću upravo to. Sada, ja slučajno znam gdje su stvari zato što sam to učinio nekoliko puta. Ali znam da se pod kategorija događanja, tu je ovaj blok here-- kad zelena zastava kliknuli. I primijetiti da sam smanjivanje i natrag ovamo na pozornici, Blok živi u ovo Malo pravokutnog svijeta, vrhu koji je zeleni zastava i crvena stop znak. Na taj način ići i zaustaviti, respektivno. I ono što želim raditi kada je to zelena zastava kliknuli? Pa, pusti me da to izgleda kategoriju. I neka mi samo naprijed i povucite i ispustite ovo. A primijetiti čim ga dobije blizu, oni su vrsta magnetski. Dakle, ako sam sada pustiti, ne sjedne zajedno lijepo i čisto. I ja ću ići naprijed i reći nešto poput hello, svijet dvije sekunde. Pusti me smanjivanje i kliknite sada zelena zastava, i reći zdravo, svijet. U redu. Tako da je sve u redu i dobro. Nije sve to uzbudljivo. Učinimo to malo slađi. I znam da je u unaprijed, ispočetka se događa da se s nekim slatkim stvarima kao što je ovaj. Dakle, igrati zvuk Mijau dok učinili. Tako ćemo to učiniti. [MIJAU] Ah, to je sladak. I ako sam ga kliknite again-- [MIJAU] I opet. [MIJAU] Ali ja stalno ima reanimirati nule. Ali ja mogu učiniti bolje od toga. Zašto ne bih jednostavno povucite tri takva. A sada je tri puta sladak. [Mijaukati] OK, zapravo, to je malo jezivo. Zato nam je potrebno nešto između tamo. Ako idem na kontrolu, izgleda tu je zapravo čekati blok. I tako primijetiti da sam lebdjeti iznad there-- i neka mi se to malo veći. Ako sam lebdjeti, to će da sjednu na mjesto. Dakle, pričekajte jednu sekundu, pričekajte jednu sekundu. Idemo opet udariti zelenu zastavu. [Mijaukati] OK, malo više prirodna, ali ne jako učinkovit. Dakle, ovo je ispravan ako je moj program je Cilj je mijau tri puta. No, to nije vrlo dobro osmišljen. Ja vrsta izrezati neke kutove. Dobio sam malo lijen. Ono osjeća da bismo mogli što trebam činiti da je to učinio loše, biste li rekli? Da? Da, u sredini. PUBLIKA: Koristi se više memorije nego što je potrebno da jer da koristite toliko mnogo različitih linija. DAVID Malan: Da, pa više linije. I to ne mora nužno biti memorije, iako se može vidjeti kako je na taj način. Ali to je definitely-- postoji zalihost. I ja doslovno vrsta vukao i pao iste stvari. A ako vrsta extrapolate-- ako to nije očito here-- dobro, kako bi se Ja mijau 30 puta? Ja bi povući i ispustiti, kao što su, više od 30 pari slagalice. A sigurno postoji bolji način. A vidjeli smo bolji način. Ono što intuitivno bi biti bolji način? Da, samo koristiti petlju. Ne kopirati i zalijepiti. I doista, bilo to semestar ako počnete pronalaženje sebe povlačenjem i ispuštanjem, ili stvarno kopiranja i lijepljenja, opasna navika, jer to je samo nije jako održivi. Na primjer, ako želim promijeniti zvuk na nešto drugo, Moram to promijeniti sada u tri Lokacije umjesto samo jednog. Jer doista, ako sam razbiti ovaj away-- ja sam Upravo će to razdvojiti kao što je to. Dopustite mi da zgrabite ponoviti blok i zatim tri, tipa tri, bacati neke od ovih daleko od samo prepuštanje. I onda to primijetiti ne izgleda kao da se uklapa, ali magnetski, to će ne samo ugriz na mjestu ali raste da stane na oblik. Dakle, to je dobro. A sada, ako kliknem play. [Mijaukati] Vrlo lijepo. U redu. A sada je vrlo lako promijeniti, previše, jer ja mogu samo promijeniti jedan broj na jednom mjestu. No to je, također, nije sve to zanimljivo. Idemo zapravo imaju Scratch ne mijau, ali premjestiti. Pusti me da se pokretu i krenuti 10 koraka unutar of-- Joj, daj da ovo popraviti. Dopustite mi da ga premjestiti 10 steps-- zapravo, neka se ne ponovi. Dopustite mi da zgrabite upravljački blok, i učiniti zauvijek sljedeće. Zauvijek, premjestiti 10 koraka. I kliknite Play. U REDU. Pa hvala bogu, on se zaustavlja. Inače, djeca će dobiti vrlo uzrujan kada su na neki način gube mačku. Ali barem ja mogu povući ga natrag u ekran. No, to nije sve što je super je igra ili animaciju. Bilo bi lijepo kad bi možda on je odbio od ruba. Dakle, što nam je činiti? Što konstrukt trebamo imati Nule odlučiti da se odbijaju, da li vi misliti, čak i ako ste nikada vidi Scratch prije? Da, u leđa. PUBLIKA: Treba vam ako je blok ili ako-onda. DAVID Malan: Da, tako nešto vrsta, ako blok ili ako-onda. Pa zapravo, imamo jedan od ovih ovdje. Tako if-- pa neka mi doći osloboditi od pokreta. Dopustite mi zumirati tako da je veći. Pa kako o tome. Zauvijek, ako Sensing-- nismo prije nisam vidio. Trebam Boolean izraz. I to ispada, ako dira što? Ako dodiruje rub, ono što želim učiniti? Pa, ako sam se vratiti u pokretu, Ispada, oh, ne mogu okrenuti. Pusti me vući to ovdje. Zašto ne ići naprijed i okrenuti za 180 stupnjeva? A sada, neka mi samo premjestiti na kraju. Mogao sam staviti kretanje na početak ili kraj. No, logično, svaki put kad sam premjestiti, sam želite provjeriti, ja to dodiruje rub? Jesam li dodirivanje ruba? Jesam li dodirivanje ruba? Tako da je logično da se okrene ako je tako. Tako ćemo pogodak igrati. U REDU. Tako da je malo lud, da tako kažemo. A bug je samo pogreška u računalni program. Ali barem da radi. A u stvari, ja mogu ići ovdje. I neka mi da nije 10 koraka pri put, ali to je sve animacije. To je sve crtić ili čak i film je. Dopustite mi da se presele 20 koraka u isto vrijeme. Dakle, 20 puta više stvari događaju Jednom ili dva puta onoliko, u ovom slučaju. I on se kreće brže. Dopustite mi promijeniti 30. 100. 1000. I to ide jako brzo. A to is-- Da, u redu. Dakle, sada smo samo petljaju s njim. U redu, tako lud. Ali možemo povući ga iz putu ovamo. Ali možemo napraviti više zabave s tim, previše. Kako bi bilo da učinimo, on je naopako. No, ispostavilo se Scratch-- i tu je zapravo, Moram se odriču, ni akademski Vrijednost za ono što ću učiniti. Ali, ako sam otvoriti mikrofon, neka je zaustavi ga i učiniti nešto takvo. Ouch! [SMIJEH] To je bio sladak. Hvala ti. Sada, to je ono što moj glas izgleda kao kad sam vikati jao. Ne mislim da smo uhvatili svoj smijeh. To je u redu. Dopustite mi spremiti kao "jao". Idemo spremiti kao "jao". A sada ćemo se vratiti u pismu. I sada need-- da vidimo, Zvuk. Oh, igrati zvuk jao. Dakle, ako sam dodiruje rub, pusti me Prva igra jao, a zatim se okrene. A sada ćemo ga staviti u sredini. [Govoreći: "JOJ"] Dvostruko brže. U REDU. No, to je doslovno radiš ono što ja govorim. Dakle, to je u stvari točna, to je samo malo neugodno brzo. Tako ćemo dodati nešto zanimljivije to. Dopustite mi da se zapravo otvaraju onaj koji sam napravio unaprijed, podesno zove Pet the Mačka, koja to čini. Evo skripta ovdje. Što se to događa s učiniti u engleskom smislu? Što je ovo dizajniran za obaviti? Da, idemo some-- da? PUBLIKA: Kada vas ljubimac mačka, to meows. DAVID Malan: Da, pa kad vas ljubimac mačka, to će mijau. Dakle, drugim riječima, tu je sada zauvijek petlje i dalje, u kombinaciji uz uvjet, u kombinaciji s logički izraz, u kombinaciji s nekoliko funkcija, učinak od kojih je, jednom sam igrati ovaj program, nije ništa događa dok nisam pomicanje kursora bliže i bliže i bliže and-- [MIJAU] Onda je to petting mačku. [MIJAU] Samo jednom vas zapravo pomaknite pokazivač iznad njega. Sada, sam i šlag gore ne maziti je mačka koja to radi umjesto. [Mijaukati] Dakle, on je samo stalno mijaukati. [Mijaukati] Ali, ako sam se previše close-- [Mijaukati] [Urlik] Pa kako to funkcionira? Sada sam samo imati dvosmjerni račvanje na cesti. Ako dira miša, onda igrati lav zvuk. Ostalo samo igrati Mijau zvuk, a zatim čekati tri sekunde tako da je to neka vrsta radi je vrlo mirno. U redu. Dakle, to je kombiniranje neke više ideje i dalje. Uzmimo pogled na ovom primjeru Naglo sam se nazivaju teme. I ovo je fundamentalno razlikuje po tome što iskorištava značajka mnogih programski jezik zove teme, sposobnost programa za doslovno učiniti dvije stvari istovremeno. Doista, ovih dana i ako upotrebljavate Google Docs ili Microsoft Word, a dokument je stalno biti provjeru pravopisa kao što ste type-- ili hit Command-P ili Control-P i ispis nešto, to je tiskanje dok i dalje pisati. Programi danas doista može učiniti višestruka stvari odjednom, baš kao u nule ovdje. Pa evo, imam dva sprites Sada, ptica i mačka. A ako ja kliknite na svaku od one likovi jedan po jedan, Vidim sada Ptičje skripte na gornjem desnom kutu. Sada vidim mačka '. Bird-a, mačka je. Dakle, svaki od njih ima svoj vlastiti scenarij. No, obavijest, što dijela slagalice oni oboje početak? Kada zelena zastava kliknuli. I ptice, kad zelena zastava kliknuli. Dakle, kada kliknem zelenu zastavu, oba od tih skripti ili programa idu paralelno. A vi ćete primijetiti da je ptica samo bezumno odbijajući se od ruba. Mačka je jasno je programiran s stratešku prednost. I-- [Urlik] U redu. Tako je mačka uhvati pticu u ovom slučaju. Zašto je to? Pa, obavijest prvo imamo samo ptica samo bezglavo ide da je ovaj početni položaj, a onda zauvijek, ako se ne dira mačku, samo premjestiti. A ako si na rubu, odbijaju. I samo premjestiti. A ako si na rubu, odbijaju. No, mačka, u međuvremenu, ima dodatnu logiku koji kaže da učinimo prvi, samo tako da to nije potpuno pristrano protiv ptica, primijetiti da imam koristi zeleni dio slagalice tamo koji zapravo uzima slučajan broj. Značajka više jezika je dati ti slučajni ili pseudoslučajnih brojeva. Dakle, u ovom slučaju, mačka u početku odabire slučajni broj između, kao što su, 90 stupnjeva i 180 stupnjeva, u biti, tako da ima malo odstupanja. A onda zauvijek, ako dira ptica, igrati lav zvuk. Inače, samo upućuju prema ptici. Usmjerite prema ptici. Točka prema ptica, koji je zagonetka komad za sebe u ovom slučaju. Pa, možemo napraviti jednu stvar ovdje. Dopustite mi da ovdje otvaraju program događanja. I ovdje smo opet imati dva sprites, koje izgledaju kao ove dvije lutke ovdje. I što je zanimljivo je to. Tip narančasta je ovo set slagalice ovdje. Zauvijek učiniti following-- Ako se pritisne razmaknicu, onda kažu, Marco i zatim emitiraju događaj. A u međuvremenu, plavi tip ovdje ima učinimo, kada primite poziv, kažu Polo. Tako ispada u nule i na drugim jezicima, postoje načini za dva programa ili dva pisma, u ovom slučaju, kako komunicirati, tako da kad sam hit razmaknicu, kaže Marco. A onaj drugi čuje da je, da tako govori, a govori Polo u odgovoru. Dakle, možete pisati programe koji zapravo komunicirati na ovaj način. A ako ja ovu opciju, Ja čak mogu dodati varijable, samo pomoću jednog sprite u ovom slučaju. Ovaj je posebno neugodno. [SEAL laje] Sada, obavijest o pravu imamo neke dodatne logika ovdje. Kako mogu zaustaviti ovaj pečat iz lajanje? [SEAL laje] Izgleda da je na desnoj strana je što je igrajući zvuk. No, to je samo igranje zvuk ako je ono što je istina? Ako je variable-- naranče block-- isključen je nula. Kako mogu promijeniti isključen biti 1, znači istina, čine ovaj isključen? Očigledno, drugo pismo, ja mogu hit razmaknicu, a sad se zaustavlja. Tako možemo imati ovu interkomunikacije preko skripte, kao i, samo po dijeljenje varijablu preko dva ovako. Sada, to nije sve što je zanimljivo. Idemo naprijed i to učiniti i kombinirati puno tih ideja s ovim programom ovdje. Prije nego što smo to, ipak, o tome kako jedan volonter? Dopustite mi da pritisak off od mene jer ja zapravo ne igrati ovu igru. Recimo ima netko mi nisam vidio prije. Morate biti udoban dolazi na pozornicu ovdje, na kameri. OK, hajde gore. Vrlo hrabar. Kako se zoveš? Idris: Idris. DAVID Malan: Molim? Idris: Idris. DAVID Malan: Idris, lijepo da zadovolji vas. Dođi gore. A sada, na svoj mobitel telefon, igraš Pokemona? Idris: Ne DAVID Malan: Stvarno? Idris: Da. DAVID Malan: U redu. U redu. Pa, lijepo da zadovolji vas. Dođite. Ja ne bilo. Tako ćemo shvatiti zajedno kako igrati ovu, što netko zapravo ode i provodi se u nule promjenom mačka bitno različitih likova sve zajedno. A ako sam cijeli zaslon ovo ovdje, idemo vidjeti sljedeću utakmicu zajedno. I dalje učitavanje i dalje učitava. Ajde. Dopustite mi da to učiniti. Ajde. Ova igra je toliko velika da se srušio. Stand by. Probajte ovo još jednom. Ajde. U redu. Idemo tamo. U REDU. Zelena zastava. Dakle, ovdje mi ići. [MUSIC SVIRA] Odaberite srednje razine ovdje. Kliknite na plavi momak tamo. U redu. A možete koristiti strelice keys-- gore, dolje, lijevo, desno. Sada, neka je uzeti u obzir kao i mi učinimo to a zatim se nakon lik tamo. Da. A sada kliknite ga s mišem. O da. Potez. Gdje je strelica? Izvoli. Dakle, kliknite tamo. Da. U redu. Pa sad, ja sam rekao da imaju džaku loptu, da, ako ga pritisnete, ona će to učiniti. Jako dobro. U praksi, za danas, ja pronašao ovu verziju igre je zapravo i nije jako teško. Dakle, ako želite ići opet ovdje, hoda do ovog guranje lopte. A onda idi pravo. Pokušajte klikom na nju. Oh, zapravo, to je trgovina, očito. U redu, tako blizu toga. To mi se prije. Možda ići do ovome ovdje. Oh, tu ste i vi. Čekaj, postoji jedan tamo. Oh, postoji još jedan. U REDU. Dolje. Da, kliknite. OK, to je jako slatka. U redu, vrlo dobro učinio. Ova igra nije jako teško. U REDU. Čestitamo. Ovdje imamo CS50 stres loptica za vas. Ali, razmislite na trenutak ono neki od takeaways su tu. Lakše od stvarne igre, očito. No, svi ćemo ovdje je lik koja vjerojatno ima neku vrstu petlje povezane s njom. To nije mačka. To je ovaj lik umjesto. I to loop je samo stalno govoreći, ako je strelica prema gore pritisne, ako je strelica dolje tipku, ako strelica lijevo ili desno pritisne strelica pritisne, kretati se ili dolje ili lijevo ili desno. Ili, ako postoji još jedna zagonetka komad tamo koji kaže da kada dodiruje drugu sprite, kada dodirivanjem jednog od likova na guranje lopte, ako dira, onda to učiniti. Dakle, sve ideje koje smo tako je koristila do sada stvarno mogu samo primijeniti u ovaj kontekst da igraju ovu igru, kao dobro. Pusti me naprijed i povucite do jedne druge ovdje, u stvari. Pusti me naprijed i povucite do, recimo, ovaj. To je nešto što je remiksirao. Izradio jedan od naših studenti u Cambridge, i onda sam otišao preko i promjena prilično mnogo svaki slučaj Harvard na Yale ovaj put. Bi li netko želio natjecati protiv Ivies ovdje u drugom akumulacije od svih tih ideja? Hajde dolje, da. Kako se zoveš? DINA: Dina. DAVID Malan: Adina? DINA: Dina. DAVID Malan: Dina, hajde dolje. U redu, Dina. Dakle, ova igra dobiva teže i teže, jer u ovoj igri, postoji varijable se koriste kao koji se konstantno praćenje onoga što ste razini u igri. Tako lijepo da zadovolji vas. Dođi ovdje okolo. I tako je cilj je da se ovdje sortiranje od učiniti svoj put kroz labirint da je ovaj student provodi. I samo da postaviti pozornicu, svaki od tih slika na zaslonu je svoj duh, svoj vlastiti karakter. Dakle, to su po default mačke, ali student ih mijenjati na raznim Ivies logotipa ovdje. A onda ćete vidjeti da je upravo korištenjem uvjeta i petlji i funkcije i više, možete dobiti ovo. [MUSIC SVIRA] [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Da, u redu. Da, zadržati ide. Prva razina je vrlo jednostavno. Upravo ste je dobio da ide tamo. Ali opet, uzeti u obzir, to je samo loop osluškujući strelice keys-- gore, dolje, lijevo, desno. A sada očitavanje blok. Vrlo lijepo. [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Vrlo lijepo. [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Vrlo lijepo. Prilično jednostavno, Crimson. U redu. Levels-- uh-oh. [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] I opet, u tim Tri Harvard vrhunci, samo trebate logiku govoreći, ako se na rubu, odskočiti. [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] U redu, što radite je zanimljivije od čega. Vrlo lijepo. Vrlo lijepo. Uh oh. [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Mislim da se morate žrtvovati. [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Brz! [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Nice. To je u redu. Vi ćete ga dobiti. Da da! Vrlo lijepo. [KLICANJE] [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Lijepo! [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Uspio sam. Ajde! Drugo na zadnju razinu. [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] U redu. [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Da. Dobro korištenje varijabli ovdje. [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Da. [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Nice. [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] U redu je. Moramo doći do kraja. Tamo. Oh! [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Možda trčanje kasno danas, ali to će biti vrijedan Internet. [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Možeš ti to! Da! [KLICANJE] [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Ovaj je stvarno teško. [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] Dat ćemo vam još dva života. Možete li to učiniti? [MUSIC - MC Hammer, "U CAN NOT TOUCH  OVAJ"] U redu. Kako o velikom krugu pljesak svejedno. Moraš drugi na posljednjoj razini. Hvala ti. [PLJESAK] Dakle, ovo je samo reći koliko ste može učiniti s takvim stvarima. I shvatiti, također, da kada slagalice ne exist-- i doista, ovo će biti jedan ovlasti s prvim problemom setovi i beyond-- je zapravo stvoriti svoj vlastiti. A ovo je samo isječak jedan od primjera vi ćete biti u mogućnosti igrati Uz on-line, gdje je ako ne imati izgrađen u nule nešto poput kašlja puzzle komada, zapravo možete napraviti sami. I tako sve to i još mnogo očekuje. I samo da se bojite konačna slika doista ono što je naprijed u spremištu za klasu za vas, na temelju nekih slika sa kolegama prošlost, dopustite mi da dim svjetla jedan posljednji put i pokazati CS50. [MUSIC SVIRA] U redu. To je to za CS50. Torta je sada služio. [MUSIC SVIRA]