Așa că este cea mai mare plăcere să vă urez bun venit astăzi aici
pentru prima prelegere de, ei bine, Introducere
Computing și programare.
De asemenea, cunoscut sub numele de CS50 sau bine, CPSC 100, în mod oficial aici la Yale.
>> Așa că nu am putut fi mai entuziasmat să vă urez bun venit aici.
Numele meu este Patrick Rebeschini.
Sunt instructorul cap pentru clasa.
Sunt aici care reprezintă un grup din aproximativ 60 de membri ai personalului
care va lucra cu tine pe parcursul semestrului.
Acest număr este de aproape 60 dintre noi.
Cu toate acestea, de-a lungul extraordinare nivelul angajamentelor
că am pus în această clasă, face CS50 clasa
la Universitatea Yale, care oferă cel mai mare nivel de sprijin
către voi toți.
Si nu am putut fi mai mândri oferind această clasă din nou aici.
>> De fapt, după cum veți experimenta în curând, CS50 este mult mai mult decât o clasă.
Este o comunitate.
Și vei face parte în curând acestei comunități.
Acesta este al doilea an Yale oferă această clasă.
Noi construim pe extreme succesul de anul trecut, în cazul în care
pentru prima dată, aici, la această universitate,
asistent universitar de învățare au fost adoptate în sălile de clasă.
Totul a început cu această clasă de anul trecut.
>> Deci, după cum știți, clasa este predată împreună cu Universitatea Harvard.
Pentru a preda acest curs suntem relying-- putem
conta pe marea expertiza David Malan și echipa de la Harvard.
Astfel David a fost de predare CS50 de bine, de 10 ani.
Și în fiecare an, el a fost împingând limitele
și îmbunătățirea experienței de clasă.
Din nou, nu am putut fi mai fericit să continua aceasta colaborare cu ei.
>> De fapt, una dintre cele mai cele mai multe părți interesante,
Voi spune de a rula această clasă acum, atât la Harvard si aici la Yale,
este cu adevărat incredibil fertilizare încrucișată
de idei, care vizează îmbunătățirea experienta pentru tine toate de învățare.
Deci, ca urmare a acestei ample colaborarea între cele două
universitate, CS50 este mândru să anunta noua versiune a acestui an
cu modificări notabile.
David va spune-ne despre ele acum.
Așa că această ființă te rog a spus, vă rugăm să mi se alăture
și bun venit pentru a da un aplaudați
pentru a primi David și Echipa de la Harvard aici la Yale.
>> [APLAUZE]
>> David MALAN: Vă mulțumesc.
Mulțumiri.
Aceasta este CS50, Universitatea Harvard și introducerea la Universitatea Yale
la intelectual întreprinderile de informatică
și arta de programare.
Și ce înseamnă asta este că acest curs în cele din urmă, este vorba despre rezolvarea problemelor.
Într-adevăr, mulți dintre voi s-ar putea au ieșit din liceu
sau s-au petrecut ultimii doi ani întrebându-se ce unii dintre prietenii tăi
a făcut anul trecut sau în alte clase.
Și totuși, realitatea este, indiferent de ce noi
face la sfârșitul zilei în această clasă, aceasta va fi despre rezolvarea problemelor.
>> Și, ca atare, poate să ia unele reasigurare în faptul
că 73% dintre elevii să ia această clasă, atât aici
la Yale precum și la Harvard, nu au luat niciodată o clasă de CS, înainte.
Așa că, dacă tu stai aici, în publicul de azi întrebându
de ce stați aici în public astăzi,
sau poate tocmai ați urmat împreună cu niște prieteni,
sau poate ai fost pic curios cu privire la ceea ce
știința calculatoarelor și Programarea este, realiza
că cei mai mulți dintre colegii dvs. la la stânga și la dreapta ta
sunt foarte mult în același demografice.
>> Și într-adevăr, dacă ne uităm la statistici ultimul an
în cadrul corpului studențesc al CS50, ambele aici și la Harvard, 58% dintre elevi
se descriu ca fiind mai puțin confortabile.
9% este mult mai confortabil.
Și apoi 33%, este undeva intre.
Și nu există nici o definiție formală din ceea ce înseamnă că aceste găleți.
Tu un fel de știi că ești mai puțin confortabil dacă sunteți.
Te simți un pic incomod poate cu fiind în clasa.
Nu ești destul de sigur că, dacă un calculator clasa de știință este în cele din urmă pentru tine,
și dau seama că ești în companie foarte bună.
Și, într-adevăr, clasificarea, și evaluarea,
și feedback-ul, și toate acestea Structura de sprijin în clasa
este în cele din urmă foarte mult individualizat.
Mai mult decât majoritatea orice altă clasă prin design.
Și într-adevăr, ceea ce în cele din urmă contează în această clasă nu este
atât de mult în cazul în care ajungi până în raport cu alții,
dar în cazul în care vă, în săptămâna 11 sau ultima, și în raport cu tine în săptămâna
0 aici primul nostru.
Deci, ce înseamnă asta?
Ei bine, acest lucru înseamnă că cei 73% din studenții din anul trecut, care nu a luat niciodată
o clasă de CS anterior, de începerea semestrului ei
au fost într-o limbă dabbling numit Scratch, care noi înșine
se va vedea astăzi aici.
Și până la sfârșitul fișierului Au plecat semestru au
prin toată această listă de provocări.
Pornind de la un limbaj numit c.
De punere în aplicare, ceea ce este la prima vedere, merge
pentru a fi un pic de o provocare pentru unii, dar destul de plăcut odată ce
obține Super Mario viguros în sus și în jos o piramidă
puse în aplicare, deși, cu doar ceva numit ASCII art.
Punerea în aplicare a ultimei year-- ce studenții de anul trecut, atunci
a după ce a fost punerea în aplicare a acestora proprii cifru Cezar și cifrul Vigenere.
Deci algoritmi de criptare cu care ai putea
informații încăierare și apoi Unscramble informații pentru a trimite mesaje secrete.
Jocul de 15.
Dacă vă amintiți de copilărie sau o favoare de partid,
acel joc mic de plastic în cazul în care vă mutați numerele în sus, în jos, la stânga și la dreapta
pentru a încerca să-i în ordine, punerea în aplicare de fapt, acest joc
și rezolvarea logica necesară acolo.
Și apoi am cochetat criminalistica anul trecut.
>> Așa că până la jumătatea semestrului, studenții care au avut niciodată
utilizate tastaturi lor în acest scop înainte,
au scris software-ul pentru a recupera, ca să spunem așa,
Sau fotografii JPEG că am avut în mod accidental
eliminat de la un convertor digital card de memorie de la un aparat de fotografiat.
Recuperarea mesajelor secrete din interiorul unei imagini bitmap,
și alte asemenea tipuri de grafica, de asemenea.
>> Apoi am trecut la a da întreaga clasă un dicționar.
Doar un fișier text într-adevăr mare cu 150.000 de cuvinte în limba engleză.
Și toată lumea a fost contestată pentru a citi într-un fel, ca să spunem așa,
aceste cuvinte în memorie.
În memoria calculatorului.
Și apoi să răspundă la întrebări a formei, este acest cuvânt?
Este acest cuvânt?
Într-adevăr doar de punere în aplicare un corector ortografic.
Și apoi fiecare provocare altele cu un mare board--
un consiliu de lider pentru a vedea cine ar putea utilizați cel mai mic volum de memorie,
în cel mai mic volum de timp pentru a de fapt, verificarea ortografică documentelor de mari dimensiuni.
>> Noi trecut de atunci la de punere în aplicare cele proprii server web.
Deci, nu face pagini web în limbi cum ar fi HTML si CSS, daca esti familiar.
Dar, de fapt, de punere în aplicare serverul care
ascultă pe internet pentru cereri din browsere
și apoi să răspundă la aceste solicitări.
Apoi, punerea în aplicare a propriei noastre e-comerț cum ar fi site-ul web, în ​​cazul în care
elevii ar putea cumpăra și vinde stocurile.
Desen aproape în timp real, cotații bursiere de la Yahoo Finance.
Și care să permită studenților să vadă modul în care portofoliul lor se dezvolta.
Și apoi, în final, un mash-up Știri Google și Google
Hărți prin care studenții prin termenul de termeni de capăt
a avut capacitatea de a faceți clic, și rotunde și căutare pe o hartă Google.
Și apoi vezi toate la articole de știri care
sunt proximal acele zone.
Deci, într-adevăr merge de la zero la 60.
>> Si-a lungul drumului avea ceea ce am avut anul trecut numit, adăugiri hacker-ilor.
Care ridica ștacheta în plus pentru cei dintre voi
care ar putea avea foarte bine un bun cantitate de experiență fiind în 9%
mai confortabil.
Așa că dau seama că există un plafon foarte mare
chiar și în cele provocări pentru studenți
provin dintr-un mediu diferit.
Pentru că la sfârșitul a doua zi, suntem în cele din urmă
sa concentrat pur și simplu, în acest sens.
>> Dar ce face acest lucru Adică, rezolvarea problemelor?
Așa că hai să propunem l-am distila ca asta.
Așa că rezolvarea problemelor este într-adevăr doar acest tip de imagine.
Așa că ai intrări într-o anumită problemă, ceva ce de fapt, doriți să o rezolve.
Scopul este de a obține ieșiri, o soluție la această problemă.
Și apoi în mijloc este ceea ce vom numi o cutie neagră.
Dacă nu știi neapărat sau chiar pasă ce se află în interiorul acea cutie neagră.
Tot ce știu este că, atunci când te alimenta de intrare în ea,
veți obține sperăm ieșire sau o soluție de la ea.
Și, în timp ce astăzi ne vom uita atât la intrările și ieșirile,
ne vom pe termen lung, și peste Desigur întregului semestru,
se concentreze pe ceea ce este în interiorul acea cutie.
>> Iar aceasta va minți ceva numit algoritmi.
Instrucțiuni pas cu pas pentru rezolvarea de fapt, unele probleme.
Dar, ceea ce este un exemplu de unele intrări?
Deci, poate un lucru simplu la cele mai începutul fiecărui an școlar, cineva
s-ar putea dori să ia de prezență.
Așa că am putea face unul, doi, trei, patru, cinci, șase,
și cum mi-ar păstra evidența acestor informații.
S-ar putea merge doar unul, doi, trei, patru, cinci, șase.
Și de a folosi doar un fel de o singură cifră.
>> Sau aș putea înregistra de fapt acest termen un pic mai mult.
Si cum reprezint toate oamenii din această cameră?
Ei bine, aș putea să fac ceva de genul, OK.
Eu văd o singură persoană.
In regula.
Eu văd o altă persoană, o a treia persoană, și așa mai departe.
Dar nimeni nu contează oameni ca acest lucru.
Așa că pur și simplu, cele mai multe dintre noi, dacă suntem chiar de gând să atragă ceva,
sunt, probabil, va merge unu doi trei patru,
poate obține un pic de fantezie, cinci, șase, șapte, opt, nouă, zece și așa mai departe.
>> Și asta e de fapt un sistem numit unar.
Uno, cum ar fi uno implicând unul, în cazul în care ați au doar o literă a alfabetului.
tocmai ai primit această marcă hash.
Și eu, pentru eficiență, tocmai a atras aceste semne hash, în cele din urmă
ca linii drepte.
Dar, aș fi putut să-i trase ca cifre băț mici.
În cazul în care să reprezinte o singură persoană, o intrare,
doar am trage un băț figura sau un semn hash.
Dar acest lucru nu este tot ceea ce expresiv.
>> În cazul în care tot ce am este aceste hash mărcile, lăsați cifrele stick singur,
cum s-ar putea să reprezinte ceva de genul numărul 15?
Sau 15 persoane in camera?
S-ar putea să fac ceva de genul 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15.
Pur si simplu nu scala foarte bine.
Pe măsură ce intrările obține mari, noi au nevoie de un sistem mai bun decât aceasta.
>> Și se pare că sistem care folosesc calculatoare
nu este tot atât de diferite din ceea ce și eu știu.
De fapt, cei mai mulți oameni în această cameră, chiar dacă sunteți printre cei mai puțin
confortabil, nu știu neapărat modul în care Mac sau PC-ul funcționează într-adevăr,
v-ați, probabil, cel puțin auzit, că sub capota sunt 0 și 1 lui.
Așa-numitul sistem binar.
Așa că, într-adevăr, calculatoarele au mai mult doar mărcile hash în vocabularul lor,
dar nu la fel de mult de o vocabular ca noi oamenii.
>> Intr-adevar, noi oamenii nu folosesc binar.
Bi adică 2, 0 și 1.
Dar, zecimal, deca ceea ce înseamnă 10, 0 la 9.
Așa că avem mult mai expresiv capabilități în lumea noastră umană normală.
Dar aș argumenta că aceste sisteme, binar și zecimal, și totul
între și dincolo de aceasta, sunt de fapt, toate destul de familiare.
De exemplu, ia în considerare acest exemplu aici, 123.
Deci, acest lucru într-adevăr este, desigur, un număr de noi știm ca 123.
Dar tot ce am desenat a fost doar acest lucru model de simboluri, hieroglife ca să spunem așa.
Un fel de forme pe placa de creta.
>> Dar de ce ne-am imediat și înțelege în mod intuitiv acest lucru ca 123?
Ei bine, dacă ai fost ca mă în școală de grad,
probabil ai aflat că acest lucru este coloana 1s, aceasta este coloana 10s,
aceasta este coloana 100s.
Și de ce e asta folositor?
Ei bine, e simplu aritmetică te acum face pentru a obține de la un model de simboluri
la un număr de noi înțelegem intuitiv.
Este ceea ce, de 100 de ori 1, și apoi De 10 ori 2 și 1 ori 3,
care, desigur, este doar 100, și acest lucru este de 20, iar acest lucru este de trei.
Și astfel, dacă vom adăuga cei together-- ah.
Așa că acolo se află un fel de raționament în spatele de ce acest set de simboluri
înseamnă ceva real și numeric.
>> Ei bine, computerele fac exact același lucru, dar ele pot conta doar la fel de mare ca unul.
Întrucât am fost în stare să conta la fel de mare ca trei.
Și, de fapt, dacă am continuat să merg am putut du-te la fel de mare ca și nouă în acest sistem.
Calculatoarele au numai zerouri și cele în alfabetul lor.
>> Deci, ce înseamnă asta?
Ei bine, aceasta înseamnă doar că în cazul în care un calculator vrea să reprezinte, spun că numărul 0,
poate, cu ajutorul a trei characters-- trei litere ale alfabetului ca să spunem așa,
care este modul în care un calculator reprezintă 0.
Deci, nu toate înfricoșător până acum.
Este exact ceea ce ar face noi oamenii.
Și, de fapt, cele mai multe dintre noi ar fi pur și simplu ignora zerouri oricum.
>> Un computer, dacă dorește pentru a stoca numărul 1,
se dovedește va face acest lucru.
Și un calculator pentru a stoca numărul 2 nu este
va face sistemul unar, pe care am făcut aluzie la mai devreme.
Este de fapt de gând să facă acest lucru.
Și acest lucru este, probabil, în cazul în care modelul începe
pentru a deveni mai puțin evidente pentru cei mai mulți oameni.
Asta-2, acest lucru este de 3.
În mod curios, acest lucru este acum 4.
Și acum este într-adevăr nu par a fi, probabil, criptic,
dar nu e, dacă luăm în considerare ceea ce înseamnă cu adevărat binar.
Înseamnă că aveți două litere ale alfabetului tău.
Deci două personaje posibile pentru fiecare substituent.
>> Astfel că într-adevăr înseamnă că vom pentru a avea nevoie de un loc 1s, sau locul 2s,
un loc 4s și apoi 8 și 16, 32 și 64.
Și ce este diferența acolo?
La fel ca acestea sunt 1, 2, 4, 8, 16, 32, 64.
Și, înainte de a avea 110, 100,000, 10.000.
Care este similitudinea acolo?
Și ce-i modelul?
Da.
STUDENT: Puterile 2 în loc de puteri de 10.
DAVID MALAN: Da.
Puteri de 2 în loc de puteri de 10.
Și, așa că, dacă am vrut să păstreze merge, 8, 16S și așa forth--
dar acum, dacă aveți acest tip de indiciu, acum sistemul binar
este de fapt destul de simplu.
De ce este acest model al lui 0 în lumea calculatoarelor 0?
Ei bine, pentru că este de 4 ori 0, 2 ori 0, 1 ori 0 și veți obține 0.
>> De ce se întâmplă numărul 1?
Același raționament, dar acum au un 1 în 1 coloana.
De ce este acest 2?
Avem 1 în coloana 2s.
Si atunci cum reprezint spun, numărul 7 în binar?
Spun mai tare.
>> ELEVUL: Trei 1s.
>> DAVID MALAN: Trei 1s.
Asa ca 1, 1, 1 pentru că avem nevoie doar de 4, plus 2, plus 1 dă-mi 7.
In regula.
Așa că de acolo cum o facem reprezintă 8 cu 3 Substituenți?
Da.
>> ELEVUL: 1, 0, 0, 0.
>> DAVID MALAN: Da 1, 0, 0, 0.
Și totuși, poate, am un fel au nevoie de punct de vedere tehnic
pentru a adăuga un alt substituent la bord.
Dacă vreau să se potrivească într-adevăr, că am Trebuie să facem ceva de genul asta.
Așa că am nevoie de fapt să folosească acum coloana 8s, și asta e bine.
Dar lucru curios în calcul este că asta ne va costa ceva.
Aveți nevoie de mai multă memorie RAM în calculatorul dumneavoastră acum.
Aveți nevoie de mai multă memorie pentru că aveți nevoie de ceva
fizic pentru a stoca bit suplimentar, ca să spunem așa.
cifre binare.
Și, într-adevăr, tot ce sa întâmplat aici, cum ar fi sistemul zecimal,
dacă vom continua să adăugăm numere în sus și în sus și în sus, vom merge la 5 la 6 până la 7 spre 8
este ca și cum transportă 1, literalmente.
Și apoi totul altceva se duce înapoi la zero.
>> Dar, cum reprezentăm, de fapt aceste lucruri fizic într-un computer?
Ei bine, la sfârșitul zilei, singurul intrare fizică merge în calculatorul meu
aici este acest cablu de alimentare, așa electricitate sau de electroni de la perete.
Și așa cum pot obține de la ceva fizic de genul asta pentru fapt
reprezentând o idee ca asta în schimb.
>> Ei bine, ce am putea face?
Am putea considera că, bine, poate, în cazul în care energia electrică este curge
Am putea stoca și țineți pe ea.
Și, dacă țin eu într-o anumită energie electrică,
că doar va reprezintă în mod arbitrar 1.
Și, dacă am trage mufa și nu e nimic acolo,
știi că doar merge să reprezinte în mod arbitrar un 0.
>> Așa că, dacă ceva e acolo, 1.
În cazul în care nimic nu e acolo, 0.
Sau puteți face acest lucru un pic mai mult vizual.
Aici este 0.
Nu se întâmplă nimic interesant pe despre partea din spate a telefonului meu.
Dar, dacă permit un pic bit de energie electrică să curgă,
chiar dacă este un pic mai luminos aici, lanterna mea a continuat.
Deci, eu sunt o încărcare și stocarea ergo, acest telefon reprezintă acum un 1.
Așa că 0 1.
>> Deci, cu 1 iPhone Cât de mare poate eu conta folosind acest tip de abordare?
Vreau să spun la 1.
Nu e tot ce convingătoare.
Deci, ce mai putem face?
Ei bine, să vedem, e cineva pe lor telefon chiar acum că aș putea împrumuta?
Oricine are un telefon cu o lanternă construit în?
Pot să împrumut?
Nu am nevoie de ea deblocat.
In regula.
Mulțumesc.
Lasă-mă să împrumut asta.
In regula.
Așa că, dacă acum am defila în sus și aici, ce sunt eu acum reprezentând?
Da.
Deci este un trei, deoarece acest lucru este în coloana 1s, acest lucru este în coloana 2s.
Așa că 1 plus 2 este 3.
Și apoi, dacă încercăm să ne într-adevăr creative-- oh, vă mulțumesc.
Foarte preemptiv.
In regula.
Acum am trei dispozitive iPhone.
In regula.
>> Și acum astea-- nu voi face mai departe decât aceasta.
Ce sunt eu acum reprezentând?
Doar șeptari.
Dar am nevoie fizic mai multă memorie în acest caz.
Dar asta e tot ce este.
Vă puteți gândi la ceea ce se întâmplă on-- Tu-- mulțumesc interiorul telefonului
ca fiind doar un comutator care este fiind pornit și oprit.
>> Și, dacă ai auzit vreodată tranzistorul cuvânt.
Sau, dacă ai auzit vreodată vorbesc de marketing Intel în interior,
care vorbește la fel de hardware care este în interiorul calculatorului.
Intel face procesoare, unități centrale de procesare,
care sunt la fel ca creierul în interiorul calculatorului.
Și aceste procesoare și lucrurile sunt conectate
pentru a avea o mulțime de switch-uri mici.
Milioane, miliarde de switch-uri care poate fi fie pornit sau oprit.
>> Așa că calculatoare, din fericire, cum ar fi Mac-urile și PC-urile noastre,
poate conta mod mai mare de 7 sau 8 pentru că ei au mult mai mult de trei
sau patru biți.
Mod mai mult decât echivalentă a trei lanterne pe care tocmai l-am avut.
Dar acum, acest lucru începe să se destul de repede neinteresante.
În cazul în care acum vreau să fie de fapt în măsură pentru a face ceva mai interesant,
Vreau să fie în măsură să sară ceva de genul asta.
>> Așa că ASCII, nu este într-adevăr un instrument util acronim, dar Codul American Standard
pentru Schimbul de Informații.
Aceasta înseamnă doar, câțiva ani acum noi, oamenii au decis,
Știi ce, vrem să fim în stare să facă mai mult cu computere decât doar numere.
Noi nu le vreau doar să fie calculatoare scumpe,
am dori să fie capabil să facă lucruri cum ar fi procesare de text, deși foarte simplu.
Mai târziu, am avut de e-mail și alte astfel de medii.
>> Și așa lumea a decis câțiva ani Acum conform acestui sistem ASCII,
Știi ce?
In anumite tipuri de Programe de fiecare dată când
a se vedea echivalentul numărului 65, cum ar fi modelul de biți.
Si am putea face matematică aici pe bord.
Modelul de biți care reprezintă 65.
Nu te gândi la ea ca 65 în zecimal.
Gândiți-vă la ea ca mod arbitrar, dar la nivel global, in mod constant ca de capital
A.
Și apoi lumea a hotărât, știi ce?
Hai să luăm un alt model de biți.
Și dacă vom vedea vreodată numărul de 66, hai doar
presupunem că aceasta este Capital B. Derulare rapidă înainte H
și eu, dacă vedeți 72 sau 73, că ar trebui să fie un H și un I, respectiv.
Așa că, atâta timp cât întreg mondială este de acord cu acest lucru.
Astfel că atunci când primiți un e-mail, sau v-ar obține un fișier de pe un stick USB,
sau ceva de genul that-- când vezi că modelul de biți,
știi că ar trebui să fie acest lucru scrisoare sau o altă literă.
>> Dar este context specific,.
Un program de e-mail ar putea interpreta aceste lucruri ca personaje,
dar un calculator sau grafic calculator ar putea reprezenta sau interpreta
aceste lucruri, desigur, ca litere.
>> Deci, cu care a spus, recenzie rapid pic.
Aceasta este, poate, un personaj trei e-mail care a fost trimis la mine.
Sub capota este totul în 0 si 1, dar nu-mi pasă.
Vom incepe sa abstracte peste 0 si 1 la litere.
Și, dacă am vedea un model de 0 si 1 care într-adevăr reprezintă 72, indiciu, indiciu, 73,
și apoi 33, care este mesajul?
>> ELEVUL: [inaudibil]
DAVID MALAN: Deci, dacă crezi înapoi doar o clipă în urmă, HI
a fost mesajul am încercat să comunica aici, pentru că H este de 72,
I este 73, iar acum 33-- nu ar știu în mod necesar acest lucru în avans,
dar se pare că în cazul în care de fapt a se vedea mai mult din diagramă și sistemul
că omenirea a fost de acord asupra ani Acum, este doar un punct de exclamare.
Și într-adevăr, există un model de simboluri și numere pentru fiecare caracter
pe care le-ar putea avea pe tastatură.
>> In regula.
Hai să abstract în continuare.
În cazul în care nu vrem să avem doar lucruri cum ar fi numere și litere,
am dori de fapt, să pună în aplicare grafică.
Ei bine, dacă ai vreodată a auzit acronimul RGB.
Este un fel de datat acum, dar este încă un fel de acolo.
RGB este roșu, verde, albastru.
Și este doar un sistem de a spune, știi ce,
să folosească trei seturi de biți.
Un set de 8 biți, un alt set de 8 biți, și un alt set de 8 biți.
Și să folosească aceste biți pentru a stoca cât de mult am roșu
doriți pe ecran nostru, cât de mult verde ne dorim pe ecran nostru,
și cât de mult ne dorim albastru pe ecranul nostru.
Și acest lucru înseamnă pur și simplu că, dacă au un număr mare de un lot-- pentru roșu,
asta înseamnă da-mi o mulțime de roșu.
Dacă aveți un număr mare de verde, da-mi o mulțime de verde.
Și, dacă ai doar un pic de albastru sau de un număr mic cum ar fi 33,
da-mi un pic de albastru.
Și, dacă se întâmplă să combine cele trei mărimi, ca să spunem așa,
te astea-- pe care abia se poate vedea pe proiectorul aici, dar această nepătruns
nuanță de galben sau maro.
>> Dar acest lucru este să spunem, folosind acel model de 8 plus 8, plus, plus 8--
acel model de 24 biți este modul în care un calculator ar
stoca nuanța de galben într-un singur tiny dot un pixel de pe ecran.
Așa că am trecut de la 0 si 1 în zecimal Numerele la litere ale alfabetului.
Sau mai interesant, puncte colorate.
>> Ei bine, ce desigur, atunci vine urmatorul?
Ei bine, ceea ce este o imagine care vezi pe Facebook sau pentru a obține într-un e-mail?
Sau altele asemenea?
Care este definiția punct de vedere tehnic a unei imagini?
Da.
Ce este o imagine compusă din tine, dacă arata foarte aproape de ecran?
Da.
E doar o grămadă de pixeli.
De fapt, dacă vă luați laptop-ul poate, mai târziu,
si arata foarte atent la it-- în funcție
pe cat de scump laptop este și cât de înaltă calitate a ecranului este,
s-ar putea foarte bine vezi toate mici puncte de pe ecran.
>> Și acele puncte sau pixeli, ceea ce înseamnă că există
24 de biți care reprezintă fiecare pixel în fotografia pe care le vezi pe Facebook,
sau pe care tocmai l-ați luat pe iPhone recent.
Și, astfel că e modul în care ne la lucruri, cum ar fi grafica.
Ei bine, ce e un film?
Un video este doar un set de elemente grafice care zboară de ecran din nou
și din nou și din nou.
Și, într-adevăr așa clipuri video, sunt doar modele de biți reprezentând grile, rândurile
și coloanele de puncte, care zboară de imaginea de pe ecran,
după imagine, după imagine, a.k.a.
Imagini în mișcare.
Deci asta este pentru intrări și ieșiri.
>> Tot ceea ce avem acum este un presupunerea că, tu
știu ce, dacă vrem un calculator pentru a reprezenta informații,
avem un sistem pentru a face asta.
O putem face cu 0s și 1s la sfârșitul zilei.
Dar, putem abstract, deci să vorbească, în partea de sus a acestei
astfel încât să reprezinte mai mult lucruri interesante.
Și aici, pe la CS50, și în știința calculatoarelor mai general,
acum vom sta pe umeri a tuturor persoanelor care au
a venit înaintea noastră, care a dat seama de asta.
Și acum doar să presupunem că computerele pot reprezenta intrări și ieșiri.
>> Dar acum, de fapt, hai fac ceva cu ei.
Așa că un algoritm este doar un set de instrucțiuni, pas cu pas,
pentru rezolvarea unor probleme.
Și ce ar putea fi o astfel de problemă.
Deci, aceasta este o școală veche tehnologie, o carte de telefon.
Și în interiorul unei cărți de telefon nu este grămadă de nume și numere.
Iar aceste nume sunt, în general sortate în ordine alfabetică.
>> Așa că, dacă am vrut să găsesc pe cineva în acest telefon carte ca Mike Smith,
ceea ce este un om tipic de gând să faci?
Ei bine, ai putea deschide pur și simplu l, uita-te la prima pagină.
Nu văd pe Mike Smith.
Rândul său, la a doua pagină, Nu văd pe Mike Smith.
Și, doar ține merge și merge.
Este această abordare pas cu pas corect?
Da.
E un fel de prost, dreapta.
Este ineficient, corect.
Pentru că va dura pentru totdeauna pentru a ajunge la Mike, dar este corect.
Pentru că dacă Mike este aici Îl voi găsi într-adevăr.
>> Deci, ce este un pic mai persoană rezonabilă de gând să facă?
S-ar putea deschide încă în față, și poate zbura prin cartea de telefon
două pagini la un moment dat.
Doi, patru, șase, opt.
Nu pot de fapt o fac foarte bine fizic.
Dar, în teorie, acest lucru ar trebui să fie de două ori mai rapid, două pagini la un moment dat.
Este acest algoritm corect?
>> ELEVUL: [inaudibil]
DAVID MALAN: Nu neapărat.
Bun.
De ce această rezervă?
>> ELEVUL: Pentru că el ar putea fi pe unul din paginile pe care Sari peste.
DAVID MALAN: Da.
Deci, chiar dacă mă apropii și mai aproape.
Dacă e doar accidental, de rău noroc, prins între cele două pagini
că eu sunt zboară peste?
Așa că avem nevoie de un fix pentru asta.
De fapt, avem nevoie să apoi spune, așteptați un minut,
Poate dacă vom merge prea departe, poate dacă am lovit secțiunea T,
pentru T care vine după Smith, atunci ar trebui să ne cel puțin dublu din spate cel puțin o pagină.
Deci fixabil, dar există o problemă condiționată acolo.
Deci, este de două ori mai repede, dar s-ar putea trebuie să se dubleze din nou doar un pic.
Dar, nimeni în camera lui, chiar dacă nu folosesc într-adevăr cărți de telefon mai,
va începe de la început.
Ce ai de gand sa faci în căutarea pentru Mike Smith?
Vei merge să aproximativ la S.
Sau, dacă nu aveți cu adevărat foaia ieftin pe hârtie,
vei merge cel puțin aproximativ la mijloc.
Și, cu siguranță nu partea din față a cărții.
Vei să te uiți în jos.
Și matematic probabil ai O să vezi secțiunea M, care
este aproximativ în mijloc.
Și apoi vei realiza, ceea ce este adevărat?
Unde este Mike?
>> ELEVUL: [inaudibil]
DAVID MALAN: Da.
Deci, el a terminat pe partea asta.
Și ce se poate face?
Ei bine, atât la figurat și literalmente se poate rupe problema în jumătate o dată?
Și apoi știi că poți arunca această jumătate a problemei departe.
Și acum suntem plecat cu fundamental aceeași problemă, dar este pe jumătate la fel de mare.
Si acum ce e set de instrucțiuni?
Care este algoritmul pentru a găsi Mike Smith?
Este exact același lucru.
>> Acum, acest lucru se întâmplă să fie M secțiune și aceasta este secțiunea Z,
dar fundamentală Formula este încă la fel.
Du-te aproximativ la mijloc, uite în jos, oh, ea naibii.
Acum sunt în secțiunea T, Am mers prea departe.
Dar și aici poți se aplică aceeași logică.
jumătate a problemei Aruncare departe și acum suntem
a plecat cu o problemă care este un sfert din dimensiunea.
Si putem repeta, și putem repeta, si putem repeta pana cand teoretic
există doar o singură pagină stânga pe care Mike fie este sau nu este.
>> Deci, ce e atât de puternic despre această idee?
Adică la urma urmei, este destul de intuitiv.
Nimeni nu va să înceapă de la începând din cartea de telefon
și flip 1000 de pagini pentru a găsi Mike Smith.
Cele mai toată lumea în această cameră se întâmplă pentru a face aproximativ acest tip de algoritm
cu excepția pentru ruperea.
>> Și, așa că de ce am făcut asta?
Ei bine, ia în considerare eficiența.
Luați în considerare doar cât de mult mai bine acest lucru Algoritmul a fost prin rupere-l jos
în părțile sale componente.
Deci ce am făcut mai întâi?
Am luat cartea de telefon.
Și un om de știință de calculator, și un programator,
mai mult, în general, se pare, se întâmplă pentru a începe numărarea totul la 0.
>> De ce?
Ei bine, e un pic ciudat pe care noi oamenii conta, în general,
pornind de la unul.
Pentru că ceea ce este cel mai mic număr putem reprezenta în mod clar pe baza
chiar și pe vechiul nostru matematica școală clasa?
Ei bine, a fost 0, dacă este în zecimal sau binar.
Și, astfel că veți vedea în lume de calcul și de programare,
în mod specific, începem numărare totul de la 0.
>> Așa că am luat telefonul carte pasul 0.
Mă duc să deschidă spre mijlocul cărții de telefon.
Și asta e într-adevăr, un expresie a ceea ce am făcut.
Și apoi pasul doi a fost privire la nume.
Pasul trei este un pic diferit conceptual.
Eu mă întreb o întrebare.
În cazul în care Smith este printre numele, Mă duc să iau o decizie.
Dacă el este printre numele, atunci am de gând să sun pe Mike.
Și voi lua o decizie bazat pe acea bucată de informație.
>> Cu toate acestea, în cazul în care nu, în cazul în care Smith este mai devreme în carte la stânga,
Mă duc să deschidă la mijloc din jumătatea din stânga a cărții.
Și apoi aici e deșteptăciunea, Mă duc să mă întorc la pasul doi.
Am de gând să sortați de stau pe propriile mele umeri
si repeta doar munca trecut, am făcut-o.
Dar munca mi-a rămas este mai puțin, și mai puțin, și mai puțin.
Dar este încă de gând să lucreze.
Dar, dacă Mike, în schimb, este mai târziu în cartea la dreapta,
Mă duc să deschid la mijloc din jumătatea dreaptă a cărții,
apoi du-te înapoi la pasul doi.
>> Dar, de fapt, există un al patrulea scenariu.
Mike fie aici, sau aici sau aici, sau--
>> ELEVUL: Nu este acolo.
DAVID MALAN: Nu a fost acolo.
Și într-adevăr, dacă noi nu anticipăm acest scenariu al patrulea și ultimul
programul nostru ar putea fi buggy sau eronate în vreun fel.
Altfel, renunțe în cazul în care nu am găsit Mike deloc.
Și într-adevăr, dacă ați observat vreodată agățat calculatorul personal, sau toate
a unui cuvânt brusc sau alt Programul tocmai se închide în mod neașteptat,
și, uneori, te-eroare Mesajul literalmente este aceea.
Acest program renuntat în mod neașteptat.
Acesta poate fi pentru orice număr de motive.
Dar, uneori, este ceva la fel de simplu ca acest lucru.
Programator uman care a scris că software-ul
nu a realizat că, oh, există un mai departe lucru care se poate întâmpla de fapt.
Și, dacă nu scrie cod pentru a captura acel al patrulea scenariu,
este într-adevăr neașteptată, uneori ceea ce computerul s-ar putea face de fapt.
Acum, să strige un câteva dintre aceste lucruri.
Deci, în galben aici, au termeni evidențiate
că de acum încolo suntem doar va apela funcțiile.
Funcții în lumea Programarea sunt la fel ca acțiuni,
declarațiile de acțiuni.
Deci, pick up, deschis, uita-te la, cerere, deschis, deschis, renunta.
Asta-i o funcție, o procedură, o acțiune, orice număr de sinonime
ar funcționa la fel de bine.
Acum, ce sunt aceste lucruri acum în galben?
În cazul în care altfel, în cazul în care altfel, în cazul în care altfel, acestea sunt ceea ce
vom suna condițiile în programare,
sau sucursale, decizii subliniază, dacă vreți.
Dar, cum stii care furculiță în drum să ia, ca să spunem așa?
Avem nevoie pentru a evidenția condițiile în dreapta
acolo, care sunt acestea da, fara intrebari.
Aceste adevărate întrebări false.
Smith, printre nume?
Smith mai devreme în carte?
Smith mai târziu în carte?
Acestea sunt întrebări care există un da sau nu,
sau echivalent adevărat sau fals, sau echivalent, unul sau zero, un răspuns.
>> Și, între timp există doar o ultimă piesă.
Acest lucru are aici ce fel de efect?
Indiferent dacă sunt sau nu programați mai înainte, cum ar fi ai
descrie ce etapa șapte și 10 fac?
Ce ai spus?
ELEVUL: Un pas recursiv.
DAVID MALAN: Un pas recursiv.
Da, în esență.
Este iterativ punct de vedere tehnic aici dacă ești familiar.
Dar ne vom întoarce la asta.
Dar se face ceva în mod clar.
Din nou, este inducerea unei ciclu, o buclă, dreapta.
Te literalmente merge înapoi la unele pas mai devreme.
Și așa, într-adevăr, acest lucru se va pune în aplicare un fel de ciclu.
Dar tu nu vei obține blocat în acest nesfârșit, drept.
Pentru că, dacă sunteți în mod constant de verificare este Mike aici, sau la stânga, sau nu aici,
în cele din urmă nu va fi acolo.
Și tu poți doar să renunțe cu totul ca pe ultima linie.
>> Deci asta e pentru vocabular.
Și asta a fost ceea ce ne-ar suna în general, codul pseudocod.
Nu e un limbaj real.
Este doar foarte concis limba engleză, dar comunică punctul.
Nu există nici o structură formală aici.
pur și simplu utilizați este puțini cuvinte, dar cuvinte clare
după cum puteți pentru a comunica ideea ta.
>> Acum, cât de bun este faptul că algoritmul și cât de mult mai bine este?
Ei bine, nu trebuie să intru în specificul de numere sau orice
ca asta.
Dar putem uita-te la forma acestei soluții.
Așa că, dacă am trage doar un complot xy aici, pe axa orizontală aici.
Hai să numim doar dimensiunea problemei.
Și un om de știință de calculator ar de obicei folosesc n ca variabila aici.
Așa că n pagini, sau n persoane in camera, sau indiferent că este pe care încercați să numere.
>> Și apoi pe axa verticală pe la stânga, care ar fi timp pentru a rezolva.
Deci, cât de multe secunde nu-l ia-mă pentru a găsi Mike Smith?
Sau câți pași nu-l ia?
Cât de multe ture pagina nu-l ia?
Deci, asta e cât costă mă în timp pentru a rezolva o problemă.
Si am putea trage primul algoritmi de pantă, dacă va fi,
ca doar această linie dreaptă în roșu.
Și o să-l sun n.
>> De ce n?
De ce este doar aceasta la o relație?
Ei bine, în cazul în care Verizon sau indiferent de compania de telefonie
adaugă mai mult de o pagină cartea de telefon anul viitor,
care ar putea împinge Mike unul mai mult pas mai aproape de sfârșitul anului,
în funcție de cazul în care pagina este.
Și astfel, efectul ar putea pur și simplu fie pentru a adăuga mai mult de o secundă.
Sau una mai multe pagini rândul său.
Unu la unu raport.
>> Prin contrast, al doilea algoritm.
Cât de mult mai rapid a fost asta intuitiv?
În cazul în care m-am dus două pagini la un moment dat?
Da.
>> ELEVUL: [inaudibil]
>> DAVID MALAN: Da.
Așa că va fi de două ori mai repede.
Si ne-ar trage asta aici în funcție de scara.
Încă mai este o linie dreaptă, dar mai mică decât linia roșie.
Pentru că pentru unele număr de pagini, în cazul în care este nevoie de
ai atâția pași cu primul algoritm,
o să vă luați jumătate cât mai multe etape, cu al doilea.
Și, astfel încât linia galbenă care descrie al doilea algoritm
este doar o să fie dedesubt.
>> Dar ceea ce este cu adevărat puternic este de a gândiți-a treia și ultima,
și uimitor cel mai intuitiv algoritm, care are această formă.
Punct de vedere tehnic am putea numi aceasta o curbă logaritmică.
Log in baza 2 de n în acest caz.
Dar asta nu contează cu adevărat.
Ceea ce contează cu adevărat este fundamental formă diferită pe care le are.
Și tu poți lua în considerare doar modul în care mult mai scurt această linie într-adevăr
este pe termen lung.
Este în continuă creștere.
Ea nu aplatiza perfect.
Dar, ea crește vreodată atât de mult mai lent ca problema devine mai mare și mai mare.
Și vă puteți gândi la ea acest lucru way-- dacă Verizon nu doar
se adaugă o pagină anul viitor, dar dublu numărul de pagini din cartea de telefon,
primul algoritm ar putea ia de două ori mai multe etape.
Dacă este de 1.000 de pagini în acest an, 2.000 de pagini de anul viitor,
Mike ar putea fi mult mai departe.
Deci este de 1.000 de pași suplimentari să-l găsească.
Al doilea algoritm ar putea fi doar 500 mai mult
pași să-l găsească pentru că, din nou, Sunt de zbor prin ea două la un moment dat.
>> Dar ce despre al treilea algoritm?
În cazul în care Verizon dublează dimensiunea agendei telefonice
anul viitor, de la 1000 la 2000 pagini, cât de mult mai multe etape
este al treilea algoritmul meu va dura?
Da, e doar unul.
Și asta e puternic ideea.
Puteți lua 1000 de pagini musca din această problemă dintr-o dată.
Și acum, dacă ia în considerare un scenariu de prostie,
dar este un fel de vorbește puterea de acest tip de intuition--
în cazul în care o carte de telefon a avut, cum ar fi, patru miliarde pagini, se simte ca o problemă foarte mare.
Și într-adevăr, s-ar putea ia-mi patru miliarde de pagini
se întoarce pentru a găsi Mike Smith în acel caz cu primul algoritm.
Dar, câți pași ar fi ea să ia în al treilea algoritm
pentru a găsi Mike printre patru miliarde de bucăți de hârtie?
Așa că patru miliarde te rupe în jumătate.
Veți obține două miliarde.
Apoi, un miliard, apoi 500 de milioane, 250 milioane, 125 million-- dar
se simte ca acest lucru este va dura ceva timp.
S-ar putea avea nevoie de 32 de degete pentru a conta în sus atât de mare.
Dar este, într-adevăr, ca puține 32 lacrimi de pagină.
Poti sa te duci la patru miliarde la o pagină de demarcație
numărul inițial de pagini în jumătate de 32 de ori
până când ești plecat cu doar că o singură pagină.
>> Acum, desigur, eu sunt inselat aici.
Nu e ca suntem doar a fi un fel de prost în întregime cu primele două
algoritmi.
Sunt inselat într-un anumit sens, sau într-adevăr am pârghie o presupunere.
Ceea ce era adevărat despre cartea de telefon în forma sa originală, care a permis
mă să folosească chiar și acel al treilea algoritm?
Da?
AUDIENTA: A fost alphabetized.
DAVID MALAN: A fost alphabetized, nu?
Dacă ar fi fost doar în mod aleatoriu ordine, acesta este un deșeu
de timp, toată această conversație.
Trebuie să se uite la fiecare pagina dacă este în ordine aleatorie
pentru a găsi Mike Smith, înainte se poate concluziona că este acolo sau nu.
Și așa WE de colț au tăiat este că am
care a asumat altcineva în acest caz a făcut lucrarea pentru mine.
Și în cele din urmă, astfel încât invitații întrebarea, bine, așteptați un minut.
How do you sortați 1000 Paginile de nume și numere?
Asta este de fapt un alt problemă, ceva
vom reveni în viitor.
Dar când te gândești la site-uri web cum ar fi Facebook și Google pentru Gmail
și lucruri, cum ar fi Google indexurile de căutare proprii,
când ai milioane sau miliarde de fragmente de date care sunt stocate în aceste zile,
searching-- și să nu mai vorbim sortarea acestor problems--
este în cele din urmă o provocare în sine.
Și într-adevăr, atunci acest lucru este doar una dintre aceste provocări
că vom fi uitat la.
>> Așa că acum să ia un moment și să ia o privire la CS50
în sine și va da un sentiment de ceea ce este în magazin în acest semestru.
Într-adevăr, dacă nu aveți deja, luați o privire la această adresă URL.
Și, după cum Patrick a făcut aluzie la, anul acesta suntem
făcând o investiție semnificativă toate cu atât mai mult în susținerea cursului
structura din punctul de vedere al TAs și AC, orele de birou,
secțiuni de disponibilitate și materiale digitale on-line, precum și.
Într-adevăr, în ceea ce privește cursului curs, suntem astăzi aici.
Și așteptările acestui Anul oficial al cursului
sunt participa la astăzi, cursului ultimul curs, și un curs
aproximativ în mijlocul semestrului cu fiecare prelegere între
pus la dispoziție, în general, într-o vineri după-amiază
on-line, atât pentru studenții Yale și studenți la Harvard în acest an.
Într-adevăr, una dintre cele mai schimbări fundamentale este
că suntem de adoptare la Harvard o paradigmă foarte mult
așa cum am făcut-o aici ultima an și acum în acest an,
, astfel că, la fel, încă de film cele mai de prelegeri ale cursului din Cambridge
dar le face disponibile mai devreme decât avem în trecut
astfel încât cei din Tu-- dacă ai ar dori să, de exemplu,
obține un start cap de pe materiale pe primul week-end, mai degrabă
decât al doilea week-end, vei avea accesul la aceste tipuri de materiale,
cautare, încorporabil, hyperlinkable la resurse legate de tot mai devreme.
În ceea ce privește subiectele, pentru a vă oferi un sentiment de trajectory-- cursului
iar unele dintre acest lucru ar putea fi jargon pentru acum, dar nu pentru mult timp, fiți siguri.
Vom începe astăzi, în cele din urmă, cu uita la o programare
limbaj numit Scratch.
Ne vom tranziția ulterior săptămâna viitoare la ceva numit C
și apoi se uită la altă clădire Blocuri de rezolvare a problemelor,
lucruri numite tablouri și algoritmi, cum folosim memoria în avantajul nostru
și dezavantaj, și lucruri cum ar fi structuri de date,
și apoi spre capătul cozii clasă uita la masina de învățare
și se uită la un alt limbaj numit Python,
cum functioneaza web, cum internetul mai mult în general, funcționează, protocoale cum ar fi HTTP,
limbi pentru baze de date, cum ar fi SQL, JavaScript pentru web,
și în cele din urmă care leagă toate în același timp.
>> Și așa, într-adevăr, la sfarsitul zilei, tu
nu va învăța în această clasă Scratch sau C sau Python sau SQL sau JavaScript.
În schimb, veți afla mai multe, în general, știința calculatoarelor și a fundațiilor
al acestuia, și veți să învețe cum să program
în orice număr dintre acestea limbi de-a lungul drum.
Așa că, într-adevăr, unul dintre scopurile cursului în cele din urmă
este de a lua de pe toate cursului roți de formare de către aceste ultime săptămâni
astfel încât, după acest lucru, puteți a reveni la propria câmpuri sub
dacă aceasta este sau este nu știința calculatoarelor
sau inginerie, în natural științe, arte, științe umaniste, sau beyond--
și să aducă o parte din această idei de curs și acest domeniu a lui
idei și practice aptitudinile necesare pentru propriul domeniu
în scopul de a rezolva problemele de acolo.
>> Ce vom face aici între timp în cele mai multe joia după ziua de azi
este cu capete ale cursului de conducere ceea ce vom numi walkthroughs
de seturi de probleme ale cursului.
Așa că în fiecare săptămână, când ne au stabilit o problemă, vom
să fie mersul pe jos printr-o locație într- ca aceasta provocările cursului,
oferindu-vă câteva sfaturi și trucuri și tehnici de proiectare.
Dar dacă nu ești în stare pentru a face pe cei în persoană,
dau seama cei același resursele vor fi încorporate
de către unul dintre cursului asistenți de predare
în problema ei înșiși stabilește, de asemenea.
>> Problema stabilește în acest an, spre deosebire de anul trecut, pe baza feedback,
va fi pus la dispoziția publicului în zilele de vineri.
Dar, mai degrabă decât să fie datorată ulterioare vineri,
oferindu-vă astfel doar șapte zile, în va fi efectiv datorită 10 zile mai târziu.
Și într-adevăr, acest lucru va însemna că acestea vor suprapune pe un week-end.
Dar noi sperăm că acest an mai ales acest lucru va
permite studenților pentru a se potrivi mai bine flux și reflux în programele lor,
fie că este vorba sau cadre universitare extracurriculars sau atletism
sau la jumătatea perioadei de sezon.
Aveți posibilitatea să fie din față sau din spate de încărcare sarcină săptămâna concentrându-se pe CS50 bazat
pe de încărcare reală curs de propria săptămână.
>> Problema ei înșiși stabilește va acoperi o gamă largă de limbi,
deși ne vom concentra predominant timpuriu la C
înainte de a ne concentra ulterior pe mare nivel, mai multe limbi web-centrice.
Și apoi câteva întrebări frecvente aici-- ar trebui să luați o clasă cum ar fi CS50
ca un prim-an?
Așa că absolut.
Și într-adevăr, nu e în mod necesar ceva
ar trebui să amâne până când ați tăiat dinti pe alte tipuri de clase.
Ci mai degrabă să ia în considerare că pentru mulți studenți,
inclusiv eu înapoi în a doua zi, acest lucru este un domeniu foarte familiar,
mai ales dacă nu a luat o CSA AP
sau ceva de genul asta în liceu.
Dar, dau seama că de timpuriu, fie că e acest curs
sau un alt curs introductiv, acum este într-adevăr cel mai bun timp,
Cred că, pentru a găsi o anumită cale nouă sau unele noi interes academic, precum și.
Și apoi luând cu alte courses-- astfel încât una dintre diferențele cheie aici
versus Harvard este doar că noi ia patru cursuri pe semestru
la Harvard, pentru un motiv oarecare.
Și, de fapt, voi trage off unele de 36 de cursuri în total
pe parcursul a patru ani dumneavoastră, ceea ce înseamnă că, în general, patru sau cinci
clase.
Si eu cred că e destul de corect să spunem și declină CS50, prin design, este
probabil, nu tipul de clasă că ar trebui în mod tipic
luați cu alte patru cursuri pentru un total de cinci
deoarece psets sunt de proiectare destul de intensivă.
Intr-adevar, prea am învățat acest lucru înapoi în a doua zi.
Nu s-ar descrie CS50 și informatică, programare
ca atât de greu pe cât este doar consumatoare de timp.
Nu e genul de lucru în cazul în care, după cină,
poate merge înapoi la căminul tău cameră, stai jos, și începe
concentrându-se pe PSET gândire, bine,
O să-bang-ului asta in seara asta si apoi se muta
cu privire la următorul meu subiect a doua zi.
Uneori te-a lovit doar un zid.
Ai bug-uri în codul.
Dacă nu știi neapărat cum să rezolve unele probleme.
Iar una dintre caracteristicile cheie ale programare pentru mine până în această zi
este pur si simplu un fel de nevoie pentru a lua un pas înapoi, uneori, dormi pe ea
sau gândește-te la ea pe parcursul de jogging sau o altă activitate,
și apoi vin înapoi la ea în stare proaspătă.
Si ai nevoie doar de aceste ferestre de timp.
>> Și într-adevăr, de aceea ne-am a prelungit perioada de timp
disponibile pentru seturile de probleme în acest an și, de asemenea, pe această adresă URL
Am pus mai devreme ca să Ce este nou în acest semestru,
bordurate problema seturi, astfel încât acestea sunt în mod fundamental nu mai puțin riguroase,
iar takeaways nu sunt mai puțin, dar există o mulțime chestiune mai puțin față,
o legwork mult mai puțin de care aveți nevoie pentru a face în partea din față a fiecărui set de probleme,
după cum veți vedea, înainte de a putea de fapt, se arunca cu capul în carne de ea.
Așa că dau seama că acestea și altele schimbările sunt la orizont
pentru a se potrivi mai bine studenții, dar, în cele din urmă pentru a vă asigura
că takeaways sunt într-adevăr, cât mai mare posibil.
Așa că în timp ce mai mult de lucru decât ar putea fi într-o clasă tipică,
noi sperăm că randamentele pentru tu și takeaways pentru tine
și abilitățile și ideile cu care ieșiți din
sunt cu atât mai convingătoare, ca rezultat.
Și pentru a te there-- și acest lucru este una dintre takeaways-cheie,
așa cum a făcut aluzie Patrick earlier-- este Structura de sprijin cursului.
Deci, nu numai că CS50 au una dintre cele mai mari personalul de curs în campus.
Ea are, de asemenea, una dintre cele mai cele mai multe de licență.
Intr-adevar, CS50 anul trecut a fost prima clasă
pentru a avea un personal didactic de licență.
Și testament pentru că succesul face acum multe alte cursuri din cadrul Yale CS
au că, la fel de bine.
Iar pentru studenți, în special, vor fi aceste TAs și asistenți curs
fie sprijinirea unui întreg rețea de resurse de sprijin,
printre acestea secțiuni sau recitări, oportunități săptămânale
pentru a avea mai multe discutii intime și recenzii de materiale vizate
pentru piese diferite, pentru studenți mai puțin confortabil, mai confortabil,
sau undeva între.
Acestea vor urmări disponibilitatea prelegeri pe câteva zile în fiecare săptămână
în zilele de luni și marți.
Și apoi hours-- birou Unu-la-unu oportunități
ajutor de la curs și tas AC va fi în zilele de miercuri și joi
si duminica, la mai multe ori, toate acestea
vor fi postate pe site-ul cursului, chiar mai mult decât anul trecut, la fel de bine.
>> Dar ceea ce este cheia pentru CS50, în cazul în care nu, desigur, un pic neobișnuită,
este cultura cursului pe care am încercat să cultive,
atât în ​​Cambridge, timp de mai mulți ani iar acum cel mai recent în New Haven.
Și, de fapt, venind această Sâmbătă, dacă nu ați auzit,
este Ziua CS50 puzzle, care are nimic de-a face cu știința calculatoarelor
dar este proiectat în întregime pentru a trimite un mesaj pe care știința calculatoarelor este
cu privire la rezolvarea problemelor.
Și într-adevăr, dacă doriți să partener cu unul sau doi sau trei prieteni
și să formeze o echipă de CS50 Puzzle de zi, să ia o privire
la anunțurile care sunt pe cale de ieșire.
Și trei ore de pizza și puzzle-uri și premii așteaptă.
Și într-adevăr, pentru prima dată în acest an,
nu va avea loc împreună cu Harvard.
Acesta va fi aici, în mod independent la Yale.
Așa că ține un ochi pentru cei care, dacă nu aveți.
Cele mai multe în fiecare vineri în semestrul nu încercăm să facem o clasă mare
se simt mici și să aducă aproximativ 50 de elevi la masa de prânz cu personalul cursului,
cu absolventii, prieteni din industrie pentru a vorbi
despre cum este viața după clasă cum ar fi CS50 și peste verile
și după absolvire.
Așa că ține un ochi pentru invitații la asta.
Pentru prima dată tot în acest an va vom
susține prima vreodată de codificare CS50 concurs, o oportunitate opțional opt-in
la mijlocul-semestru, după ce toate dintre noi am avut unele șase sau șapte săptămâni de programare
în C, sub centurile lor de a concura, dacă acest lucru v-ar choose-- din nou
pe teams-- încercând să rezolva cât mai multe provocări
după cum puteți în programare cu prietenii tăi împotriva altora.
>> Și spre coada semestrului va vom charter niște autobuze,
a petrece de fapt, ceva timp în Cambridge, dacă ai fi
ca să ni se alăture, în asa-numitele CS50 hackathon.
La 7 pm vom începe.
În jurul valorii de 21, vom avea pizza.
În jurul valorii de 01:00, vom avea burritos.
Și, cineva încă treaz pe de plimbare cu autobuzul acasă în jurul valorii de 05:00,
ne vom opri off pentru clătite la IHOP pe drum home--
o oportunitate de 12 ore pentru a cufunda vă cu colegii și personalul
în proiectul final al cursului, care este o oportunitate
pentru a merge dincolo de seturi de probleme de curs de
și proiectarea și punerea în aplicare cele mai multe ceva de interes pentru tine,
care va fi în cele din urmă prezentate aici, în Commons.
Primul târg vreodată CS50 a fost ultima an, o expoziție de sfârșit de semestru
sau celebrare a ceea ce toată lumea în clasa a realizat,
în special cele care, din nou, care a plecat de nimic la ceva, de la zero la 60,
având în nici un fond prealabil și care prezintă, în cele din urmă,
ceva pentru întregul campus și, dacă on-line, lumea să vadă, la fel de bine.
>> Acum, acestea aici sunt doar câteva dintre TAs și CAs, care face posibilă CS50.
Permiteți-mi să invite orice din acei membri ai personalului
care sunt aici să vină pe scenă, precum și capetele cursului,
pentru a oferi câteva cuvinte de inspirație, de asemenea.
>> ANDI: Bună, băieți.
Puteți voi mă auzi?
Vă mulțumim pentru aderarea la noi în această minunat, joi după-amiază ploioasă.
Numele meu este Andi.
Sunt un junior în Berkeley.
Și împreună cu Stelios și vara, vom preda trei dumneavoastră cap
asistenți pentru anul viitor.
Deci, cred, spectacol hands-- câți dintre voi
nu au nici o intenție de a fi CS majore și nici într-adevăr scufundări profund
în știința calculatoarelor ca un important aici?
Minunat.
Asta e genial.
>> Așa că sunt de fapt o afacerile la nivel mondial și științele cognitive majore.
Am literalmente venit la Yale cu intenția
de a nu fi nevoie să se uite la un număr tot mai nou în viața mea.
Când am venit la Yale, acest lucru a fost ceva ce nu a fost niciodată pe radarul meu.
Am vrut să învăț despre poezie.
Am vrut să învețe despre relatii Internationale.
Am vrut să învețe despre desene acuarelă.
Da, noi oferim o clasă în desene acuarelă.
>> Dar niciodată nu am fost foarte interesat în orice STEM conexe.
Dar apoi I mai în vârstă a primit, cu atât mai mult am dat seama
că fiecare domeniu într-adevăr, în unele simț folosește știința calculatoarelor,
sau în cazul în care nu știința calculatoarelor, de calcul.
De fapt, pentru Global mea proiect Capstone afaceri,
noi folosim de analiză de date pentru a analiza atacurile teroriste
pentru Boko Haram din Nigeria.
Și așa cum se poate vedea, indiferent din ceea ce majore te termina urmărirea
sau ce interesele dumneavoastră aici la Yale sunt, de programare și fundații
indiferent de aptitudini sunt foarte utile.
Și, într-adevăr CS50 este bine echipat pentru a un fel de a da o mulțime de resursele sale
pentru tine, indiferent de cat de confortabil esti
sau cât de interesat sunteți în urmărirea clasă.
>> Vara vorbi un pic pic despre ceea ce voi sunteți
O să învețe despre acest an.
VARA: Bună, toată lumea.
Sunt de vară Wu.
Sunt un junior în Morse.
Și, de fapt am început ca student CS50 mine.
Acum deci trei ani, am fost pe un an de pauză.
N-am mai luat un CS clasă în liceu,
dar m-am gândit că, în timpul meu liber, l-ar fi cool să învețe cum să cod.
Așa că am făcut-o căutare rapidă Google, cautat ceea ce a fost disponibil on-line,
și a văzut acest film cu marionete si DJ-ii si site-uri se răcească.
Am fost ca, vreau să să învețe cum să facă acest lucru.
>> Așa că am luat cursul, și eu doar a căzut în dragoste cu ea.
Dar îmi amintesc că eram atât de geloasă pe copiii care ar putea participa la hackathon,
participa la Ziua puzzle, să participe la birou ore, pentru a primi ajutor de la TAs în persoană.
Și așa mi-am imaginat că aș avea șansa
să fie implicată aici în cursul pe care mai întâi a primit
ma interesat de calculator știință și este motivul pentru care
Sunt o știință calculator majore astăzi.
Așa că o să vă avertizez, această clasă se va întinde.
O să vă provocare.
Dar este, de asemenea, va te învață cum să faci lucrurile
că niciodată nu imaginat ai putea.
>> STELIOS: Bună, toată lumea.
Numele meu este Stelios.
Sunt un junior în Branford College și un maior CS.
Sunt, de asemenea, de la Atena, Grecia.
Sunt într-adevăr așteaptă cu nerăbdare pentru satisfacerea tuturor,
pe chat cu tine la secție, la ore de birou, la prânz la vineri.
Sunt foarte entuziasmat, deoarece ne-am pus atât de mult efort
în crearea unui suport unic Structura pentru voi toti
pentru a face experiența cu cursul cel mai bun posibil.
Și sper că, deși cele mai multe dintre probabil că nu ați luat un CS
Desigur, înainte, sper că e CS50 pentru tine este ceea ce stârnește interes
pentru a urmări în continuare calculator știință în viitor,
așa cum s-a făcut cu acest lucru mulți oameni în trecut.
Deci, va multumesc pentru a fi aici, încântați să te văd.
Jason Hirschhorn.
JASON Hirschhorn: Bună, toată lumea.
Numele meu este Jason Hirschhorn.
Eu locuiesc în Silliman.
Si m-am dus la Harvard, ca un student și specializat în studii sociale
și în informatică, secundar.
Iar unul dintre rolurile mele principale aici este de a sprijini acest personal minunat
pe măsură ce tot ceea ce susțin.
De fapt, acest lucru nu toate dintre ele.
Există 55 de studenți și absolvenți aici pentru a vă sprijini toate.
Iar eu unul dintre cei mai buni Îndrăznesc să spun părți ale cursului pentru tine
totul este obtinerea de a lucra cu ei, ajungand sa le cunosc,
obtinerea de a le vedea, atât în ​​CS50 și în afara CS50 acest semestru
și pentru multe semestre să vină.
Deci sperăm că ai să iau Desigur, pentru că sperăm că vă
ajunge să interacționeze cu Personalul minunat avem pe scenă.
>> VORBITOR: Ei bine, lasă-mă să termin spunând că va fi distractiv.
DAVID MALAN: Ei bine, mulțumită întregii echipe.
Permiteți-mi să dim luminile și permite unele mai multe din echipa noastra,
atat din Cambridge si New Haven, să spun salut ca fișier de pe acești tipi.
Și după aceea va vom tranziția către primul dintre angajamentele noastre de programare
cu acest limbaj numit Scratch.
Așa că datorită echipei.
Să ne dim luminile și auzi de alte câteva.
>> [APLAUZE]
>> [REDARE VIDEO]
>> -ORAȘUL Misiunea de CS50 este de a face mai confortabil cu un mod cu totul nou
de gândire, această stare de spirit de calcul.
-se Făcut știința calculatoarelor interesant, care
este ceva ce nu am realizat cu adevărat a fost posibil până când am luat clasa.
-Am Fost ca, oau.
Sunt cu adevărat traducere gândurile mele într-un computer, chiar acum.
>> -Chiar Dacă nu aveți nici un fundal în știința calculatoarelor sau orice experiență,
aceasta este de fapt clasa pentru tine.
>> Deci cu siguranta vreau elevii mei la doar
te excitat despre știința calculatoarelor.
Nu doar programare, dar gândire ca un om de știință de calculator
este într-adevăr ceea ce vreau să încercați să învețe boboc meu.
>> -CS50 Este greu și plină de satisfacții.
>> -O experienta.
>> -Extravaganta.
>> -Este Ne aduce la nivelul următor.
>> [MUZICĂ]
>> -ORAȘUL TFS sunt, cred eu, forța vie a cursului.
>> -Sunt Încântat să aibă elevii mei mă ajută
au acel moment, aha să realizeze ceea ce de fapt încearcă
să facă, să dau seama cum să faci o PSET.
>> -CS50 E cu siguranta un curs greu.
Dar, spre deosebire de orice alt Desigur, într-adevăr la Yale,
ea are un astfel de mare, comunitate de susținere.
-Nu Absolut nu trebuie să știe nimic
ti despre codarea pentru a putea să ia curs.
-Este Uimitor sa ma uit cât de departe oamenii vin într-un semestru.
>> -Nu A fost singur ședinței în cameră de învățare la cod,
dar a fost mai mult decât o clasă.
A fost o experiență.
-ORAȘUL Cel mai bun mod de a învăța concepte și de prelucrare a acestora este de predare alții.
>> Ce este divizat de telefon?
>> [MUZICĂ]
>> -Si Asta e CS50.
>> [MUZICĂ]
>> -acest Este CS50.
>> -Avem o mică problemă?
Tear-l în jumătate.
>> [MUZICĂ]
>> Aruncă.
>> DAVID MALAN: Bine.
Așa că hai tackle-- într-un pic bit, de altfel, este
a fost această tradiție pentru un motiv sau altul, timp de 10 ani
pentru a servi prăjitură începutul și sfârșitul lui CS50.
Așa că vă așteaptă la sfârșitul anului astăzi, în plus față de programele școlare,
va fi un tort la fel de bine, și Personalul cursului de a spune salut.
Dar, acum, să tranziției spre în primul rând limbilor noastre, în cazul în care
ne vom petrece într-adevăr doar o săptămână și unul problema setată pe acest domeniu, Scratch.
Și veți găsi dacă ai programate inainte, multe
din ideile și posibilități sunt familiare.
Dar, veți găsi că este distractiv de-a lungul drum
să dau seama exact cum să traducă unele dintre ideile pe care le cunoașteți deja
la acest mediu particular pentru a impresiona într-adevăr familia ta
și prietenii cu munca ta, care poate du-te on-line, dacă alegeți, după aceea.
>> Și, dacă nu aveți experiența anterioară și sunt
între majoritatea elevii mai puțin confortabile,
dau seama că multe dintre ideile pe care le tocmai a explorat cu lucruri reality--
cum ar fi cărți de telefon și prezență și așa forth-- traduce
destul de frumos la un calculator, dar nu și dacă utilizați,
inițial, un limbaj de genul asta.
Deci, acesta este un program scris într-o limbă numită C.
Si ne vom petrece destul de un pic de timp în C, în cele din urmă.
Dar, cotele sunt, acest lucru va arata un pic criptic pentru tine la prima vedere.
De fapt, există o mulțime de ciudat sintaxa, paranteze, paranteze unghiulare,
acolade, citate si. semicoloane
Și într-adevăr, dacă te arunca cu capul în programare pentru prima dată
uita la și încercând să creeze lucruri cum ar fi acest lucru, sincer, ești așa împotmolită
atât de des în doar prost minutia care nu are nimic
intelectual interesant cu privire la aceasta.
>> Dar imaginați-vă dacă ați putea crea aceeași program-- care,
așa cum s-ar putea deduce un fel de, probabil, printuri "Bună ziua, lume", într-un fel sau altul.
Noi putem distila aceeași idee în doar două piese de puzzle, dacă vrei.
Intr-adevar, Scratch este interesant deoarece este acest limbaj grafic.
Aveți posibilitatea să glisați și să fixați aceste piese de puzzle care numai inter-blocare
dacă are sens logic să facă acest lucru.
Și așa în Scratch, vom vedea în curând, acest lucru este
cum v-ar pune în aplicare aceeași Programul, cu doar două piese de puzzle
că destul de mult face ceea ce spun ei.
>> Dar, vom vedea în doar un moment pe care unii din blocurile pe care le se face aluzie
la mai devreme și alte câteva sunt tot ceea ce în cele din urmă vor constitui
unele dintre programele noastre mai vechi.
Vom avea lucruri cum ar fi functions-- doar
acțiuni care fac ceva, cum ar spune salut, lume.
Vom avea bucle, lucruri care induc cicluri
din nou și din nou, la fel ca noi a făcut un moment în urmă cu căutarea
Mike Smith.
Variabile, cum ar fi algebra, dacă vă au x sau y, care poate stoca un număr.
Ei bine, într-un program, puteți de fapt stoca mai mult decât doar numere.
Puteți stoca cuvinte și propoziții și grafică și alte lucruri încă.
expresii booleene, doar questions-- da sau nu, adevărat sau fals.
Condiții, decizii de luare bazat pe aceste da / nu răspunsuri.
>> Și apoi lucruri cum ar fi crescator matrice și fire și evenimente
precum și orice număr de alte caracteristici, dar toate acestea
harta foarte frumos la foarte blocuri prietenoase ca aceasta.
Acest lucru va fi o funcție, o piesă de puzzle violet, care spune doar
ce este-- numele său în acest caz, să zicem.
Și apoi de multe ori, există o cutie alba pe care
se pot introduce în sau trageți-o anumită valoare în.
Și asta e ceea ce este în general numit un argument sau un parametru.
Este un mod de a altera Comportamentul implicit al unui puzzle
piesă sau o funcție, astfel încât să nu ceva personalizat pentru tine ca si cum spune,
Bună ziua, lume sau salut, Andy sau salut, Jason sau o altă frază în schimb.
>> Dacă doriți ca să spui că lot-- literalmente forever--
puteți lua o altă piesă de puzzle numit pentru totdeauna
și doar sandwich două împreună ca acest lucru.
Și aceasta bucla, după cum sugerează imaginea, înseamnă pur și simplu spun salut, lume pentru totdeauna,
din nou și din nou și din nou.
Sau, dacă doriți doar să facă un număr finit de ori, cum ar fi de 50 de ori,
acolo va fi un alt puzzle piesă pentru that-- se repetă de 50 de ori.
>> Între timp, dacă doriți să aibă o variabilă
în această limbă suntem pe cale să se joace cu,
puteți utiliza un bloc portocaliu ca aceasta.
Iar această variabilă am arbitrar numit i pentru întreg.
Și tocmai am pus-o egală cu 0.
Si asa ca poate, în acest case-- acest variable--
reprezintă scorul cuiva într-un joc.
Vă începe de la zero, și de fiecare dată când face un gol sau ceva de genul asta,
veți obține un singur punct suplimentar.
>> Puteți adresa întrebări în Scratch.
Dacă ne drag and drop puzzle piese într-un astfel de moment,
vă puteți pune întrebări, cum ar fi, bine, este i mai mică de 50 de ani?
Poate ai nevoie de 50 de puncte pentru a câștiga.
Și așa ar fi întrebarea te-ai întreba.
Sau, mai general, tu ar putea spune este x mai mic decât y,
în cazul în care există implicate două variabile?
Acum, acesta este mult mai mare, la prima vedere,
dar într-adevăr nu tot ce mai complexe.
>> Aceasta este doar o combinație condițiilor și variabile
și expresii booleene pentru a cere trei questions-- este x mai mic de y?
Dacă este așa, spune acest lucru.
Say, x este mai mic decât y.
Altfel, dacă x este mai mare decât y, altfel x trebuie să fie egal cu y.
Și, în timp ce cu Mike Smith, au existat patru scenarii, aici
în lumea numerelor, x este fie mai mic, mai mare sau egal cu.
Tot ce avem sunt trei furci în drum.
Și apoi există crescatorul piese de puzzle, cum ar fi acest lucru
pentru lucruri cum ar fi tablouri, în cazul în care suntem va fi capabil de a stoca informații.
Mergem să vedem blocuri care permit să pună în aplicare mai multe fire,
O altă caracteristică vom folosi și apoi, de asemenea, ceva numit evenimente.
Dar, înainte de a se ajunge la asta punct și chiar să creeze,
în cele din urmă, propriile noastre personalizate piesele puzzle-ului, a lui lasa
deschide de fapt programul în sine.
>> Deci, acest lucru este zero.
Este disponibil la scratch.mit.edu.
Iar tu ești binevenit să joace acum sau mai târziu, la fel de bine.
Acest lucru se întâmplă să fie versiunea offline.
Pentru cei care nu fac au neapărat o mare de internet,
se poate descărca același software, precum și.
Și, într-adevăr există doar trei componente pentru acest software.
Pe colțul din stânga sus al ecranul este un fel de scenă
zgârietura, care în mod implicit arata ca o pisică, trăiește în interior.
El se poate deplasa în sus, în jos, la stânga și la dreapta și de a face orice număr de alte lucruri,
și se pot uita orice număr de moduri bazate pe pe costumele pe care le atribuiți-l.
Dar aceasta este ceea ce vom numi un sprite, un fel de caracter.
Și tu poți avea mai multe personaje, după cum vom vedea în curând.
>> În mijloc sunt acum toate aceste puzzle piese si aceste categorii sau paleți
acestora.
Deci, chiar acum, am dat click pe Motion.
Și așa mă văd cu cele de mai piese de puzzle sau blocuri legate de mișcare,
astfel încât funcțiile care au de a face cu a merge în sus,
în jos, la stânga sau la dreapta sau o altă operație.
Dar, dacă am făcut clic pe Se pare, tu ar putea vedea lucruri cum ar fi blocul spun
că am văzut doar o clipă în urmă.
Și, dacă fac clic pe control, veți vedea lucruri cum ar repeta și în veci
iar în cazul în care blocul am văzut-o clipă în urmă.
>> Astfel că nu veți găsi că vom zgâria doar
suprafața unora dintre cele puzzle piese împreună,
dar totul e destul de intuitiv și punct și faceți clic.
Intr-adevar, a fost proiectat Scratch pentru elevii mai mici
pentru a le ajuta să dea o priză pentru gândirea creativă.
Și totuși, minunat, este o piatră de temelie minunat
la exact ideile pe care le vom explora în C și Python și JavaScript,
de asemenea.
>> Pe partea dreaptă, în cele din urmă, aici este aceasta, așa-numita zonă scripturi.
Și acesta este doar ardezie gol cu care începe să scrie un program.
Și eu voi exact asta.
Acum, se întâmplă să știu unde lucrurile sunt pentru că am făcut asta de câteva ori.
Dar eu știu că sub categoria Evenimente,
există acest bloc aici-- când steagul verde a făcut clic.
Și observați dacă am zoom out și înapoi aici pe scenă,
în cadrul acestei vieți răzuibile lume mică dreptunghiulară,
varful care este un verde pavilion și un semn roșu de stop.
Așa că du-te și opri, respectiv.
>> Și ce vreau să fac când acel steag verde este apasat?
Ei bine, lasă-mă să merg la asta pare categorie.
Și lasă-mă să merg mai departe și drag and drop asta.
Și observați de îndată ce acesta devine aproape, ei sunt un fel de magnetice.
Așa că, dacă acum am dat drumul, se fixează împreună frumos și curat.
Și mă duc să merg mai departe și spune ceva de genul salut, lume
timp de două secunde.
Dați-mi voie să micșorați și să faceți clic pe acum din pavilion verde, și spune, salut, lume.
In regula.
Deci asta e tot fin și bun.
Nu tot ce interesant.
Hai să-l un pic cuter face.
Și știu că, în în avans, Scratch se întâmplă
să vină cu unele lucruri drăguțe de genul asta.
Așa că juca miau sunet până la făcut.
Așa că hai să facem acest lucru.
>> [MIAU]
>> Aw, e adorabil.
Și, dacă am clic pe again--
>> [MIAU]
>> Și din nou.
>> [MIAU]
>> Dar continui să fi nevoie să reanima Scratch.
Dar eu pot face mai bine decât acest lucru.
De ce nu am trageți doar trei dintre acestea.
Și acum este de trei ori mai adorabil.
>> [Meowing]
>> OK, de fapt, e un pic ciudat.
Așa că avem nevoie de ceva între acolo.
Dacă mă duc la control, se pare ca există de fapt un bloc de așteptare.
Și așa, dacă observați că plutesc peste there-- și lasă-mă să fac acest lucru un pic mai mare.
Dacă aș fi plutesc, va să se fixează în poziție.
Așa că, așteptați o secundă așteptați o secundă.
Hai sa lovit din nou steagul verde.
>> [Meowing]
>> OK, un pic mai natural, dar nu foarte eficient.
Deci, acest lucru este corect, dacă programul meu miau gol a fost de trei ori.
Dar nu este foarte bine conceput.
Am cam tăiat unele colțuri.
Am un pic leneș.
Ce simte like-- ce mi se pare să fi făcut prost, ai spune?
Da?
Da, în mijloc.
AUDIENTA: Folosit mai mult memorie decât este necesar pentru a
deoarece utilizați atât de multe linii diferite.
DAVID MALAN: Da, deci mai multe linii.
Și nu ar fi în mod necesar de memorie, deși ar putea fi văzută ca în acest fel.
Dar este definitely-- există redundanță.
Si eu literalmente un fel de târât și a scăzut aceleași lucruri.
Și dacă ai un fel de extrapolate-- dacă nu este evident aici-- bine, cum ar fi
Am miau de 30 de ori?
Aș drag and drop, cum ar fi, mai mult de 30 de perechi de piese de puzzle.
Și cu siguranță, există o cale mai bună.
Și am văzut o cale mai bună.
Ce intuitiv ar fie calea mai bună?
Da, utilizați doar o buclă.
Nici o copie nu și pastă.
Și într-adevăr, oricând acest lucru semestru dacă începeți
te regăsești drag and drop, sau într-adevăr de copiere și lipire,
obiceiul periculos pentru a intra, deoarece acest lucru nu este doar foarte maintainable.
De exemplu, dacă vreau să se schimbe sunetul la altceva,
Trebuie să-l schimbe acum în trei locații în loc de unul singur.
Pentru că, într-adevăr, dacă am rupe acest away-- Sunt
doar de gând să-l decupleze de genul asta.
Lasă-mă să iau un bloc de repetare, și apoi faceți clic pe trei, tastați trei,
arunca unele dintre acestea departe doar prin a da drumul.
Și apoi observați nu arata ca se potriveste,
dar magnetic, merge pentru a fixa, nu numai în loc
dar cresc pentru a se potrivi cu forma.
Deci asta e bine.
Și acum, dacă fac clic joc.
>> [Meowing]
Foarte frumos.
In regula.
Și acum este foarte ușor de schimba, de asemenea, pentru că eu pot doar
schimba un singur număr într-un singur loc.
Dar acest lucru, de asemenea, nu este tot ceea ce interesant.
Jocul va fi lăsat de fapt, au Zgârietură nu miau, dar muta.
Lasă-mă să merg la mișcare și de a muta 10 pași în interiorul de-- hopa, lasă-mă să repare asta.
Lasă-mă să-l mute 10 steps-- de fapt, să nu facem repeta.
Lasă-mă să iau un bloc de control, și de a face următoarele pentru totdeauna.
Pentru totdeauna, mutați 10 pași.
Și faceți clic pe Redare.
>> O.K.
Așa că, din fericire, el se oprește.
În caz contrar, copiii ar primi foarte supărat atunci când își pierd un fel de pisica lor.
Dar, cel puțin eu pot trage l înapoi în ecran.
Dar acest lucru nu este tot ceea ce mare de un joc sau o animație.
Ar fi frumos dacă poate el a sărit de pe margine.
Deci ce facem?
Ce construct avem nevoie să avem Răzuibile decid să sări, crezi,
chiar dacă nu ai niciodată văzut Scratch înainte de a?
Da, în spate.
Audiența: Ai nevoie de un în cazul în bloc sau dacă-atunci.
DAVID MALAN: Da, deci unele un fel de bloc sau în cazul în care, dacă-atunci.
Așa că, de fapt, avem una dintre acestea aici.
Așa că așa că if-- lasă-mă să scăpa de mișcarea.
Lasă-mă apropia așa că e mai mare.
Deci, cum despre asta.
Pentru totdeauna, dacă Sensing-- nu ne-am mai văzut asta.
Am nevoie de o expresie booleană.
Și se pare că, dacă atinge ce?
Dacă atinge marginea, Ce vreau să fac?
Ei bine, dacă mă duc înapoi la Motion, pare, oh, mă pot întoarce.
Lasă-mă să trageți asta aici.
De ce nu merg mai departe și rândul său, în jurul valorii de 180 de grade?
>> Și acum, lasă-mă să se mute la sfârșitul anului.
Aș putea pune mișcarea la începutul sau sfârșitul.
Dar, în mod logic, de fiecare dată când mă mișc, am doresc să verifice, eu ating marginea?
Sunt ating marginea?
Astfel că în mod logic, mă întorc, dacă acest lucru.
Așa că hai lovit joc.
>> O.K.
Deci, e ușor buggy, ca să spunem așa.
Și un bug este doar o greșeală într-un program de calculator.
Dar, cel puțin este de lucru.
Și, de fapt, eu pot merge aici.
Și lasă-mă să nu o face 10 pași dintr-o timp, dar acest lucru este tot de animație este.
Acesta este un desen animat toate sau chiar un film este.
Lasă-mă să se mute 20 de pași la un moment dat.
Așa că de 20 de ori mai multe lucruri se întâmplă o dată sau de două ori mai multe, în acest caz.
Și el se mișcă mai repede.
Lasă-mă să schimbe la 30 de ani.
100.
1000.
Si merge foarte repede.
Si acest este-- da, OK.
>> Deci, acum suntem doar joc cu ea.
OK, buggy.
Dar noi îl putem trage din drum aici.
Dar putem face mai distractiv cu acest lucru, de asemenea.
Ce zici de astea-- el e cu susul în jos.
Dar se pare că rămășițe și există, de fapt,
Trebuie să declină, nici academice valoare ce eu sunt pe cale să fac.
Dar dacă eu deschid microfonul, să opriți-l și de a face ceva de genul asta.
Ouch!
>> [RÂDE]
>> Asta a fost adorabil.
Mulțumesc.
Acum, aceasta este ceea ce vocea mea Se pare ca atunci când am tipa aoleu.
Nu cred că am prins râsul tău.
Asta e ok.
Lasă-mă să salveze acest lucru ca "Ouch."
Hai să salvăm acest lucru ca "Ouch".
Și acum ne întoarcem la Scripturi.
Și acum am need-- să vedem, sunet.
Oh, joacă aoleu sunet.
Așa că, dacă mă ating marginea, lasă-mă în primul rând aoleu joacă, și apoi rândul său, în jurul valorii.
Și acum să-l punem în mijloc.
>> [Spunând "Ouch"]
>> De două ori mai repede.
>> O.K.
Dar este literalmente a face ceea ce vreau să spun.
Așa că este de fapt corect, este doar un pic enervant rapid.
Deci să adăugăm ceva mai interesant pentru acest lucru.
Lasă-mă să deschid, de fapt una pe care am făcut în prealabil,
pe bună dreptate numit Pet Pisica, care face acest lucru.
Iată scriptul aici.
Ce se întâmplă acest lucru la face în termeni în limba engleză?
Ce-i asta proiectat pentru a face?
Da, să mergem some-- da?
>> AUDIENTA: Când te PET pisica, ea miauna.
DAVID MALAN: Da, așa că, atunci când PET pisica, va miau.
Deci, cu alte cuvinte, există acum o buclă pentru totdeauna încă, combinate
cu o condiție, combinată cu o expresie booleană,
combinat cu un cuplu funcțiilor, efectul
din care, odată ce mă joc acest program, nu este nimic
se întâmplă până când am muta cursorul mai aproape și mai aproape și mai aproape si--
>> [MIAU]
Atunci e ca petting pisica.
[MIAU]
Doar o singură dată, de fapt tu mutați cursorul peste el.
Acum, de asemenea, am incitat, nu pentru animale de companie pisica, care face acest lucru în schimb.
>> [Meowing]
>> Deci, el doar în mod constant meowing.
>> [Meowing]
>> Dar, dacă voi fi prea close--
>> [Meowing]
>> [HOHOTE]
>> Deci, cum face acest lucru?
Acum am doar un două sensuri furculiță în drum.
În cazul în care atinge indicatorul mouse-ului, apoi reda sunetul leu.
Altfel juca doar sunetul miau, și apoi așteptați trei secunde, astfel
că este un fel de a face foarte liniștit.
In regula.
Deci asta e combinarea unele mai multe idei încă.
Hai să aruncăm o privire la acest exemplu Am incitat fire numite.
Iar aceasta este în mod fundamental diferit în sensul că ea pîrghii
o caracteristică a multor limbaj de programare numit
fire, capacitatea unui program de literalmente face două lucruri simultan.
Într-adevăr, în aceste zile, dacă utilizați Documente Google sau Microsoft Word,
iar documentul este în mod constant verificat ortografic, chiar dacă vă type-- sau
lovit de comandă-P sau Control-P și ceva de imprimare,
este de imprimare în timp ce continuați să tastați.
Programele de azi pot face într-adevăr, mai multe lucrurile dintr-o dată, la fel ca în Scratch
aici.
>> Deci, aici, am două sprite acum, o pasăre și o pisică.
Și, dacă fac clic pe fiecare dintre aceste caractere unul la un moment dat,
Eu văd chiar acum păsării script-uri de la dreapta sus.
Acum văd pisicii.
Bird, pisica lui.
Astfel încât fiecare dintre ele au propriul lor scenariu.
Dar observați, ce piesă de puzzle face ei amândoi încep cu?
Atunci când steagul verde a făcut clic.
Și pasăre, când steagul verde a făcut clic.
Așa că, atunci când fac clic pe steagul verde, ambele aceste script-uri sau programe
vor rula în paralel.
Și veți observa că pasărea este doar viguros mindlessly de pe margine.
Pisica în mod clar a fost programat cu un avantaj strategic.
Și--
>> [HOHOTE]
In regula.
Asa ca pisica a prins pasărea în acest caz.
De ce este asta?
Ei bine, în primul rând o notificare avem doar pasărea doar mindlessly merge
la această locație inițială, și apoi pentru totdeauna,
în cazul în care nu atinge pisica, trebuie doar să se miște.
Iar dacă sunteți pe margine, saritura.
Si doar muta.
Iar dacă sunteți pe margine, saritura.
Dar pisica, între timp, are unele logica suplimentare
care spune astea-- în primul rând, doar asa că acest lucru nu este complet părtinitoare
împotriva pasăre, observați că am a folosit o piesă de puzzle verde acolo
care preia de fapt un număr aleatoriu.
O caracteristică a multor limbi este de a da aveți numere aleatoare sau pseudoaleatoare.
Deci, în acest caz, pisica inițial alege un număr aleatoriu între, cum ar fi,
90 de grade și 180 grade, în esență, așa
că există un pic de variație.
Și apoi pentru totdeauna, dacă se ating pasărea, reda sunetul leu.
În caz contrar, doar spre punctul de pasăre.
Spre punctul de pasăre.
Punct spre pasăre, care este piesă de puzzle în sine, în acest caz.
Ei bine, putem face un lucru aici.
Lasă-mă să deschid programul de evenimente aici.
Și aici avem din nou două sprite, care arata ca aceste două păpuși aici.
Și ce e interesant aici e asta.
Tipul portocaliu are această set de piese de puzzle aici.
Pentru totdeauna a face following-- în cazul în care bara de spațiu este apăsat,
apoi spune, Marco, și apoi a difuzat un eveniment.
Și între timp, tipul albastru are aici astea-- atunci când primiți evenimentul,
spune Polo.
Deci, se pare că în Scratch și în alte limbi,
există modalități pentru două programe sau două script-uri, în acest caz,
la intercomunica, astfel încât, atunci când am a lovit bara de spațiu, spune el Marco.
Iar celălalt aude că, astfel încât să vorbesc, și spune Polo ca răspuns.
Astfel încât să puteți scrie programe care de fapt, interacționează în acest fel.
Iar dacă eu fac asta în schimb, Pot adăuga chiar și variabile,
folosind doar un singur sprite în acest caz.
Asta e deosebit de enervant.
>> [SEAL BARKING]
>> Acum, o notificare in dreapta avem unele logica suplimentare aici.
Cum pot opri acest sigiliu lătrat?
>> [SEAL BARKING]
>> Se pare ca pe-dreapta parte este ceea ce se redă sunetul.
Dar se joacă doar un sunet dacă ceea ce este adevărat?
În cazul în care o portocală variable-- block-- dezactivat este zero.
Cum pot schimba mut pentru a fi 1, ceea ce înseamnă adevărat, face acest lucru mut?
Aparent, celălalt scenariu, eu pot a lovit bara de spațiu, iar acum el se oprește.
Deci, putem avea această comunicare dincolo de script-uri, precum și,
prin schimbul de doar o variabilă peste două așa.
Acum, acest lucru nu este tot ceea ce interesant.
Hai să mergem mai departe și de a face acest lucru și se combină o mulțime de aceste idei cu acest program
aici.
Inainte de a face acest lucru, deși, Ce zici de un voluntar?
Lasă-mă să ia presiunea de din mine, pentru că eu nu fac de fapt
juca acest joc.
Hai să avem pe cineva noi nu s-au văzut înainte.
Trebuie să fii confortabil vine pe scenă aici, pe camera.
OK, hai sus.
Foarte curajos.
Care e numele tău?
>> Idris: Idris.
DAVID MALAN: Imi pare rau?
Idris: Idris.
DAVID MALAN: Idris, mă bucur să te cunosc.
Hai sus.
Și acum, pe cont propriu mobil telefon, nu te joci Pokemon GO?
>> Idris: Nu.
DAVID MALAN: Serios?
Idris: Da.
DAVID MALAN: OK.
In regula.
Ei bine, mă bucur să te cunosc.
Vino pe aici.
Eu nu fac nici.
Așa că ne vom da seama împreună cum să juca acest lucru, pe care cineva de fapt
a mers și a pus în aplicare în Scratch prin schimbarea pisica la esență
caractere diferite toate împreună.
Și, dacă am ecran complet asta aici, vom
pentru a vedea următorul joc împreună.
Încă se încarcă, se încarcă în continuare.
Haide.
Lasă-mă să fac asta.
Haide.
Acest joc este atât de mare încât sa prăbușit.
Așteptare.
Încercați acest lucru încă o dată.
Haide.
In regula.
>> Acolo mergem.
O.K.
Steagul verde.
Deci, aici vom merge.
>> [MUZICĂ]
>> Alegeți nivelul de mijloc aici.
Dați clic pe tipul albastru acolo.
In regula.
Și aveți posibilitatea să utilizați săgeata keys-- în sus, în jos, la stânga, dreapta.
Acum, să considerăm ca facem astea-- și apoi du-te după caracterul acolo.
Da.
Și acum, faceți clic pe el cu mouse-ul.
Oh da.
Mișcare.
Unde e săgeata?
Poftim.
Trebuie să faceți clic acolo.
Da.
In regula.
Așa că acum, mi-am spus că ai o minge Poke, că, dacă faceți clic pe el, se va face acest lucru.
Foarte bine.
În practică pentru ziua de azi, eu a găsit această versiune a jocului de
de fapt, nu foarte greu.
Așa că, dacă vrei să mergi din nou aici, merge pe jos până la această minge Poke.
Și apoi du-te ia un drept.
Încercați să faceți clic pe ea.
Oh, de fapt, asta magazin, aparent.
OK, astfel încât închide.
Niciodată făcut asta înainte.
Poate merge până la chestia asta aici.
Oh, te duci.
Stai, e unul de acolo.
Oh, e altul.
O.K.
Jos.
Da, apăsați.
>> OK, asta e foarte drăguț.
OK, foarte bine făcut.
Acest joc nu este foarte greu.
O.K.
Felicitări.
Aici, avem un CS50 minge de stres pentru tine.
Dar ia în considerare doar un moment ce unele dintre takeaways sunt acolo.
Mai ușor decât jocul real, aparent.
Dar tot ce am de gând aici este un personaj
care are, probabil, un fel din bucla asociată cu ea.
Nu este o pisică.
Este acest personaj în loc.
Și aceasta bucla este doar în mod constant spunând: Dacă săgeata în sus apăsat,
dacă săgeata în jos apăsat, dacă săgeată la stânga sau la dreapta apăsat
săgeată apăsat, deplasa în sus sau în jos sau la stânga sau la dreapta.
Sau, dacă există o altă piesă de puzzle acolo care spune ca atunci cand ating un alt spiriduș,
atunci când se ating unul dintre personaje la minge Poke, în cazul în care se ating,
apoi face acest lucru.
>> Așa că toate ideile pe care le-ați folosit până acum într-adevăr
poate fi pur și simplu aplicate în acest special context, pentru a juca acest joc, la fel de bine.
Lasă-mă să merg mai departe și trage up un alt aici, de fapt.
Lasă-mă să merg mai departe și trage în sus, să spunem, acest lucru.
Acest lucru este ceva ce remixate.
Realizate de unul dintre noastre elevii din Cambridge,
și apoi am trecut prin și a schimbat destul de mult în fiecare caz de la Harvard
la Yale, de data aceasta.
Cineva ar dori să concura împotriva Ivies
aici, într-o altă acumulare din toate aceste idei?
Hai jos, da.
Care e numele tău?
>> DINA: Dina.
>> DAVID MALAN: Adina?
>> DINA: Dina.
>> DAVID MALAN: Dina, vino jos.
Bine, Dina.
Astfel încât acest joc devine mai greu și mai greu, pentru că în acest joc,
există variabile fiind folosite la fel de bine care sunt păstrarea în mod constant de cale
din ce nivel sunt în joc.
Mă bucur să te cunosc.
Veni în jurul valorii de aici.
Si astfel obiectivul aici este de a sorta a face drum printr-un labirint
că acest student pus în aplicare.
>> Și doar pentru a seta scena, fiecare din aceste imagini pe ecran
este propriul său sprite, propriul său caracter.
Deci, acestea au fost de pisici implicit, dar studentul le-a schimbat
la diferitele logo-uri Ivies aici.
Și apoi veți vedea că doar prin utilizarea condițiilor și bucle
și funcții și mai mult, veți obține acest lucru.
>> [MUZICĂ]
[MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
>> Da, OK.
Da, continuă.
Primul nivel este foarte ușor.
Abia ai să merg acolo.
Dar, din nou, ia în considerare, aceasta este doar o buclă de ascultare pentru săgeata keys--
sus jos stanga dreapta.
Și acum, un bloc de detecție.
Foarte frumos.
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
>> Foarte frumos.
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
>> Foarte frumos.
Destul de ușor, Crimson.
In regula.
Levels-- uh-oh.
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
>> Și din nou, în aceste trei coame Harvard,
trebuie doar logica spunând: dacă este pe muchie, saritura.
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
>> OK, ceea ce faci este mai interesant decât de ce.
Foarte frumos.
Uh-oh.
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
Cred că trebuie să te sacrifici.
[MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
Rapid!
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
Frumos.
Asta e ok.
O să-l primi.
Da, da!
Foarte frumos.
>> [APLAUZE]
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
>> Frumos!
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
Am înţeles.
Haide!
În al doilea rând la ultimul nivel.
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
>> In regula.
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
Da.
Buna utilizare a variabilelor aici.
[MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
Da.
[MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
Frumos.
[MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
E bine.
Trebuie să ajungem până la sfârșit.
Acolo.
Oh!
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
>> S-ar putea rula târziu astăzi, dar o să fie în valoare de ea.
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
>> O poți face!
Da!
>> [APLAUZE]
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
>> Asta e foarte greu.
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
>> Vă vom da încă două vieți.
Poți să o faci?
>> [MUSIC - MC HAMMER, "U CAN NOT TOUCH ACEST"]
>> In regula.
Ce zici de o rundă mare de aplauze cu toate acestea.
Trebuie să al doilea la ultimul nivel.
Mulțumesc.
>> [APLAUZE]
>> Deci, acest lucru este doar pentru a spune cât de mult se poate face cu aceste tipuri de lucruri.
Și dau seama, de asemenea, că atunci când piesele puzzle-ului nu exist--
și într-adevăr, acest lucru va fi unul a puterilor cu prima problemă
seturi și beyond-- este de crea de fapt propria ta.
Și acesta este doar un fragment a unuia dintre exemplele
vei fi capabil să joace cu on-line, în cazul în care
dacă nu s-au construit în Scratch ceva ca o piesă de puzzle tuse,
puteți face de fapt tu însuți.
>> Și astfel, toate acestea și mai mult așteaptă.
Si doar pentru a picta o finală imagine a ceea ce este într-adevăr,
înainte în magazin pentru clasa pentru tine, pe baza unor imagini de la colegi
trecut, permiteți-mi să dim luminile ultima dată și vă arată CS50.
>> [MUZICĂ]
>> In regula.
Asta e pentru CS50.
Calup este acum servită.
>> [MUZICĂ]