So dit is my grootste plesier om julle almal welkom hier vandag
vir die eerste lesing van, wel, Inleiding
om Computing en Programmering.
Ook bekend as CS50 of goed, CPSC 100, amptelik hier aan die Yale.
>> So kan ons nie meer opgewonde wees om julle almal hier te verwelkom.
My naam is Patrick Rebeschini.
Ek is die hoof-instrukteur vir die klas.
Ek hier verteenwoordig 'n groep van ongeveer 60 personeellede
wat sal saam met jou deur die semester plaas.
Hierdie getal is amper 60 van ons.
Tog langs die buitengewone vlak van verpligtinge
dat ons sit in hierdie klas, maak CS50 die klas
aan die Yale Universiteit wat bied die grootste vlak van ondersteuning
aan almal van julle.
En ons kan nie meer op trots te wees bied hierdie klas weer hier.
>> Trouens, as jy sal gou ervaar, CS50 is veel meer as 'n klas.
Dit is 'n gemeenskap.
En jy sal deel wees gou van hierdie gemeenskap.
Dit is die tweede jaar dat Yale bied hierdie klas.
Ons is besig om op die uiterste sukses van verlede jaar, waar
vir die eerste keer, hier aan hierdie universiteit,
voorgraadse leer assistent was in klaskamers aangeneem.
Dit het alles begin met hierdie klas verlede jaar.
>> So as jy weet, is die klas geleer saam met die Universiteit van Harvard.
Om hierdie kursus leer Ons is relying-- ons kan
reken op die groot kundigheid van David Malan en die Harvard-span.
En Dawid het geleer CS50 vir goed, 10 jaar nou.
En elke jaar is hy stoot die grense
en die verbetering van die klaskamer ervaring.
Weereens, kan ons nie meer gelukkig te wees voortgaan om hierdie samewerking met hulle.
>> Trouens, een van die interessantste dele,
Ek sal sê van die bestuur van hierdie klas nou, sowel by Harvard en hier aan die Yale,
is die werklik ongelooflike kruisbestuiwing
van idees, wat gemik is op die verbetering van die leerervaring aan julle almal.
So as 'n gevolg van hierdie uitgebreide samewerking tussen die twee
universiteit, CS50 is trots om kondig die nuwe weergawe vanjaar
met merkbare veranderinge.
David sal ons almal te vertel oor hulle nou.
So please-- hierdie wese gesê, moet asseblief saam met my
en welkom om 'n gee groot applous
Dawid verwelkom en Harvard-span hier by Yale.
>> [Applous]
>> David Malan: Dankie.
Dankie.
Dit is CS50, Harvard Universiteit se en Yale Universiteit se bekendstelling
om die intellektuele ondernemings van rekenaarwetenskap
en die kuns van programmering.
En wat dit beteken, is dat hierdie kursus Uiteindelik is oor probleemoplossing.
Inderdaad baie van julle dalk het uit die hoërskool kom
of het die afgelope paar jaar deurgebring wonder wat sommige van jou vriende
het verlede jaar of in ander klasse.
En tog, die werklikheid is, maak nie saak wat ons
doen aan die einde van die dag in die klas, dit gaan wees oor probleemoplossing.
>> En as sodanig, miskien neem n mate van gerusstelling in die feit
dat 73% van die studente wat neem hierdie klas, sowel hier
aan die Yale asook aan die Harvard, het 'n CS klas nooit tevore geneem.
So as jy hier is die vergadering in die gehoor vandag wonder
waarom jy hier sit in die gehoor vandag,
of miskien het jy net gevolg saam met 'n paar vriende,
of miskien het jy het nie 'n bietjie nuuskierig oor wat
Rekenaarwetenskap en ontwikkeling is, besef
dat die meeste van jou klasmaats te links en regs van jou
is baie in dieselfde demografiese.
>> En inderdaad, as ons kyk by verlede jaar statistieke
binne die studenteliggaam van CS50, beide hier en aan die Harvard, 58% van die studente
beskryf hulself as minder gemaklik.
9% is meer gemaklik.
En dan 33% is iewers tussenin.
En daar is geen formele definisie van wat dit beteken emmers beteken.
Jy weet soort jy minder gemaklik as jy.
Jy voel 'n bietjie ongemaklik met miskien om in die klas.
Jy is nie heeltemal seker of 'n rekenaar wetenskap klas is uiteindelik vir jou,
en besef dat jy in 'n baie goeie geselskap.
En inderdaad die gradering, en die assessering,
en die terugvoer, en al wat ondersteuning struktuur in die klas
is uiteindelik baie geïndividualiseer.
Meer nog as die meeste enige ander klas deur ontwerp.
En inderdaad, wat uiteindelik aangeleenthede in hierdie klas is nie
soveel waar jy eindig up in vergelyking met ander,
maar waar jy in week 11 of laaste, en met betrekking tot jouself in week
0 hier ons eerste.
So wat beteken dit?
Wel, dit beteken van diegene 73% van studente verlede jaar wat nooit plaasgevind het
'n CS klas voor, deur die begin van die semester hulle
was rondspeel in 'n taal genoem nuuts af, wat ons ons
sal vandag hier te sien.
En teen die einde van die semester het hulle gegaan
deur hierdie hele lys van uitdagings.
Begin met 'n taal genoem c.
Implementering, wat met die eerste oogopslag, gaan
om 'n bietjie van 'n uitdaging wees vir sommige, maar redelik bevredigend wanneer jy
kry Super Mario weerkaats op en af ​​'n piramide
geïmplementeer word, al is dit met net iets genoem ASCII art.
Implementering laaste year-- wat die studente verlede jaar toe
het daarna is implementeer hul eie Caesar cipher en vigenere cipher.
So enkripsie-algoritmes waarmee jy kan
geskarrel inligting en dan Ontleden inligting om geheime boodskappe te stuur.
Die spel van 15.
As jy onthou van kinderjare of 'n partytjie guns,
daardie klein plastiek spel waar jy beweeg die getalle op, af, links en regs
om te probeer om hulle te kry ten einde, eintlik die uitvoering van daardie wedstryd
en die oplossing van die logika daar vereis.
En dan dabbled ons in forensiese verlede jaar.
>> So teen die middel van semester, Studente wat nog nooit
gebruik hul sleutelborde vir hierdie doel voor,
is sagteware skryf om te herstel, om so te praat,
JPEG of foto's wat ons gehad het per ongeluk
weggelaat uit 'n digitale geheue kaart van 'n kamera.
Herstel geheime boodskappe van die binnekant van die beeld 'n bitmap,
en ander sulke tipes grafiese sowel.
>> Ons het toe transitioned te gee die hele klas 'n woordeboek.
Net 'n baie groot tekslêer met 150,000 Engelse woorde.
En almal uitgedaag om een ​​of ander manier te lees, om so te praat,
daardie woorde in die geheue.
In die geheue van die rekenaar.
En beantwoord dan vrae van die vorm, is dit 'n woord?
Is dit 'n woord?
Eintlik net die implementering 'n speltoetser.
En dan daag elke ander met 'n groot board--
'n leier raad oor wie sien kon gebruik die minste hoeveelheid van geheue,
in die minste hoeveelheid tyd om eintlik speltoets groot dokumente.
>> Ons transitioned van toe tot implementering van dié eie webbediener.
So nie maak webblaaie in tale soos HTML en CSS, as jy vertroud is.
Maar eintlik implementering die bediener wat
luister op die internet vir versoeke van bruisers
en dan reageer op die versoeke.
Toe die implementering van ons eie e-handel soos webwerf, waar
studente kan koop en verkoop aandele.
Teken in byna real time voorraadkwotasies van Yahoo Finansies.
En toe studente om te sien hoe hul portefeulje ontwikkel.
En dan uiteindelik 'n mash up van Google Nuus en Google
Kaarte waardeur studente deur termyn deur terme einde
het die vermoë om te klik, en ronde, en soek op 'n Google kaart.
En dan sien al die nuus artikels wat
is proksimaal tot die spesifieke gebiede.
So werklik gaan van nul tot 60.
>> En langs die pad met dit wat ons gehad het verlede jaar genoem, hacker toevoegings.
Dit verhoog die bar verder vir dié van julle
wat dalk baie goed het 'n goeie hoeveelheid ervaring wat in daardie 9%
van meer gemaklik.
So besef dat daar ' 'n baie hoë plafon
selfs binne daardie uitdagings vir studente
kom uit 'n ander agtergrond.
Want aan die einde van die dag, ons is uiteindelik
gefokus eenvoudig op hierdie punt.
>> Maar wat beteken dit bedoel, probleemoplossing?
So laat ons stel voor dat ons distilleer dit so.
So probleemoplossing is regtig net hierdie soort prentjie.
So jy het insette om 'n probleem, iets wat jy eintlik wil op te los.
Die doel is om uitsette te kry, 'n oplossing vir die probleem.
En dan in die middel is wat ons 'n swart boks sal noem.
Jy hoef nie noodwendig weet of selfs omgee wat binne daardie black box.
Al wat jy weet, is dat wanneer jy voed insette in dit,
jy hopelik kry uitset of 'n oplossing daaruit.
En terwyl ons vandag sal kyk sowel by die insette en uitsette,
ons sal langtermyn, en oor die loop van die hele semester,
fokus op wat binne daardie boks.
>> En daarin sal lê iets genoem algoritmes.
Stap vir stap instruksies vir eintlik die oplossing van 'n paar probleme.
Maar wat is 'n voorbeeld van 'n paar insette?
So miskien 'n eenvoudige ding op die begin van elke skooljaar, iemand
dalk wil bywoning te neem.
So ons kan doen een, twee, drie, vier, vyf, ses,
en hoe sou ek hou spoor van daardie inligting.
Ek mag dalk net gaan een, twee, drie, vier, vyf, ses.
En net gebruik soort enkelsyfers.
>> Of ek kon eintlik teken dit 'n bietjie langer termyn.
En hoe doen ek verteenwoordig die hele die mens in hierdie kamer?
Wel, ek kan iets soos te doen, OK.
Ek sien een persoon.
Alles reg.
Ek 'n ander persoon te sien, 'n derde persoon, en dies meer.
Maar niemand tel mense hou hiervan.
So letterlik, die meeste van ons as ons selfs van plan om iets te teken op alle,
is waarskynlik gaan om te gaan een twee drie vier,
Miskien 'n bietjie fancy, vyf, ses, sewe, agt, nege, tien en dies meer.
>> En dit is eintlik 'n stelsel genoem unêre.
Uno, soos uno impliseer een, waar jy net een letter van die alfabet.
Jy het net hierdie hash merk.
En ek, vir doeltreffendheid, net getrek hierdie hash punte, uiteindelik
as reguit lyne.
Maar ek kon hulle getrek so min stok figure.
Waar om te verteenwoordig een persoon, een insette,
Ek trek net 'n stok figuur of 'n gemors merk.
Maar dit is nie al wat ekspressiewe.
>> As alles wat ek het is hierdie hash punte, wat nog te sê stok figure,
hoe kan ek verteenwoordig iets soos die nommer 15?
Of 15 mense in die kamer?
Ek kan hê om iets te doen soos 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15.
Dit maak net nie baie goed skaal.
As die insette kry groot, ons behoefte aan 'n beter stelsel as dit.
>> En dit blyk dat die stelsel wat rekenaars gebruik
is nie al wat verskil van wat ek en jy weet.
Trouens, die meeste mense in hierdie kamer, selfs al is jy onder diegene wat minder
gemaklik, nie noodwendig weet hoe jou Mac of PC regtig werk,
jy het waarskynlik ten minste gehoor het, dat onder die enjinkap is 0 en 1 se.
Die sogenaamde binêre stelsel.
So ja, rekenaars het meer as net hash punte in hul woordeskat,
maar nie so veel van 'n woordeskat soos ons mense.
>> Inderdaad, ons mense nie gebruik binêre.
Bi beteken 2, 0 en 1.
Maar desimale, decaBDE wat beteken dat 10, 0 tot 9.
So ons het 'n baie meer ekspressiewe vermoëns in ons normale menslike wêreld.
Maar Ek sal argumenteer dat hierdie stelsels, binêre, en desimale, en alles
tussen en buite, is eintlik al baie bekend is.
Byvoorbeeld, oorweeg hierdie voorbeeld hier, 123.
So dit werklik is, natuurlik, 'n aantal ons weet as 123.
Maar al wat ek net het was net hierdie patroon van simbole, karakters so te praat.
Soort van vorms op die bord in die kryt.
>> Maar hoekom doen ons onmiddellik en hierdie intuïtief verstaan ​​as 123?
Wel, as jy soos my in graad skool,
jy waarskynlik geleer dat dit die 1s kolom, dit is die kolom 10s,
dit is die kolom 100'e.
En hoekom is dit nuttig?
Wel, dit is 'n eenvoudige rekenkunde jy nou doen van 'n patroon van simbole te kry
om 'n aantal verstaan ​​ons intuïtief.
Is wat, 100 keer 1, en dan 10 keer 2 en 1 keer 3,
wat natuurlik is net 100, en dit is 20, en dit is drie.
En so as ons diegene saam op ah voeg.
So daarin lê die soort van redenasie agter hoekom hierdie stel simbole
beteken iets waardevols en numeriese.
>> Wel, rekenaars doen presies dieselfde ding, maar hulle net so hoog as 'n mens kan reken.
Terwyl ek in staat was om tel so hoog as drie.
En in werklikheid, as ek aan die gang gehou kon ek gaan so hoog as nege in hierdie stelsel.
Rekenaars het net nulle en kinders in hul alfabet.
>> So wat beteken dit?
Wel, dit beteken net dat as 'n rekenaar wil verteenwoordig, sê die getal 0,
Miskien met behulp van drie characters-- drie letters van die alfabet so te sê,
dit is hoe 'n rekenaar verteenwoordig 0.
So nie alles wat scary tot dusver.
Dit is presies wat ons mense sou doen.
En in werklikheid, die meeste van ons sou net ignoreer die voorste nulle in elk geval.
>> 'N Rekenaar, as dit wil om die nommer 1 te slaan,
blyk aan die gang om dit te doen.
En 'n rekenaar te stoor die nommer 2 is nie
gaan die unêre stelsel doen, wat ek verwys na vroeër.
Dit is eintlik van plan om dit te doen.
En dit is waarskynlik waar die patroon begin
minder voor die hand liggend is vir die meeste mense geword.
Dit is 2, dit is 3.
Vreemd genoeg, dit is nou 4.
En nou is dit regtig nie lyk dalk kriptiese te wees,
maar dit is nie as ons kyk na wat binêre werklik beteken.
Dit beteken dat jy twee letters van jou alfabet.
So twee moontlike karakters vir elke plekhouer.
>> So wat werklik beteken ons gaan 'n 1s plek, of 2s plek nodig,
'n 4s plek en dan 8, en 16, 32, en 64.
En wat is die verskil daar?
Soos dit is 1, 2, 4, 8, 16, 32, 64.
En voordat ons moes 110, 100,000, 10000.
Wat is die ooreenkoms daar?
En wat is die patroon?
Ja.
STUDENT: Magte van 2 in plaas van magte van 10.
David Malan: Ja.
Magte van 2 plaas van magte van 10.
En so as ek wou hou gaan, 8, 16s en so forth--
maar nou as jy hierdie soort van idee, nou die binêre stelsel
is eintlik redelik eenvoudig.
Hoekom is hierdie patroon van 0 se in die wêreld van rekenaars 0?
Wel, want dit is 4 keer 0, 2 tye 0, 1 keer 0 en jy 0.
>> Hoekom is dit die nommer 1?
Dieselfde redenasie, maar nou is ons 'n 1 in die 1 kolom.
Hoekom is hierdie 2?
Ons het 'n 1 in die 2s kolom.
En hoe sal ek my dan verteenwoordig sê, die nommer 7 in binêre?
Sê harder.
>> STUDENT: Drie 1s.
>> David Malan: Drie 1s.
So 1, 1, 1, want ons het net nodig 4 plus 2 plus 1 gee my 7.
Alles reg.
So vandaar hoe doen ons verteenwoordig 8 met 3 plekhouers?
Ja.
>> STUDENT: 1, 0, 0, 0.
>> David Malan: Ja 1, 0, 0, 0.
En tog miskien, ek soort van tegnies nodig
na 'n ander plekhouer voeg aan die direksie.
As ek wil dat ek inderdaad pas nodig om so iets te doen.
So ek moet eintlik nou gebruik die 8's kolom, en dit is goed.
Maar die snaakse ding in die rekenaar is dat dit gaan vir ons iets om kos.
Jy moet meer RAM op jou rekenaar nou.
Jy moet meer geheue omdat jy iets nodig het
fisiese te slaan wat addisionele bietjie, om so te praat.
Binêre syfers.
En inderdaad alles wat gebeur het hier, soos die desimale stelsel,
As ons die toevoeging van getalle op en op en dan op, klim ons op 5-6 te 7-8
dit is soos die uitvoering van die 1, letterlik.
En dan is alles anders gaan terug na nul.
>> Maar hoe weet ons eintlik verteenwoordig hierdie dinge fisies in 'n rekenaar?
Wel, aan die einde van die dag, die enigste fisiese insette gaan in my rekenaar
hier is dit netsnoer, sodat elektrisiteit of elektrone van die muur af.
En so hoe kry ek uit iets fisiese so om werklik
verteenwoordig 'n idee soos hierdie plaas.
>> Wel, wat kan ons doen?
Ons kon dink dat, al die regte, Miskien as elektrisiteit vloei
Ek kon dit stoor en vashou aan dit.
En as ek vashou 'n paar elektrisiteit,
dit is net gaan om te arbitrêr verteenwoordig 'n 1.
En as ek trek die prop en daar is niks,
jy weet dit is net gaan om na willekeur verteenwoordig 'n 0.
>> So as iets is daar, 1.
As daar niks is daar, 0.
Of jy kan dit maak 'n bietjie meer visuele.
Hier is 'n 0.
Daar is niks interessant lopende op die rug van my selfoon.
Maar as ek toelaat dat 'n bietjie bietjie van elektrisiteit te laat vloei,
selfs al is dit 'n bietjie helder hier, my flitslig het.
So ek stoor 'n aanklag en ergo, die selfoon verteenwoordig nou 'n 1.
So 0 1.
>> So met 1 iPhone hoe hoog kan ek reken die gebruik van hierdie soort benadering?
Ek bedoel om 1.
Dit is nie al wat dwingende.
So, wat meer kan ons doen?
Wel, laat ons sien, is niemand op hul telefoon nou dat ek kan leen?
Enigiemand wat 'n selfoon het met 'n flitslig gebou in?
Mag ek leen?
Ek hoef nie dit ontsluit.
Alles reg.
Dankie.
Laat my leen.
Alles reg.
So as ek blaai nou en hier, wat ek verteenwoordig nou?
Ja.
Dit is dus 'n drie, want dit is in die 1s kolom, dit is in die 2s kolom.
So 1 plus 2 is 3.
En dan as ons probeer om te kry regtig creative-- O, dankie.
Baie preventive.
Alles reg.
Ek het nou drie iPhones.
Alles reg.
>> En nou this-- Ek sal nie doen geen verdere as dit.
Wat doen ek wat nou?
Net sewes.
Maar ek nodig het fisies meer geheue in hierdie geval.
Maar dis al wat dit is.
Jy kan dink wat gaan is-- dankie you-- binnekant van jou selfoon
as net 'n skakelaar wat word aangeskakel en af.
>> En as jy al ooit gehoor die woord transistor.
Of as jy al ooit gehoor van die bemarking praat Intel binnekant,
dit is die woord van die soort hardeware dis binnekant van jou rekenaar.
Intel maak CPUs, sentrale verwerking eenhede,
wat soos die brein binnekant van jou rekenaar.
En dit CPUs en dinge wat hulle verbind
om baie, baie klein skakelaars het.
Miljoene, miljarde skakelaars wat kan óf op of af.
>> So rekenaars, gelukkig, soos ons Mac en PC,
kan manier hoër as 7 of 8 tel want hulle het baie meer as drie
of vier stukkies.
Manier om meer as die ekwivalent van die drie flitse dat ons net gehad.
Maar dit is nou begin om te kry mooi oninteressant vinnig.
As ek wil nou eintlik in staat wees iets meer interessant te doen,
Ek wil in staat wees om te spring om iets soos hierdie.
>> So ASCII, dit is nie regtig 'n nuttige afkorting nie, maar American Standard Code
vir inligting wisselaar.
Dit beteken net 'n paar jaar gelede het ons mense besluit,
Weet jy wat, ons wil in staat wees om te doen meer met rekenaars as net getalle.
Ons wil nie hê hulle om net wees duur sakrekenaars,
Ons wil graag in staat wees om dinge te doen soos woordverwerking, al is dit baie eenvoudig.
Later het ons e-pos en ander sulke media.
>> En so het die wêreld besluit 'n paar jaar gelede volgens hierdie stelsel ASCII,
jy weet wat?
In sekere tipes programme enige tyd wat jy
sien die ekwivalent van die aantal 65, soos die patroon van stukkies.
En ons kon die doen wiskunde hier op die bord.
Die patroon van stukkies wat 65 verteenwoordig.
Moenie dink dat dit as 65 in desimale.
Dink aan dit as arbitrêr, maar wêreldwyd, konsekwent as die hoofstad
A.
En dan is die wêreld besluit, jy weet wat?
Kom ons neem 'n ander patroon van stukkies.
En as ons ooit sien die getal 66, laat ons net
aanvaar dat dit is die kapitaal B. Vinnig uit na H
en ek, as jy sien 72 of 73, wat moet 'n H en 'n B, onderskeidelik.
En so lank as wat die hele wêreld is dit eens oor hierdie.
Sodat wanneer jy 'n e-pos ontvang, of jy sal 'n lêer te kry op 'n USB stick,
of iets soos that-- toe sien jy dat patroon van stukkies,
jy weet dat dit behoort te wees brief of 'n ander brief.
>> Maar dis konteks spesifieke, reg.
'N e-pos program te interpreteer hierdie dinge as karakters,
maar 'n grafiese sakrekenaar of sakrekenaar kan verteenwoordig of interpreteer
hierdie dinge, natuurlik, as letters.
>> So met wat gesê het, 'n vinnige bietjie hersiening.
Dit is miskien 'n drie karakter e-pos wat al na my gestuur.
Onder die enjinkap is dit alles in 0e en 1e, maar ons gee nie om.
Ons gaan begin om abstrakte bo die 0e en 1e briewe.
En as ek sien 'n patroon van 0e en 1e dat werklik verteenwoordig 72, wenk, wenk, 73,
en dan 33, wat is die boodskap?
>> STUDENT: [onhoorbaar]
David Malan: So as jy dink terug net 'n oomblik gelede, MI
was die boodskap wat ek probeer kommunikeer hier omdat H is 72,
Ek is 73, en nou 33-- julle wou nie hierdie noodwendig vooraf weet,
maar dit blyk asof jy eintlik sien meer van die grafiek en die stelsel
dat die mensdom ooreengekom jaar gelede, dit is net 'n uitroepteken.
En inderdaad, daar is 'n patroon van simbole en getalle vir elke karakter
wat jy mag hê op jou sleutelbord.
>> Alles reg.
Kom ons abstrakte verder.
As ons nie wil net hê dinge soos getalle en letters,
ons eintlik wil grafiese implementeer.
Wel, as jy ooit hoor die afkorting RGB.
Dit is soort van nou gedateer, maar dit is nog steeds soort daar.
RGB is rooi, groen, blou.
En dit is net 'n stelsel om te sê, jy weet wat,
Kom ons gebruik drie stelle stukkies.
'N Stel van 8 bisse, nog 'n stel van 8 stukkies, en 'n ander stel van 8 stukkies.
En laat ons gebruik daardie stukkies te slaan hoeveel rooi ons
wil op ons skerm, hoeveel Groen ons wil op ons skerm,
en hoeveel blou ons wil op ons skerm.
En dit beteken net dat as jy 'n lot-- 'n groot aantal vir rooi,
dit beteken vir my baie rooi.
As jy 'n groot aantal vir groen, gee my 'n baie groen.
En as jy net 'n bietjie blou of 'n klein aantal soos 33,
Gee my 'n bietjie blou.
En as jy gebeur met diegene kombineer drie groottes, so te sê,
jy this-- jy skaars kan sien op die projektor hier, maar dit donker
skaduwee van geel of bruin.
>> Maar dit wil sê, die gebruik van daardie patroon van 8 plus 8 plus plus 8--
dat patroon van 24 stukkies is hoe 'n rekenaar sou
winkel wat skaduwee van geel in een klein dot n pixel op die skerm.
So ons het gegaan van 0e en 1e na desimaal getalle tot letters van die alfabet.
Of meer interessant, gekleurde kolle.
>> Wel, wat natuurlik kom dan nou?
Wel, wat is 'n beeld wat jy sien op Facebook of kry in 'n e-pos?
En dies meer?
Wat is die definisie tegnies van 'n beeld?
Ja.
Wat is 'n beeld saamgestel uit as jy lyk regtig naby aan jou skerm?
Ja.
Dis net 'n hele klomp van die pixels.
In werklikheid, as jy neem jou laptop miskien later op,
en lyk regtig nou by it-- afhangende
oor hoe duur die laptop is en hoe 'n hoë gehalte van die skerm is,
jy dalk baie goed sien al die klein kolletjies op die skerm.
>> En diegene kolle of pixels, wat beteken daar is
24 stukkies wat elke pixel in daardie foto wat jy sien op Facebook,
of dat jy net neem op jou iPhone onlangs.
En so dit is hoe ons om dinge soos beelde.
Wel, wat is 'n video?
'N Video is net 'n stel van grafiese vlieg deur die skerm weer
en weer en weer.
En so videos regtig, net patrone bisse verteenwoordig roosters, rye
en kolomme van kolle, vlieg beeld op die skerm deur,
nadat beeld, na die beeld, ook bekend as
Rolprente.
So dit is dit vir insette en uitsette.
>> Al wat ons nou het, is 'n aanname dat jy
weet wat, as ons wil 'n rekenaar om inligting voor te stel,
Ons het 'n stelsel om dit te doen nie.
Ons kan dit doen met 0'e en 1s aan die einde van die dag.
Maar ons kan abstrakte, sodat om te praat, op die top van wat
ten einde meer verteenwoordig interessante dinge.
En hier op in CS50, en in rekenaarwetenskap meer algemeen,
Ons staan ​​nou op die skouers van al die mense wat
kom voor ons wat dit uitgepluis het.
En nou net aanvaar dat rekenaars kan insette en uitsette verteenwoordig.
>> Maar nou kom ons eintlik iets met hulle te doen.
So 'n algoritme is net 'n stel instruksies stap vir stap,
vir die oplossing van 'n probleem.
En wat kan 'n mens so 'n probleem te wees nie.
So dit is 'n ou skool tegnologie, 'n telefoon boek.
En binnekant van 'n telefoon boek is 'n hele klomp van name en nommers.
En daardie name is oor die algemeen gesorteer alfabeties.
>> So as ek wou iemand in kry hierdie telefoon boek soos Mike Smith,
Wat is 'n tipiese menslike gaan doen?
Wel, jy kan eenvoudig oop it up, kyk na die eerste bladsy.
Ek kan nie sien Mike Smith.
Draai by die tweede bladsy, Ek kan nie sien Mike Smith.
En net voort te gaan en gaan.
Is dit stap vir stap benadering korrek?
Ja.
Dit is soort van dom, reg.
Dit is ondoeltreffend, reg.
Omdat dit gaan om vir ewig te neem Mike te kry, maar dit is korrek.
Want as Mike is hier Ek sal hom wel vind.
>> So, wat is 'n bietjie meer redelike persoon gaan doen?
Hulle kan nog steeds oop vir die voorkant, en miskien vlieg deur die telefoon boek
twee bladsye op 'n slag.
Twee, vier, ses, agt.
Ek kan nie eintlik fisies doen dit baie goed.
Maar in teorie, hierdie moet wees twee keer so vinnig, twee bladsye op 'n slag.
Is hierdie algoritme korrek?
>> STUDENT: [onhoorbaar]
David Malan: Nie noodwendig nie.
Goeie.
Hoekom dit caveat?
>> STUDENT: Omdat hy kon wees op 'n van die bladsye wat jy draai.
David Malan: Ja.
So selfs as ek nader en nader.
Wat as hy net per ongeluk, deur slegte Sterkte, landgebonde tussen die twee bladsye
dat ek vlieg oor?
So ons het 'n oplossing vir hierdie.
Ons moet eintlik om dan sê, wag 'n minuut,
Miskien as ons te ver gaan, miskien as ons druk op die T artikel,
vir T kom nadat Smith, dan moet ons ten minste verdubbel ten minste een bladsy terug.
So fixable, maar daar is 'n voorwaardelike kwessie daar.
Dit is dus twee keer so vinnig, maar jy kan het om terug te verdubbel net 'n bietjie.
Maar niemand in sy kamer, selfs al is jy nie regtig gebruik telefoon boeke nie,
gaan begin by die begin.
Wat gaan jy doen op soek na Mike Smith?
Jy gaan ongeveer gaan na die S se.
Of as jy nie regtig ' die cheat sheet op die papier,
jy gaan ten minste gaan ongeveer die middel.
En in elk geval nie om die voorkant van die boek.
Jy gaan om af te kyk.
En wiskundig jy waarskynlik gaan die M artikel te sien, wat
is min of meer in die middel.
En dan gaan jy besef, wat waar is?
Waar is Mike?
>> STUDENT: [onhoorbaar]
David Malan: Ja.
So hy is oor aan hierdie kant.
En so wat kan jy doen?
Wel, beide figuurlik en letterlik kan jy die probleem in die helfte skeur keer?
En dan moet julle weet dat jy kan gooi hierdie helfte van die probleem weg.
En nou is ons gelaat met fundamenteel dieselfde probleem, maar dit is die helfte so groot.
En so nou wat die stel instruksies?
Wat is die algoritme vir die vind van Mike Smith?
Dit is presies dieselfde ding.
>> Nou dit gebeur, moet die M wees artikel en dit is die Z artikel,
maar die fundamentele formule is nog steeds dieselfde.
Gaan hard aangespreek die middel, neersien O, darn dit.
Nou is ek in die T artikel, Ek het te ver gegaan.
Maar ook hier kan jy toepassing daardie selfde logika.
Gooi die helfte van die probleem weg en nou is ons
gelaat met 'n probleem wat 'n kwart van die grootte.
En ons kan herhaal, en ons kan herhaal, en ons kan herhaal totdat teoreties
daar is net een bladsy links op wat Mike óf is of nie.
>> So, wat is so kragtig oor hierdie idee?
Ek bedoel Na alles, dit is redelik intuïtief.
Niemand gaan om te begin by die begin van die telefoon boek
en flip 1000 bladsye aan Mike Smith vind.
Die meeste mense in hierdie kamer gaan om min of meer daardie soort algoritme doen
behalwe vir die skeur.
>> En so hoekom het ons dit doen?
Wel, kyk na die doeltreffendheid.
Oorweeg net hoeveel beter dit algoritme was deur dit af te breek
in sy samestellende dele.
So, wat het ek eerste doen?
Ek opgetel het die telefoon boek.
En 'n rekenaar wetenskaplike, en 'n programmeerder,
meer in die algemeen dit blyk, gaan om te begin tel alles by 0.
>> Hoekom?
Wel, dit is 'n bietjie vreemd dat ons mense tel, oor die algemeen,
vanaf een.
Want wat is die kleinste getal Ons kan duidelik verteenwoordig gebaseer
selfs op ons ou laerskool wiskunde?
Wel, dit was 0, of dis in desimale of binêre.
En so sien jy in die wêreld vir Rekenaarkunde en ontwikkeling,
spesifiek, het ons begin tel alles van 0.
>> So ek opgetel die telefoon boek stap 0.
Ek gaan oopmaak om die middel van die telefoon boek.
En dit is inderdaad 'n uitdrukking van wat ek gedoen het.
En dan stap twee was blik op die name.
Stap drie is 'n bietjie verskillende konseptueel.
Ek vra myself die vraag.
As Smith is een van die name, Ek gaan 'n besluit te neem.
As hy onder die name, dan gaan ek Mike bel.
En ek gaan 'n besluit te neem gebaseer op die stukkie inligting.
>> Maar as dit nie, as Smith is vroeër in die boek aan die linkerkant,
Ek gaan oop tot in die middel van die linkerhelfte van die boek.
En dan is hier is die slim, Ek gaan om terug te gaan na stap twee.
Ek gaan om te sorteer van staan ​​op my eie skouers
en net herhaal die vorige werk wat ek gedoen het.
Maar die werk wat ek verlaat het, is minder, en minder, en minder.
Maar dit is nog steeds gaan werk.
Maar as Mike, in plaas daarvan, is later in die boek om die regte,
Ek gaan oop tot in die middel van die regter helfte van die boek,
gaan dan terug na stap twee.
>> Maar daar is eintlik 'n vierde scenario.
Mike se óf hier, of hier of hier, or--
>> STUDENT: Nie daar.
David Malan: daar is nie.
En inderdaad, as ons nie verwag hierdie vierde en laaste scenario
ons program kan wees karretjie of gebrekkig in een of ander manier.
Anders, ophou in die geval dat Ons het glad nie gevind Mike.
En inderdaad, as jy al ooit opgelet jou rekenaar hang, of al
Skielik woord of 'n ander program verlaat net onverwags,
en soms jou fout boodskap is letterlik dat.
Hierdie program sluit onverwags.
Dit kan wees vir 'n aantal redes.
Maar soms is dit iets so eenvoudig soos dit.
Die menslike programmeerder wat geskryf het dat sagteware
het nie besef dat, oh, is daar 'n voorskyn ding wat eintlik kan gebeur.
En as jy nie kode te skryf om vang wat vierde scenario,
Dit is inderdaad soms onverwagte wat die rekenaar eintlik kan doen.
Kom ons noem 'n paar van hierdie dinge.
So in geel hier, ek het beklemtoon terme
van nou af moet ons net gaan funksies noem.
Funksies in die wêreld van ontwikkeling is net soos aksies,
state van aksies.
So haal, oop vir, kyk op, bel, oop, oop, op te hou.
Dit is 'n funksie, 'n prosedure, 'n aksie, 'n aantal sinonieme
sou so goed werk.
Nou wat is hierdie dinge wat nou in geel?
As anders as anders as anders, hierdie is wat
ons gaan om te bel toestande in programmering,
of takke, besluit wys, as jy wil.
Maar hoe weet jy wat vurk in die pad te neem, om so te praat?
Ons moet na vore te bring die terme na regs
daar, wat beteken dit Ja, geen vrae.
Hierdie ware valse vrae.
Smith onder name?
Smith het vroeër in 'n boek?
Smith later in boek?
Dit is vrae aan waarvan daar 'n ja of nee,
Of anders gestel ware of valse, of anders gestel, een of nul antwoord.
>> En intussen is daar ' net 'n laaste stukkie.
Dit het hier watter soort effek?
Of jy die program voor, hoe sou jy
beskryf wat stap sewe en 10 doen?
Wat het jy gesê?
STUDENT: 'n rekursiewe stap.
David Malan: 'n rekursiewe stap.
Ja, in wese.
Dit is tegnies iteratiewe hier as jy vertroud is.
Maar ons sal terug kom.
Maar dit is iets wat duidelik doen.
Weereens, dit beïnvloeding van 'n siklus, 'n lus, reg.
Jy letterlik gaan terug na 'n paar vorige stap.
En so ja, dit gaan implementeer 'n soort van siklus.
Maar jy gaan nie kry vas in hierdie eindeloos, reg.
Want as jy voortdurend nagaan is Mike hier, of na links, of nie hier nie,
uiteindelik het hy is nie van plan om daar te wees.
En jy kan net ophou heeltemal soos per die laaste reël.
>> So dit is dit vir woordeskat.
En dit is wat ons wil oor die algemeen noem pseudokode kode.
Dit is nie 'n werklike taal.
Dis net baie kortaf Engels, maar dit dra die punt.
Daar is geen formele struktuur hier.
Jy gebruik net dis min woorde, maar as duidelike woorde
as wat jy kan om jou idee te kommunikeer.
>> Nou hoe goed is dat algoritme en hoeveel beter is dit?
Wel, ons hoef nie te kry in die besonderhede van getalle of enigiets
soos dit.
Maar ons kan kyk na die vorm van hierdie oplossing.
So as ons net voorstel sommige xy plot hier op die horisontale as hier.
Kom ons noem die omvang van die probleem.
En 'n rekenaar wetenskaplike sou tipies gebruik N as die veranderlike hier.
So N bladsye, of N mense in die kamer, of wat dit ookal is wat jy probeer om te tel.
>> En dan op die vertikale as op die gelaat, wil hê dat die tyd om op te los.
So hoeveel sekondes doen dit neem my na Mike Smith vind?
Of hoeveel stappe neem dit?
Hoeveel bladsy beurte neem dit?
So dit is hoeveel dit kos My tyd om 'n probleem op te los.
En ons kan trek die eerste algoritmes helling, as jy wil,
as net hierdie reguitlyn in rooi.
En ek sal dit N bel.
>> Hoekom N?
Hoekom is dit net hierdie een tot een verhouding?
Wel, as Verizon of ongeag selfoon maatskappy
voeg nog 'n bladsy te die telefoon boek volgende jaar,
wat dalk Mike een stoot nog 'n stap nader aan die einde,
afhangende van waar daardie bladsy is.
En so het die effek mag dalk net wees om 'n meer tweede voeg.
Of nog 'n bladsy beurt.
A 12:59 verhouding.
>> In teenstelling hiermee, die tweede algoritme.
Hoeveel vinniger was dat intuïtief?
Waar ek het twee bladsye op 'n slag?
Ja.
>> STUDENT: [onhoorbaar]
>> David Malan: Ja.
So dit gaan twee keer so vinnig te wees.
En ons sou hier vestig wat afhangende van die skaal.
Dit is nog steeds 'n reguit lyn, maar laer as die rooi lyn.
Want ter wille van 'n paar nommer bladsye, as wat dit neem
jy hierdie baie stappe met die eerste algoritme,
dit gaan jy half neem soveel stappe met die tweede.
En so het die geel lyn beskrywing van die tweede algoritme
is net gaan om te wees onder dit.
>> Maar wat is werklik kragtig is om dink oor die derde en laaste,
en wonder bo wonder mees intuïtief algoritme, dat dit vorm het.
Tegnies sou ons 'n beroep dit 'n logaritmiese kurwe.
Meld basis 2 van N in hierdie geval.
Maar dit beteken nie regtig saak nie.
Wat belangrik is, is werklik die wese verskillende vorm wat dit het.
En jy kan oorweeg hoe baie korter die lyn werklik
is op die lange duur.
Dit is voortdurend toeneem.
Dit maak nie perfek plat uit.
Maar dit groei steeds soveel stadiger as die probleem kry groter en groter.
En jy kan dink dit hierdie way-- as Verizon nie net
voeg 'n bladsy aanstaande jaar, maar dubbelspel die aantal bladsye in die telefoon boek,
die eerste algoritme dalk neem dubbel soveel stappe.
As dit is 1000 bladsye hierdie jaar, 2000 bladsye volgende jaar,
Mike dalk dat daar nog baie verder weg wees.
Dit is dus 1,000 ekstra stappe om hom te vind.
Die tweede algoritme dalk net 500 meer wees
stappe om hom, want weer vind, Ek is wat deur dit twee op 'n slag.
>> Maar wat van die derde algoritme?
As Verizon verdubbel die grootte van die telefoon boek
volgende jaar van 1000 tot 2000 bladsye, hoeveel meer stappe
is my derde algoritme gaan neem?
Ja, dit is net een.
En dit is die kragtige idee.
Jy kan bladsy byt 1000 neem uit daardie probleem op een slag.
En nou as jy kyk na 'n dom scenario,
maar dit soort van praat met die krag van hierdie soort intuition--
As 'n telefoon boek gehad, soos, 4000000000 bladsye, voel soos 'n baie groot probleem.
En inderdaad, kan dit neem my 4000000000 bladsy
draai na Mike Smith in daardie vind geval met die eerste algoritme.
Maar hoeveel stappe sal dit in die derde algoritme
Mike vind onder vier miljard stukkies papier?
So 4000000000 skeur jy in die helfte.
Jy kry twee biljoen.
En een miljard as 500 miljoen 250 miljoen, 125 million-- maar dit
voel soos hierdie is gaan 'n rukkie neem.
Ek dalk nodig 32 vingers tel op dat 'n hoë.
Maar dit is wel so min as bladsy trane 32.
Jy kan gaan van vier miljard na bladsy skeidslyn een
die oorspronklike aantal bladsye in die helfte 32 keer
totdat jy links met net dat enkele bladsy.
>> Nou, natuurlik, ek is hier verneuk.
Dit is nie dat ons net word soort dom heeltemal met die eerste twee
algoritmes.
Ek verneuk in 'n sekere sin, of regtig ek gebruik te maak van 'n aanname.
Wat is waarheid oor die telefoon boek in sy oorspronklike vorm wat toegelaat
my daardie derde algoritme selfs gebruik?
Ja?
Publiek: Dit is analfabeet.
David Malan: Dit is analfabeet, reg?
As dit net in 'n ewekansige orde, dit is 'n vermorsing
van tyd, hierdie hele gesprek.
Ek moet by elke kyk bladsy al is dit in enige volgorde
Mike Smith vind voordat ek kan aflei hy daar is of nie.
En so het die hoek ons uitgeroei is dat ek
aanvaar dat iemand anders in hierdie geval het die werk vir my.
En sodat uiteindelik nooi die vraag, goed, wag 'n minuut.
Hoe kan jy sorteer 1000 bladsye van name en nommers?
Dit is eintlik 'n ander probleem, iets
ons sal terug te kom om in die toekoms.
Maar as jy dink oor webwerwe soos Facebook en Google vir Gmail
en dinge soos Google se eie soek indekse,
wanneer jy miljoene of biljoene stukkies data wat deesdae gestoor,
searching-- en nie te praat sorteer diegene problems--
is uiteindelik 'n uitdaging vir homself.
En inderdaad, hierdie dan is net een van daardie uitdagings
dat ons sal kyk na.
>> So nou kom ons neem 'n oomblik en 'n blik op CS50
self en gee jou 'n gevoel van wat in die winkel van hierdie semester.
Inderdaad, as jy dit nog nie gedoen, moenie 'n blik op hierdie URL.
En as Patrick verwys om vanjaar ons
'n beduidende belegging al hoe meer ter ondersteuning van die kursus se
struktuur in terme van die Tas en die Cas, kantoorure,
afdelings beskikbaarheid, en digitale materiaal aanlyn, sowel.
Inderdaad, in terme van die kursus se lesing, ons is hier vandag.
En die verwagtinge hierdie jaar amptelik van die kursus
word by te woon tot vandag, die loop se laaste lesing, en 'n kursus
min of meer in die middel van die semester met elke lesing tussen
algemeen beskikbaar gestel op 'n Vrydagmiddag
aanlyn, sowel vir Yale studente en Harvard studente vanjaar.
Trouens, een van die fundamentele veranderinge is
dat ons die aanneming by Harvard n paradigma baie
soos ons gedoen het hier verlede jaar en nou vanjaar,
sodat soortgelyke, het ons nog verfilm mees lesings deur die loop in Cambridge
maar maak dit beskikbaar vroeër as wat ons in die verlede
sodat dié van you-- as jy wil, byvoorbeeld,
Neem 'n voorsprong op materiaal op die eerste naweek eerder
as die tweede naweek, sal jy toegang tot hierdie soort van materiaal,
gesoek, Inlegbare, hyperlinkable om verwante hulpbronne al die vorige.
In terme van die onderwerpe, om jou te gee 'n gevoel van trajectory-- die kursus se
en 'n paar van hierdie kan jargon vir wees nou, maar nie vir lank nie, seker wees.
Ons begin vandag, uiteindelik, met kyk na een programmering
taal genoem krap.
Ons sal daarna oorgang volgende week iets genoem C
en dan kyk na ander gebou blokke vir die oplos van probleme,
dinge genoem skikkings en algoritmes, hoe ons dit gebruik geheue tot ons voordeel
en nadeel, en dinge soos datastrukture,
en dan na die stertkant van die klas kyk na masjienleer
en kyk na 'n ander taal genoem Python,
hoe die web werk, hoe die internet meer oor die algemeen werk, protokolle soos HTTP,
tale vir databasisse soos SQL, JavaScript vir die web,
en uiteindelik vasmaak al daardie saam.
>> En so ja, op die einde van die dag, jy
sal nie leer in hierdie klas Scratch of C of Python of SQL of JavaScript.
Jy sal plaas meer algemeen leer rekenaarwetenskap en die fondamente
daarvan, en jy sal leer hoe om die program
in 'n aantal van hierdie tale langs die pad.
So ja, een van die doelwitte van die kursus op die ou end
is om al die kursus se opstyg opleiding wiele deur die laaste weke
sodat Na dit, kan jy terug te keer na jou eie fields--
of dit is of is nie rekenaarwetenskap
of ingenieurswese, in die natuurlike wetenskappe, kuns, geesteswetenskappe, of beyond--
en bring 'n paar van hierdie idees natuurlik en hierdie veld se
idees en praktiese vaardighede om jou eie domein
ten einde probleme daarin op te los.
>> Wat ons hier sal moet doen intussen in die meeste Donderdae na vandag
is met die hoofde van die kursus se voorste wat ons ipv jy bel
van die kursus se probleem stelle.
So elke week wanneer ons Het jy 'n probleem gestel, sal ons
loop deur in 'n plek soos hierdie uitdagings die kursus se
bied jou 'n paar wenke en truuks en ontwerp tegnieke.
Maar as jy nie in staat aan diegene wat persoonlik te maak,
besef daardie selfde hulpbronne sal ingesluit
deur een van die kursus se onderwysassistente
in die probleem stel hulself, sowel.
>> Die probleem sit vanjaar, in teenstelling met verlede jaar, wat gebaseer is op terugvoer,
sal nog bekend gemaak word op Vrydae.
Maar eerder as om te wyte die daaropvolgende Vrydag,
jy daardeur gee net sewe dae, sal effektief wees as gevolg van 10 dae later.
En inderdaad, dit sal beteken dat hulle sal oorvleuel met 'n naweek.
Maar ons hoop dat hierdie jaar veral dié sal
studente in staat stel om beter te akkommodeer eb en vloei in hul skedules,
of dit nou akademici of extracurriculars of atletiek
of akademiese trimester seisoen.
Jy kan óf voor-vrag of back-vrag jou week fokus op CS50 gebaseer
op werklike natuurlik vrag jou eie week se.
>> Die probleem sit hulself sal 'n verskeidenheid van tale te dek,
alhoewel ons sal fokus oorwegend vroeg op C
voordat ons daarna fokus op hoër vlak, meer web-sentriese tale.
En dan 'n paar vrae here-- moet jy 'n klas soos CS50 neem
as 'n eerstejaar?
So absoluut.
En inderdaad, dit is nie noodwendig iets
jy moet uitstel totdat jy sny jou tande op ander vorme van klasse.
Maar eerder, oorweeg wat vir baie studente,
myself ingesluit terug in die dag, dit is 'n baie onbekende veld,
veral as jy nooit het neem 'n AP CSA
of iets soos dit in die hoërskool.
Maar besef dat vroeg, of dit nou hierdie kursus
of 'n ander inleidende kursus, nou is inderdaad die beste tyd,
Ek dink, om 'n paar nuwe pad te vind of 'n paar nuwe akademiese belang, sowel.
En dan neem met ander courses-- sodat een van die belangrikste verskille hier
versus Harvard is dat ons net neem vier kursusse per semester
aan die Harvard vir een of ander rede.
En julle eintlik trek af 'n paar 36 kursusse in totaal
in die loop van jou vier jaar, wat beteken oor die algemeen vier of vyf
klasse.
En ek dink dit is nogal redelik om te sê en om ontken CS50, deur ontwerp, is
waarskynlik nie die tipe klas dat jy moet tipies
neem met vier ander kursusse vir 'n totaal van vyf
omdat psets is deur ontwerp redelik intensief.
Inderdaad, ek geleer dit terug in die dag.
Ek sou nie beskryf CS50 en rekenaarwetenskap, programmering
soos so baie hard as wat dit is net tydrowend.
Dit is nie die soort ding waar na ete, jy
kan terug gaan na jou dorm kamer, sit, en begin
fokus op die pset dink, alles reg,
Ek kan nie nou bang dit uit vanaand en dan skuif
op my volgende onderwerp die volgende dag.
Soms moet jy net druk 'n muur.
Jy het foute in jou kode.
Jy hoef nie noodwendig weet hoe om 'n probleem op te los.
En een van die belangrikste kenmerke van Programmering vir myself tot vandag toe
is jy net soort van moet neem 'n stap terug soms, slaap op dit
of dink oor dit in die loop van 'n draf of 'n ander aktiwiteit,
en kom dan terug om dit vars.
En jy hoef net die vensters van die tyd.
>> En inderdaad, dit is hoekom ons het verleng die bedrag van die tyd
beskikbaar vir die probleem stelle vanjaar en ook, per dat URL
Ek sit vroeër as om Wat is nuut hierdie semester,
afgewerk die probleem stel sodat hulle is fundamenteel nie minder streng,
en die wegneemetes is nie minder nie, maar daar is 'n baie minder voorwerk,
'n baie minder informatieverzameling wat jy nodig het om doen aan die voorkant van elke probleem stel,
as jy sien, voordat jy kan eintlik duik in die vleis daarvan.
So besef dat hierdie en ander veranderinge is op die horison
om beter te akkommodeer studente, maar uiteindelik om seker te maak
dat die wegneemetes is inderdaad so hoog as moontlik te maak.
Dus, terwyl meer werk as wat dit dalk in 'n tipiese klas,
Ons hoop dat die opbrengs vir jy en die wegneemetes vir jou
en die vaardighede en idees waarmee jy die uitgang van
is al hoe meer dwingende as gevolg daarvan.
En te kry wat jy en hierdie there-- is een van die belangrikste wegneemetes,
soos Patrick verwys earlier-- is die kursus se ondersteuningstruktuur.
So nie net CS50 het een van die grootste natuurlik personeel op die kampus.
Dit het ook een van die die meeste voorgraadse.
Inderdaad, CS50 verlede jaar was die eerste klas
aan 'n voorgraadse dosente het.
En getuig van die sukses doen nou baie ander kursusse binne Yale CS
het dat, as well.
En vir studente, spesifiek, sal hierdie Tas en natuurlik assistente
wees ondersteuning van 'n hele netwerk van ondersteuning hulpbronne,
onder hulle afdelings of recitaties, weeklikse geleenthede
meer intieme gesprekke het en resensies van materiaal geteiken
vir verskillende spore, vir studente minder gemaklik, meer gemaklik,
of iewers tussenin.
Dit sal die beskikbaarheid van volg die lesings deur 'n paar dae per week
op Maandae en Dinsdae.
En dan kantoor hours-- een-tot-een geleenthede
vir hulp van die kursus GR'e en Tas sal wees op Woensdae en Donderdae
en Sondae om verskeie tye, wat almal
sal gepos word op die webwerf van die kursus se selfs meer as verlede jaar, sowel.
>> Maar wat is die sleutel tot CS50, indien nie weliswaar 'n bietjie ongewoon,
is kultuur die kursus se Ons het probeer om te kweek,
beide in Cambridge vir baie jare en nou onlangs in New Haven.
En in werklikheid, kom hierdie Saterdag, indien jy dit nog nie gehoor het,
is CS50 legkaart Dag, wat het niks te doen met rekenaarwetenskap
maar is geheel en al ontwerp om te stuur 'n boodskap wat rekenaarwetenskap is
oor probleemoplossing.
En inderdaad, as jy wil vennoot met een of twee of drie vriende
en vorm 'n span vir CS50 Legkaart Dag, 'n blik
op die advertensies wat op die pad uit.
En drie ure van pizza en raaisels en pryse wag.
En inderdaad, vir die eerste keer vanjaar,
dit sal nie gesamentlik gehou word met Harvard.
Dit sal hier onafhanklik wees aan die Yale.
So hou 'n oog uit vir diegene as jy nie.
Die meeste elke Vrydag in die semester ons probeer om 'n groot klas te maak
voel klein en bring sowat 50 studente om middagete saam met personeel die kursus se
met alumni, vriende uit bedryf te praat
oor hoe die lewe is soos na 'n klas soos CS50 en oor die somers
en nadat hulle gegradueer het.
So hou 'n oog uit vir uitnodigings na daardie.
Vir die eerste keer ooit sal vanjaar ons
hou die eerste keer ooit CS50 kodering wedstryd, 'n opsionele opt-in geleentheid
mid-semester, nadat ons almal gehad het sowat ses of sewe weke van ontwikkeling
in C onder hul gordels om mee te ding, As julle dit weer sou choose
op teams-- probeer los soveel uitdagings
as wat jy kan in programmering met vriende van jou teen ander.
>> En in die rigting van die stert van die semester sal ons handves paar busse,
eintlik 'n geruime tyd te spandeer in Cambridge, as jy wil
wil ons aan te sluit vir die sogenaamde CS50 hackathon.
Op 19:00 sal ons begin.
Rondom 09:00, sal ons pizza het.
Rondom 01:00, sal ons tortilla het.
En niemand nog wakker op die busrit huis rondom 05:00,
ons sal ophou om af vir pannekoek by IHOP op die manier home--
'n 12-uur geleentheid om te verdiep jouself met klasmaats en personeel
in finale projek deur die loop se, wat is 'n geleentheid
om goed te gaan as die Natuurlik se probleem stelle
en ontwerp en implementeer die meeste enigiets van belang vir jou,
wat uiteindelik sal wees featured hier in Commons.
Die eerste CS50 billike was verlede jaar, 'n einde-van-semester uitstalling
of viering van wat almal in die klas het sy einde bereik,
veral diegene, weer, wat het van niks om iets te doen, van nul tot 60,
sonder vooraf agtergrond en uitstal, uiteindelik,
iets vir die hele kampus en, As online, die wêreld om te sien, asook.
>> Nou, hierdie hier is net 'n paar van die Tas en GR'e dat CS50 moontlik maak.
Laat my toe om 'n uitnodiging van daardie personeellede
wat is hier om te kom op die verhoog, sowel as hoofde die kursus se
om 'n paar woorde van bied inspirasie, sowel.
>> ANDI: Hi, ouens.
Kan julle luister na my?
Dankie vir die saam met ons op hierdie pragtige, reën Donderdagmiddag.
My naam is Andi.
Ek is 'n junior in Berkeley.
En saam met Stelios en somer, Ons sal jou drie hoof onderrig wees
assistente vir hierdie komende jaar.
So, dink ek, die opsteek van hands-- hoeveel van julle
nie van plan is om 'n CS groot of baie duik diep
in rekenaarwetenskap as hier 'n groot?
Ontsagwekkende.
Dit is briljant.
>> So ek is eintlik 'n globale sake en kognitiewe wetenskap hoofvak.
Ek het letterlik Yale met die bedoeling
van nooit hoef te kyk na 'n aantal ooit weer in my lewe.
Toe ek by Yale gekom, dit was iets wat nooit was op my radar.
Ek wou om te leer oor die poësie.
Ek wou om te leer oor buitelandse sake.
Ek wou om te leer oor waterverf tekeninge.
Ja, bied ons 'n klas op waterverf tekeninge.
>> Maar ek was nog nooit regtig belangstel in enigiets STEM verwante.
Maar dan moet die ouer ek het, hoe meer het ek besef
dat elke veld regtig in 'n paar sin in diens rekenaarwetenskap,
of indien nie rekenaarwetenskap, berekening.
Trouens, vir my globale sake sluitsteen projek,
ons gebruik data analytics om terroriste-aanvalle te ontleed
vir Boko Haram in Nigerië.
En so soos jy kan sien, ongeag van watter groot beland jy besig
of wat jou belangstellings hier aan die Yale is, programmering en die fondamente
van watter vaardighede is super nuttig.
En CS50 regtig is goed toegerus om soort leen baie van sy hulpbronne
vir julle, ongeag hoe gemaklik is jy
of hoe belangstel jy in die voortsetting van die klas.
>> Somer se plan om 'n bietjie gesels bietjie oor wat julle is
gaan om te leer oor vanjaar.
SOMER: Hi, almal.
Ek is somer Wu.
Ek is 'n junior in Morse.
En ek eintlik begin as 'n CS50 student myself.
So drie jaar gelede, was ek op 'n oorbruggingsjaar.
Ek sal nooit geneem 'n CS klas in die hoërskool,
maar ek het gedink dat daar in my vrye tyd, afkoel sou wees om te leer hoe om die kode.
So ek het 'n vinnige Google-soektog, gesoek wat aanlyn beskikbaar is,
en sien hierdie video met Muppets en DJs en koel webwerwe.
Ek is soos ek wil leer hoe om dit te doen.
>> Toe het ek die kursus, en ek net verlief geraak op dit.
Maar ek onthou wat so jaloers op die kinders wat die hackathon kon bywoon nie,
woon legkaart Dag, by te woon kantoor ure, kry hulp van Tas persoonlik.
En so het ek nooit gedink dat ek die kans sou kry
om hier betrokke wees by die kursus wat eerste het
my belangstel in die rekenaar wetenskap en is die rede waarom
Ek is vandag 'n rekenaarwetenskap as hoofvak.
So ek sal jou waarsku, hierdie klas gaan jy rek.
Dit gaan jou uit te daag.
Maar dit is ook van plan om leer hoe om dinge te doen
dat jy nooit gedink jy kon.
>> Stelios: Hi, almal.
My naam is Stelios.
Ek is 'n junior in Branford Kollege en 'n CS groot.
Ek is ook van Athene, Griekeland.
Ek sien regtig uit daarna om aan al van jou,
gesels met jou op artikel, by kantoorure by Vrydag middagetes.
Ek is baie opgewonde, want Ons het so baie moeite
in die skep van 'n unieke ondersteuning struktuur vir julle almal
om jou ervaring met te maak die loop van die beste moontlike.
En ek hoop dat hoewel die meeste van jy het waarskynlik nie geneem 'n CS
Natuurlik voor, ek hoop dit is CS50 vir jou is wat belangstelling vonke
om verder na te streef rekenaar wetenskap in die toekoms,
soos dit gedoen het met so baie mense in die verlede.
So dankie vir die feit dat hier, opgewonde om julle te sien.
Jason Hirsch.
JASON Hirsch: Hi, almal.
My naam is Jason Hirsch.
Ek woon in Silliman.
En Ek het na Harvard as 'n voorgraadse en as hoofvak sosiale studies
en minored in rekenaarwetenskap.
En een van my hoof rolle hier is om hierdie wonderlike personeel te ondersteun
omdat hulle te ondersteun julle almal.
Trouens, dit is nie almal van hulle.
Daar is 55 voorgraadse en gegradueerdes hier om julle almal te ondersteun.
En ek daresay een van die beste dele van die kursus vir jou
al is om te werk met hulle kry om hulle te leer ken,
kry om hulle te sien, beide in CS50 en buite CS50 hierdie semester
en vir baie semesters te kom.
So hopelik sal jy neem die Natuurlik, want hopelik jy
kry om met die wonderlike personeel het ons op die verhoog.
>> SPREKER: Wel, laat ek klaar deur te sê dit sal pret wees.
David Malan: Wel, te danke aan ons hele span.
Laat my toe om die ligte verdof en toelaat dat 'n meer van ons span,
albei van Cambridge en New Haven, om te groet as hierdie ouens lêer af.
En daarna sal ons oorgang na die eerste van ons program verbintenisse
met hierdie taal genoem krap.
So te danke aan die span.
Kom ons verdof die ligte en hoor van 'n paar ander.
>> [Applous]
>> [Video speel]
>> -Die Missie van CS50 is om jou te maak meer gemaklik met 'n totaal nuwe manier
van denke, hierdie computational ingesteldheid.
-Dit Gemaak rekenaarwetenskap interessante, wat
is iets wat ek het nie regtig besef was moontlik totdat ek het die klas.
-Ek Was soos, whoa.
Ek is regtig vertaal my gedagtes in 'n rekenaar op die oomblik.
>> -Even As jy nie enige agtergrond het in Rekenaarwetenskap of enige ervaring,
dit is eintlik die klas vir jou.
>> -So ek wil beslis my studente om net
kry opgewonde oor rekenaarwetenskap.
Nie net programmering, maar dink soos 'n rekenaarwetenskaplike
is regtig wat ek wil probeer om my eerstejaars leer.
>> -CS50 Is hard en lonend.
>> 'n Ervaring.
>> -Extravaganza.
>> -Dit Is ons bring na die volgende vlak.
>> [Speel van musiek]
>> -Die TFS is, dink ek, die lewensaar van die kursus.
>> I 'm opgewonde om my studente ek help
het dat Ha oomblik om te besef wat hulle eintlik probeer
om te doen, om uit te vind hoe om 'n pset doen.
>> -CS50 Is beslis 'n harde natuurlik.
Maar in teenstelling met enige ander Natuurlik regtig aan die Yale,
Dit het so 'n groot, ondersteunende gemeenskap.
-Jy Absoluut nie nodig om iets te weet
oor kodering in staat wees om die kursus te neem.
-Dit Is ongelooflik om ver te kyk hoe mense kom in een semester.
>> -Jy Is nie alleen sit in jou kamer te leer kode,
maar dit was meer as net 'n klas.
Dit was 'n belewenis.
-Die Beste manier om begrippe te leer en te verwerk hulle is deur die onderrig van ander.
>> -Wat Is die telefoon verdeel?
>> [Speel van musiek]
>> -en Dit is CS50.
>> [Speel van musiek]
>> -Dit Is CS50.
>> -Got 'N probleem?
Skeur dit in die helfte.
>> [Speel van musiek]
>> Gooi dit weg.
>> David Malan: Alle reg.
So laat ons tackle-- in 'n bietjie bietjie, terloops, is dit
was hierdie tradisie vir een of ander rede vir 10 jaar
om koek te dien by die begin en die einde van CS50.
So wag jy aan die einde van vandag, bykomend tot leerplanne,
sal 'n paar koek wees as goed, en personeel die kursus se hallo sê.
oorgang Maar nou, laat ons na die eerste van ons tale, waar
ons sal net 'n week en 'n spandeer regtig probleem gestel op hierdie domein, krap.
En jy sal vind as jy het geprogrammeer voor, baie
van die idees en die moontlikhede is bekend aan jou.
Maar jy sal dit vind dit is pret langs die pad
om uit te vind presies hoe om te vertaal sommige van die idees wat jy reeds weet
om hierdie spesifieke omgewing om werklik beïndruk jou familie
en vriende met jou werk, wat kan gaan aanlyn, as jy so verkies, daarna.
>> En as jy het geen vorige ondervinding en is
onder die meerderheid van studente minder gemaklik,
besef dat baie van die idees wat ons net verken met reality-- dinge
soos telefoon boeke en bywoning en so forth-- vertaal
redelik goed tot 'n rekenaar, maar nie as jy gebruik,
Aanvanklik het 'n taal soos hierdie.
So dit is 'n program wat geskryf is in 'n taal, die sogenaamde C.
En ons sal nogal 'n bietjie te spandeer tyd in C, uiteindelik.
Maar die kans is, sal dit 'n bietjie kyk kriptiese om jou met die eerste oogopslag.
Trouens, daar is 'n baie vreemde sintaksis, hakies, hoek tussen hakies,
krullerige draadjies, aanhalings, en kommapunte.
En inderdaad, as jy duik in ontwikkeling vir die eerste keer
kyk na en probeer om dinge te skep soos hierdie, eerlik, jy kry so vasgeval
so dikwels in net dom minutia dat niks
intellektueel interessante daaroor.
>> Maar dink as wat jy kan skep dieselfde program-- wat
as jy dalk soort aflei, waarskynlik afdrukke "Hallo, wêreld" een of ander manier.
Ons kan dieselfde idee distilleer in net twee stukke van die legkaart, as jy wil.
Inderdaad, Scratch is interessant want dit is hierdie grafiese taal.
Jy kan sleep en hierdie stukke van die legkaart wat net grendeling
As dit maak logies sin om dit te doen.
En so in Scratch, Ons sal gou sien, dit is
hoe jy daardie selfde sal implementeer program, met net twee stukke van die legkaart
wat pretty much doen wat hulle sê.
>> Maar ons sal sien in net 'n oomblik dat sommige van die boustene wat ons verwys
vroeër en nog 'n paar is al wat uiteindelik gaan uitmaak
sommige van ons vroegste programme.
Ons gaan dinge soos functions-- net
aksies wat iets te doen, soos groet, wêreld.
Ons gaan sirkelroetes het, dinge wat siklusse veroorsaak
weer en weer, net soos ons het 'n oomblik gelede met soek
vir Mike Smith.
Veranderlikes, soos in algebra, as jy het x of y, wat 'n aantal kan stoor.
Wel, in 'n program, kan jy eintlik stoor meer as net getalle.
Jy kan woorde en sinne bewaar en grafiese en ander dinge nog.
Boolse uitdrukkings, net questions-- ja of nee, waar of onwaar is.
Voorwaardes, besluitneming gebaseer op die ja / nee antwoord.
>> En dan liefhebber dinge soos verskeidenheid en drade en gebeure
en 'n aantal ander funksies, maar wat almal
karteer baie mooi om baie vriendelike blokke soos hierdie.
Dit gaan 'n funksie, 'n wees pers legkaart stuk wat net sê
wat sy naam is-- in hierdie geval, sê.
En dan dikwels, is daar 'n wit blokkie dat jy
kan tik in of sleep 'n waarde in.
En dit is wat oor die algemeen genoem 'n argument of 'n parameter.
Dit is 'n manier om die wysiging van die verstek gedrag van 'n legkaart
stuk of 'n funksie sodat dit nie iets persoonlike vir jou hou en gesê:
hallo, wêreld of hello, Andy of hello, Jason of 'n ander vonnis in plaas.
>> As jy wil om te sê dat 'n lot-- letterlik forever--
jy kan 'n ander te neem legkaart stuk genoem vir ewig
en net landgebonde die twee bymekaar hou hiervan.
En dit loop, soos die prentjie stel, beteken net sê hallo, wêreld vir ewig,
weer en weer en weer.
Of, as jy net wil om dit te doen 'n eindige aantal kere, soos 50 keer,
daar gaan 'n ander legkaart wees stuk vir that-- herhaal 50 keer.
>> Intussen, as jy wil 'n veranderlike het
in hierdie taal is ons oor om te speel met,
jy kan 'n oranje blok soos hierdie gebruik.
En hierdie veranderlike Ek arbitrêr het ek vir heelgetal.
En ek het net sit dit gelyk aan 0.
En so miskien ek, in hierdie case-- hierdie variable--
verteenwoordig iemand se telling in 'n wedstryd.
Jy begin by nul, en elke keer as jy maak 'n doel of iets soos dit,
jy 'n ekstra punt.
>> Jy kan vrae in Scratch vra.
As ons sleep en legkaart stukke in 'n oomblik soos hierdie,
jy kan vrae soos vra, Wel, is ek minder as 50?
Miskien moet jy 50 punte te wen.
En so sou dit wees die vraag wat jy wil vra.
Of, meer algemeen, jy kon sê is x minder as y,
waar daar twee veranderlikes betrokke?
Nou, hierdie een is 'n baie groter met die eerste oogopslag,
maar regtig nie alles wat meer kompleks.
>> Dit is net 'n kombinasie toestande en veranderlikes
en Boolse uitdrukkings te vra drie questions-- is x minder as y?
As dit so is, sê so.
Sê, x is minder as y.
Want as x groter as y, moet anders x gelyk aan y wees.
En terwyl met Mike Smith, Daar was vier scenario's, hier
in die wêreld van getalle, x is óf minder as, groter as, of gelyk aan.
Al wat ons het, is drie vurke in die pad.
En dan is daar liefhebber legkaart stukke soos hierdie
vir dinge soos skikkings, waar ons gaan in staat wees om inligting te stoor.
Ons gaan blokke wat toelaat sien ons uit te voer verskeie drade,
Nog 'n kenmerk ons ​​sal gebruik, en dan ook iets genoem gebeure.
Maar voordat ons by daardie punt en skep selfs,
uiteindelik, ons eie persoonlike legkaart stukke, laat ons
eintlik die program self oop te maak.
>> Dit is dus te krap.
Dit is beskikbaar by scratch.mit.edu.
En jy is welkom om te speel is nou of later, as well.
Dit gebeur met die regte pad weergawe wees.
Vir mense wat nie noodwendig 'n groot internet,
jy kan die aflaai Dieselfde sagteware, sowel.
En daar is eintlik net drie komponente van hierdie sagteware.
Op die boonste linkerkantste hoek van die skerm is die soort stadium
dat nuuts af, wat by verstek lyk soos 'n kat, woon binnekant.
Hy kan beweeg, af, links, en regs en doen 'n aantal ander dinge,
en kan enige aantal maniere gebaseer kyk op die kostuums wat jy ken aan hom.
Maar dit is wat ons sal noem 'n sprite, 'n soort van karakter.
En jy kan verskeie hê karakters, soos ons sal gou sien.
>> In die middel is nou al hierdie legkaart stukke en hierdie kategorieë of palette
daarvan.
So nou, Ek het op Motion.
En so ek sien al die -Motion verwante stukke van die legkaart of blokke,
sodat funksies wat te doen met hulle opgaan,
af, links, regs of 'n ander operasie.
Maar as Ek het op lyk, jy kon dinge sien soos die seggenskap blok
wat ons gesien het net 'n oomblik gelede.
En as ek op die Beheer klik, sal jy sien dinge soos die herhaling en die ewigheid
en die as blok wat Ons het 'n oomblik gelede.
>> En so sal jy vind dat ons sal net krap
die oppervlak van 'n paar van die stukke van die legkaart bymekaar,
maar dit is alles redelik intuïtief en punt en klik.
Inderdaad, is Scratch ontwerp vir jonger studente
om te help gee hulle 'n uitlaat vir kreatiewe denke.
En tog wonderlik, dis 'n wonderlike stepping stone
om presies die idees wat ons gaan verken in C en Python en JavaScript,
ook.
>> Op die regterkant, uiteindelik hier, is dit, die sogenaamde skrifte gebied.
En dit is net die skoon lei met wat jy begin om 'n program te skryf.
En ek sal presies dit.
Nou, ek weet toevallig waar dinge want Ek het dit 'n paar keer gedoen.
Maar ek weet dat onder die gebeure kategorie,
Daar is dié blok here-- wanneer groen vlag gebruik.
En sien as ek zoom uit en terug in hier op die verhoog,
Kras lewens binne hierdie bietjie vierkantige wêreld,
bo wat 'n groen vlag en 'n rooi stopteken.
So gaan stop, onderskeidelik.
>> En so wat doen wat ek wil doen wanneer dit groen vlag word gebruik?
Wel, laat ek gaan na daardie kategorie Lyk.
En laat ek gaan voort en sleep dit.
En sien so gou soos dit kry naby, hulle is soort van magnetiese.
So as ek nou laat gaan, dit breek saam mooi en skoon.
En ek gaan om voort te gaan en sê iets soos hallo, wêreld
vir twee sekondes.
Laat my zoom uit en klik nou die groen vlag, en sê: hello, wêreld.
Alles reg.
So dit is alles goed en wel.
Nie alles wat opwindend.
Kom ons maak dit 'n bietjie cuter.
En ek weet dat in vooraf, Scratch gebeur
kom met 'n paar oulike dinge soos hierdie.
So speel klank miauw tot gaar.
So laat ons dit doen.
>> [MIAAU]
>> AW, dit is adorable.
En as ek klik dit again--
>> [MIAAU]
>> En weer.
>> [MIAAU]
>> Maar ek hou om te Scratch bezielen.
Maar ek kan beter as dit doen.
Hoekom weet ek nie sleep net drie van hulle nie.
En nou is dit drie keer so adorable.
>> [Miaau]
>> OK, eintlik is dit 'n bietjie creepy.
So het ons iets in tussen is daar nodig.
As ek na beheer, dit lyk soos Daar is eintlik 'n wag blok.
En so sien as ek hover oor there-- en laat my 'n bietjie groter maak.
As ek hang, gaan dit te snap in plek.
So wag 'n sekonde, wag 'n sekonde.
Kom ons getref groen vlag weer.
>> [Miaau]
>> OK, 'n bietjie meer natuurlike, maar nie baie doeltreffend nie.
Dit is dus korrek as my program se doel is drie keer miaau.
Maar dit is nie baie goed ontwerpte.
Ek hou nogal van sny 'n paar hoeke.
Ek het 'n bietjie lui.
Wat voel like-- wat moet ek lyk swak gedoen het, sou jy sê?
Ja?
Ja, in die middel.
Publiek: Gebruik meer geheue as jy nodig het om
want jy gebruik so baie verskillende lyn.
David Malan: Ja, so meer lyne.
En dit sou nie noodwendig geheue wees, alhoewel dit kan gesien word as die manier.
Maar dis definitely-- daar is ontslag.
En ek letterlik soort gesleep en laat val dieselfde dinge.
En as jy soort extrapolate-- as dit is nie voor die hand liggend here-- goed, hoe sou
Ek miauw 30 keer?
Ek sou sleep en, soos, 30 meer pare stukke van die legkaart.
En sekerlik is daar 'n beter manier.
En ons het 'n beter manier gesien.
Wat intuïtief sou wees hoe beter manier?
Ja, net gebruik om 'n lus.
Geen kopie en plak.
En inderdaad, enige tyd hierdie semester as jy begin
vind jouself te sleep, of eintlik kopieer en plak,
gevaarlike gewoonte om in omdat dit is net nie baie te onderhou.
Byvoorbeeld, as ek wil verander die klank na iets anders,
Ek moet dit nou verander in drie plekke in plaas van net een.
Omdat inderdaad, as ek breek dit away-- Ek is
net gaan om dit los te koppel soos dit.
Laat my gryp 'n herhaling blok, en kliek drie, tik drie,
gooi 'n paar van hierdie weg deur net te laat gaan.
En dan sien dit lyk nie soos dit pas,
maar magneties, dit gaan om nie net snap in plek
Maar julle moet toeneem om die vorm te pas.
So dit is 'n goeie.
En nou as ek op die spel.
>> [Miaau]
Baie mooi.
Alles reg.
En nou is dit baie maklik om te verander, ook, want ek kan net
verander 'n nommer een plek.
Maar dit is ook nie alles wat interessant.
Kom ons eintlik Kras nie miauw, maar beweeg.
Laat my gaan na Motion en beweeg 10 stappe binne of-- Oeps, laat my dit op te los.
Laat my dit beweeg 10 steps-- eintlik, laat ons nie te herhaal nie.
Laat my gryp 'n beheer blok, en doen die volgende vir ewig.
Forever, beweeg 10 stappe.
En klik speel.
>> OK.
So gelukkig, tot stilstand kom hy gesê.
Anders, kinders sou kry baie ontsteld wanneer hulle soort verloor hul kat.
Maar ten minste het ek kan sleep hom terug in die skerm.
Maar dit is nie al wat groot van 'n wedstryd of animasie.
Dit sou as miskien lekker wees Hy wip van die rand.
So, wat doen ons?
Wat konstruk moet ons hê Kras besluit om hop, dink jy,
selfs as jy nog nooit gesien Scratch voor?
Ja, in die rug.
Gehoor: Jy moet 'n As blok of if-then.
David Malan: Ja, so 'n paar soort as blok of if-then.
So eintlik het ons een van hierdie hier.
So if-- so laat my sommer ontslae te raak van die beweging.
Laat my in zoom en dit is dus groter.
So hoe hieroor.
Forever, as Sensing-- Ons het nie gesien voor.
Ek het 'n Boole-uitdrukking.
En dit blyk asof raak wat?
As die aanraking van die rand, wat doen wat ek wil doen?
Wel, as ek gaan terug na Motion, blyk, o, ek kan omdraai.
Laat my trek hier.
Hoekom weet ek nie voort te gaan en omdraai 180 grade?
>> En nou, laat my net te beweeg aan die einde.
Ek kon die beweging op te sit die begin of die einde.
Maar logies, elke keer as ek beweeg, ek wil om te kyk, ek raak die rand?
Ek raak die rand?
Sodat logies ek omdraai indien wel.
So laat ons getref speel.
>> OK.
Dit is dus effens karretjie, om so te praat.
En 'n fout is net 'n fout in 'n rekenaarprogram.
Maar ten minste dit werk.
En in werklikheid, kan ek hier gaan.
En laat ek dit nie 10 stappe teen 'n tyd, maar dit is al animasie is.
Dit is al 'n spotprent of selfs 'n fliek is.
Laat my trek 20 stappe op 'n slag.
So 20 keer soveel dinge gebeur een keer, of twee keer soveel, in hierdie geval.
En hy beweeg vinniger.
Laat my verander tot 30.
100.
1000.
En dit gaan baie vinnig.
En dit is-- ja, OK.
>> So nou is ons net geknoei met dit.
OK, so karretjie.
Maar ons kan hom sleep uit die weg geruim hier.
Maar ons kan meer pret te maak met hierdie, ook.
Hoe gaan dit met this-- hy onderstebo.
Maar dit blyk Scratch-- en daar is eintlik,
Ek moet ontken, geen akademiese waarde na wat ek nou gaan doen.
Maar as ek oop te maak die mikrofoon, kom ons stop hom en so iets te doen.
Eina!
>> [LAG]
>> Dit was adorable.
Dankie.
Nou, dit is wat my stem lyk soos wanneer ek skree eina.
Ek dink nie ons gevang jou lag.
Dit is OK.
Laat my dit stoor as "eina."
Kom ons hierdie save as "eina".
En nou sal ons terug gaan na skrifte.
En nou het ek need-- laat ons sien, Sound.
Ag, speel klank eina.
So as ek die rand raak, laat my eerste toneelstuk eina, en draai dan om.
En nou, laat ons hom in die middel.
>> [Gesegde "Eina"]
>> Twee keer so vinnig.
>> OK.
Maar dis letterlik doen wat ek sê.
Dit is dus in werklikheid korrek, dis net 'n bietjie irriterend vinnig.
So laat ons iets by te voeg meer interessant om hierdie.
Laat my eintlik oop te maak een wat ek gemaak by voorbaat,
gepas genaamd Pet die Kat, wat dit doen.
Hier is die skrif hier.
Wat gaan dit doen in Engelse terme?
Wat is dit ontwerp om te doen?
Ja, laat ons gaan some-- ja?
>> Publiek: Wanneer jy troeteldier die kat, dit meows.
David Malan: Ja, so wanneer jy troeteldier die kat, gaan dit miauw.
So met ander woorde, daar is nou 'n ewig lus nog, gekombineer
'n voorwaarde, gekombineer met 'n Boole-uitdrukking,
gekombineer met 'n paar van funksies, die effek
waarvan, nadat ek speel hierdie program, is niks
gebeur totdat ek die wyser beweeg nader en nader en nader and--
>> [MIAAU]
Dan is dit soos troetel die kat.
[MIAAU]
Eers wanneer jy eintlik beweeg die muis oor hom.
Nou ja, ek het ook opgesweep nie troeteldier die kat, wat hierdie plaas doen.
>> [Miaau]
>> So hy is net voortdurend miaau.
>> [Miaau]
>> Maar as ek kom te close--
>> [Miaau]
>> [ROAR]
>> So, hoe werk dit?
Nou het ek net 'n tweerigting-vurk in die pad.
As raak muis, dan speel die leeu klank.
Anders net speel die miauw klank, en dan wag drie sekondes so
dat dit soort van doen dit baie rustig.
Alles reg.
So dit is die kombinasie van 'n paar meer idees steeds.
Kom ons neem 'n blik op hierdie voorbeeld Ek opgesweep genoem drade.
En hierdie een is fundamenteel verskillende deurdat dit Benut
'n Kenmerk van baie programmeertaal genoem
drade, die vermoë van 'n program om letterlik doen twee dinge gelyktydig.
Inderdaad, deesdae as jy die gebruik van Google Docs of Microsoft Word,
en jou dokument voortdurend spel-nagegaan selfs as jy type-- of jy
getref Command-P of beheer-P en druk iets,
dit druk terwyl jy aanhou tik.
Programme vandag kan inderdaad verskeie doen dinge op een slag, net soos in Scratch
hier.
>> So hier het ek twee sprites Nou, 'n voël en 'n kat.
En as ek klik op elk van diegene karakters een op 'n tyd,
Ek sien nou die voël se skrifte teen regter boonste.
Nou sien ek die kat se.
Bird's, kat se.
So elkeen van hulle het hul eie script.
Maar kennisgewing, wat legkaart stuk hulle albei begin met?
Wanneer groen vlag gebruik.
En voëls, toe groen vlag gebruik.
So wanneer ek op die groen vlag, beide van die skrifte of programme
gaan parallel loop.
En jy sal sien dat die voël is net klakkeloos weerkaats die rand.
Die kat duidelik is geprogrammeer met 'n strategiese voordeel.
And--
>> [ROAR]
Alles reg.
So het die kat vang die voëls in hierdie geval.
Hoekom is dit?
Wel, kennisgewing eerste het ons net die voëls net klakkeloos gaan
om hierdie aanvanklike plek, en dan vir ewig,
indien nie die kat raak, net beweeg.
En as jy op die rand, hop.
En net beweeg.
En as jy op die rand, hop.
Maar die kat, intussen, het 'n paar ekstra logika
wat sê this-- eerste, net so dat dit nie heeltemal bevooroordeeld
teen die voël sien dat ek het gebruik 'n groen legkaart stuk daar
wat eintlik tel 'n ewekansige getal.
'N Kenmerk van baie tale is om te gee jy ewekansige of pseudo random nommers.
So in hierdie geval, die kat aanvanklik kies 'n ewekansige getal tussen, soos,
90 grade en 180 grade, in wese, sodat
dat daar 'n bietjie van die variansie.
En dan vir ewig, as roerende die voëls, speel die leeu klank.
Andersins, net wys na die voël.
Wys na die voël.
Punt in die rigting van die voël, wat 'n legkaart stuk vir homself in hierdie geval.
Wel, ons kan 'n ander ding hier doen.
Laat my oop te stel die gebeure program hier.
En hier het ons weer twee sprites, wat lyk soos hierdie twee poppe hier.
En wat is interessant hier is dit.
Die oranje man het hierdie stel van die legkaart stukke hier.
Forever doen die following-- indien die spasie balk gedruk,
dan sê, Marco, en dan uitgesaai 'n gebeurtenis.
En intussen, die blou man het hier this-- wanneer jy die geleentheid kry,
sê Polo.
So dit blyk in Scratch en in ander tale,
daar is maniere om vir twee programme of twee skrifte, in hierdie geval,
om sodat wanneer die kommunikasie tussen persone ek druk op die spasie balk, sê hy Marco.
En die ander een hoor, om so te praat, en sê Polo in reaksie.
So kan jy programme te skryf wat eintlik interaksie op hierdie manier.
En as ek doen dit een plaas, Ek kan selfs veranderlikes by te voeg,
net die gebruik van 'n sprite in hierdie geval.
Hierdie een is veral irriterende.
>> [SEAL blaf]
>> Nou, kennisgewing op die regte wat ons het 'n paar ekstra logika hier.
Hoe stop ek hierdie seël van blaf?
>> [SEAL blaf]
>> Dit lyk soos op die regterkantste kant is wat die speel van die klank.
Maar dit is net speel 'n klink asof dit wat waar is?
As 'n variable-- oranje block-- gedempte nul.
Hoe kan ek gedempte verander te wees 1, wat beteken dat ware, maak hierdie gedempte?
Klaarblyklik het die ander script, kan ek druk op die spasie balk, en nou hou hy.
So kan ons hierdie intercom het oor skrifte, sowel,
deur net deel van 'n veranderlike oor die twee hou hiervan.
Nou, dit is nie alles wat interessant.
Kom ons gaan voort en doen dit en kombineer 'n groot deel van hierdie idees met hierdie program
hier.
Voordat ons dit doen, al is, Hoe gaan dit met 'n vrywilliger?
Laat my die druk neem af van my, want ek doen nie eintlik
speel hierdie speletjie.
Kom ons iemand wat ons het nie gesien nie.
Jy moet gemaklik koms op die verhoog hier, op kamera.
OK, kom op tot.
Baie dapper.
Wat is jou naam?
>> IDRIS: Idris.
David Malan: Jammer?
IDRIS: Idris.
David Malan: Idris, lekker om jou te ontmoet.
Kom op.
En nou, op jou eie mobiele telefoon, hoef jy Pokemon gaan speel?
>> IDRIS: No.
David Malan: Regtig?
IDRIS: Ja.
David Malan: OK.
Alles reg.
Wel, lekker om jou te ontmoet.
Kom oor.
Ek ook nie.
So sal ons saam uit te vind hoe om speel hierdie, wat iemand eintlik
het gegaan en in Scratch geïmplementeer deur die verandering van die kat te wese
verskillende karakters almal saam.
En as ek volskerm Dit is hier, ons gaan
om die volgende wedstryd saam te sien.
Tog laai, laai steeds.
Kom.
Laat my dit te doen.
Kom.
Hierdie wedstryd is so groot dat dit neergestort het.
Staan by.
Probeer hierdie een keer meer.
Kom.
Alles reg.
>> Daar gaan ons.
OK.
Groen vlag.
So hier gaan ons.
>> [Speel van musiek]
>> Kies hier die middelvlak.
Klik op die blou man daar.
Alles reg.
En jy kan die pyl te gebruik keys-- op, af, links, regs.
Nou, laat ons kyk na wat ons this-- doen en dan gaan na die karakter daar.
Yep.
En nou op hom met die muis.
O, ja.
Beweeg.
Waar is die pyl?
Hier gaan jy.
Klik so aan daar.
Ja.
Alles reg.
So nou, ek het jou gesê het die sak bal, dat indien klik, sal dit doen.
Baie goed.
In oefen vir vandag, ek het gevind dat hierdie weergawe van die spel se
eintlik nie baie moeilik.
So as jy wil hier weer gaan, loop af na die Poke bal.
En dan gaan neem 'n reg.
Probeer te klik.
Ag, eintlik, dis die winkel, blykbaar.
OK so naby dat.
Nooit gedoen wat voor.
Miskien gaan op na hierdie ding hier.
Ag, daar gaan jy.
Wag, daar is een daar.
Ag, daar is 'n ander.
OK.
Af.
Ja, klik.
>> OK, dis baie oulik.
OK, baie goed gedoen.
Hierdie wedstryd is nie baie moeilik.
OK.
Veels geluk.
Hier het ons 'n CS50 stres bal vir jou.
Maar oorweeg vir net 'n oomblik wat sommige van die wegneemetes is daar.
Makliker as die werklike spel, blykbaar.
Maar al wat ons het gaan hier is 'n karakter
wat waarskynlik 'n soort van lus wat daarmee gepaard gaan.
Dit is nie 'n kat.
Dit is hierdie karakter in plaas.
En dit lus is net voortdurend en gesê: As pyltjie gedruk,
As afpyltjie gedruk, indien linker pyl gedruk of regs
arrow gedruk, skuif op of af of links of regs.
Of as daar 'n ander legkaart stuk daar wat sê wanneer raak 'n ander sprite,
wanneer raak een van die karakters om die Poke bal, as raak,
dan dit te doen.
>> So was dan al die idees wat ons het gebruik tot dusver regtig
kan net toegepas in hierdie spesifieke konteks om hierdie spel te speel, sowel.
Laat my gaan voort en trek een ander hier, in werklikheid.
Laat my gaan voort en trek up, kom ons sê, hierdie.
Dit is iets wat ons remixed.
Gemaak deur een van ons studente in Cambridge,
en dan het ek deur en verander pretty much elke geval van Harvard
om Yale hierdie tyd.
Sou iemand graag kompeteer teen die Ivies
hier in 'n ander versameling van al hierdie idees?
Kom af, ja.
Wat is jou naam?
>> DINA: Dina.
>> David Malan: Adina?
>> DINA: Dina.
>> David Malan: Dina, kom op af.
Goed, Dina.
So hierdie wedstryd kry harder en harder, want in hierdie wedstryd,
daar is veranderlikes wat sowel gebruik wat voortdurend dop
van watter vlak jy is in die spel.
So lekker om jou te ontmoet.
Kom hier rond.
En so het die doel hier is om uit te sorteer van jou pad deur 'n doolhof
dat hierdie student in werking gestel.
>> En net om die verhoog op te stel, elke van hierdie foto's op die skerm
is sy eie sprite, sy eie karakter.
So dit was by verstek katte, maar die student verander hulle
om die verskillende Ivies logo hier.
En dan sal jy dit net sien deur gebruik te maak van voorwaardes en lusse
en funksies en nog baie meer, kry jy dit.
>> [Speel van musiek]
[MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
>> Ja, OK.
Ja, die gang te hou.
Eerste vlak se baie maklik.
Jy het net om daar te gaan.
Maar weereens, let op, dit is net 'n lus luister vir die pyl keys--
op, af, links, regs.
En nou 'n sensing blok.
Baie mooi.
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
>> Baie mooi.
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
>> Baie mooi.
Redelik maklik, Crimson.
Alles reg.
Levels-- uh-oh.
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
>> En weer, in hierdie drie Harvard kruine,
jy moet net logika sê indien stomp, weiering.
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
>> OK, wat jy doen is meer interessant as die rede waarom.
Baie mooi.
Uh Oh.
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
Ek dink jy moet jouself op te offer.
[MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
Vinnige!
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
Lekker.
Dit is OK.
Jy sal dit kry.
Ja ja!
Baie mooi.
>> [Juig]
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
>> Lekker!
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
Het dit.
Kom op!
Tweede laaste vlak.
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
>> Alles reg.
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
Ja.
Goeie gebruik van veranderlikes hier.
[MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
Ja.
[MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
Lekker.
[MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
Dit is OK.
Ons het tot die einde te kry.
Daar.
Oh!
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
>> Kan laat vandag hardloop, maar dit is nou eers die moeite werd wees.
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
>> Jy kan dit doen!
Ja!
>> [Juig]
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
>> Hierdie een is regtig moeilik.
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
>> Ons sal jou twee lewens gee.
Kan jy dit doen?
>> [MUSIEK - MC Hammer, "jy kan nie raak HIERDIE "]
>> Alles reg.
Hoe gaan dit met 'n groot ronde van applous nietemin.
Jy het na die tweede laaste vlak.
Dankie.
>> [Applous]
>> So dit is net om te sê hoeveel jy kan doen met hierdie soort van dinge.
En besef ook dat wanneer stukke van die legkaart nie exist--
en inderdaad, dit gaan om een ​​te wees van die magte van die eerste probleem
stelle en beyond-- is om eintlik maak jou eie.
En dit is net 'n uittreksel van een van die voorbeelde
jy sal in staat wees om te speel met aanlyn, waar
As jy nie gebou het in Scratch iets soos 'n hoes legkaart stuk,
jy kan eintlik maak dit self.
>> En so sal die hele van hierdie en nog baie meer wag.
En net om te verf 'n finale beeld van wel wat
voor in die winkel vir die klas vir jou, gebaseer op 'n paar foto's van klasmaats
verlede, laat my toe om die ligte verdof 'n laaste keer en wys jy CS50.
>> [Speel van musiek]
>> Alles reg.
Dit is dit vir CS50.
Koek is nou bedien.
>> [Speel van musiek]