[MUSIIKKIA] Tämä on CS50-- Harvard Yliopiston esittely älylliseen yritysten tietojenkäsittelytiede ja taiteen ohjelmointia. Ja nimeni on David Malan ja Ajattelin vain tänä aamuna, se on ollut hämmästyttävän 20 vuotta tänään viimeksi olen istunut jossa te nyt. Se on 1996. Olin toisen vuoden opiskelija, ja otin CS50 ensimmäistä kertaa. Ja en ollut edes saanut ylös hermo ottaa sen itse lukuvuoden aikana, osittain koska aikaa. Tietojenkäsittelytiede minulle oli sellainen kuin, meh. Olin hieman pelle kasvaa up, mutta en oikeastaan mitään henkistä kiinnostus näyttivät vain olla koko joukko ihmiset ohjelmointi kaiken aikaa. Ja Olin peloissani olla rehellinen. Kurssi ja tietojenkäsittelytieteen lisää yleensä oli ja jossain määrin, vielä tämä maine kentän varokaa, jos vain koska niin monet meistä eivät tunne sitä ja epävarma siitä. Ja se todella oli vasta I asioinut Tämän luokan että sophomore fall-- ja silloinkin, minä vain kirjoilla koska professor-- eräs ensimmäinen mentoreita, Brian Kernighan nyt Princeton-- salli minun ottamaan luokan hylätyn. Ja todellakin, siksi tänään sallia ja kannustaa opiskelijat ottamaan tämän luokan sat / unsat. Ja vasta sitten, jonka lukukauden loppuun ymmärsin kuin, Vau, tämä ei ollut niin tuntemattomia kentän. Itse asiassa tämä oli hyvin valtuuttamisesta kenttä, ja enemmän jännittävän, varsinkin myöhemmin, otin kursseja Dramatic Arts 101 ja Latinalaisen ja sitten lopulta grad koulu arkeologia, minä todella alkaa nähdä risteyksiä tällä alalla, tietokone tiede, jossa humanististen, luonnontieteet, taiteen, lääketiede, ja vastaavat. Ja niin se mitä vain niin siisti noin tietojenkäsittelytiede lopulta, kun toivomme sinun see-- on sen soveltuvuus Näiden muilla aloilla, ja miten voit kestää jonkin nykypäivän ja lukukauden ideoita ja käytännön taitoja takaisin oman verkkotunnuksen, ja todella tutustua tähän risteykseen vapaiden taiteiden ja tieteiden. Joten 73% teistä, jos viimeinen vuosi on viitteitä, eivät ole koskaan CS kurssin ennen. Joten jos, kuten minä, olet vahan peloissaan, tai rehellisesti et todella varma, miksi olet edes täällä. Ehkä juuri seurannut joitakin ystäviä Sanders juuri nyt. Se on täysin kunnossa. Tavoitteena tässä on koukku te ja vakuuttaa teille että jos et katsoa vasemmalle ja oikealle, aiot nähdä luokkatovereiden kanssa niin vähän tai paljon kokemusta että itse olla. Ja todellakin, me jakaa joitakin tilastotietoja myöhemmin tänään siitä, mitä Väestörakenne luokan tyypillisesti näyttävät. Ja lisäsi reassurance-- ja me tarkoitan koska otin aikana joitakin vuosia ago-- vuonna kurssin oppimäärän on this-- että mitä lopulta Olennaista tässä kurssin ei ole niin paljon, jos lopetat jopa suhteessa luokkatoverit, mutta missä viikolla 11, lopussa lukukausi, päätyvät suhteessa itse viikolla 0, joka on missä olemme täällä tänään. Ja tämä on mitä tajusin vuosia sitten. Ja tiedän paljon luokat sanoa, mutta se on varsinkin tietotekniikassa. Lopussa päivän, tällä alalla on tuntematon, koska se oli minulle ja voisi olla teille, on todella vain noin ongelmanratkaisu. Ja sellaisena se ei ole tässä sovellettavuus saada muilla aloilla. Ja itse asiassa, jos me yritimme tislata mitä tämä tarkoittaa, tämä on ongelmanratkaisu olemukseltaan, rohkenen sanoa. On input-- niin mitä se on, että yrität ratkaista. On ulostulo, joka on toivottavasti ratkaisu tähän ongelmaan. Ja sitten, kun olisimme sanoa tietotekniikassa, on tämä musta laatikko keskeltä et välttämättä tarvitse huolehtia siitä, kuinka se toimii. Te itse lopulta ehkä toteuttaa mitä sisällä että laatikko. Mutta nykypäivän tarkoituksia ja lisää yleensä elämässä, kaikki välität on, että nämä ongelmat saavat ratkaista. Ja mitä tämä kurssi on lopulta noin tutkii risteyksessä nämä tulot ja lähdöt, ja nämä niin sanotut algoritmeja, kuten tulemme pian nähdä, jotka toteuttavat mitä on alla siellä, huppu. Mutta nämä tulot ja nämä outputs-- mitä se oikeastaan ​​tarkoittaa? No, lopussa päivä, tarvitsemme jotkut tapa edustaa tietoa. Tämä pätee erityisesti tietokoneen, joka niin hieno ja monimutkainen, koska se voi tuntua, on melko tyhmä laite. Kestää electricity-- olipa kaapeli- tai akkua input-- ja sitten se tuottaa joitakin preprogramed vastaukset ruudulla. Mutta miten saamme alusta loppuun siellä? No, mitä ongelmia voidaan ratkaista? No, ehkä voisimme kello aloittamista tahansa lukukauden, yrittävät ottaa läsnäolo Huoneeseen näin. Joten en voisi tehdä kuin yksi, kaksi, kolme. Tai ehkä, jos tein sen tavallaan seurata of myself-- seurata things-- Voisin pian loppuu sormet. Joten voisin vain tehdä hash marks-- yksi henkilö, kaksi, kolme, neljä, viisi, kuusi, seitsemän, kahdeksan. Ja meillä kaikilla on luultavasti tehnyt tämän, onko kädet tai paperille. Ja tämä on oikeastaan ​​vain jotain kutsutaan unary notation-- jossa jos sinulla on vain yksi kirjain oman aakkoset, yksi tai hash merkki tässä tapauksessa jokaiselle input haluat laskea, sinun täytyy laittaa alas yksi näistä letters-- yksi näistä markkaa. Selvä. Siinä kaikki hyvä ja hieno ja ole kovin monimutkaista. Mutta tietokoneet eivät ole kaikki että paljon monimutkaisempi. Itse asiassa suurin osa luultavasti tietää vaikka olet ei oikeastaan katsotaan mitä tämä tarkoittaa, että tietokoneissa vain ymmärrä nollia ja ones-- ns binary järjestelmään. Me ihmiset, sen sijaan ovat niin paljon kehittyneempiä sikäli ymmärrämme nollia kautta ysiä. Mutta vaikka binaarinen on, aluksi silmäyksellä, ole kovin tuttuja, se osoittautuu se on aivan kuten järjestelmien ja ajatuksia jo tiedämme. Niinpä esimerkiksi harkita tätä. Tämä on vain symbolien sekvenssi. Ja kaikki te, kun vilkaisi sitä, luultavasti ajatella 123-- mitään todella mielenkiintoinen siellä. Mutta miksi se tämä numero, 123? Nämä ovat vain kuvioita päällä screen-- juuri kuviot että joku olisi voinut toisaalta tai kirjoitettu. Mutta jos olet kuten minä, luultavasti muistaa alakoulussa että on olemassa eräänlainen sarakkeita tai paikkoja täällä. On yksi paikka ja Kymmenen paikka ja sata paikka. Ja siitä syystä, että tämä on 123 ja ei vain mallia kolme symbolia siksi, tietenkin, jos on yksi satoja paikassa, et matematiikka 100 kertaa yhden, ja sitten kaksi kymmenen paikka. Niin, että 10 kertaa 2, ja sitten kolme yksi paikka ja se on 1 kertaa 3. Ja kun lisäät kaikki nämä ylös, ja Tietenkin saat 100 plus 20 plus 3. Niinpä aloitimme vain kuvio of symbols-- alphabet-- mutta sitten kartoitettu merkitys päälle se on suorittanut näitä sarakkeita. No, käy ilmi, että tietokoneet eivät todellakaan ole kaikki, jotka poikkeavat sinä ja minä. Vaan käyttää valtuuksia 10, niin speak-- 1, 10, 100, 1000, 10000 paikka ja niin forth-- ne todella vain käyttää valtuuksia 2-- joten yksi, 2, 4, ja sitten Jos laitamme enemmän numeroita, 8, 16, 32, 64, 128, ja niin edelleen. Ja niin näin tietokone edustaisi numero 0, aivan kuten me ihmiset. 0, 0, 0-- ja arvata mitä kuvio nollia ja ykkösiä, Jos tietokone voi vain puhu 0 tai 1-- mitä kuvio on menossa edustamaan lukumäärä me ihmiset tunnemme 1? Yeah-- 0, 0, 1. Selvä. Joten 0, 0, 1, miten me edustamme 1, joten voisi olla taipuvainen sitten edustamaan numero 2, jos olet neljän paikka ja kaksi paikka kuin yksi paikka, voitaisiin sanoa, hyvin, jos meillä oli 1 yksi paikka, ja nyt haluamme laskea jopa 2, saatat Tätä ja jättää tämä on nolla. Mutta tietenkään tämä ei ole, kuinka desimaalin järjestelmä toimii joko. Jos laittaa numeron nämä molemmat sarakkeet, sinun täytyy tehdä aritmeettinen. Joten mitä numero tein vahingossa vain edustaa? Joten se on 3, koska 2 kertaa 1 plus 1 kertaa 1 tietenkin antaa meille kolme. Joten tämä olisi kaksi. Terä tavallaan kääntää, niin sanotusti, koska 0 tulee yksi, paljon kuin 9 rooleja yli ja tulee 0, kun kannat 1. Tämä puolestaan ​​olisi kolme tietenkin. Four-- toinen mielenkiintoinen asia tapahtuu, jos ne kaatuessa ja kannat 1, niin sanotusti. Joten tämä tietysti on 4. Mutta jos eteenpäin nyt, mikä on suurin määrä menossa olla, että tietokone voi edustaa? Joten se on vain seitsemän tässä tapauksessa, eikö? Koska olet yksi neljästä, yksi on kaksi, yksi yhteen. Niin, että 4 plus 2 plus 1. Niin, että antaa sinulle seitsemän. Ja todellakin, se olisi vaikuttaa ensi silmäyksellä että tietokoneet voivat laskea ei ole korkeampi kuin tämä. Mutta tämä ei tietenkään ole totta. Mitä ihmiset tekevät, kun halutaan laskea korkeampi kuin 999? Ota vain yksi ja vain lisätä neljäs numero vasemmalle. Ja niin todellakin voisimme. Meillä voi olla kahdeksan n paikka ja 16. paikka, ja 32 paikka, 64, 128-- ja te voi vain pitää käynnissä äärettömyyteen asti. Niinpä nämä nollat ​​ja ones-- ns binary system-- ovat mitä tietojenkäsittelytieteessä olisi yleensä soittaa vähän, tai binary digit. Mutta nyt, miten saamme siitä käsite tai grafiikkaa näistä asioista todelliseen tietokoneeseen? Näyttää siltä, ​​että ohita askel täällä. No, ainoa tulo lopussa Päivän, minun laptop tässä on tämä sähkövirta. Vaikka se on ollut pitkä aikaa, koska olet ajatellut tai ei koskaan ajatellut miten sähkö toimii, siellä elektronit virtaavan tai pois, ja se on minun sellainen panos. Joten jos siinä kaikki, että olemme saada syötteenä täällä, mitä voimme tehdä tämän tiedon? No, voisimme ajatella nolla vain poissaolon sähköä. Mikään ei ole flowinw, mikään ei ole liikkuva, mitään ei tapahdu. Se on vain oletus state-- nolla. Mutta jos sähkö virtaa, miksi emme vain mielivaltaisesti, mutta maailmanlaajuisesti johdonmukaisesti, soita, että yksi. Joten yksinkertaisesti joilla ei ole valtaa, meillä on nolla, kyllä ​​teho, meillä one-- ole valtaa, kyllä ​​teho. Ja sillä tavalla, käyttäen jotain enemmän fyysinen tai sähköinen alamme toteuttaa tämän käsitteen jotain joko on yksi tai nolla. Todellakin, voisimme tehdä sen tänne. Joten tässä, en ole kolmea vaan kahdeksan hehkulamput, joista kukin on oma kytkin. Ja joten jos halusin edustaa numero seitsemän täällä, Voisin päälle nämä kolme lamput. Ja todellakin, sisäpuoli tietokoneeni on miljoonia, miljardeja asioita, jotka ovat vain pienempi kuin, jota kutsutaan transistorit, kytkimiä, että te vain päälle ja pois päältä. Joten nämä ovat big-- suhteellisen big-- kytkimet sisällä minun laptop-- monia, monia, monia, paljon enemmän kytkimiä. Mutta kaikki ne on juuri that-- käännä jotain, käännä jotain pois. Ja siten, tietokone voi edustaa, näiden miljoonia tai miljardeja transistorien, paljon ja paljon nollia ja ykkösiä. Ja siellä on muita laitteita vielä, että voit tallentaa tietoa pitkän aikavälin, niin, että kun vetää plug, et menetä sitä. Mutta se tarina toisen päivän. Mitä siis voimme tehdä näillä bittiä? Ehkä me vain ottaa paineita pois me-- ehkä joku haluaa tulla tänne ja tarjota jopa demo? Näin tämän käden ensin. Mikä sinun nimesi on? Maday: Maday. DAVID MALAN: Maday, tule ylös. Hauska tavata. Maday: Hauska tavata. DAVID MALAN: Tätä tietä. En tarvitse huuli teitä. Selvä. Joten tässä meillä on, notice-- yksi, two-- me muokata sitä out-- yksi, kaksi, neljä, kahdeksan, 16, 32, 64, 128. Tämä on tarkoituksellista. On kahdeksan bittiä here-- binary digits-- nollia ja ykkösiä. Ja vähän on hyödyllinen yksikkö measure-- ei niin hyödyllinen mittayksikkö itsensä päälle. Yleensä haluat ainakin Kahdeksan näistä asioista, alias tavu. Meillä on siis tavun bittien täällä. Jos siis halusi haastaa teitä, esimerkiksi eritellään, binary, tämä arvo here-- 42. Haluatko ottaa puukottaa että? Maday: [tahtiimme]. DAVID MALAN: Joo, juuri työnnä pieni valkoinen kytkimet edessä. Ja haluat oikeinkirjoituksen ulos 42, ja jaossa on tämä CS50 stressi pallo jos saat tämän. Selvä. Joten olet 32. Menemme tarvitsee 42. Niin, että kahdeksan, niin se on 40. Ja excellent-- erittäin hienosti tehty. Kiitos. [SUOSIONOSOITUKSET] Selvä. Joten meillä on yksi enemmän stressiä pallo. Tehdään vielä kerran, jos voi. Eräs toinen vapaaehtoinen? Vapaa stressipallo, vapaa stressipallo. OK. Tänne keskellä, Haluatko tulla alas? Selvä. Tiedän. Siellä mennään. Joten numerot here-- tule alas. Mikä sinun nimesi on? DAVEY: Davey. DAVID MALAN: Davey. OK. Tule ylös, Davey. Hauska tavata. Ja mitä me aiomme olla sinulle spell-- jos voisit viipyä siellä vain yksi moment-- on numero 50. Mutta, mutta, mutta mutta, mutta nämä ovat asteella magneetteja syystä. Juuri hieman vaikeampi, okei? Vielä kahdeksan. Selvä. Joten mitä meillä on siellä? Meillä on 32. Kiva. 32 plus 16 antaa meille 48-- niin lähellä. Ja ihana. Onnittelut Davey samoin. [SUOSIONOSOITUKSET] Selvä. Joten voimme tehdä tätä koko päivän, ja se ei saa kovin paljon muuta kiinnostava ja haastava. Mutta se todella point-- Näin suhteellisen yksinkertainen se on, lopussa päivän, mitä tietokone tekee tallentaa tietoa, tallentaa tuloa ja lopulta säilytä tai edustavat niitä lähtöjä. Mutta numerot eivät yksin kaiken mielenkiintoinen. Joten ihmiset, joitakin vuosia sitten, päätti, tiedätkö mitä? Olisi mukavaa, jos tietokoneet eivät olleet ainoastaan laskimet aritmeettinen toiminnot, mutta todellisuudessa voisi tehdä asioita, kuten tekstinkäsittely, tai sähköposti, tai modernimpi ruumiillistumia Tällaisten teknologioiden. Ja niin maailma päätti mielivaltaisesti, mutta yleisesti, että jos haluat tallentaa pääomaa kirjain A tietokoneessa, tiedätkö mitä? Toivotaan vain kaikki samaa mieltä tallentamiseen jotkut kuvio nollia ja ones-- bits-- että lopulta edustaa desimaaliluku 65. Me vain kaikki yhtä mieltä. 66 merkitsisi B, 67 merkitsisi C, ja siellä on rypäleterttuja muita malleja nollia ja ykkösiä, tai taustalla numeroita, jotka edustavat muut kirjaimet vielä. Joten jos sellainen henkisesti omaksua tätä hetken, Olen tarkoituksella sietää kautta I, jossa H 72 ja minä on 73. Jos tietokone sitten, yhteydessä tekstinkäsittely ohjelmaa tai sähköpostiviestin, paljasti alla huppu on nämä kuviot bits-- kuvio bittien, jotka edustavat 72, sitten 73, sitten 33-- mitä tämä voisi oikeinkirjoituksen kyseisessä ohjelmassa? Joten hei, ja sitten jotain. Emme välttämättä tiedä, mutta todellakin 33-- ei kartalla earlier-- oli yksinkertaisesti huutomerkki. Joten 72 oli H, 73 on I, 33 tapahtuu olla huutomerkki edelleen. Mutta se kaikki hyvä ja hieno, ja itse asiassa nykyään, sen sijaan vain käyttää seitsemän tai kahdeksan bitit, kiitos jotain nimeltään Unicode vastakohtana ASCII takaisin seuraavana päivänä, me oikeastaan ​​voi edustaa jopa enemmän kiinnostavia hahmoja kuin vain Näiden alkuperäinen Englanti puolueellinen kirjaimia. Mutta voimme myös edustaa jopa siistimpi asioita, kuten värejä. Jos olet koskaan kuullut lyhennettä RGB, punainen, vihreä, sininen, että vain sitä, että tietokone tyypillisesti käyttää kolmea erilaista bits-- jokin määrä bittejä, jotka edustavat numeron kuinka paljon punaista haluat, toinen joukko bittejä varten kuinka paljon vihreää haluat, ja toinen joukko numero kuinka paljon sininen haluat. Niin suuri määrä merkitsee paljon punainen, pieni määrä tarkoittaa ei punaista. Ja niin nämä ovat ystävällisiä keski arvojen täällä. Joten antaa minulle punainen, antaa minulle vihreä, ja anna minulle hieman sinistä. Ja jos yhdistelmä näitä kolmea sävyä värin yhteen, tässä tapauksessa, saat tämän murky sävy keltainen tai ruskea. Mutta kuvio kahdeksan plus kahdeksan plus eight-- niin 24 bits-- vasemmalta oikealle, on miten tietokone merkitsisi, että erityistä väriä. Nyt tämä on vain piste ruudulla. Jos tarkastellaan todella lähellä television oman tietokone, näet pisteiden tai pikseliä. Ja jos on koko verkkoon pikseliä, vaaka- ja pystysuunnassa, olet kuvia. Ja sitten, jos otat kuva ja sitten pestä näytä itsesi toisen kuvan, toista kuva, toinen kuva, toinen kuva, todella nopeasti, sinun on tietenkin elokuvia. Ja niin huomaa missä aloitimme. Aloitimme näiden nollia ja ykkösiä. Teimme sieltä desimaalimuotoon numeroita, miten me edustamme niitä. Nyt meillä on aakkosten kirjainta. Mutta muissa yhteyksissä odottaa, voimme käyttää muutama bittiä ja edustaa värejä. Heti kun on kykyyn edustaa värejä, sinulla on kyky edustaa valokuvia ja animoituja gif ja muita vastaavia merkkejä ruudulla. Ja kun on koko joukko kuvat lentävät ihmisen kerralla, se näyttää elokuvia, ja niin saat videoita samoin. Joten käyttää näitä hyvin yksinkertaiset perusalkioiden me on tapa esittää lopulta kaikki nämä muodot media. Ja olemme otetun uudelleen ja uudestaan ​​ja uudestaan, kunnes saada alin taso Tämän korkeimmalla tasolla. Niin, että antaa meille tämän yleinen käsitys abstraktio. Mutta aloitimme täällä. Täällä nyt, voisimme edustavat tietokoneessa meidän tuloa ja nollia ja ykkösiä, Meidän lähtöjen nollia ja ykkösiä, mutta mitä menee laatikon sisällä? Se kun tietokone tiede saa mielenkiintoista. Se on sinun todella tuoda oma mielensä kantamaan ongelmien ratkaisemiseksi. Voimme nyt määrätä, että Loput lukukauden, kyllä. En tiedä, miten binary toimii. Muistan kuinka ASCII tai Unicode-- kartoitus on letters-- teoksia. Ja se varmasti erottuu selvää, että me voisi edustaa punainen ja vihreä ja sininen, ja edustaa multimedian samoin. Mutta tämä on mielenkiintoista tavaraa. Tämä tekee joku kykenevät ratkaisemaan ongelmia. Ja yksi tällainen ongelma haluamme tehdä, todellakin, ottaa läsnäolo, tai Näin algoritmien. Ja vielä minä voisi tehdä tätä. En voisi tehdä yksi, kaksi, kolme, neljä viisi, kuusi, seitsemän, kahdeksan yhdeksästä. Voisin kirjoittaa sen alas seurata sitä. Mutta se, miten olisin edustavat tiedot. Tai sitten voisi tehdä tämän faster-- kaksi, neljä, kuusi, kahdeksan, kymmenen, 12, 14, 16, 18, 20, 22-- tuntuu kahdesti niin nopeasti, mutta se on silti vie paljon aikaa. Mutta näyttää siltä, ​​jos me hyödyntää vielä toinen resource-- ja todellakin tietokoneet näinä päivinä on useita suorittimia tai aivot. On käynyt ilmi, tietokoneet voivat ei paljon asiaa kerralla, ja todellakin me, tässä huoneessa, voisi edustaa juuri tätä. Joten se on vähän sosiaalisesti hankala, mutta jos olisi huumoria minua vain kolme vaihetta, anna minun kysyä jokainen siellä vain seisomaan hetkeksi. Nouse ylös. Joten kysy itseltäsi, numero one-- joten jokainen tässä huoneessa, paitsi ihmiset, jotka eivät ole velvoita, ajattelevat numero yksi. Niin, että on määrä juuri nyt. Tämä on ensimmäinen askel, tai sen tietojenkäsittelytieteessä tai ohjelmoija tyypillisesti tehdä, aiomme aloittaa laskenta nollasta. Jos pienin määrä voimme edustaa näitä lamppuja on nolla, jonka ne jäisivät kaikki pois, voisin yhtä hyvin aloita laskien nolla on yhden sijasta. Ja niin se mitä tietotekniikan tutkijoita tehdä. Joten vaihe nolla, seisomaan ja ajattelevat numero yksi. Seuraava vaihe on this-- pari pois jonkun pysyvän ja lisää numeroita yhteen. Ihana. Joten tällä hetkellä, kirjaimellisesti jokainen osallistuva ajattelee numero 2, paitsi yhden outoa henkilö, jos meillä on pariton määrä henkilöä huoneessa. Ja nyt kolmas vaihe tässä on menossa olla this-- teistä pitäisi istua alas. Yksi pitäisi istua alas, ja jos olet edelleen pystyssä, siirry takaisin vaiheeseen yksi. Selvä. Selvä. Joten yhä useammat ihmiset pitäisi istua alas. Huomaa, että tämä on aiheuttanut loop-- jonkinlainen sykli. Jotkut teistä tulisi olla hankalasti jumissa, menee edestakaisin ensimmäinen vaihe ja kaksi, yksi ja kaksi, yksi ja kaksi. Se on okei. Ensimmäinen bug. Me käsitellä sitä. Selvä. Yritän kannustaa asioita pitkin. Teoriassa, vain yksi henkilö seisoo kuten kaikki edelleen pareiksi. Haluan kuitenkin nopeuttaa asioita ihmisten kanssa yhä pystyssä. Mitä numero olet ajatellut? 46. OK. Menkää ja istumaan. Te ovat yhä pystyssä. Kuka vielä pystyssä? Mitä numero olet ajatellut? OK. Joten me palaan. Takana? Mikä tuo on? 22. OK joku muu up top-- joo? 34. OK. Tänne minun right-- täällä? 132, erittäin mukava. 22? OK. Ja kuka vielä pystyssä? Täällä? 46, erittäin mukava. 72. En voi pysähtyä paljon kauemmin. Joo? 30, mukava. Täällä? 23? 23. Ja Uskon, että jokainen paitsi te, ei paineita. Hei odota. 28? Vain kahdeksan. OK. Vain kahdeksan. Täällä alhaalla? 30. 23. 24. 18. Tämä on pahin täytäntöönpanoa Tämän algoritmin koskaan. OK. Joten kukaan muu? Kukaan muu? OK. Yksi vielä. 16? OK. 16. Selvä. Jos siis ole jäänyt ketään valokeilassa täällä, kun Enter, näemme, algoritmien, The kokonaismäärä henkilöä Sanders. Koska uudelleen, se on ikään kuin jokainen kun istui läpäissyt numero pois joku muu, joku muu, jollekulle toiselle, niin että teoriassa, lopulta vain yksi hankala henkilö pitäisi jättää pysyvä. Mutta se käy hyvin. Me nopeuttanut asioita käsin. On erityisen vaikea nähdä tässä nimenomaisessa tilaan. Ja henkilöiden määrä mielestämme on tässä 546. Kaikkiaan olin kädellä jonka opetus työsopimuksia, joka teki sen vanhan koulu hidas tapa, oli 820. [Nauraa] [SUOSIONOSOITUKSET] Se on okei. Niin varmasti silloin, on näitä vikoja. Ja se käy hyvin. Ja niin muistelen tätä ensimmäistä kertaa jotain kirjoitat ei välttämättä toimi. Tämä on tapahtunut minulle täällä. Mutta katsotaan nyt pohtia, miten voisimme soveltaa tätä samaa ajatusta jotain ehkä nähnyt aiemmin, mikä on tämä vanha tekniikka here-- todella iso puhelinluettelosta. Ja olettaa, että tämä puhelinluettelo on 1000 sivua ja 1000 nimiä ja numerot aakkosjärjestyksessä sen sisälle. No, voisimme tavallaan soveltaa samanlaista Ajatus tämän hyvin fyysinen ongelma, vain käyttämällä minut. Olen juuri sellainen petkuttanut hyödyntämällä kaikkia teitä jossa on paljon ja paljon erilaisia ​​suorittimia tai aivot suorittamalla joitakin algoritmi. Mutta jos se on vain vähän vanha minulle, voin silti hyödyntää että sama olemus idean jakamalla ja valloittaa tämän ongelman uudestaan ​​ja uudestaan, jolloin puolet teistä, puolet teistä, puoli teistä, puoli teistä, teoriassa pidetään istuen, kunnes me jätettiin, teoreettisesti, vain yksi henkilö. Joten tämä vanha technology-- emme tarvitsevat tätä map-- tämä vanha koulu teknologia, voisimme alkaa etsiä jonkun kuten Mike Smith, yksi sivu kerrallaan. Ja näen, että mitään, Mike ei ole täällä. Olen edelleen A-osassa. Lopulta minusta itseni B osassa. Ja tämä on algorithm-- askel-askeleelta ohjeita. Aloita alussa ja yhden sivun kerrallaan, etsiä Mike Smith. Onko tämä correct-- tämä algoritmi tai lähestymistapaa? Joo, se on oikein. Jos Mike on täällä, lopulta Haen hänet. Mutta se ei ole tehokasta. Se on tietysti hyvin hidasta. Voin siis hyödyntää Sama twosies lähestyä. Voin tehdä tavallaan kaksi, neljä, kuusi, kahdeksan, 10, 12. Se on kaksi kertaa niin nopeasti. Aion päästä Mike nopeammin, jos hän on siellä. Onko se oikein? Kyllä, mutta kuulin little-- no. Nyt olen kuullut mitään. Joo. Siellä on vika mahdollisesti. Ehkä Mike vain joutuu vahingossa välissä kaksi sivua, koska olen lentää Tämän kaksi kerrallaan. Joten ainakin tarvitsemme jonkinlaisen ehdollisen korjata. Minun täytyy sanoa, hei, jos osuin jonkun, jonka nimi alkaa T sijasta S, Olen parempi taittaa ainakin yhdellä sivulla. Joten buginen aluksi, mutta korjattavissa. Mutta kukaan meistä ovat menossa etsimään Mike Smith kautta 1000 sivun puhelimen varata yksi sivu kerrallaan. Mikä on normaali ihminen aikoo tehdä? Olet menossa mennä S: n, jos tietäisit, jossa S: n. Voit mennä suunnilleen keskelle tai hieman vinossa loppupuolella. Ja odotan tänne ja Olen M osiossa. Mutta mitä sinä tiedät tästä ongelmasta nyt, että emme välttämättä tiedä ennen kaikki meistä vain laskee itse vastaavasti? No, Mike on selvästi menossa olla tässä puolet kirjasta jos hän on täällä lainkaan, koska se on järjestetty. Ja niin voit hyvin dramatically-- [Huohottaen] Tiedän. [SUOSIONOSOITUKSET] Se on oikeastaan ​​todella helppoa, jos teet sen alas selkärangan siellä. Mutta voit sitten heittää puolet ongelman pois. Nyt olen jäänyt samalla problem-- löytää Mike Smith puhelimessa book-- mutta nyt puhelinluettelosta alkaa M ja menee Z, mutta se on puolta suurempi. Mutta tämä on mitä vaikuttava. Aivan kuten teoriassa, te, kun te kaikki istuivat vain puoli kerrallaan, ongelma sai puolta suurempi, puolta suurempi, uudestaan ​​ja uudestaan. Joten on tämä ongelma tullut Sama ongelma, mutta puolta suurempi. Nyt se on 250 sivun ongelma. Heti kun ymmärrän, oi, olen T- osassa vahingossa. Olen mennyt liian pitkälle. Voin heittää, että puolet puhelinluettelon pois. Nyt olen alas neljännes ongelma. Ja voit toistaa, toistaa, toista kunnes teoriassa olet jää vain yhdellä sivulla. Ja jos Mike on kyseisellä sivulla, Voin nyt ratkaista tämän ongelman. Mutta kuinka nopeasti minä ratkaista sen? Ensimmäisessä tapauksessa se kesti kuin ehkä 1000 askelta löytää Mike Smith. Se olisi voinut me-- Otin puhelinluettelosta ja aloin etsiä yhden sivun kerrallaan, ja Mike ehkä 1000 sivua myöhemmin. Toinen lähestymistapa ehkä vie minut 500 vaiheita, koska Lennän läpi kaksi kerrallaan. Ja kolmas lähestymistapa kuitenkin, se on erityisen voimakas. Mutta Tarkastellaan mitä me oikeastaan teki tämän kolmannen lähestymistapaa. Otan mitä soitan juuri nämä lausunnot täällä, yksi kerrallaan. Poimia puhelinluettelosta. Avaa keskelle puhelinluettelon. Katso nimiä. Ja sitten asiat saavat hieman enemmän älyllisesti mielenkiintoinen, jos vielä yksinkertainen. Jos Smith on yksi nimet, että nykyisen sivun, sitten tehdä jotain ehdollisesti. Se on kuin tienhaaraan. Soita Mike. Jos Mike on joukossa nimet sillä sivulla, nimeltään Mike. Mutta vain tehdä rivi neljä, jos linja puu, jos haluatte, on totta. Vastaus tähän kysymykseen on kyllä. If Smith on aiemmin book-- toisin sanoen, jos olen M osiossa ja etsin jonkun vasemmalle, niin mitä minun pitäisi tehdä on jotain hyvin samankaltainen. Sitten minun pitäisi avata keskelle vasemman puolen kirjan. Joten mene vasemmalle, ja sitten palaa vaiheeseen kaksi. Katso nimiä siellä. Eli toisin sanoen, tekevät samoin, vaan ongelma, joka on puolittunut. Tiedätkö mitä muuta? Jos Smith on myöhemmin kirja perustuu sivulla Etsin, avoin keskellä oikea puoli kirjasta ja sitten palata takaisin vaiheeseen kaksi, else-- siellä on Neljäs mahdollisuus täällä. Mike joko tässä tai vasemmalle tai oikealle vai ei. Ja tässä me paremmin harkita tätä. Ja itse asiassa, jos olet joskus ollut tietokone vain kaatuu teitä, että on joskus, mutta ei aina, tuloksena vain ihmisen ohjelmoija ei ymmärtämättä, OH ampua, siellä Oikeastaan ​​tämä neljäs skenaario. Ja jos et kirjoita koodia käsitellä että skenaario, joskus et tiedä mitä tietokone voisi tehdä. Ja todellakin ohjelma saattaa kaatua. Mutta tässä tapauksessa, ajattelin siitä, ja sanoin, muuten lopettaa, koska se on neljäs looginen mahdollinen skenaario. Nyt, lisää vain Joissakin sanastoa niin me voi alkaa heittää ympäri termeistä muuten melko intuitiivinen. Kaikki mitä olen juuri korostettu keltaisella täällä, Olen juuri menossa toiminnoista. He juuri sellainen toimia. Joten poimia, avoin, katso at, soita, avoin, avoin, quit-- nämä ovat vain toimia, tai me will soittaa heille enemmän muodollisesti toimintoja. Samaan aikaan, nyt keltainen, Olen korostanut asioita that-- Haluan vain aloittaa soittamalla niitä ehtoja tai oksia. Nämä ovat päätöksen kohtia, joissa voisi mennä tällä tavalla, tällä tavalla, tai jokin muu suunta edelleen. Joten ne ovat edellytyksiä. Ja nyt tämä on hieman hienompaa. Kutsun näitä kysymyksiä Boolen operaattoreilla, kun joku sukunimi Bool. Ja Boolen lauseke on vain jotain se on joko tosi tai epätosi, kyllä ​​tai ei. Joten se kysymys, jonka vastaus teille välitä, jotta sellaisessa kunnossa tee decision-- saada takaisin vastauksen, ja sitten vasemmalle tai oikealle, tai jotain aivan muuta. Ja sitten lopuksi, nämä linjat here-- palata vaiheeseen kaksi, mene takaisin vaiheeseen two-- voisimme toteuttaa tätä ajatusta eri tavoin. Ja sitten ne teistä, joilla ohjelmointikokemus olisivat tehneet tai kuvitella sitä asiaa. Mutta nykypäivän tarkoituksiin, se on vain ajatus, että asiat. Tämä asiakkuutta mitä me yleensä kutsumme loop-- jonkinlainen sykli, koska se tekee minut tekemään jotain uudelleen. Joten nyt, nyt vain harkita kuinka hyvä tämä algoritmi on. Se on oikein. Jos Mike kirja, se on yksi nämä neljä scenarios-- uudestaan ​​ja uudestaan ja jälleen, me löydämme hänet. Mutta kuinka hyvä se on? No, meillä ei ole liian muodollinen täällä. Mutta Haluan vain juoni jotain, x ja y, saada tunteen muodon tämän ongelman. X-akseli tässä koko minun ongelma. Ja he y-akselin tässä on aika ratkaista. Ehkä tämä on sivumäärä. Ehkä tämä on sekuntia sivu turns-- riippumatta. Kuitenkin haluat laskea on mitä tämä kuva edustaa. Ja että ensimmäinen algoritmi, aion kuvaamaan koska vain suora viiva. Jos on n sivuja puhelinluettelosta, niin se Ottaa minut niin monta kun n askelta löytää Mike. Jos Verizon tai puhelinyhtiön tuo yksi sivu ensi vuonna, se saattaa kestää minulle yksi enemmän step-- yksi yksikkö aikaa löytää Mike. Joten on vain tämä yksi suhde yhteen. Se on suora viiva kulmakerroin. Samaan aikaan, että toinen algorithm-- jos olen menossa kaksi klo time-- kaksi, neljä, kuusi, kahdeksan tai double-- läpi sivut kahdesti kerrallaan, kaksi kerrallaan, se on edelleen suorassa linjassa. Siellä on nyt yhden tai kahden suhde, mutta hieman alemmaksi. Eli jos on näin monta sivua kaavion täällä keltainen, että saattaa kestää minulle monta askelta tai sekuntia, muuten se tulee viemään minut kaksi kertaa punainen viiva. Mutta vihreä viiva on todellinen takeaway. Tätä me yleensä soittaa logorithm-- log n, jossa n on määrä sivuja. Mutta se muoto, että asiat tänään, koska meillä ei ole edes ajatella piirtämistä pistettä. Mieti äärimmäinen skenaario. Oletetaan Verizon huomenna kaksinkertaistaa sivumäärä että puhelinluettelosta, alkaen 1000 2000. Ensimmäisessä algoritmin, I saattaa tuhlata ylimääräinen 1000 vaiheet etsii Mike, vain siksi Verizon kaksinkertaisti kirjan. Toinen algorithm-- se voisi ota minut 500 ylimääräistä vaiheita. 1000 enemmän sivuja, menen kaksi klo time-- 500 enemmän vaiheita löytää Mike. Mutta kolmas algoritmi on eräänlainen maaginen. Verizon kaksinkertaistaa sivuista 1000 2000, mutta kuinka monta askelta ei se vie minut etsimään Mike? Se on vain yksi, koska voin vain repiä puhelinluettelosta vielä kerran alkaen 2,000 sivulta ongelma on 1000 sivua ongelma, ja voila. Olen ottanut valtavan purema irti. Ja jos menet todella äärimmäinen, Oletetaan, että puhelinluettelon Yhtiö oli jotain hullua 4 miljardin sivun puhelinluettelosta. No kuinka monta askelta voisi kestää löytää Mike Smith on 4 miljardia sivu puhelinluettelo? Se on suuri määrä, mutta vain 4 miljardia 2000000000-1000000000 kohteeseen 500 miljoonan 250 million-- vielä kuulostaa suuret numerot, mutta olen hyvin nopeasti saada pienempiä arvoja. Ja itse asiassa, jos teen matemaattiset oikea, voin vain jakaa 4000000000 eli suurin piirtein 32 kertaa ennen Saan alas vain yksi. Joten jos se puhelinluettelosta olivat 4 miljardia sivua pitkä, no big deal. Muutaman sekunnin, ehkä 32 sekuntia, voisin jakaa sen kahtia ja lopulta löytää Mike tai päätellä, että hän ei ole siellä. Ja se on pohjimmiltaan sellaisen algorithm-- hyvä algoritmia. Ja se on yksi tavoitteet luokan näin, yrittää selvittää, miten tehdä I ratkaise ongelmaa ei vain oikein, kuten Olen aina tiennyt, miten se yhteen sivu klo time-- mutta oikein ja hyvin. Miten suunnitella hyvä ratkaisuja ongelmiin? Joten hetki täällä ja antaa sinulle tunteen nyt of CS50 kurssin itself-- käyttöön muutaman kurssin henkilökunnan jäsentä. Juuri ennen 02:00 käymme kestää lyhyen tauon niin että ne teistä jotka ovat ostoksilla voi ankka ulos ja ottaa tarkastelemme joitakin muita luokan ja katsella loput tästä verkossa. Mutta nyt haluan esitellä CS50, luokka itse, ja etenkin mitä uutta. Joten aiemmin keväällä, me vietti melkoisesti time-- kurssin henkilökunta ja I-- ajattelu siitä, mitä me haluamme CS50 olla, ja menee takaisin ensimmäiseen periaatteet, niin sanotusti, pohtimaan, mitä me haluamme Kurssin näyttää ja olla kuten sen opiskelijoille. Ja niin näet ongelmatilanteissa asetetaan nolla samoin, kutsu katsomaan tuohon URL jossa tehdään yhteenveto jotkut motiivit takana seuraavat ominaisuudet syksyllä 2016. Joten kuten ehkä asianmukaisine alkaen TL: DR moniste, oppimäärä tänään samoin kuin kurssin luettelo, tänä vuonna CS50, olet vain oletetaan osallistuvan today-- niin työnsä hyvin done-- ja viimeinen luento marraskuun 21.. Ja olet tervetullut, mutta ei odoteta osakseen ne luentoja keskellä, sillä mitä teemme tänä vuonna, on ammunta reaaliaikaisesti kurssin materiaalista. Joten kaikki pysyy nykyinen ja sisällytetty parhaamme can-- tämänhetkisistä tapahtumista ja keskusteluja, jotka ihmiset saattavat voidaan ottaa sisään teollisuuden maailmassa, mutta tekee kyseisen aineen käytettävissä, minkä seurauksena jopa earlier-- täydellisenä koko tekstin selostukset ja hakuja ja linkkejä muihin resursseihin. Ja todellakin, olemme olleet väitti jonkin aikaa emmekä nyt uskoa tätä, että voimme luoda, digitaalisesti, syvemmäntuntuisen, enemmän pakottavia opettavainen kokemus, kun taas keräämään tässä noin 23 kertaa henkilökohtaisesti, kuulo joku kuten minä yksinkertaisesti puhua tietojenkäsittelytiede, vastakohtana harjoittaa aktiivisemmin. Niin näet, että kurssin oppimäärän luonnos lukukauden täällä, yhdessä kun luennot kuvattavaan, johon olet tervetullut, mutta ei odoteta, ja kun he vapautetaan kurssin verkkosivuilla. Ja mitä me teemme täällä Keskiviikkoisin alkaa ensi viikolla, on paljon läheisemmin, jossa vain ne ihmiset, jotka haluavat osallistua, on ns kulkea, missä minä ja kurssin päät todella tekee asiat hieman intiimimpi täällä orkesterin jakso, on vielä joitakin tekniikka ja kävelee kuluvan viikon ongelma setti, ja tarjota sinulle particularly-- jos keskuudessa Niille vähemmän comfortable-- sitäkin opastusta kannattaa tai tarvitset viikon haaste. Ja samoin niille, jotka eivät voi osakseen ne henkilökohtaisesti, no big deal. Tulee samalla johdolla yksi kurssin ylempien toimihenkilöiden, Zamalya, samat mahdollisuudet upotetun in ongelma asettaa itse. Ongelma asettaa tänä vuonna ilmestyy perjantaisin ja ei enää tee Seitsemän päivää myöhemmin, mutta 10 päivää later-- tarkoituksella päällekkäisiä keskenään ongelma set, jotta voidaan paremmin mukautua, toivomme, ja luode opiskelija aikatauluja, varsinkin kun midterms voimailua tai yliopistojen tai extracurriculars taipumus tulla ja mennä erityisesti Syyslukukauden. Tämän pitäisi antaa sinulle hieman enemmän harkintavaltaa siinä, onko edessä ladata viikko CS50 tai taaksepäin kuorman se seuraavana viikonloppuna sijaan. Niin katso kurssin oppimäärän tästä aikataulun mukaisesti. Ja huomaat liian keskuudessa muutokset tänä vuonna, niille tutumpi ohjelmointi aikaisemmin, aloitamme lukukauden kuin me tänään Scratch, keskitytään erityisesti kielen nimeltään C, ja sen jälkeen siirtyminen ei PHP, vaan kieli nimeltään Python loppupuolella lukukauden yhteydessä Web-ohjelmointi, yhdessä SQL ja JavaScript, HTML, CSS, ja vielä enemmän. Ja vastauksena FAQ, se todellakin on että CS ei ole niin pelottava kuin olen kerran mielestä se oli, mutta se on niin paljon työtä koska olin kuullut se voisi olla. Mutta tämä on sanoa, että tässä on muutamia tilastot syksyllä 2015 ylioppilaskunnassa, jolloin vaaka siniset viivat edustavat keskimääräistä tuntimäärää raportoitu. Ja näet keskimäärin kuudesta 10 12-- ehkä 16 tai niin ja niin edelleen, mutta korkea varianssi on selkeä. Ja niin ymmärtää, että ei ole vain opiskelijoiden mukavampaa ja vähemmän mukava aikana, mutta vastaava tuki rakenne saada niille opiskelijoille läpi lukukauden onnistuneesti. Todellakin on ratkaissut FAQ, olisi otat CS50 ensimmäisenä vuonna? Ehdottomasti. Ja itse asiassa, en kadu ei todettuaan tieni tai löysi uuden kentän että ensimmäinen vuonna. Ja sinun tulisi CS50 kanssa muut kurssit, varmasti kuin well-- ja yleisiä neuvoja voisimme antaa opiskelijoille, jotka CS50 on luultavasti ei sellaista luokkaa tai intro luokka että sinun pitäisi ottaa kolme muut tai neljä muuta p-set luokissa. Mutta jos olet ottaen kaksi muuta p-set luokat, jotain muuta, ja CS50, ehdottomasti hallittavissa. Olen ollut monta opiskelijaa aiemmin tehnyt niin melko onnistuneesti. Ja saada sinua kohti, että loppuun rivi onnistuneesti, ei kurssin on sections-- eri kappaleita opiskelijoille vähemmän mukava, mukavampaa, ja jossain välissä, jolloin vuonna kurssin Ensimmäinen ongelma set, sinua pyydetään kuvailemaan itse. Ja jos olet yksi niistä vähemmän mukava, se on sellainen asia että juuri melko tiedä. Ja todellakin, joka on ollut väestöhaasteeseen in CS50 jo muutaman vuoden ajan. Kuten viime syksynä Esimerkiksi 58%: n luokkaa kuvattu itseään keskuudessa vähemmän mukava, 9% joukossa enemmän mukava, ja sitten muiden opiskelijoiden siellä punainen kuvaavat itseään kuten jossain välissä. Ja näet täällä aiheista yleistä ja aikataulu osien, jotka kaikki tarjotaan henkilökohtaisesti, reaaliaikainen, jossa kurssin hämmästyttävä henkilökunta opetuksen stipendiaatit ja tietysti avustajat, joista jotkut tapaat vain hetken. Osiot itseään, kuten näet, tulee olla maanantaisin ja tiistaisin ja keskiviikkoisin, jotta voit sukeltaa jälkeen harjoittaa, jos niin valita, että kurssin luento aiemmin tällä viikolla. Ja sitten virka, joka varmasti, vuosi vuodelta, ole ollut vähemmän haaste kurssin. Ja tänä vuonna suunnittelemme ole vain tehtävässään hours-- yksi yhdellä mahdollisuuksia apua opiskelijat keskiviikkoisin torstaisin ja sunnuntaisin, jolla viimeinen näistä ollessa iltapäivällä suunnittelun vähentää joitakin stressiä, joka poikkeuksetta syntyy myöhään yöllä p-settting joiden määräaika looming-- mutta virka tarjotaan myös maanantaisin ja tiistaisin ja Keskiviikkoisin ja perjantaisin ja lauantaisin, kiitos ystävämme HSA. CS50 on nyt oma tila opiskelijoille ja CS50 henkilöstö, huipulla 67 Mount Auburn Street, tuolla Harvard. Visio on, että CS50: n TF: t ja CA koko viikon, melko paljon lähes koko päivää, on siellä tukea. Joten jos olet saanut joitakin kysymys on p-set tai et tunne hieman estetty tai hieman sekava, ja pahus, sinulla tunnissa tai puoli tuntia luokkien välillä, varsinkin square-- voit pop ja on tähän kysymykseen vastataan of on sekaannuksen clarified-- hyvin paljon hengessä, sinulle tuttuja, matematiikka yksikön oma matematiikka kysymyksiin keskus, mutta aika paljon ympäri vuorokauden per [? Gcal?], Että laitamme verkossa. Ohjausta on saatavilla myös niille, opiskelijoita, vapaasti kurssin oma henkilökunta jos haluat intiimimpi one, tai kaksi tai kolme luokkatoverit vain, työskentelevät yksi kurssin henkilökunnan jäsentä. Ja todellakin, nämä tässä ovat vain joitakin kurssin henkilökunnan jäsentä, muutama heistä te ll tapaavat vain hetken. Itse asiassa, CS50 oma pää opetus kaveri, ja pää kurssi avustaja, ja ohjaaja, voisi tulla ylös, anna heitä tervehtimään. [SUOSIONOSOITUKSET] SPEAKER 1: [tahtiimme]. [SUOSIONOSOITUKSET] SPEAKER 2: [tahtiimme]. [SUOSIONOSOITUKSET] SPEAKER 3: [tahtiimme]. [SUOSIONOSOITUKSET] DAVID MALAN: Ja auttaa meitä tuoda lentokoneeseen kaksi CS50 kaikkein ylempien toimihenkilöiden, Rob ja Zamayla samoin. [SUOSIONOSOITUKSET] Itse asiassa sekä Rob ja Zamayla ovat olleet meille niin kauan, että olen voinut mennä CS50 arkisto ja löytää tämän hyvin SD kuvamateriaalia niistä osallistuvien lavalla itse joitakin vuosia sitten. ROB: [tahtiimme]. [SUOSIONOSOITUKSET] ZAMAYLA: [tahtiimme] [SUOSIONOSOITUKSET] DAVID MALAN: Kiitos. Joten näiden lisäksi tiimin jäsenet täällä, CS50 on ryhmä lähes 100 henkilökunnan jäsentä, joista kaikki on saatavilla osissa ja virka ja paljon muuta. Ja kuten Rob sanoo myös, tämä on merkittävin huolto of CS50 on 10 vuoden ajan, että Olen ollut [tahtiimme]. [Tahtiimme] kohdistui erityisesti tarjoamalla tukirakenne, trimmaus pois paljon pääosa, joka on ollut kertynyt 10 vuotta iteratiivinen kehitys kurssin ongelma sarjaa. Joten tänä vuonna, paitsi luokassa vaan myös muodossa kurssin ongelma sarjaa, sinun pitäisi löytää asioita olla enemmän virtaviivainen, trimmeri, paljon helpommin hallittavissa kuin menneinä vuosina, koska me karistanut joitakin matkatavaroiden se kehittämä luonne kehittyy vuosi vuoden jälkeen ja iteroimalla. Joten uusi ja parannettu alkaa tänään. Tapaat joitakin useampi Tietenkin henkilöstö vuonna [tahtiimme] klo 02:30, jossa tarjoillaan, perinteenä, kakku. On hieman kakkua kuin että, mutta voit tavata Erin ja Tobias ym edelleen. Ja annan teille kierros ennen kuulemme joidenkin muiden henkilöstön jäsenten luokassa, mitä odottaa samoin. Itse asiassa olemme aina aloittaa CS50: n lukukauden tulevana lauantaina mitä kutsutaan CS50 Puzzle Day. Sillä ei ole mitään tekemistä sen kanssa tietojenkäsittelytiede sinänsä, mutta noin ongelma ratkaisemaan yleisemmin. Ja jos niin haluavat ottaa osaa, kohden jotkut kutsut, olet saattanut nähdä oven putoaa tai lavalla täällä, se mahdollisuus tiimeissä kaksi tai kolme tai neljä, osallistua palapelit ja pizza ja palkintoja ja more-- lauantaina, pysy kuulolla lisää. Huomaat myös, että jokainen Perjantaina klo Fire and Ice, ei CS50 tuo läjän opiskelijoiden lounaalle, tehdä suuria luokka tuntuu intiimimpi, ja yleensä tuoda yhteen alumnit ja ystäviä teollisuuden puhua siitä, mitä he ovat puuhaillut valmistumisensa jälkeen. Samoin tänä vuonna, me vihkiä ensimmäinen CS50 50 koodaus contest-- puolivälissä lukukauden mahdollisuus antaa kaikille on opt in perusteella saada haaste järkeä vastaan ​​luokkatoverit, jälleen ryhmissä on kaksi tai kolme tai neljä, käytetään vain sitä ohjelmointi taju, että sitten on alle vyöhön jälkeen vain kuusi tai seitsemän viikon luokan, ja osallistuvat tällaisessa kilpailussa online-- jos haluat hioa omia taidot sitäkin kyseisessä haaste. Lopussa lukukauden on ns CS50 Hackathon-- mahdollisuus, joka alkaa klo 7:00 PM päättyy 07:00, ja matkan varrella 12 iltaan, jossa sukeltaa osaksi kurssin lopullinen project-- mahdollisuuden suunnitella ja täytäntöön suurin mitään etua sinulle opetukseesi stipendiaatti ohjausta. Noin 09:00 me yleensä palvella pizza, 01:00, Philippe n, ja harva meistä jotka ovat vielä hereillä 05:00, shuttle bussed alas Tie IHOP aamiaiseksi. Ja sitten muutaman päivän kuluttua on niin sanottu CS50 fare-- pään lukukauden näyttelyn juhla, kuinka pitkälle niin monta of CS50 opiskelijat ovat kotoisin viikolla nolla aina viikon, ja pitäen mielessä, että 73% näistä luokkatoverit ja omasi tänä vuonna on koskaan ottanut CS luokan ennen. Itse asiassa, jotta reemphasize niin paljon, tässä on muutama enemmän kasvoja CS50 henkilökunta. SPEAKER 4: [tahtiimme]. SPEAKER 5: [tahtiimme]. SPEAKER 6: [tahtiimme]. SPEAKER 7: [tahtiimme]. SPEAKER 8: [tahtiimme] SPEAKER 9: [tahtiimme]. SPEAKER 4: [tahtiimme]. SPEAKER 10: [tahtiimme]. SPEAKER 11: [tahtiimme]. SPEAKER 12: [tahtiimme]. SPEAKER 13: [tahtiimme] SPEAKER 14: [tahtiimme]. SPEAKER 13: [tahtiimme]. SPEAKER 15: [tahtiimme] SPEAKER 16: [tahtiimme]. SPEAKER 11: [tahtiimme] SPEAKER 5: [tahtiimme]. DAVID MALAN: Osa joukkue ovat itse ostoksia luokkiin. Mutta jos nämä jäsenet of CS50 henkilökunta on täällä, voisi tulla esille vain hetken. CS50: n TF: t ja CA ja [? henkilöstöä?] jäsenet here-- nämä ovat vain muutamia n faces-- joista yksi juuri näki, ja muutama other-- ja muutama muu edelleen. Miksi emme mene eteenpäin ja anna te viiden minuutin tauko. Jos sinun on ankka ulos kauppa luokkia, se käy hyvin. Ja viidessä minuutissa, me jatkaa, vilkaisemalla Scratch-- ensimmäisessä meidän ohjelmointikieli, tavata Kurssin henkilökunta tässä hieman lisää, ja keskittyä lopulta ongelma- asetettu nollaan. Joten palaamme viidessä minuutissa. [SUOSIONOSOITUKSET] Selvä. Joten olemme takaisin. Ja meidän jäljellä aika tänään, tavoitteena on tasapuoliset toimintaedellytykset esimerkiksi joidenkin terminologiaa, suhteen ideoita. Koska todellakin, kuten per joitakin kaavioita aikaisemmin, siellä tulee olemaan erilaisia tasot kokemus luokassa, jotkut jonka opiskelijat ovat toteuttaneet joitakin ohjelmointi ennen, joista jotkut eivät ole. Ja niin tämä ensimmäinen ongelma asettaa ja tämä ensimmäinen kieli meillä on mahdollisuus aloittaa itsestään selvänä päivän jälkeen joitakin yhteisiä sanastoa ja idea. Ja teemme tällä tavalla Kurssin ensimmäinen languages-- lisäksi C ja Python ja JavaScript ja SQL ja HTML ja CSS, me keskitymme aluksi ja vain ongelma asettaa nolla Tämän graafinen kieli, nimeltään Scratch kehittämä MIT: n Media Lab tiellä, jotta opiskelijat ja lapset erityisesti ilmaista itseään algorithmically-- tavalla paremmin sopusoinnussa mitä voisimme kutsua päättelyä. Ja se on hyödyllinen kieli, koska hyvin nopeasti ensi viikolla viikolla yhdessä, me siirtyminen entistä perinteinen ja vaikeaselkoisten kieli nimeltään C, joka on puhtaasti tekstimuotoinen. Sinä vain käyttää näppäimistöä Jotta kirjoittaa ohjeet Tällaiset ruudulla. Mutta vaikka et ole koskaan nähnyt ohjelmointikieli ennen, vain vilkaisi tämä kaikki on se arvoituksellinen, arvata, että luultavasti tulostaa Hello World. Mutta on paljon syntaktinen yläpuolella siellä. On outo hash symboli tai hash-tunniste ylös. On kulma kiinnikkeet, jotkut Suluissa aaltosulkuja, semi-colon-- siellä on vain niin paljon visuaalista syntaksin tulee tielle. Aloitamme kurssin Scratch jotta saat aiemmin kaikki nämä älyllisesti mielenkiinnotonta häiriötekijöitä, ja keskittyä sen sijaan ideat. Itse asiassa tämä saattaa olla ennen. Tämä tästä, viikko on jälkeen. Tämä tässä graafinen kieli Scratch, Näin voit toteuttaa saman program-- ohjelma, joka, kun suoritetaan, yksinkertaisesti sanoo Hello World. Ja mikä mukavaa noin Scratch on että se on tämä graafinen ohjelmointi ympäristö, joka käyttää palapelin palaset tai lohkot, että vain lukitsevat yhdessä jos se tekee loogista tehdä niin. Ja Scratch voit kehittyä animaatioita ja vuorovaikutteisia pelejä ja taidetta, ja mikä tahansa joukko asioita, jotka voitte kuvitella omassa mielessä, ja toteuttaa ne yksinkertaisesti vetämällä ja pudottamalla palapelin palaset. Ja todellakin, me on kyky ilmaista joitakin samoja ajatuksia että olen juuri mainitsi hetki sitten yhteydessä Mike Smith ja etsimällä puhelin book-- asioita kuten toiminnot, vain toimia, asioita, kuten silmukoita, jotka tekevät asiat uudestaan ​​ja uudestaan, muuttujat, jotka on jotain esittelemme, mutta se on tuttu kenties algebra-- vain jonkinlainen paikkamerkki tallentaa jotain arvoa saatat tarvitsevat later-- Boolen operaattoreilla, jos ne kyllä ​​tai ei totta false kysymyksiin ennen. Ehdot ovat ne haarukat road-- ne oksat niin sanotusti. Ja sitten on joitakin hienompaa ominaisuudet näemme vielä tänään, nimeltään taulukot ja kierteet ja tapahtumia, jotka me sitten uudelleen päälle aika eri kielillä. Mutta Scratch avulla voimme tutkia kaikkia näitä. Joten tässä Scratch, tämä violetti lohko on mikä funktio on tyypillisesti tulee näyttämään. Tämä violetti palapelin pala, joka on joitakin sana kuin sanoa, mikä on toiminta, ja niin se voisi olla argumentti tai parameter-- jotenkin ja laji räätälöintiä mitä tämä lohko tekee niin että se ei ole ennalta määritetty MIT mitä tämä violetti lohko kertoo. Itse näet on hetki, että olen voinut kirjoittaa sanat kuten Hello World, tai Hei David, tai hei Zamayla, tai mitä haluan, että argumentti kyseiseen puzzle nuoteissa valkoinen laatikko siellä. Samaan aikaan, jos haluan silmukka käymme nähdä, että siellä on palapelin palaset näyttää hieman oranssi näin. Ja niiden muoto sellaista viittaa siihen, että jotain tapahtuu uudestaan ​​ja uudestaan sykli. Jos siis kääriä moikkaamaan maailma lohko kanssa ikuisesti lohko Scratch, se vain menossa pitämään tervehtimässä maailman ikuisesti, kirjaimellisesti. Samaan aikaan, on toinen tyyppinen silmukka Scratch että me see-- toistuu block-- missä, jos tietää etukäteen, kuinka monta kertaa haluat silmukan suorittaa rajallinen määrä kertoja fact-- te voi määrittää, että kirjoittamalla useilla tai jopa kytkemällä muuttujaan, kuten X tai Y näemme. Itse asiassa, muuttujia kuin i tässä tapauksessa, joka on yleisnimi varten Kokonaislukumuuttuja että vain tallentaa number-- kokonaisluku voisi olla, käyttää tätä oranssi lohko tästä asettaa muuttujan kuten i nollaan. Tässä on esimerkki vihreä on Boolen lauseke Scratch. Vaikka tämä näyttää matematiikka kaava, matematiikka epätasa näin todella Boolen ilmaisuja. Tämä on joko tosi tai epätosi. I on alle 50. Se on joko kyllä ​​tai ei vastausta tai tosi tai epätosi vastaus. Ja me yleensä kutsumme ne Boolen ilmaisuja. Ja se ei tarvitse olla 50. Se voi olla x alle y, on suurempi kuin y, joka vastaa y-- useita muita kysymykset voidaan pyytää. Nyt ensi silmäyksellä, tämä saattaa näyttää yhtäkkiä hyvin rohkea täällä, ja se on. Mutta käsite viisasta, se on melko tuttu ennen. Jos x on pienempi kuin y, kuin sanoa niin paljon. Else jos x on suurempi kuin y, niin sano niin paljon. Else sanoa x on yhtä kuin y. Joten meillä on esimerkki siellä kolmannen scenario-- ainoa kolmas possibility-- x on joko suurempi, pienempi tai yhtä suuri kuin. Meillä on siis kolme tapaa tienhaaraan. Ja huomaa mikä on siistiä here-- Scratch, näyttäisi siltä, ​​on vain yksi palapelin pala, tässä tapauksessa jos muu lohko. Ja kuitenkin se näyttäisi merkitsevän voit on vain kaksi tapaa tienhaaraan. Voit mennä vasemmalle tai oikealle, mutta mitä siitä kolmas skenaario? Mitä jos x on yhtä kuin y? Ei iso juttu. Ota yksi palapelin pala, laita toinen sen sisällä luoda semanttisen vastaava of jos muu, jos, else-- ja nyt pyydä kolmialueisella tienhaaraan. Ja kuten tulemme näkemään, Scratch palapelin palat voidaan venyttää ja kasvaa, niin kun ahtaa enemmän tavaraa niihin. Sinun ei tarvitse asentaa kaiken oletuskokoon. Tätä me will Heti katso kutsutaan jono. Se on kuin list-- jotenkin tallentamiseen useita paloja tiedot muuttujaan, ei vain numero. Nämä näemme edustaja jotain kutsutaan monisäieominaisuuksia. Itse asiassa kaikki Macit ja PC näinä päivinä tukea multi-ketjuttaminen, mikä tarkoittaa, voit kirjaimellisesti tehdä useita asioita kerralla. Voit olla Microsoft Word ylös Etualalla työskennellyt joitakin essee. Saatat olla selain taustalla aukon G-mail tai Facebook tai vastaavaa. Tietokone voi tehdä useita asioita tänään, koska se on monisäikeinen, ja ohjelmia he ovat vuonna Erityisesti ovat myös Säikeistetyt. On asioita kutsutaan tapahtumia hyvin maailmassa Scratch, ja sitten on aivan liian, tehdä meidän omia palapelin palaset, jos asiat eivät todellisuudessa ole etukäteen. Joten motivoida tämän seuraavasti. Joitakin vuosia sitten, kun löysivät Scratch, kun olin oikeastaan grad opiskelija MIT, me itse annettiin tehtäväksi tehdä kotitehtäviä. Ja minä implemented-- joka jälkeenpäin ajatellen, oli erittäin huono päätös, koska se on kaikkein raivostuttavaa kappale maailmassa kuunnella kahdeksan tuntia työskennellessään homework-- mutta mitä en ollut kutsuttu Oscar Time, joka on ehkä tuttu laulu. CS50s oma Jordan Hayashi, yksi monien iäkkäämpien henkilökunnan jäsentä, on päivittänyt sen 2015 ja Nyt 2016 lähtien takaisin seuraavana päivänä, Minulla oli kaikkea juuri menossa osaksi Oscarin roskakoriin. Nyt tukea kierrätystä ja kompostointia. Mutta maalata kuvan mitä voimme tehdä täällä ja motivoida joitakin alemmalla tasolla esimerkkejä, voisimme saada yksi muu vapaaehtoinen vain tulla ylös ja pelata ensimmäinen kotitehtävän koskaan? Tule ylös. Mikä sinun nimesi on? HENRY: Henry. DAVID MALAN: Henry, tule ylös. Tule ylös. Pää joko tavalla, ja näet hetken, Aion mennä eteenpäin ja osui Vihreä lippu sivun oikeassa kulma, mikä tarkoittaa mennä. Pieni stop ikoni aikoo sanoa seis, ja silloin alkaa ja lopettaa ohjelman. Hauska tavata. Selvä. Joten aiomme katso ohjeet ruudulla vain hetken. Ja vain pelaamisessa muutaman seconds-- luota minuun, emme aio halua pelata kaikki aina end-- tulet saada tunteen mitä ohjelma tekee. Ja enemmän kuin vain keskittyä Henry kilttejä tässä pelissä, tarkennus ja miten se toteutetaan minua alunperin ja sitten Jordan. Toisin sanoen, missä ovat muuttujia? Missä ovat silmukoita? Missä ovat toimintoja? Ja näemme, jos emme näe ne alla huppu. Klikkaa ja vedä roskakoriin sopivaan bin. [MUSIIKKIA] Selvä. Se on erittäin hyvä. Miksi emme lopeta siellä. Kiitos. Onnittelut Henry. Kiitos. [SUOSIONOSOITUKSET] Kuvitelkaapa virheenkorjaus että ohjelma. Jos tulee ongelmia kahden minuutilla song-- mutta niin mitä täällä tapahtuu todella? Niin monimutkaista kuin se voisi alkaa näyttävät saada ajan myötä, todellakin enemmän ja enemmän tavaraa alkoivat pudota, mitä kiinnostavaa tällainen example-- ja näemme muutamia others-- on, että jos näkemättä monimutkaisuus tai hienostuneisuus pelin, siellä on hyvin yksinkertainen rakennus lohkoja, jotka play-- jotka kaikki, Jos tislata ne niille rakennuspalikat, ovat hyvin saatavilla ja toteuttamiskelpoisia itselleen. Esimerkiksi se on jo jonkin aikaa, mutta olen melko varma, mitä minä perin teki, kun joten tämä peli ensimmäistä kertaa olin täysin kuin procrastinated. En keskittyä ollenkaan logiikkaa tai palapelin palat, Olen keskittynyt grafiikka ja havainto katu post ja roskakorin ja kaikki tämä. Mutta ne olivat riittävällä ainekset ensin. Ja kun olen valmis procrastinating ja säätävä kattavan kehyksen, Päätin, haluan vain tehdä yhden pala roskakoriin putoavan taivaalta. Ja näemme Scratch tukee asiat nimeltään sprites-- merkkien on erilaiset puvut niin ne näyttävät erilaisilta. Ja niin minä laittaa roskakoriin puku yksi tällainen sprite. Ja minä vain tarvitaan sen pudota taivaalta. Ja niin se kääntyy pois, Scratch, kuten useimmat ohjelmointikielet, tukee satunnaisia ​​numeroita tai Teknisesti pseudokoodi satunnaisia ​​numeroita, niin että vetämällä ja pudottamalla tiettyjä palapelin palat, Pystyin saada roskakoriin tulevat vasemmalta aluksi. Ja sitten seuraavan kerran se putosi, mistä oikealle ja sitten keskeltä. Ja kaikki peli ei ollut aivan on roskia putosi taivaalta. Et voinut viitata suoraan tai klikkaa sitä. Et voinut avata roskakoriin. Et voinut tehdä mitään. Mutta se oli vauva askel kohti minun perimmäinen näkemys. Ja sen jälkeen, olen itse täytäntöön jonkinlaista tunnistusetäisyydestä joten jos et valitse ja laahaa pala roskakoriin yli roskakoriin, Oscarin kansi olisi avata ja sulkea. Mitään ei tapahtuisi roskakoriin, mutta ainakin kansi olisi avata ja sulkea. Joten sitten tarkistaa, vaihe kaksi kahden. Ja tämä on mitä tulee olemaan avain molemmissa ongelma asettaa nolla ja ohjelmointi yleisemmin, on ota näitä hyvin tahallinen vauvan askelia. Koska se ei ole pelkästään voit tuntuu rehellisesti aikaan paljon enemmän quickly-- se on pahin asia maailmassa yrittää toteuttaa kaikki Oscar Time, sitten tuntia myöhemmin osuma vihreä lippu, ja mikään ei toimi odotetusti koska missä sinä edes alkavat debug tai vianmääritys että ohjelma? Se on vain ylivoimainen. Ja niin todella käsittää tätä ajatusta ottaa steps-- vauva vaiheet uudelleen ja again-- rakentaa jotain, joka on lopulta, todella vaikuttava ja monimutkainen, mutta ensin, ei ole läheskään yhtä paljon niin. Itse asiassa, tehdään tämä. Anna minun mennä eteenpäin and-- Scratch itse olemassa verkossa osoitteessa Scratch.MIT.edu, ja sinun on kerrottu niin paljon jälleen ongelma asetetaan nolla, eritelmässä joka on jo CS50: n verkkosivuilla. Mutta tämä on mitä Scratch itsessään. Ja siellä on oikeastaan ​​vain kolme ensisijaista alueita. Huipulla vasemmalle siellä on ns vaiheessa. Tämä on Scratch. Oletuksena puku on kissa. Ja tämä on suorakulmainen maailma jossa voit move-- ylös, alas, vasemmalle, oikea ja joitakin muita juttuja. Keskellä tässä on meidän luokkia tai meidän kuormalavojen palapelin palaset, ja eri värejä tarkoittavat eri asioita. Ja jos penkoa, näet asioita, kuten silmukoita ja ehtoja ja muuttujat ja muita ainesosia. Ja sitten täällä on skriptejä alue. Täällä voin vetää ja pudottaa ne palapelin palaset tehdä asioita. Tehdäänpä yksi tällainen asia. Anna minun mennä eteenpäin and-- ja tiedän, missä se on. Joten aion välittömästi klikata jos tiedän asiat ovat valmiina, mutta osoittamalla ja klikkaamalla sekä tönäisi ympärillä ovat väistämättömiä. Joten kun vihreä lippu napsautetaan, Mitä haluan tehdä? Aion tehdä tämän. Aion vetää tähän violetti palapeli pala, tervehtimään kahden sekunnin, ja haluaisin suurentaa. Ja aion muuttaa tätä olla mitä haluan sen be-- Hello World kaksi sekuntia on hieno. Nyt aion napsauttaa Vihreä lippu, tai jos en todellakaan halua, Voin koko näytön ja sitten tulla takaisin. Se vain pitää kaikki yhdessä ikkunassa. Green flag-- Hello World. Selvä. Ei kaikki, että mielenkiintoinen. Joten anna minun mennä eteenpäin ja tehdä tätä. Yritän toista. Kun vihreä lippu clicked-- katsotaanpa tee jotain ääntä. Ja huomaa, että pois ruutuun ilmaiseksi saat kissa ääni, kuten on oletuksena Sprite. Nyt anna minun mennä eteenpäin ja osuma vihreä lippu nyt. [Meowing] Aw. Se on ihana. Olen ohjelmointi. Joten mitä minä olen tehnyt? Tämä vastaa ohjelman. Se on tietysti erittäin yksinkertainen. Se ei oikeastaan ​​ota kovin paljon vaivaa ja MIT teki suurimman osan työstä, mutta olen kutsuttu funktio. Olen käyttänyt funktio. Olen tehnyt joitakin toimia, pelkällä että yksi violetti palapelin pala. No, jos haluan tehdä kolme naukuu peräkkäin? Anna minun mennä eteenpäin ja tehdä kaksi ja kolme. Ja huomaa, että kun leijua lähellä palapelin pala, pieni valkoinen viiva tavallaan magneettisesti, ja se napsahtaa yhdessä, kun annat mennä. Katsotaan, mitä tapahtuu täällä. [Meowing] Siellä on vika. Olen vain kuullut yhden miau. Miksi voisi olla? Joo? Joo. Emme oikeastaan ​​kuule sitä, mutta se on hyvä intuitio. He kaikki pelaa samaan aikaan. Miksi? No, tietokone on juuri menossa tehdä mitä kerrot sitä tekemään. Joten jos sanot, pelata ääni, toistaa ääntä, toistaa ääntä, mutta et kerro sitä pelata kunnes olet valmis, pelata kunnes olet valmis, se tulee puhaltaa läpi Ohjelman todella nopeasti ja tehdä vain mitä kerrot sitä tekemään. Joten en oikeastaan ​​tarvitse korjata tämä pari tapaa. Voisin tehdä tämän päästä eroon tästä. Yritän tässä muu palapeli nuoteissa toistaa äänen miau kypsäksi, ja vedä kolme Näiden ja valitse Toista. [Meowing] Se ei ole oikeastaan ​​very-- kiitos sinä-- hyvin luonnollinen. Joten miksi ei I-- anna minun mennä hallita täällä. Kiva. Odota yksi sekunti, ja nyt anna minun mennä takaisin ääniin, ja pelata äänen kypsäksi, ja anna minun päästä odota sekunti. Ja anna minun mennä ja saada yksi enemmän ääntä, ja tässä sitä mennään. [Meowing] Hieman enemmän luonnollista, mutta tämä ei ole kovin tehokasta. Kuten olin kyllästyminen, kaikki olla se lyhyesti, valitsemalla edestakaisin ja todella monistaminen minun work-- melko paljon kopioimalla. Todellakin, jos hallita napsautetaan tai oikealle napsautetaan, Olisin voinut vain kopioida ja liittää. Mikä olisi parempi rakentaa käyttää? Mikä idea ennen? Joo, niin silmukka. Ja itse asiassa, jos me tönäisi ympäri, voisimme löytää juuri näin. Anna minun mennä tapahtumia tai pikemminkin ohjaus. Joten repeat-- en haluavat sen olevan 10 kertaa. Se nappaa ärsyttävää nopeasti. Mutta Toistan kolme kertaa. Saanen palata ääni ja toistaa äänen, kunnes se on tehty. Saanen palata Ohjaus ja vain odottaa yksi sekunti. Ja ilmoitus, saatat mielestäni se ei sovi, mutta uudelleen, jos magneettisesti annat sen snap paikallaan, se kasvaa täyttämään. Mitä se pelaa nyt? [Meowing] OK. Kiva. Ja tämä on mitä kutsuttaisiin ohjelma, joka on myös oikea. Se meowed kolme kertaa melko luonnostaan, mutta se on suunniteltu paremmin. Olen käyttäen vähemmän hukkaan. En kopioi ja liitä mitään. Käytin parempi idea. Nyt tämä ei ole vielä kaikki, mielenkiintoinen Scratch ei tee mitä tahansa. Tehdäänpä jotain muuta. Tehdään jotain ikuisesti. Ja tiedätkö mitä? Motion tuntuu mielenkiintoinen. Katsotaanpa häntä siirtää 10 vaiheet ja osuma pelata nyt. OK. No voimme tavallaan vetää hänet takaisin, ja hän on edelleen käynnissä, koska hän tekee tätä ikuisesti. Joten silmukka tekee mitä se sanoo tehdä, mutta tämä ei ole kovin kiinnostava. Tehdään tämä. Saanen lisätä ohjausjakson, ja käyttää yhtä näistä edellytyksistä ensimmäistä kertaa. Joten se tulee liikkumaan 10 steps-- 10 pistettä, 10 pikseleitä screen-- Sitten se tulee kysyä tätä kysymystä. Jos jotain on totta, niin tee jotain sisällä tämän lohkon. Joten se kääntyy pois tunnistava on kokonaisuutena nippu Boolean expressions-- kysymyksiin kyllä ​​tai ei totta false form-- anna minun tehdä tätä. Jos touching-- ja sitten on tämä pieni pudotusvalikosta. Voin parametroidaan sitä. Jos koskettaa edge-- katsotaanpa tehdä jotain. Joten jos koskettaa edge-- anna minun mennä takaisin liikettä. Ja miksi emme vain kääntyä ympäri 180 astetta? Selvä. Joten ikuisesti, siirtää 10 askelmaa. Jos kosketa reuna, kääntää 180 astetta. Ja se ei ole ohjelman lopussa koska olet ikuisesti lohko, joten se tulee mennä uudestaan ​​ja uudestaan ​​ja uudestaan ​​ja uudestaan. Joten mitä tapahtuu. OK. Hieman buginen, mutta eräänlainen jäähtyä. Ja voimme lisätä tähän joitakin typeriä asioita jotka eivät ole kovin älyllisesti mielenkiintoinen. Mutta jos me osuma tämä pieni mikrofoni button-- Auts. Saanen puhdista ylös. Saanen parantaa tätä he sanovat televisiossa. Puhdista se ylös, Save, ja nyt mennä jopa skriptejä. Nyt, anna minun mennä kuulostaa. Annan sille nimen. Soitan tämän Auts. Ja nyt toistaa ääntä Auts. Huomaa, se näkyy pikku pudotusvalikosta. Katsotaan. [OUCH] [Nauraa] Mutta voimme muuttaa t hänen lennossa. Voimme olla kaksi kertaa niin ärsyttävää. [OUCH] Tai jos teemme niin kuin 1000 askelta klo time-- OK. Joten aiomme lähteä että yksi yksin. Joten jälleen, rakennus blocks-- I alkoi jotain erittäin helppoa, ja sitten lisäsin ominaisuus, lisäsi ominaisuus, lisäsi ominaisuus. Ja en enää tarvitse pelätä miten ensimmäinen näistä ominaisuuksista toteutui jatkan kerros asioita päälle. Joten itse asiassa, anna minun tehdä yksi muu täällä. Anna minun mennä eteenpäin ja avata tiedoston, joka Toin etukäteen, nimeltään Sheep. Joten se on hieman erilainen merkki, joka näyttää tältä. Ja haluaisin nähdä, jos en pysty tehdä jotain käyttämällä laskuri Tässä case-- ns muuttuja. Aion mennä eteenpäin ja alle Events-- haluan saada green lippu napsautetaan. Sitten anna minun mennä Data, jonka tiedän vain pelaa noin ennen, on missä muuttujat ovat. Ja aion mennä eteenpäin ja vedä tätä. Niin muuttuja nimeltä laskuri, ja Aion alustaa sen nollaan. Voin kutsua sitä anything-- x tai y tai z-- mutta ohjelmoinnin, soittamalla jotain semanttisesti hyödyllinen tapa, kuten laskuri, joka kuvaa mitä se on, se on paljon helpompi lukea koodin myöhemmin. Anna minun mennä eteenpäin ja saada ikuisesti lohko täällä. Ja anna minun mennä näyttää sivu ja tehdä Say lohko. Mutta mikä on siistiä muuttujista on I ei tarvitse vain kirjoittaa jotain kuten Hello World, jonka olemme jo tehty, voin sen sijaan mennä Data ja vetää minun vaihteleva, ja jopa vaikka muoto ei ole aivan näyttää se pitäisi sopia, se kasvaa täyttämään. Ja minä vain sanoa laskuri yhdelle second-- spoiler-- hän aikoo laskea. Me sanomme sen yhden sekunnin. Sitten aion mennä ja hänet odota sekunti, joten sitä ei lasketa liian nopeasti. Ja sitten lopuksi muuta laskuri by one-- Toisin sanoen, increment laskuri yhdellä lisäarvoa ja tehdä ikuisesti. Joten lampaat liian, kuten ohjelmoija, laskee 0. Ja jos odotamme tarpeeksi kauan, Hän tekee tämän ikuisesti. Mutta se ei ole aivan totta, koska Itse asiassa, kun me löytää viikolla yhdessä, kokonaislukuja ja tietokoneet yleisemmin teknisesti on vain finite-- hyvin, pikemminkin tietokoneet, kun ne ovat kokonaislukuja, on vain rajallinen määrä bittejä. Kyseiset lamput siellä voidaan laskea ainoastaan ​​niin korkea Ennen olet poissa hehkulampuista. Ja myös tietokone on vain niin paljon muistia, vain on niin paljon transistorit, joten se voidaan laskea ainoastaan ​​niin korkea. Joten käy ilmi, että lampaat, Luulen, voi laskea 2 miljardia tai jotain aika iso. Joten emme aio odottaa tämän tapahtua. Mutta lopulta joitakin bug tapahtuu joka voi olla hyvin todellinen maailma seurauksia. Mutta kuin lammas, joka vain tuo muuttuja. Mennään eteenpäin ja avata jotain tein etukäteen tässä kutsutaan lemmikkieläinten Cat-- Lemmikkieläinten Cat tänne. Ja huomaa tässä se muutaman lohkot, mutta kun vihreä lippu napsautetaan, ikuisesti tekee seuraavaa. Jos koskematta hiirtä pointer-- niin kursori näytöllä, arrow-- pelata ääni miau ja sitten odottaa kaksi sekuntia. Ja juuri tähän ikuisesti. Vain jatkuvasti Odota onko pointer-- jos kissa koskettaa osoitinta. Joten en osuma pelata. Mitään ei tapahdu. Mutta kun siirrä kursori kissa, [Meowing] Ja jos minä siirtää sen pois, ei hyväily kissa enää. Siksi jotkut ehdollinen logiikka sisäkkäisiä silmukan sisällä. Miten tästä esimerkki, tarkoituksella nimeltään Älä Pet Cat? Mitä tämä aikoo tehdä? [Meowing] Miksi et lemmikkieläinten kissa? [Meowing] OK. Joten tämä on esimerkki, jos muuta. Se on ratkaisupaalulle ja koska se istuu silmukan, he molemmat saada tarkastetaan. Onko tämä totta? Onko tämä totta? Onko tämä totta? Onko tämä totta? Ja lopulta, yksi ne tulee soveltaa ja niin kuulet joko miau tai myrskyisät leijonan kyseisessä tapauksessa. No, tehdään hieman fancy yksi että tein etukäteen too-- kierteet. Joten kierre on vain yksi asia, että tietokone voi tehdä. Joten monisäikeinen ohjelma on ohjelma joka voi tehdä useita asioita samanaikaisesti. Ja kaikki nämä esimerkit Tähän mennessä on ollut vain yksi käsikirjoitus, niin speak-- yksi ohjelma näin täällä. Mutta huomaa tämä ohjelma on kaksi sprite, kaksi merkkiä. Yksi on lintu. Yksi on kissa. Ja huomaa kun klikkaa nämä alas vasen, kummallakin on omat skriptit tai ohjelmat, jotka liittyvät niihin. Ja nämä molemmat ohjelmat, ilmoitus, alku kanssa, kun vihreä lippu clicked-- Katsotaanpa klo cat-- Kun vihreä lippu napsautetaan. Ja niin todellakin, kun osuma pelata nyt, kaksi asiaa tapahtuu heti. Kissa ja lintu ovat molemmat aio käyttää samanaikaisesti luoda tätä vaikutusta. Ja voitte kuvitella, mitä tapahtuu. On silmukka ja lintu ja kissa ovat silmukan. Lintu on aivan terhakka kuin Olin ennen kun sanoin Auts. Mutta kissa selvästi on etu. On toinenkin tunnistava lohko joka osoittaa kissa tarkoituksella lintu tässä asiassa. Jotta voisimme kiusata toisistaan, katsomalla kautta nämä lohkot, mitä tapahtuu. Mutta tärkein ainesosa tässä on yksi. Lintu, niin että tämä peli ei ole kokonaan boring-- tai tämän animation-- alkaa satunnaiseen suuntaan. Ja tietokone on poiminta väliltä 90 ja 180 olennaisesti, niin että se on hieman eri animaation joka kerta. Ja sitten huomaa täällä, jos kissa koskettaa lintu, sitten pelata leijona neljä sound-- pauhu. Mutta sillä välin linnun paletti, meillä on tämä. Ikuisesti, jos ei kosketa kissa, vain pitää liikkuvat kolme vaihetta. Ja sitten tässä on toinen palapelin pala. Jos olet reunalla, pomppia. Joten lintu on juuri sellainen hoitamassa oman liiketoiminnan, vain lenteli ja terhakka, ja se on todella kissa, joka oli ehdollinen logiikka onko se oli kiinni lintu. Selvä. Tehdäänpä yksi muu täällä, tämä kutsutaan Hi Hi Hi. Ja tämä tässä vain ei tämä on ikuisesti silmukka. Mutta notice-- miten estämme Tämän erittäin ärsyttävää ohjelma? Välilyöntiä. Koska jos teen sen, vasemmalla program-- huomaa sitä jatkuvasti listening-- on avain tilaa painamalla. Jos välilyöntiä painetaan, ja jos on, mitä se tekee? Se tekee erittäin yleinen tekniikka. Se asettaa muuttujan vastaa noin arvoa. Mutta se kytkee tämän arvon. [? Joten ulkonäkö?] perustuu shape-- I on vaihteleva, että olen kirjoitti etukäteen nimeltään Mykistetty, joka sanoo vain kyllä ​​tai ei. Onko ääni mykistetty vai ei? Totta vai tarua? Ja ilmoitus, sanon this-- jos vaimennettu on nolla, niin vaihdetaan johonkin, muuten asettaa mute sen nollaan. Joten vain kääntää arvon nollasta yhteen. Voisin olla done-- muuttaa sitä kaksi tai kolme ja viisikymmentäseitsemän yli yksi tai viisikymmentäkuusi yli neljä tai neljä kuuteen. Mutta sillä ei ole väliä mitä numerot käytän, niin kauan kuin minä pitää muuttamalla se päinvastoin. Ja eniten tahansa ohjelmoija olisi vain valita nolla ja one-- epätosi ja tosi, pois ja on-- edustamaan tätä. Ja tämä on edelleen käynnissä. Jos minä välilyöntiä uudelleen [SEAL KUULOSTAA] Ohjelma on edelleen käynnissä. Koska on tämä muu kirjoitus joka sanoo, ikuisesti toimi seuraavasti. Jos mykistetty muuttuja yhtä suuri kuin zero-- joten jos et ole mykistetty on logic-- jos se on epätosi tai no, sitten toistaa äänen, koska et ole vaimennettu. Kannattaa toistaa äänen ja sitten ajattelevat hi hi hi kaksi sekuntia ja sitten odottaa, ja tehdä se uudestaan ​​ja uudestaan ​​ja uudestaan. Ja niin tällä tavalla meillä on tapa ihmiset to-- ohjelmille vuorovaikutuksessa. Ja he eivät tarvitse olla niin päivätty kuin muut. Itse asiassa, tönäisi around-- no pun intended-- joku käytti valtavasti aikaa internetissä täytäntöönpanoa PokemonGo Scratch. Se jopa geolocates teitä Cambridge tai Allston täällä. Joten jos haluat nähdä myös mitä ihmiset voi tehdä on this-- erittäin hieno valikko. Klikkaa tästä. Tämä on minua nuolinäppäimillä nyt. Aion mennä tämän jälkeen. Klikkaus. Ja nyt klikkaat pokeball. Siis, Taidat tarkoitus osoita pokeball. Selvä. Joten tein sen. Voin mennä tänne. Ja tämä henkilö toteuttaa lisää Pokeballs yli here-- kolme Pokeballs. Me lähettää linkin tähän verkossa, joten voit pelata. Mutta ilmoitus siellä vain joitakin perusasioita rakennuspalikoita. Se näyttää paljon monimutkaisempi, ja se on. Tämä on vaikuttava ja enemmän kuin olisimme yleensä odottaa, varmasti ongelma asetettu nolla. En tiedä kuinka kauan tämä henkilö vietetty. Mutta se kaikki on vain silmukka. On ääni pelissä. On jonkinlainen silmukan kuuntelee onko olen lyömällä ylä- tai alas nuoli tai vasen ja oikea, ja sitten jos on, se liikkuu se joitakin määrä pikseleitä. Ja sitten jos napsautan toinen sprite, siellä jonkinlaisen jos ehto siellä. Joo, tämä alkaa olla liian voimakas. Aiomme pysähtyä. Se kaikki nämä kulmakivistä. Ei ole muita ainesosia muuta kuin mitä teimme jo. Ja silti täällä, anna minun tehdä yksi viimeinen esimerkkejä että sellaisen kuvan liian mitä voit tehdä täällä. Tässä on hyvin yksinkertainen ohjelma, joka vain ei this-- yskä, yskä, yskä. Ja perustuu pelkästään mitä teimme tähän mennessä, jossa on ilmeinen mahdollisuus parantaa. Tämä ohjelma on oikea. Se yskii kolme kertaa, joka on mitä tarkoitettu. Mutta se huonosti toteutettu. Se on huonosti suunniteltu. Miksi? Joo. Se ei ole silmukka. Ja se ei ole niin paljon että se ei ole silmukka, se, että siellä on paljon päällekkäisyyttä. Siellä on kopioitu ja liittää koodi, niin sanotusti. Ja ratkaisu luultavasti on todellakin silmukka. Joten anna minun mennä eteenpäin ja parannella sitä. Ja aion vetää näitä tänne. Anna minun mennä eteenpäin ja saada toista lohko, muuttaa kolmeen. Aion heittää pois joitakin näistä lohkoja. Ja huomaat ihan intuitiivista. Sinä vetää ja pudottaa ja asiat näkyviin ja katoavat lopulta. Ja voin vain vetää tätä täällä, ja nyt minulla on puhtaampi versio vielä. Mutta tiedätkö mitä? Ei tätä mahdollisuutta nyt abstraction-- Aloita määritellä uutta sanastoa että MIT ei ennakoida. On odotettava ja toista ja ikuisesti ja jos, mutta mitä jos haluan esitellä sana yskä kuin lohko? Mitä jos haluan palapelin pala joiden tarkoitus elämässä on yskä? No, katso tätä versiota täällä, jota valmistetaan seuraavasti. Maagisesti, Olen luonut Tämän palapelin pala täällä, joka Scratch voit tehdä. Ja todellakin C ja Python ja JavaScript ovat menossa avulla voit tehdä tämän myös. Voit luoda omia kappaletta, jotka soitat mitä haluat. Tällöin yskä tuntuu kuten kohtuullinen määritelmä. Ja sitten nämä kappaleet alas täällä voit määritellä, mitä se tarkoittaa. I vetää ja putosi tämä paletti here-- enemmän blocks-- tämä iso violetti lohko, jossa olen kirjoittanut yskä nimenä minun uusi palapelin pala. Ja sitten en sano mitään, kun käyttäjä kutsuu tätä uutta yskä palapelin pala, tehdä sanoa ja odottamaan. Ja niin tänne minun toista lohko, Voin vain yskä kolme kertaa. Ja Väitän, erityisesti Jos nyt olet piilottaa tämän yksityiskohdan. Kuka välittää kuinka yskä toteutetaan? Kaikki Välitän kuin ohjelmoija että voin yskä. En välitä miten sanoa toteutetaan. Olen juuri välitä, että Kissa voi sanoa jotain. Voin abstrakti pois, että yksityiskohdat ja vain keskittyä siihen, mitä ruudulla täällä. Mutta voin ottaa tämän askeleen pidemmälle. Huomaa, että täällä, olen toteutetaan silmukka kolme kertaa. Mutta mitä jos sen sijaan nappaan tämän version? Ja mitä jos sen sijaan tässä versiossa täällä, Olen juuri muuttaa palapelin pala ottamaan argumentti ja tulo itseensä? Ja että tulo voi olla useita kuin kolme. Joten nyt, jos olen kirjallisesti ohjelma ja haluan kissa yskä, Itse asiassa voin kertoa palapeli pala kuinka monta kertaa yskä, koska alareunassa täällä, harrastaja versio näistä mukautettuja palapelin palaset lets me täsmentää, että yskä otetaan tosiasiallisesti input-- vie argumentti näin. Ja tiedätkö mitä? Ehkä ymmärrän, hetkinen. Yskä on same-- se on pohjimmiltaan sama ajatus kuin aivastelua. Se on vain erilainen sana ruudulla. Voin abstrakti pois edelleen ja toteuttaa tämä lopullinen versio yskä, joka ensi silmäyksellä on tapa monimutkaisempi näköinen. Mutta huomaa, mitä olen tehnyt. Olen nyt generalized-- genericized really-- tämä palapelin pala kutsua sanoa sana n kertaa. Ja nyt minulla on kaksi uutta palapelin palaset tänne määritellä yskä n kertaa. Ja mitä yskä toiminto tekee? Mitä minun mukautettuja palapelin pala tehdä? Se vain soittaa vaikkapa lohko, ohimennen sana Haluan sanoa, kulkee määrän kertoja Haluan sanoa. Koska nyt voin toteuttaa aivastus yksinkertaisesti sanomalla Achoo, Tässä tapauksessa jotkut useita kertoja. Ja niin olen kerroksellisuus ja kerrospukeutuminen. Ja vielä, avain tässä ei ole miten toteuttaa se, mutta se, että jos vain kirjaimellisesti siirtää nämä pois näytön, katso kuinka yksinkertainen, jos ei aika minun ohjelma nyt näyttää. Koska se tekee mitä se sanoo, olen hajamielinen pois mitä on sisällä, että musta laatikko. se sattuu olemaan violetti laatikko täällä, mutta olen tukossa pois, mitä sisällä koska en välitä kuinka se toimii. Olen juuri välitä nyt, että se toimii. Ja todellakin, ongelmatilanteissa asetetaan nolla, tämä on juuri sellaista layering ideoita te ll on mahdollisuus tutustua. Se on täsmälleen mahdollisuuden sovelletaan ongelmanratkaisu tekniikoita, mikä on luultavasti vieraassa ympäristössä. Ja oletko ole ohjelmoitu ennen tai ohjelmoitu aiemmin, huomaat, että on olemassa jotain pientä tässä ympäristössä kaikille. Ja ongelma asettaa yhden viikon ajan, me voidaan siirtynyt keskittyä korkeammalla tasolla kieli nimeltään C-- tai pikemminkin alempi tason kieli nimeltään C-- se vieläkin voimakas, vaikka se on hieman arvoituksellisesti ensi silmäyksellä. Ja huomaat kohti nykypäivän TL: DR, että tämä ongelma asettaa on lyhyempi aikaikkuna kuin tulevaisuudessa käyttöön, yksinkertaisesti koska se pitäisi olla melko saataville. Ja ei hätää, jos lisäät luokan myöhään. Me käsitellä että ennen pitkää. Ja ennen kuin lykätä kakku, nyt lopuksi vain kahden minuutin look mitä odottaa sinua täällä CS50. [MUSIIKKIA] Selvä. Se on siinä CS50. Nähdään pian. Kakku on nyt tarjolla. [MUSIIKKIA] SPEAKER 17: Oletko kuullut sapattivapaa, Chief? SPEAKER 18: Ehkä siellä enemmän konepellin alle.