[Reproducció de música] [MUSIC - ROSSINI, "RANZ DES Vaches "DE WILLIAM DIGUI] [MUSIC - THE BEAT ENGLISH, "MARÇ DELS CAPS Orientació "] [Aplaudiments i crits] DAVID Malan: Això és CS50. El meu nom és David Malan. I el 73% dels que no tenen experiència prèvia amb la informàtica, al contrari del que es podria pensar. Així que avui pensem soscavar de manera que la manca de coneixement, sinó també li donarà un sentit d', per a aquells de vostès amb més comoditat, que les direccions es pot anar en aquest semestre. Així que anem a començar amb això. Realment no tinc ni idea del que hi ha dins un ordinador, tot i que, com tu, usar-lo cada dia. Però és una espècie de caixa, i no hi ha no moltes entrades en ell. Com a mínim, hi ha, què? Probablement un cable d'alimentació. I de fet amb aquest ingredient, electricitat, que sembla ser capaç de fent una mica en aquests dies. Però al final del dia, ens que representen les coses que ens importa. Hem de representar la informació en alguna forma. I probablement, almenys vagament familiaritzats amb la idea de binari o bits d'alguna manera o altra, els ordinadors reduït a zeros i uns. Però, ¿podem acceptar això i, almenys, posar una mica de llum al respecte? Així que tinc aquests petits làmpades d'escriptori aquí. Tinc una presa de corrent aquí. I jo vaig a proposar que a l'interior del meu equip és almenys un aquestes coses, alguna cosa capaç de ser encès o apagat. En aquest cas, és de fet un llum d'escriptori, però en el nivell més baix, és una cosa anomenat un transistor. Però en el nostre món, és un llum d'escriptori, per la qual cosa Vaig a seguir endavant i connectar aquest en el meu electricitat aquí. I jo sostinc que l'ús d'aquest senzill, dispositiu simple, aquest interruptor senzill, pot representar la informació. Per exemple, ara mateix, estic representa res, oi? Estic representant el que jo dic 0 o fals, el contrari d'alguna cosa estar realment presents. Però si simplement encenc l'interruptor, ara m'he representat a 1. Així, utilitzant aquesta senzilla peça de memòria, si es vol, que pot representar informació. Ara, per desgràcia, el meu equip no pot fer gairebé res. Només pot representar dos valors a tot el món - 0 o 1. Però el que és una solució òbvia, ara, si volem ampliar el nostre equip de memòria i representar més que només 0 i 1? Bé, anem a prendre un altre exemple poc. Anem a agafar un altre interruptor, un altre transistor, però, li agradaria pensar-hi. Déjame anar per davant, que connectarà en el meu equip també. I vaig a reclamar, ara, que per usant una mica més d'electricitat i girant més d'aquests interruptors i fora, jo puc representar més com informació. Així que ara mateix, això és 1. Si vull representar ara 2, el que podia fer això. Però en general, de convencions, com veurem finalment veure, es que jo faci això. Així que això és 0, això és 1. Això seria febrer. I com era d'esperar, això seria 3. Així d'aquesta manera, encara, pot comptem fins a més enllà? Si tinc una tercera part, un tercer interruptor, Quin és el nombre més alt que puc ara comptar fins des de 0? Així que 7 si estic començant en 0, no? Perquè si encenc aquesta llum encesa i realment connectar aquesta tercera i última llum en la meva presa de corrent aquí, llavors tinc la capacitat de representar qualsevol de dos valors aquí, dos valors Aquí, dos valors aquí - i pel que puc representar a 2 vegades 2 vegades 2, o vuit valors possibles. I si em poso a la comptabilitat a 0, pel que que és 0, 1, 2, 3, 4, 5, 6, 7. Així que aquest binari. Realment és tan simple com això. I jo diria que això és en realitat molt familiar a la majoria tots en aquesta sala. Deixin-me seguir endavant i obrir un petit editor de text aquí. I es pot recordar de l'escola primària que teníem coses com els centenars el lloc, el lloc de les desenes, i els lloc. I recordar que si tenia alguna decimal nombre, com una cosa a l'atzar com 123, ho faria essencialment escriure això en la forma d'aquestes tres columnes. ¿I per què és 1, 2, 3 ho que coneixem com 123? Doncs bé, a la columna de l'esquerra, tenim 1 100 més 2 10s, així que és 120, més de tres 1s, pel que és 123. Ara bé, aquest món que ens il · luminem és exactament el mateix que vostè ha estat familiaritzat amb els anys, Només que ara, les nostres columnes no són potències de 10. Només són potències de 2. Així, mentre que és el lloc de les unitats, això serà el lloc de dos en dos, això és serà el lloc de quatre. I perquè jo només estic fent servir la més senzilla de mecanismes per canviar les coses dins i fora - l'electricitat flueix o l'electricitat no flueix - No acabo de tenir la mateixa expressió rang del 0 al nou. Anem a mantenir simple fantàstic en aquest món de les computadores. Només tinc 0 o 1 - apagat o encès, fals o veritable. I així el que estic representant en aquest moment és 1, 1, 1, perquè cada un d'aquests els llums s'il · luminen. Bé, això em dóna una 4 més un 2, pel que això és 6, més un 1, i això és juliol. I ergo fa aquesta seqüència de tres bits representen el número 7. Així que tot aquest temps, a l'interior de la ordinador, han estat qualsevol nombre de transistors, qualsevol nombre de bits. Però al final del dia, ens pot representar la informació tan simple com que. Ara, per desgràcia, només hem comptat fins a 7 en CS50 fins ara, però espero que puguem fer una mica millor que això. I de fet ho possible. Suposem que nosaltres, com a éssers humans només arbitràriament decidir que anem per associar números 1 i 2, 3, 4, 5, 6, 7, amb lletres específiques de l'alfabet. I per raons històriques, que vaig a començo una cosa arbitrària, però estic dirà, els éssers humans, anem a decidir, com a norma, a nivell mundial, que 65 representa el nombre de la lletra A. 66 representaran B. Punt, punt, punt. 90 representaran la lletra Z. I suposem que, si realment posar una mica de pensat en això, podríem arribar amb un nombre de punts d'exclamació i minúscules, i de fet, altres han fet per nosaltres. Així que ara teníem els bits amb els quals podem representar nombres, nombres amb els quals podem representar lletres, i amb lletres poden ara començar a compondre correus electrònics i caràcters d'impremta a la pantalla. Així que em convido, si pogués, 08:00 valents voluntaris - que passés el que apareix no només a la cambra, però a Internet - venir aquí i representen 08:00 tals bits, en lloc d'aquests tres. Així que què ha d'una, dues? I tres? Com a les quatre de la llum blau, cinc a la final? Sobre algú per aquí? Sis davant, set al front, -vuit al davant, també. Així que només la casualitat de venir preparat amb un munt de fulls de paper. I en aquests trossos de paper són nombres que representen el que les columnes que vostès van a representar. Pel que serà - Quin és el teu nom? ESTUDIANT: Anna Leah. DAVID Malan: Anna Leah, que serà la columna 128s. Vostè és? ESTUDIANT: Chris. DAVID Malan: Chris es ser la columna 64S. Vostè és? ESTUDIANT: Dan. DAVID Malan: Dan es ser la columna 32s. ESTUDIANT: Pramit. DAVID Malan: Pramit es ser la columna de l'16s. ESTUDIANT: Lillian. DAVID Malan: Lillian serà el 8s. ESTUDIANT: Jill. DAVID Malan: Jill ser la columna d'4s. ESTUDIANT: Maria. DAVID Malan: Maria serà el 2s i? ESTUDIANT: David. DAVID Malan: David ser la columna d'1 s. Així que si vostès podrien intensificar una mica cap endavant perquè tothom pugui veure-ho. El que vostès no veuen és que al posterior d'aquestes trossos de paper és una petita costella que està a punt de instruir aquests vuit bits a qualsevol aixecar la mà o no aixecar la mà. Si la seva mà s'aixeca, són que representa l'1. Si la mà es queda a baix, són que representa un 0. Mentrestant, el públic ha de ser capaç d'esbrinar, a partir d'aquest cartografia, quina paraula de tres lletres aquests la gent està a punt d'explicar. Així que en un moment, que va a llegir la primera línia de la part posterior del el seu full de trucs, i ja està bé pujarà o no aixecar la mà. Si vostè és un 1, s'eleva, si ets un 0, et quedes aquí maldestrament, com si res. Vaya. Quin nombre, en primer lloc, representen aquests tipus? 66. 66, oi? Comptem amb un 1 a la columna 64S, un 1 a la columna de l'2s. Això em dóna 66, pel que apareix de representar B. Llavors, que vostès han escrit - Bé, això és suficient. B. Així que ara anem a passar a la segona lletra. Vaya. Qui és més ràpid en matemàtiques aquí? Així 79. Un cop més, si sumem totes les columnes en què hi ha un 1, en l'actualitat, només com ho vam fer abans amb el més simple d'exemples de 7, que ara aconseguir el nombre 79. Que d'acord a la nostra cartografia és el lletra O. Així que ja gairebé arribem. B, O. I, finalment, vaja. Què estan representant ara? Menys consens. Això és només un rumor absolut. Sí, és de fet 87. Bé. Així que si ara map que donen suport a - anem a començar a trucar a la nostra taula ASCII, Codi Estàndard Americà per Intercanvi d'informació. Això ens dóna la carta - no "bo", però "arc". I això és una perfecta senyal per a vostès de fer una reverència i el cap a la part posterior. Moltes gràcies. [Aplaudiments] DAVID Malan: pot mantenir. Encara que en realitat, ¿algú com un llum d'escriptori, també? [Xiulet D'AUDIÈNCIA] DAVID Malan: Llum d'escriptori? [El] DAVID Malan: De debò? Llums d'escriptori per a tothom? Està bé. Així a partir de la molt simple principis, hem ara no només comptem des de 0 fins al final fins al 7, hem assumit que amb només tirar més bits o més llums o més transistors a aquest problema, es pot representar nombres cada vegada més grans, i ergo, els rangs de més i més grans alfabets, com l'anglès. I així anem a fer en la fe per avui que d'igual forma podríem començar a representar gràfics i de vídeo i qualsevol nombre d'altres mitjans amb què estem familiar avui en dia. Així que aquest és CS50, i en aquesta classe al costat de vostès, una vegada més, moltíssims companys de classe que tenen tan poc experiència que tu. I esmento això perquè molt sovint, fins i tot tan recentment com un el primer any d'assessoria i esdeveniments en estudiant de segon any de la primavera passada assessorament cas, sovint sentim estudiants renuncien quan puja a la taula de CS, així, He estat pensant en prendre aquest classe d'introducció, però no sóc realment un persona ordinador. O bé, però tothom sense dubte sap més que jo. I poso això en la font més gran possible, per transmetre aquest missatge això no és de fet el cas. I si vostè es pregunta, en cas de Jo, de fet, ser aquí? Adonar-se que no només és d'aquest curs títol Introducció a la Informàtica Ciència, és Introducció a la Informàtica Ciència I. Així que no és de fet un segon com a introducció. Així que no és, de fet, en el lloc equivocat. I entre els objectius que tinc per avui són per mitigar aquestes preocupacions que podria tenir, sinó també per pintar un imatge del que està reservat per estudiants menys i més còmode per igual en aquest curs. Però primer, una paraula en un dels fullets té avui dia, entre els quals són una sèrie de preguntes freqüents. Ha estat una visió de la nostra des de fa algun temps ara introduir una nova classificació opció en aquest curs - a saber, SAT / UNSAT. Filosòficament, per a mi, és molt, molt, molt més important que el els estudiants d'aquesta classe tenen la materials, ser impugnada pel materials, i es preocupen molt, molt menys sobre la mecànica de les puntuacions reals i les qualificacions amb lletres en semestre de final, però realment abraçar la curs i el seu material. I realment se sent, més en general, pel que és interessant per a ells, sentir desafiat i recompensat, però sense por al fracàs. I de fet, això també és un tema recurrent tema en aquest i altres introductòria cursos en altres camps, que té aquest trepidació quan es tracta de posar els dits d'un en aigües desconegudes. Jo mateix, l'any 1995, era un estudiant de primer any. Em concentrar molt a ser un concentrador Gov aquí. I no obstant això, jo sempre havia crescut amb una mica d'un interès en la informàtica. Sempre vaig ser curiós. Però en aquell temps, fins i tot, vaig tenir por de fins i tot posar un peu al CS50, tant de manera que ni tan sols Shop és el primer any. I l'única raó per la qual vaig posar un peu a la any sophomore porta era perquè se li va permetre prendre passa / no passa. Però fins i tot passa / falla requeria que tinc el valor suficient per fer una cita amb el professor Kernehan en aquest moment, portar aquesta gran full de paper i que cal ell per la seva signatura i la seva permís per explorar aquestes aigües desconegudes. I no ha ajudat en els últims anys que en fer això en CS50, quan solia ser apte / no apte, de manera similar ho faria desenes o centenars dels seus companys de classe haver d'arribar, Déu no ho permeti, al davant Sanders amb aquesta forma, que en algunes ments representa una incapacitat, M'atreveixo a dir, per dur a terme són nivell dels seus companys. La qual cosa és ridícul, però crec hi ha aquesta mentalitat. I mai hi ha hagut en aquesta cultura de SAT / UNSAT o passa / no passa més Generalment, en aquest supòsit, o en realitat en aquest campus. Així que aquest any hem canviat això. M'agradaria ser la meitat d'èxtasi de aquesta classe o més acabar prenent CS50 SAT / UNSAT. En el termini d'un any, que seria meravellós si gairebé tothom és. A partir de llavors potser anem a treballar en les qualificacions amb lletres a Harvard Col · legi en general. Però per ara, farem això dins la nostra esfera pròpia, i ho faria de tot cor l'animem a revisar les preguntes freqüents i fer preguntes com millor li sembli, per la qual cosa esperem que, a diferència de mi, no és tenen el mateix factor de por quan explorar el que és probable que un lloc desconegut. Llavors, què és CS50? Es tracta d'una introducció a la empreses intel · lectuals d'equip la ciència i la tècnica de la programació. Però, què significa això realment? Bé, fins ara, hem parlat molt breument sobrerepresentació de la informació. Però suposem que en realitat volem fer alguna cosa amb ell. Cal introduir la noció de el que anomenarem un algorisme. Un algorisme és un procediment, un procés, un conjunt d'instruccions per fer alguna cosa. I un algoritme pot ser super simple. Per exemple, un exemple amb la qual alguns que podria estar familiaritzat és aquest cosa aquí. Així que aquest llibre aquí és cada vegada més antiquat, però una vegada en un temps, conté tot un munt de noms i els números de telèfon. I de fet, si volia trobar algú en aquest llibre de telèfon - per exemple, algú anomenat Mike Smith - Em vaig trobar Mike Smith en qualsevol nombre de maneres bastant senzill. Podria començar pel principi i passar a la pàgina 1, no existeix. Pàgina 2, no existeix. Page 3. És això algoritme, és que procés, correcte? Pel que és correcte, oi? Sóc una mena d'idiota per fer-ho en aquesta manera, però al final ho faré trobar el cognom S, i espero que Mike és en aquesta secció, i em convertiré fet amb la meva algorisme. Però segur que no és intuïtiva. La majoria de tot ésser humà raonable en aquesta habitació no hauria fet això. Què hauria fet vostè? Vostè hauria anat directament a la meitat, no? Aproximadament a la meitat. I t'adones, oh, es tracta de la Sra Així que Mike Smith, el cognom és Smith, no és, clarament, a continuació, en el la meitat esquerra del llibre. Ell ha de ser cap al S està a la dreta. I en aquest punt, tot i que la majoria de nosaltres no em facis això, en realitat, podem literalment, trencar aquest problema a la meitat. [Vítores i aplaudiments] DAVID Malan: Gràcies. [Vítores i aplaudiments] DAVID Malan: Vostè pot esquinçar literalment aquesta problema a la meitat, i em va deixar amb, literalment, un problema de la meitat del gran. Així que si aquesta agenda era - i és Probablement era - unes 1.000 pàgines, ara és només 500. Si faig això una altra vegada i m'adono, oh, maleïda sigui, vaig anar molt lluny, estic al Ts secció, pot igualment - en sentit figurat o literal - copiar la guia telefònica - en realitat era molt més fàcil que el temps. Literalment puc copiar la guia telefònica al mig, em vaig ara amb no 1000, no 500 - 250 pàgines. I puc anar a 125, i la meitat d'això, i la meitat d'això, i la meitat d'això, fins que finalment em quedaré amb només una sola pàgina. [El] DAVID Malan: Aquesta és la part jo fallada en. Una sola pàgina en la qual Mike espero és. Ara aquests algoritmes diferents poden ser tipus d'o avaluades en diferents maneres. La primera va ser molt lineal, no? Gireu a la pàgina, busqui Mike. Gireu a la pàgina, busqui Mike. És molt lineal. Si hi ha una pàgina més al telèfon llibre, que probablement va a portar un segon més, una unitat més de temps, No obstant això estem calculant el temps. Així que jo podria dir així aquesta línia aquí, pel que com la mida de la problema augmenta d'esquerra a dreta - directori telefònic es fa més petit al més gran - i el temps es va a augmentar en l'eix vertical, la més gran la guia telefònica és. Per tant n és només una variable general que els els informàtics utilitzen per representar algun valor, algun número. Així que n va a augmentar linealment. Duplicar la mida de la guia telefònica, és em portarà el doble de temps, el més probable, per trobar Mike. Ara jo podria haver estat intel · ligent sobre això, oi? M'estava avorrint ràpidament. Podria haver fet això de dos en dos. Així que en dues pàgines, després quatre, després sis, després 8. I podria començar a volar a través d'un poc més ràpid, encara que a menor risc de depassant Mike, però que la corba no és serà molt diferent. Encara serà una recta línia, però una mica més ràpid. Però, què vaig fer? De fet, em vaig fer una cosa fonamentalment millor. He aconseguit el que anomenarem logarítmica temps, registre de n, pel que aquest verd línia té un molt, molt, molt més vora inferior directament a ell. I més aviat, suggereix, com una mena de tendeix a infinit sempre tan poc, que jo podia tenir una pàgina de 1000 directori telefònic, el doble de la seva grandària el proper any - perquè suposa molt més persones es traslladen a la ciutat. Així que ara tinc 2.000 pàgines, però com molts més passos que és més intel · ligent algoritme va a prendre? Només un. Vull dir, això és una cosa molt poderós. Si anem a 4,000 pàgines l'any que ve, que va a portar només dos passos més. Així que vostè pot llançar més i més gran problemes a mi, no a diferència de la web és llençar els problemes cada vegada més grans tots els dies a Google i Facebooks de el món, i no és una cosa molt important. Perquè em poso més atenció i cura en el meu algorisme amb el que per resoldre problemes amb eficàcia. I, en efecte, que serà un els objectius d'aquest curs. Vostè, en el camí, aprendre a programar. Vas a aprendre com programar en qualsevol nombre d'idiomes. Però al final del dia, és el curs sobre la solució de problemes i aconseguir millor en la resolució de problemes - i, com a casos com aquest, la solució de problemes de manera més eficient. Ara, fins al moment, ho hem fet bastant intuïtiva. Anem a introduir una mica bastant genèric anomenat pseudocodi. Així que anem a arribar amb el temps, en aquest supòsit, diversos llenguatges de programació. Però avui farem en anglès-com la sintaxi, en què només una mica de dir el que vol dir, però tu ets sempre tan succinta i que no es preocupen per gramàtica i oracions completes. Vostè acaba d'expressar com concisa possible. Així pseudocodi és similar a l'anglès sintaxi que representa un llenguatge de programació. I amb aquest fi, permetin-me proposar que ara modelar el procés que acabem de descrit d'explicar una cosa una mica diferent, aquesta vegada tenint una mirar aquest video de cinc minuts de durada pels nostres amics de TED que defineix el que és pseudocodi, defineix el que pensament algorítmic és, i fins i tot encara que l'exemple que estàs a punt de veure és, en si mateix, super simple, és va a començar a donar-nos el mental model, el vocabulari, amb el qual fer molt, molt més complex algoritmes molt ràpidament. [Inici REPRODUCCIÓ DE VÍDEO] [Reproducció de música] NARRADOR: Què és un algoritme? En ciències de la computació, un algorisme és un conjunt d'instruccions per a la solució d'alguns problema pas a pas. Típicament, els algoritmes s'executen per les computadores, però els éssers humans tenim algoritmes, així. Per exemple, com vostè va d'explicar el nombre de les persones en una habitació? Bé, si ets com jo, probablement punt en el qual cada persona, d'un en un un temps, i comptar a partir de 0. 1, 2, 3, 4, i així successivament. Bé, això és un algorisme. De fet, anem a tractar d'expressar una poc més formalment en pseudocodi - Sintaxi Anglès-com que s'assembla un llenguatge de programació. Sigui N igual a 0. Per cada persona a l'habitació, ajust N igual a N més 1. Com interpretar aquest pseudocodi? Bé, la línia u declara, per així dir-ho, una variable anomenada N i s'inicialitza el seu valor a 0. Això només vol dir que al principi de el nostre algorisme, la cosa amb la qual estem explicant té un valor de 0. Després de tot, abans de començar a comptar, no hem explicat res. Trucar a aquesta variable N és només una convenció. Podria haver cridat més l'gens. Ara la línia dos deMarks l'inici d'una loop, una seqüència de passos que repeteix un nombre de vegades. Així, en el nostre exemple, el pas que estem donant està explicant persones a l'habitació. Sota la línia dos és la línia de tres, que descriu exactament com anirem sobre el compte. La indentació implica que és tres línies que es repeteixen. Llavors, què està dient és pseudocodi que després de començar a 0, per a cadascun persona a l'habitació, anem a augmentar N en 1. Ara és correcta aquest algorisme? Bé, anem a colpejar a una mica. Funciona si hi ha dues persones a l'habitació? Anem a veure. En la línia un, inicialitzem N a 0. Per a cadascuna d'aquestes dues persones, llavors incrementem N en 1. Així que en el primer viatge a través de la bucle, actualitzem N de 0 a 1. En el segon viatge a través d'aquesta mateixa bucle, actualitzem N des 1 fins 2. I així, a finals d'aquest algorisme, n és 2, que de fet coincideix amb el nombre de persones a l'habitació. Fins ara, tot bé. Què tal un cas de la cantonada, però? Suposem que hi ha 0 persones a la sala -, a part de mi, que està fent el recompte. En la línia un, inicialitzem N a 0. Aquest cop, però, la línia de tres no executar en absolut ja que no és un persona a l'habitació. I així segueix sent N 0, el que coincideix amb el nombre de persones a l'habitació. Bastant simple, oi? Però el recompte de persones d'una en una és bastant ineficient, també, no? Segur que podem fer-ho millor. Per què no comptar amb dues persones alhora? En lloc de comptar 1, 2, 3, 4, 5, 6, 7, 8, i així successivament, per què no comptar, 2, 4, 6, 8, i així successivament? Fins i tot sona més ràpid, i segurament ho és. Anem a expressar aquesta optimització en pseudocodi. Sigui N igual a 0. Per a cada parell de persones a la sala, fixar N igual a N + 2. Canvi Bastant simple, oi? En lloc de la gent Càrrec alhora, que en lloc de comptar els dos alhora. Aquest algorisme és per tant dues vegades tan ràpid com l'última. Però, ¿és correcte? Anem a veure. Funciona si hi ha dues persones a l'habitació? En la línia un, inicialitzem N a 0. Perquè un parell de persones, llavors incrementem N per dos. I així, a finals d'aquest algorisme, N és 2, que de fet coincideix amb el nombre de persones a l'habitació. Suposem a continuació que hi ha 0 persones a l'habitació. En la línia un, inicialitzem N a 0. Com abans, la línia de tres no s'executa en absolut, ja que no hi ha cap parells de persones a l'habitació. I així segueix sent N 0, que de fet coincidisca amb el nombre de persones a l'habitació. Però el que si hi ha tres persones a l'habitació? Com funciona aquest algorisme tarifa? Anem a veure. En la línia un, inicialitzem N a 0. Per a un parell d'aquestes persones, llavors incrementem N per 2. Però llavors, què? No hi ha un altre parell ple de gent a la sala, de manera que la línia dos no ja s'aplica. I així, a finals d'aquest algorisme, N encara és 2, la qual cosa no és correcte. En efecte, aquest algorisme diu que és amb errors, ja que té un error. Anem a corregir amb un nou pseudocodi. Sigui n igual a 0 per a cada parell de persones a l'habitació. Setembre N igual a N + 2. Si una persona roman no aparellat, fixar N igual a N + 1. Per resoldre aquest problema en particular, hem presentar, en línia de quatre, 1 condició, coneguda d'una altra manera com una branca que només s'executa si hi ha una persona que no podíem parell amb un altre. I ara, si hi ha un o tres o qualsevol nombre senar de persones en l'habitació, aquest algorisme Ara vaig a explicar-les. Podem fer-ho millor? Bé, podríem explicar en 3s o 4s o fins i tot 5 i 10, però més enllà d'això, és posarà una mica difícil moment. Al final del dia, ja sigui executat per les computadores o els éssers humans, algoritmes són només un conjunt d'instruccions amb per resoldre els problemes. Aquestes van ser només tres. Quin problema resoldria vostè amb un algorisme? [FI REPRODUCCIÓ DE VÍDEO] DAVID Malan: Aquesta és l'única vegada Vaig a aparèixer en forma de dibuixos animats. Però on la història deixa fora, Ara bé, com podem fer millor? Tres-quatre, diem, podem comptar gent molt més ràpid, però potser fer fonamentalment millor que això? I aposto a que podem. Si s'introdueix una mica de la nostra pròpia pseudocodi aquí, jo vaig a proposar que podem aconseguir una línia com aquesta. No anem a explicar a les persones un, dos, tres, quatre. No anirem a dos, quatre, sis, vuit. Farem fonamentalment millor per repensar el problema, i en aquest cas, aprofitant un contrari sub-utilitzat recurs. En un moment, espero que perdonin i ens humor, posant-se de peu a lloc, moment en el qual anem a demanar a cada un a assumir en la seva ment el número 1. Estàs passant després a cada maldestrament, amb el temps, trobar altra persona que està dempeus, es combinen seus números junts afegint a ells. Un de vosaltres es va a córrer a seure per primera vegada, i l'altra persona es repetirà. Així, en altres paraules, mitjançant la sembra de tots que amb el número 1 i, a continuació, combinant els 1s i 2s en aquests 2s en 4s, amb tot el món cada vegada més assegut, hem, al final de aquest algorisme, té un sol préstec ànima que no se sentin prou ràpid, però que té tot el recompte d'audiències en la seva ment. Així que si vol, seguirem endavant i - pas un - de peu al seu lloc. I executar. [Gent que murmurava] DAVID Malan: Sap vostè on Lauren és? 729? [Gent que murmurava] DAVID Malan: Està bé? [Gent que murmurava] DAVID Malan: Molt bé, hauríem s'acosta al final. Veiem un home de peu aquí encara. Qui més ha de ser aparellat? Si vostès volen aparellar. Algú dalt. ¿Per què no fer un cop de mà aquí. Per a les poques persones que encara de peu, Quins nombres tenir en la seva ment? ESTUDIANT: 78. DAVID Malan: 78 plus - que està de peu aquí? ESTUDIANT: 39. DAVID Malan: Plus 39. A més, qui més segueix en peu? 81? Bé, qui més? Un altre 81? Wow. I llavors el que és a la part del darrere? ESTUDIANT: 49. DAVID Malan: 49, plus? ESTUDIANT: 98. DAVID Malan: 98 plus? És que algú més? 12? Bon treball. [El] DAVID Malan: Oh, 112 - oh. Bon treball! [El] [Aplaudiments] DAVID Malan: Algú més segueix en peu? Com? ESTUDIANT: 99. DAVID Malan: 99. Algú més encara en peu? I el nombre total d'estudiants aquí és, en realitat, d'acord amb - Té vostè un nombre? Oh, el nombre real de persones al habitació, d'acord amb el compte que els companys docents estaven fent en el camí de tots en, era 729. Així que d'una sala plena d'estudiants de Harvard que comptava a si mateixos, la resposta és 637. [El] DAVID Malan: Molt a prop. Però tot i això. OK, així que això és un ensenyament moment, oi? Ara això és el que descrivim com un error. Pel camí, vam fer una mica de aritmètica malament, o algú es va asseure, o cap a l'esquerra, o alguna cosa va sortir malament. Però això està bé. Perquè tot i així, ens tinc molt a prop. I jo diria que vam arribar al mal respondre molt més ràpid del que hagués usant el meu enfocament més lineal. Així que suposem que vam fer, de fet, obtenim que corregir, però pensar ara en el que que estava succeint cada vegada, contra el meu propi algorisme assenyalant ingenu. Un, dos, tres. Si de fet hi ha 729 o 637 persones aquí, això m'hauria portat literalment, 637 o 729 pointings del dit i incrementant meu recompte total. I jo podria fer una mica millor per va dos, quatre, sis, vuit, i duplicar aquesta velocitat, fins i tot triple o quàdruple, depenent de com pot fer que explicar al meu cap. Però aquest enfocament que vostès van prendre era fonamentalment diferent. Perquè al principi, tots vostès es van posar drets. Així que 729. I a continuació, literalment mig que es va asseure. I després d'això, un altre mitjà de vostès es va asseure. I després d'això, un altre mitjà de vostès es va asseure. I el nombre total de vegades que nois podrien haver assegut és més o menys vuit o nou o deu vegades en total, depenent del que el nostre recompte total és. I podem classificar de fer aquesta altra manera. Si tinguéssim 1.024 persones a la sala, el nombre total de vegades que es podria 1024 reduir a la meitat les persones és 10. Ara pensi en l'altra direcció. Suposem, ridículament, que teníem, per exemple 4000000000 de persones en aquesta sala, o una habitació una mica més gran. Quantes vegades hem anat a través d'aquest algorisme, de tal manera que la meitat d'aquesta classe se senti? No només tindrà 32, de operacions, fins i tot en una classe de mida 4000000000. Per què? Perquè 4000000000 va a dues milions de dòlars, es destina a un milió, va a 500 milions, va a 250 milions, punt, punt, punt. Jo només puc fer que la divisió d'un 32 vegades, i en aquest moment, tothom, excepte una persona es quedaria en peu. I això, també, és una mena de gran abast idea que cada vegada anem a tractar de influència en el curs, i en programació i la informàtica més Generalment, aquests gèrmens d'una idea amb que després podem resoldre problemes molt més, molt més poderosa. Així que vam començar molt simple amb la pseudocodi i un noi en una habitació, però ara amb tota una habitació plena de gent hem fet fonamentalment millor. Bé, ara anem a pas de pseudocodi a algun codi real. Aquest llenguatge està a punt de veure que succeeixi de ser cridat JavaScript, i tornarem a aquesta adreça final del semestre. És un llenguatge de programació que utilitzar per crear llocs web i altres tals programari en aquests dies. I ho hem utilitzat, gràcies a un amic de la nostra en Stanford, per codificar alguna informació oculta aquí. Aquest és l'art de l'esteganografia, per així dir-ho, en el qual es pot amagar informació en el que d'una altra manera sembla ser un soroll o completament diferent imatge completament. Però incrustat en aquesta imatge particular és de fet un missatge secret de les classes. Així que permetin-me anar endavant i tiri cap amunt la mateixa imatge aquí, aquesta temps en un navegador web. I jo vaig a agitar la mà a alguns els detalls d'avui, sobretot per a aquells de vostès que això s'assembla a no només JavaScript sinó en grec, com completament llengua desconeguda. Però això és un exemple de un llenguatge de programació. I per ara, tenir fe en què la primera línia de codi - i pel codi, em refereixo només text. El text que podria haver escrit literalment en Microsoft Word, si tingués l' programari adequat per després fer alguna cosa amb ell. Codi font de programació, la programació codi, en realitat és només el text, i es veu diferent, basat en l'idioma que està usant, no gaire diferent d'Anglès i Espanyol i rus, tots es veuen diferents quan els escriu en el seu teclat. Així que aquesta primera línia, per ara assumir fe, simplement obre un gràfic de la Internet, que gràfic sorollós que acabem de veure. La següent línia aquí és un exemple d'un llaç, i de fet vam veure el mateix argot en el vídeo de TED. Un bucle és una cosa que passa de nou i de nou, i tot i que aquest absolutament sembla críptica, amb el paraula clau, i alguns parèntesis i alguns punts i comes. Tornarem a això en poc temps, però que el bucle no és essencialment diu el programa, iterar sobre tots d'aquests punts sorollosos, d'esquerra a dreta, de dalt a baix. A causa que al final del dia, una imatge com això - i en realitat es pot tipus de veure'l en aquest projector - és en realitat una xarxa de punts. Així podem identificar cada un d'aquests punts per una coordenada, x, i, i amb aquest programa, ara podem començar a fer alguna cosa per aquests punts. Així que el que vaig a seguir endavant aquí i no és que em vaig a fer alguns canvis. En primer lloc vaig a seguir endavant i eliminar de tot això verdoses i blavoses soroll, i jo seguiré endavant i escriviu el següent certament sintaxi críptica. im per a una imatge. configurar blau en la ubicació x, coma, ubicació i, a 0. En altres paraules, vull simplement desactivar totes les del no-res punts en aquesta foto. Vaig a seguir endavant ara i feu clic a Aquest botó Run / Desar, i vostè compte en el costat dret, Apareix la imatge resultant. Ara és el verd fantàstic, però això no és sorprenent, ja que, literalment, vaig tornar fora, al fer 1 gener un 0, tots el blau a la foto. Bé, ara farem una mica més. im per a una imatge, punt setGreen, x, i. I això només significa iteració de l'esquerra a dreta i de dalt a baix. Apaga això, amb un valor de 0, també. Desa. I en el projector, no es pot realment realment veure res en absolut. A la pantalla del meu portàtil, si trec el cap a poc de la manera correcta, puc veure una mica d'un imatge, perquè segueixen sent una mica de vermell en aquest país. Si alguna vegada has escoltat la sigla RGB - vermell, verd, blau - s'està referint a aquesta composició d'una imatge utilitzant només els tres colors. I ara, que hem tirat tot verd, tot blau, però no hi ha molt vermell. Així que permetin-me posar sobre de la xarxa. Com puc fer això? Bé, en primer lloc, vaig a demanar aquest programa una pregunta. Vaig a seguir endavant i anem a cridar una variable, igual que en l'àlgebra. Vostè pot tenir x o y o z. Vaig a declarar una variable i dir, ja en aquesta variable, temporalment, el valor de l' imatges getRed valor en x, i. I de nou, ens tornarem a tots d'aquest detall en el futur. Però, per ara, només pren en la fe que aquesta línia està demanant el programa, el que és el valor de vermell en x, i? En aquest punt en particular? A continuació, vaig a fer alguna cosa amb ell. Llavors em vaig a fer la imatge del punt fixat en vermell en x, i, i, però aquesta vegada em vaig a potenciar fent vegades en vermell, diguem, 10. Per tant augmentar per un factor de 10. Permetin-me Allunyar ara i clic podia Run / Desar. I voila, que hi era tot el temps, tot i que els nostres ulls humans no acabava de veure-ho. Així que de nou, això ara és un codi real, un exemple d'un llenguatge que anem a arribar tornar al poc temps. Però adonar-se, en particular aquells de vostès sense aquesta experiència, és molt abans que nosaltres mateixos serem escriure codi com el que existeix. De fet, una eina amb la que ja està tot alguna cosa familiar, potser, és CS50 d' pròpia eina curs-comercial, que va ser realment reiniciat aquest estiu per alguns dels mateixos exalumnes de CS50, Ara giri TFS. Així que això passa a ser un lloc web construït en un llenguatge anomenat PHP. Utilitza una base de dades anomenada MySQL, les coses amb el qual ens posarem les nostres mans brut tarda al semestre. Però ho creguis o no, fins i tot alguna cosa així es redueix en última instància a la més simple dels bucles i les condicions i branques, com les que vam veure només una Fa moment en el vídeo de TED. El que vaig pensar que m'agradaria fer ara és la part no només una cosa que el personal ha fet per a l'escola, sinó més aviat alguna cosa exalumnes - estudiants, de fet - fet aquest últim any, Serra, Daniel, i Sam, l'últim dels quals no tenia abans experiència en programació quan va assumir el CS50. I per al seu projecte final, exhibit, a la Fira del CS50, 1 aplicació anomenada wrdly, que és una programa basat en la web per als que fan aquest video que vaig pensar que m'agradaria compartir amb li donarà una idea del que és just possible abans de fi de termini. [Reproducció de música] DAVID Malan: Això és de zero Setmana fins a la setmana 12 d'aquest any passat. [Aplaudiments] DAVID Malan: Com un teaser, també, molt per obrir la gana és el que hi ha és possible, és possible que hagi vist ja, o aviat podrien veure, market.cs50.net, 1 nova eina que l'equip del curs té estat treballant, aquest cop a col · laboració amb l'Harvard Student Les agències, de manera que a partir d'aquest any i continuant amb sort en aquest estiu que tindrà un estàndard oportunitat al campus de comprar i vendre coses del seu interès. I amb l'associació a través d'HSA, vostè També serà capaç de col · locar elements de en una de les botigues físiques de la HSA en algun moment en el futur, per tal de coses intermediari, en particular pel que graduar-se i no necessàriament vol descartar les coses, però en realitat pagar enviar a la gent que podria seguir aquí al campus. Així que més del que vindria. No obstant això, una mica més concretament, una eina que ha sortit de CS50 en els últims anys anys, amb la qual alguns de vostès podrien estar familiar i altres de vostès podrien estar google ara, en CS50.net/2x, vostè trobar un enllaç a una extensió de Chrome la qual cosa és demostratiu de com es pot l'ús de JavaScript, el mateix llenguatge que s'utilitza amb la torre Eiffel fa un moment, per posar en pràctica la velocitat de reproducció 2x per a tots els vídeos iSites Harvard. Això és una cosa que es construeix al propi reproductor de vídeo del CS50. Però això, també, si es comença a excavar en el codi font, el que farem feliçment a disposició, veuràs com fins i tot es pot resoldre problemes com aquest, l'acceleració dels ginys a llocs web amb que ja està ben familiaritzat. Així que una paraula ara al curs i expectatives i el que ve. En general, ens reunim aquí en efecte els dilluns i dimecres - encara aquest divendres, anem a reunir perquè de Shopping Week - 1:00-14:00, tot i que de vegades fins a les 02:30. Tenint en compte que és possible que tant volen o haver de prendre alguna classe a les 2:00 pm en endavant, o fins i tot abans, no adonar-se del Per descomptat és de suport del que es diu inscripció simultània, pel que anem a donar suport a una petició a la Junta de publicació d'anuncis el resident de degans en el seu nom si vostè té un conflicte en aquest lloc 1:00-02:30 rang. Cara a aquesta URL en línia per detalls addicionals. No obstant això, en termes de l'estructura de suport que caracteritza CS50, per als estudiants més i menys còmode per igual, ens oferir pistes diferents de seccions. I això és un parell de setmanes de descans, però en poc temps, se li demanarà que seu nivell de comoditat. ¿Està entre els que menys còmode, més còmode, o alguna cosa intermedi? I anem a tenir tres diferents pistes que s'adapten a precisament les audiències. Així que en cap moment el terme ha de vostè fins i tot sentir com si estiguessis competint en contra de qualsevol estudiant amb més o menys de fons que vostè. De fet, el curs està destinat a ser molt més col · laborativa i molt més obert que això. Pel que fa a les sèries d'exercicis, vostè trobar, també, que, a més de la edició estàndard del problema de cada setmana estableix, sovint hi ha un "hacker edició "que està destinat a ser dirigit en el 5% al ​​10% o menys de la demogràfica que està fet entre els més còmode i li agradaria més d'un desafiament a la norma edició del conjunt de processadors que espera. Més detalls sobre els quals hagi de que es troba en el pla d'estudis. Però també s'hi poden trobar detalls en els cursos finals dels dies. En general estableix problema vencen dijous. No obstant això, es pot estendre molts dels seus terminis a la tardor de dijous a Divendres, simplement per reunir-se amb nosaltres a meitat de camí, per així dir-ho, en resposta a algunes d'escalfament preguntes en alguns problema de la setmana conjunts, que automàticament després li donen un extra de 24 hores. També deixarem seva baixa puntuació, d'acord amb el pla d'estudis. Perquè et facis una idea de quin és el problema conjunts són - perquè és veritat estableix el problema del supòsit que definir en última instància, gairebé tots els L'experiència dels estudiants, més que conferències, més que seccions, més pel que la majoria de qualsevol altra aspecte del curs. L'any passat, per exemple, vam començar, com Anem a començar aquest any, amb Scratch. En particular, aquest divendres, utilitzarem, per just el temps d'un dia, una gràfica llenguatge de programació amb el qual anem a iniciar la programació d'arrossegar i deixar caure les peces del trencaclosques que només reunir físicament a si té sentit fer-ho lògicament. La setmana vinent, ens dóna gust transició a C, bastant antic, però molt petit i llenguatge senzill que ens permetrà realment anar de 0 a 60 en el curs de tan sols unes poques setmanes i, a continuació, parlay aquestes mateixes habilitats i coneixements dels construccions bàsiques de programació en llenguatges d'alt nivell com PHP, JavaScript, i encara altres més. L'any passat, el tercer conjunt de processadors en el curs va ser el de la criptografia, un aplicació específica del domini en què puguem Els estudiants amb impediments per a l'aplicació de qualsevol programes nombre de xifres, amb el qual per convertir o descodificar la informació, per xifrar-lo. Per a l'edició pirata informàtic, per contra, ens vam donar als estudiants de hackers un arxiu des d'un ordinador Unix estàndard que conté noms d'usuari i contrasenyes, l'últim dels quals eren xifrada, i ens va desafiar als hackers estudiants a desxifrar, el millor que van poder, les contrasenyes, encara en aquest mateix domini. Scramble, un joc amb el qual alguns de vostè és potser familiar. Una peça forense, on vam demanar als estudiants per recuperar les dades que havien estat suprimit el contrari de la meva pròpia digitals targeta compact flash de la càmera, per realment a escriure programari d'entendre, on estaven els zeros i uns en que la càmera digital que prèviament compondre un gràfic JPEG? Un dels reptes de les classes de l'any passat que implica escriure el més ràpid corrector ortogràfic possible, competint contra els seus amics i companys de classe si els agradaria. Implementar Huff 'n Puff, un programa de compressió. I després que acaba el semestre amb CS50 Finances, una aplicació basada en web amb que es crea una pàgina web eTrade-com per comprar i vendre accions, per la qual cosa dir-ho, en realitat tirant gairebé cotitzacions en temps real de Yahoo! Finances. El que no vam fer l'any passat va ser un conjunt problema que queda però, un dels favorits. Si mai has anat a shuttle.cs50.net, veureu un usuari interactuar una mica així. Però fa dos anys, la classe implementat, utilitzant Google Maps i la Google Earth plug-in i una mica de comprensió amb la conducció de tot el campus, pel que l'objectiu d'aquest joc era, com es pot veure algunes de les cares, és conduir pel campus a la recerca de personal, companys docents i les entitats emissores i quan no, posant-los en el seu autobús. Cap d'ells realment sembla ser aquí, així que entrarem un codi de trucs. [El] DAVID Malan: Això és. Està bé. I aquí és el personal barrejada en tot el campus. I com es pot veure, al costat dret costat de la pantalla, el servei d'autobús té seients buits. I l'objectiu era escriure la codi amb el qual per simular aquest conducció i recollir i deixar fora dels passatgers. Aquest, també, l'ús d'un llenguatge anomenat JavaScript. Així que adonar-se que els programes com la voluntat estar en la nostra mateixa trajectòria aquest any, també. Pel que fa, ara, de suport addicional, tenim horari d'oficina. Com haurà vist a casa menjador oa Annenberg, estarem al menjador de casa sales de quatre nits a la setmana - Leverett, Pfoho, Eliot i Annenberg enguany, 20:00-23:00. I el que pensem que ens agradaria fer aquest any És una cosa una mica diferent. Si vostè ha sentit rumors que l'any passat que era una mica massa estressant, això les hores d'oficina l'any, com anem a descriure la setmana que ve, serà més orgànic, el qual a la seva arribada, se li enviats a una taula en particular on diversos membres del personal esperen, i farem les coses molt més orgànicament. No més cues, no més iPad, però Prefereixo tenir més íntim converses al voltant d'una taula de poc vuit o menys estudiants, per la qual cosa aproximar-se a la idea del que d'una altra manera seria una classe molt més petit. Oferim, a més, aquestes coses ens anomenada tutorials, vídeos filmats en avançar per un dels ensenyaments del curs companys, Zamyla, en la qual us guiarà pel problema de la setmana conjunts, que ofereixen consells i trucs per a la desafiaments que s'acosten. I per contra, després dels butlletins de problemes són causa, enguany, també anem a alliberar petits clips diuen autòpsies que en realitat us guiarà a través solucions representatives, tant bones com dolent, a través del qual es pot inferir com vostè podria tenir o ha de tenir implementat la seva solució. I què oferirem per primera vegada Aquest any també, particularment per a aquells alumnes que s'acullin a del curs d'una altra recursos però, però, estan lluitant tot massa, el curs sí s'aparellarà als estudiants, com els recursos ho permeten, amb els tutors perquè Té un ambient més íntim tant oportunitat de menjadors casa permetre l'assistència d'un-a-un. Ara, un últim cop d'ull a algunes dels jocs de final a la vista. Vostè podria estar familiaritzat amb el CS50 Hackathon. Bé, venint aquest mes de desembre, de 8:00 PM fins les 7:00 am, en el començament de Període de lectura, serà una oportunitat per reunir-se amb els seus companys de classe - això seria al voltant de les 9:00 PM - durant el qual se submergeix en la seva última aplicació del projecte juntament companys de classe, amics i menjar. Això seria al voltant de les 1:00 AM, quan el primer lot de menjar va arribar. I això és sobre 04 a.m. que any en particular en l'CS50 Hackathon. Però el veritable punt culminant del curs és la intenció de la Fira CS50, un campus exposició dels seus projectes finals, a la qual la família i amics són tots convidat, ja que els nostres reclutadors i els nostres amics de la indústria. Això, per exemple, és una visió de la Més de 2.000 persones que han assistit anys anteriors. Expressions com aquesta són comuns, i de la mateixa manera fer el seu companys delecten en les coses que has aconseguit. I, de fet, amb aquest fi, tenim un esdeveniment d'inici de curs, així. Si aquest tipus de coses li agraden, o vostè és almenys curiós pel que fa al que això, sap que una nova tradició de la curs es diu CS50 Trencaclosques dia. I això va ser instituït un parell de anys enrere per assenyalar realment a l'escola que la informàtica no es tracta d' programació, i certament no és sobre abraçar només els estudiants que tenen experiència prèvia. En realitat es tracta de resoldre problemes en termes més generals. I així Trencaclosques Dia, en els últims anys, s'ha convertit en un bon col · laboració amb els nostres amics a Facebook, amb el que serà fabulós premis i pizza a l'altra banda del riu a l'i-lab aquest proper dissabte. Adreceu-vos a l'adreça URL amb dos o tres amics, si vol participar en aquesta nova tradició. Així que m'agradaria demanar-li que mantingui una cosa en ment, i tenim un clip de dos minuts en el qual per tancar avui. 73% és el número per recordar. Cake també l'esperen fora d'aquesta creuer com d'aixecar la sessió en un parell de moments, que és una tradició del curs, així. Però aquesta és la cita clau de la programa del curs per tenir en compte. El que importa en última instància, en aquest curs no és tant que s'acaba en relació amb els seus companys de classe, però on que, en la Setmana 12, acaba amb relació a a tu mateix en la setmana 0. Però la idea que deixarem que amb avui és aquest últim aquí pel mateix Daniel, que va fer la vídeo wrdly fa un moment. Us deixo amb aquesta visió del que s'acosta. I mentre ho fem, si ens podria haver CS50 el personal de la part davantera de l'habitació que anem fins a l'etapa de pintar tot la més d'una imatge visual com a el que li espera aquest any - aconseguir incòmode. Anem a concloure amb aquest aquí a la pantalla. [Reproducció de música] DAVID Malan: Aquest és CS50. [MUSIC - Matt & Kim, "Està bé"] ALTAVEU 1: M'encanta CS50 més de gats. ALTAVEU 2: Whoaaaa! [El] DAVID Malan: Aquesta és, doncs, CS50. Ens veiem el divendres. [Aplaudiments i crits] NARRADOR: En la següent CS50, un escenari demo no surten segons el planejat. DAVID Malan: Volem trobar Mike Smith en aquest directori. Bé, quins són els seus instints? Jo podria anar més o menys a la meitat de la guia telefònica, va mirar cap avall, veiem que Estic en M, i ara sé que Mike Smith no està a l'esquerra. Ell ha d'estar a la dreta. I el que en aquest punt, literalment pot trencar - En aquest punt, podem literalment destruir - En aquest punt, podem figurativament trencar la guia telefònica per la meitat. [Rasgueo UKELELE]