[Música tocando] [Music - Rossini, "RANZ DES Vaches "do Guillerme Tell] [Music - The Beat INGLÉS, "MARZO Dos xefes xiratoria "] [Aplausos e aclamacións] DAVID Malan: Entón iso é CS50. O meu nome é David Malan. E o 73% de vostedes non teñen experiencia previa coa ciencia da computación, ao contrario do que se podería pensar. Entón, hoxe, penso que sería desbastar na que a falta de familiaridade, pero tamén darlle un sentido de, para aqueles de vostedes con máis comodidade, que as direccións pode ir neste semestre. Entón, imos comezar con isto. Realmente non teño idea do que está dentro un ordenador, aínda que, coma ti, eu usalo todos os días. Pero é unha especie de caixa, e non hai non hai moitas entradas para el. Como mínimo, hai, o que? Probablemente un cable de alimentación. E, de feito, con este ingrediente, electricidade, parece que estamos a ser capaces de facendo un pouco nestes días. Con todo, ao final do día, ten que representar as cousas que nos preocupa. Temos que representan información de algunha maneira. E probablemente polo menos vagamente familiarizado coa idea de binario ou anacos de algunha maneira ou doutra, os ordenadores reducida a ceros e uns. Pero podemos abrazar iso e, polo menos, poñer un pouco de luz para iso? Entón, eu teño eses pequenos lámpadas de mesa aquí. Eu teño unha toma eléctrica aquí. E eu vou propoñer que dentro informático é, polo menos, unha das estas cousas, algo capaz de ser activado ou desactivado. Neste caso, é en realidade unha lámpada de mesa, pero no nivel máis baixo, é algo chamado un transistor. Pero, no noso mundo, é unha lámpada de mesa, de xeito Eu estou indo a ir adiante e chamar este no meu electricidade aquí. E eu afirmo que o uso deste sinxelo, dispositivo simple, este interruptor simple, eu pode representar información. Por exemplo, agora, eu son representa nada, non? Estou representando o que eu vou chamar 0 ou falso, o contrario de algo realmente estar presente. Pero se eu simplemente conectar esta opción, agora eu teño representado a 1. Entón, usando este sinxelo anaco de memoria, se queres, podo representar información. Agora, por desgraza, o meu ordenador non pode facer moito. El só pode representar dous valores en todo o mundo - 0 ou 1. Pero o que é unha solución obvia, agora, se queremos ampliar o noso ordenador de memoria e representan máis que 0 e 1? Ben, imos incorporarse outro exemplo bit. Imos ir a outro interruptor, outro Transistor, pero desexa pense nisto. Déixeme ir adiante e chamar este no meu ordenador tamén. E eu vou afirmar, agora, que por usando un pouco máis de enerxía eléctrica e facendo máis destas opcións e en fóra, podo representar máis como información. Entón, agora, este é un. Se eu queira representar agora 2, eu podería facelo. Pero, normalmente, convención, como veremos finalmente ver, vai que eu faga iso. Polo tanto, este é 0, esta é unha. Este sería 2. E non sorprendente, iso sería 3. Así, deste xeito, aínda así, pode contamos-se aínda máis? Se eu conseguir un terceiro bit, un terceiro de rede, cal é o maior número que poida agora contarse a partir de 0? Entón 7 Se eu estou empezando a 0, non? Porque se eu transformar esa luz e realmente activar esta terceira e última luz na miña toma eléctrica aquí, entón eu teño a capacidade de representar ningún dos dous valores aquí, dous valores aquí, dous valores aquí - e para que eu poida representar 2 veces 2 veces Dous, ou oito valores posibles. E se eu comezar a contabilidade en 0, así que é 0, 1, 2, 3, 4, 5, 6, 7. Polo tanto, este binario. É realmente tan sinxelo coma iso. E eu diría que este é realmente moi familiar para a maioría todos nesta sala. Déixeme ir adiante e abrir unha editor de textos pouco aquí. E pode lembrar de escola primaria que tiñamos cousas como os centos lugar, o lugar de decenas, e aqueles lugar. E lembrar que, se tivo algún decimal número, como algo aleatorio como 123, faría esencialmente escribir isto na forma destes tres columnas. E por que é 1, 2, 3 que sabemos como 123? Ben, na columna máis á esquerda, temos unha 100, dous 10s, de xeito que é 120, tres 1s, de xeito que é 123. Agora, este mundo que nós só iluminada é exactamente o mesmo que xa estivo familiarizado con por anos, Só que agora, as nosas columnas non son potencias de 10. Son só potencias de 2. Así, mentres que o lugar querido, este será o lugar dobres, este é será o lugar de catro. E por que eu estou usando só a máis simple de mecanismos para converter as cousas on e off - electricidade está fluíndo ou electricidade non está fluíndo - Non pode ter a mesma expresión gama de 0 a nove. Estamos indo para mantelo super sinxelo neste mundo dos ordenadores. Teño só 0 ou 1 - off ou on, falso ou verdadeiro. E entón o que eu estou representando agora é 1, 1, 1, xa que cada unha destas luces é iluminada. Ben, iso dáme un 4, máis un 2, entón que é 6, máis un 1, e iso é 7. E ergo fai esa secuencia de tres bits representar o número 7. Entón todo este tempo, dentro do seu ordenador, ser calquera número de transistores, calquera número de bits. Con todo, ao final do día, pode representar información tan sinxelo que iso. Agora, por desgraza, só contaba ata 7 na, ata agora, CS50, pero espero que poidamos facer algo mellor que iso. E, de feito podemos. Supoña que nós, como seres humanos só decidiu arbitrariamente que imos para asociar números como 1, e 2, 3, 4, 5, 6, 7, coas letras específicas alfabeto. E por razóns históricas, vou iniciar un tanto arbitraria, pero estou vai dicir, os seres humanos, nós estamos indo decidir como un estándar, a nivel mundial, que 65 representa o número da letra A. 66 representará B. Dot, punto, punto. 90 representará letra Z. E imos supor que, se realmente poñer algúns penso niso, poderiamos chegar cos números de puntos de exclamación e letras minúsculas, e de feito, outras persoas teñen feito isto por nós. Entón, agora nós tiña anacos cos que podemos representar números, números cos que podemos representar letras, e con cartas agora podemos comezar a compoñer correos electrónicos e personaxes impresión na pantalla. Entón deixe-me invitar, se eu puidese, oito voluntarios bravos - que non lle importa que aparece non só na cámara, pero en Internet - para vir aquí e representar oito tales bits, en vez de tres. Así como sobre un, dous? Como preto de tres? Como preto de catro horas de luz azul, cinco á final? Sobre alguén aquí? Seis diante, sete por diante, e oito fronte, así como. Entón, eu só pasou para chegar preparado con unha morea de anacos de papel. E, estas pezas de papel son números que representan as columnas vostedes van representar. Entón vai ser - Cal é o seu nome? ALUMNO: Anna Leah. DAVID Malan: Anna Leah, ten será a columna 128s. Está? ALUMNO: Chris. DAVID Malan: Chris vontade ser a columna de 64s. Está? ALUMNO: Dan DAVID Malan: Dan ganas ser a columna de 32s. ALUMNO: Pramit. DAVID Malan: Pramit vontade ser a columna de 16s. ALUMNO: Lillian. DAVID Malan: Lillian será a 8s. ALUMNO: Jill. DAVID Malan: Jill vontade ser a columna de 4s. ALUMNO: Mary. DAVID Malan: Mary será o 2s, e? ALUMNO: David. DAVID Malan: David vontade ser a columna de 1s. Entón, se vostedes poderían pisar un pouco cara diante para que todos poidan ver. O que vostedes non ven é que no redor deses anacos de papel é unha pouco cheat sheet que está a piques de instruír os oito bits para cada levantar a man ou non levantar a man. Se a súa man sobe, son representando un 1. Se a súa man queda para abaixo, son representa un 0. Mentres tanto, o público debe ser capaz de descubrir, derivada cartografía, o que a palabra de tres letras estes persoas están a piques de deletrear. Así, en só un momento, que vai ler a primeira liña fóra da parte traseira súa folla de fraude, e é ou aumentará ou non levantar a man. Se vostede é un, vostede plantexa, se es 0, está alí torpes, só como aquel. Ir O número, en primeiro lugar, estes faces están representando? 66. 66, non? Temos un 1 na columna 64s, un 1 na columna 2s. Tanto me dá 66, de xeito que parece estar representando B. Entón, vostedes teñen escrito - OK, iso é o suficiente. B. Entón agora imos pasar para nosa segunda carta. Ir Quen é o máis rápido en matemáticas aquí? Así, 79. Unha vez máis, se sumarmos todas as columnas no que hai a 1, na actualidade, só como fixemos antes co máis simple de exemplos de 7, agora obter o número 79. Que segundo a nosa cartografía é o letra O. Entón, estamos case alí. B, O. E, finalmente, ir. O que están representando agora? Menos consenso. Isto é só un murmurio absoluta. Si, é de feito 87. Bo Entón, se nós agora mapear esa volta a - imos comezar a chamar á nosa táboa ASCII, American Standard Code para Intercambio de información. Isto nos dá a letra - non "bo", pero "arco". E iso é un perfecto suxestión para vostedes para ter un tiro ea cabeza nas costas. Moitas grazas. [Aplausos] DAVID Malan: pode mantelos. Aínda que, en realidade, alguén como unha lámpada de mesa, tamén? [Buzina de audiencia] DAVID Malan: Lámpada de mesa? [Risas] DAVID Malan: Serio? Lámpadas de mesa para todos? Todo ben. Así, comezando co máis sinxelo de principios, temos agora non só contaba por riba de 0 todo o camiño ata a 7, temos asumido que só xogando bits ou máis luces ou máis transistores a este problema, podemos representar números cada vez maiores, e Logo, pistas cada vez maiores de alfabetos, como o inglés. E só imos na fe para hoxe Do mesmo xeito que podemos comezar a representar gráficas e de vídeo e calquera número de outros medios de comunicación cos que estamos familiarizados hoxe. Polo tanto, este é CS50, e nesta clase xunto a vostedes, unha vez máis, moitos aínda compañeiros que teñen tan pouco experiencia como. E digo isto só porque moi miúdo, incluíndo como recentemente como unha das o calouro asesoramento de eventos e en segundo ano de primavera pasada aconsellando evento, moitas veces escoitamos estudantes isentam cando chegar á mesa de CS, ben, Eu estiven a pensar en facelo clase intro, pero eu non son realmente un persoa ordenador. Ou, pero todos sen dúbida sabe máis que eu. E eu coloque iso na maior fonte posible, para transmitir esa mensaxe de que iso non é de feito o caso. E se está a se pregunta si I, en realidade, estar aquí? Entenda que non só é deste curso Título Introdución á computación Ciencia, é Introdución á computación Ciencia I. Polo tanto, non é de feito un segundo esta introdución. Polo que non é, de feito, no lugar incorrecto. E entre os obxectivos que teño para hoxe son para amenizar-lle os problemas pode ter, pero tamén para pintar unha imaxe do que está na tenda para estudantes menos e máis cómodo tanto neste curso. Pero en primeiro lugar, unha palabra nunha das apostilas ten hoxe, entre os que hai unha serie de preguntas frecuentes. Foi unha visión do noso hai tempo agora introducir unha nova clasificación opción para este curso - ou sexa, SAT / unsat. Filosóficamente para min, é moi, moi, moito máis importante que o alumnos nesta clase involucrarse co material, ser contestada polo material, e se preocupe moito, moito menos sobre a mecánica de puntuación reais e notas de letra no semestre de final, pero realmente abrazar a curso e seu material. E realmente iso se sente, máis xeralmente, para o que é interesante para eles, a senten reto e recompensados, senón sen medo ao fracaso. E, de feito, esta é tamén unha recorrente tema este e outros introdutorio cursos noutros campos, que ten este medo cando se trata de poñendo os dedos da persoa en augas descoñecidas. Eu mesmo, en 1995, era un calouro. Eu estaba moi centrada en ser un concentrador Gov aquí. E aínda que eu sempre medrou cun pouco dun interese en ciencia da computación. Eu sempre fun curioso. Pero naquela época, aínda, eu tiña ese medo de mesmo de pisar o CS50, tanto de xeito que eu nin sequera facer a compra que o primeiro ano. E a única razón de eu poñer un pé na porto segundo ano foi porque eu foi autorizada a levalo de aprobación / reprovação. Pero aínda pasa / falla esixiu que eu recibín coraxe para facer unha consulta co Profesor Kernehan na época, traer esta gran folla de papel, e pedir el para a súa sinatura ea súa permiso para explorar estas augas descoñecidas. E iso non axudou nos últimos anos que ao facer isto na CS50, cando utilizado para ser aprobado / reprobado, sería semellantemente decenas ou centenares dos seus compañeiros ten que vir cara arriba, Deus me libre, o cabeza de Sanders con este formulario, que nalgunhas mentes representa unha incapacidade, Atrévome a dicir que, para levar a cabo é o nivel dos seus compañeiros. Que é ridículo, pero eu creo que hai esa mentalidade. E nunca houbo nesta cultura do SAT / unsat, ou de aprobación / reprovação máis Normalmente, neste curso, ou realmente neste campus. Polo tanto, este ano nós cambiamos iso. Eu sería a metade de éxtase de esta clase ou máis rematou levando CS50 SAT / unsat. No período de un ano, sería marabilloso Case todo o mundo é. A partir de aí, talvez, nós imos traballar en notas de letras na Universidade de Harvard Facultade en xeral. Pero, por agora, imos facelo dentro da nosa propia esfera, e gustaríame corazón incentivos-lo a revisar os FAQs e facer preguntas, como ve o axuste, de xeito que espera que, a diferenza de min, non é ben ter o mesmo factor de medo cando explorar o que é, probablemente, un lugar descoñecido. Entón, cal é CS50? É unha introdución ao empresas intelectuais de ordenador ciencia e da arte da programación. Pero o que iso realmente significa? Ben, ata agora, nós falamos moi brevemente sobre a representación da información. Pero supoña que nós realmente queremos de facer algo con el. Necesitamos introducir a noción de o que imos chamar de un algoritmo. Un algoritmo é un proceso, un proceso, un conxunto de instrucións para facendo algo. E un algoritmo pode ser algo super sinxelo. Por exemplo, un exemplo co que algúns de que pode estar familiarizado é este cousa aquí. Polo tanto, este libro aquí é cada vez máis datados, pero era unha vez, contiña unha gran cantidade de nomes e os números de teléfono. E, de feito, se eu quería atopar alguén desta lista telefónica - dicir, alguén chamado Mike Smith - Podería atopar Mike Smith en calquera número de xeitos moi sinxelo. Podería comezar no inicio e ir a páxina 1, non está alí. Page 2, non existe. Page 3. É que o algoritmo, é que proceso, correcto? Por iso, é correcto, non? Eu son o tipo de idiota por facelo na desa forma, pero, finalmente, eu vou atopar o apelido S, e espera que Mike É nesa sección, e eu me volverei feito co meu algoritmo. Pero certamente non é intuitivo. Máis cada ser humano razoable neste cuarto non faría iso. O que faría? Vostede iría directo para o medio, non? Aproximadamente ao medio. E vostede entende, oh, estes son os Ms Entón, Mike Smith, último nome a ser Smith, non é, claramente, a continuación, na metade esquerda do libro. Debe ser cara ó S está na dereita. E neste punto, aínda que a maioría de nós non fagas iso, en realidade, podemos literalmente rasgar este problema á metade. [Aclamacións e aplausos] DAVID Malan: Grazas. [Aclamacións e aplausos] DAVID Malan: Pode literalmente destruír o problema á metade, deixándome con, literalmente, un problema de metade do tamaño. Entón, se este libro teléfono era - e é probablemente foi - preto de 1.000 páxinas, agora é só 500. Se eu fai iso de novo e eu entendo, oh, caramba, eu fun lonxe de máis, eu estou no Ts sección, podo semellante - figurativa ou literalmente - rasgar o libro de teléfono - era, en realidade, moito máis fácil do que o tempo. Podo literalmente rasgar o libro de teléfono ao medio, deixándome agora con Non 1000, non 500 - 250 páxinas. E podo ir 125, e metade diso, e metade diso, e metade diso, ata que, finalmente, eu vou ir con só unha única páxina. [Risas] DAVID Malan: Ese é o parte eu falla diante. Único no que Mike espero é. Agora, estes algoritmos diferentes poden ser tipo de ou avaliadas en formas diferentes. A primeira foi moi lineal, non? Pasar páxina, mirar para Mike. Pasar páxina, mirar para Mike. É moi lineal. Se hai máis dunha páxina no teléfono libro, el probabelmente vai me levar máis un segundo, máis unha unidade de tempo, con todo estamos computando tempo. Entón, eu podería chamar así esta liña aquí, en que medida que o tamaño do problema aumenta de esquerda a dereita - libro de teléfono queda menor ao maior - eo tempo vai aumentar en no eixe vertical, a maior o libro de teléfono. Entón n é só unha variable xeral que científicos da computación utilizan para representar algún valor, algún número. Así, n aumentará linearmente. O dobre do tamaño da súa lista telefónica, é me vai levar dúas veces máis tempo, moi probablemente, para atopar o Mike. Agora, eu podería ser intelixente sobre isto, certo? Eu estaba quedando aburrido rapidamente. Podería ter feito isto por dous. Así, dúas páxinas, a continuación, catro, despois seis, tras oito. E eu podería comezar a voar a través dunha pouco máis rápido, aínda que en menor risco de superación Mike, pero que non é curva será moi diferente. El aínda vai ser unha recta liña, pero un pouco máis rápido. Pero o que foi que eu fixen? En realidade, eu fixen unha cousa fundamentalmente mellor. Eu puiden o que imos chamar logarítmica tempo, o rexistro de n, en que este verde liña ten un moi, moi, moi borde menos directo a el. E en vez diso, el suxire, como especie de se achega do infinito sempre de forma gradual, que eu podería realmente ter unha páxina 1000 libro de teléfono, o dobre do seu tamaño o próximo ano - porque creo moi máis persoas se mudan para a cidade. Entón agora eu teño 2.000 páxinas, pero como moitos máis pasos é que máis intelixente algoritmo vai levar? Só un. Quero dicir, isto é unha cousa poderosa. Ou tamén para 4.000 páxinas o próximo ano, que me vai levar só dúas etapas. Entón pode xogar cada vez maior problemas en me, non moi distinta da web é xogando problemas cada vez maiores todos os días no Google e Facebooks da do mundo, e non é unha empresa tan grande. Porque eu coloque máis atención e coidados en meu algoritmo co que debe resolver problemas de forma eficiente. E, de feito, que será un dos os obxectivos deste curso. Vai, ao longo do camiño, aprender a programar. Vai aprender a programar en calquera número de idiomas. Con todo, ao final do día, o curso sobre a resolución de problemas e obtendo mellor en resolver problemas - e, como en casos como este, resolución de problemas máis eficiente. Agora, ata o momento, fixemos esta moi intuitiva. Imos introducir algo bastante xenérica chamada pseudocódigo. Entón, imos finalmente chegar, neste curso, para varias linguaxes de programación. Pero hoxe imos facelo en inglés-like sintaxe, onde só unha especie de, digamos, o que quere dicir, pero é sempre tan sucinta e non preocuparse gramática e frases completas. Acaba de se expresar como concisa posible. Entón pseudocódigo é o inglés-like que representa a sintaxe unha linguaxe de programación. E para iso, déixeme propoñer que agora modelar o proceso que acabamos de descrito de contar algo un pouco a diferenza, esta vez tendo un mira este video de cinco minutos producido polos nosos amigos na TED que define o pseudocódigo dicir, define o que pensamento algorítmico é, e mesmo aínda que o exemplo que está a piques de ver é, en si mesmo, super sinxelo, é comezará a darnos o mental modelo, o vocabulario, coa cal facer moito, moito máis complexo algoritmos moi rapidamente. [BEGIN reprodución de vídeo] [Música tocando] Narrador: O que é un algoritmo? Na ciencia da computación, un algoritmo é unha conxunto de instrucións para resolver algúns problema paso a paso. Xeralmente, os algoritmos son executados por computadores, pero nós seres humanos temos algoritmos, así. Por exemplo, como ía sobre a conta do número de persoas nunha sala? Ben, se vostede é como eu, probablemente punto en cada persoa, nun un tempo, e contar a partir de 0. 1, 2, 3, 4, e así por diante. Ben, iso é un algoritmo. De feito, imos tratar de expresar-lo un pouco máis formalmente en pseudocódigo - Inglés-como sintaxe que se asemella unha linguaxe de programación. Deixe-N igual a 0. Para cada persoa en cuarto, establecer N igual a n + 1. Como interpretar este pseudocódigo? Ben, unha liña declara, por así dicir, unha variable chamada N e arrinque o seu valor a 0. Isto significa que só o inicio do noso algoritmo, o único coa cal estamos contando ten un valor de 0. Ao final, antes de comezar a contar, non contar nada aínda. Chamar esa variable N é só unha convención. Podería telo chamado máis nada. Agora a liña de dous demarks o inicio dunha loop, unha secuencia de pasos que repetir un determinado número de veces. Así, no noso exemplo, o paso que estamos tomando está contando a xente na sala. Baixo a liña dous é a liña de tres, que describe exactamente como imos sobre a conta. A retirada implica que se tres liñas que se repiten. Entón, o que o pseudocódigo está dicindo é que, despois de a partir de 0, para cada persoa na sala, nós imos aumentar N en 1. Agora é este algoritmo correcto? Ben, imos bater nel un pouco. Isto funciona se hai dúas persoas na sala? Imos ver. Na liña un, que arrincar N 0. Para cada unha destas dúas persoas, Logo incrementar N en 1. Así, na primeira viaxe a través do lacete, actualizamos n de 0 a 1. Na segunda viaxe a través dese mesmo lacete, actualizamos N 1-2. E así ata finais deste algoritmo, n é 2, que de feito corresponde ao número de persoas na sala. Tan lonxe, tan bo. Como preto de un caso de canto, aínda que? Supoña que hai 0 persoas no salón - alén de min, quen está facendo a conta. Na liña un, que arrincar N 0. Esta vez, porén, a liña de tres non realizar en todo sempre que non haxa unha persoa na sala. E así segue sendo N, 0, o que corresponde a número de persoas na sala. Moi sinxelo, non? Pero a conta de persoas, unha de cada vez é moi ineficiente, tamén, non? Seguro que podemos facer mellor. Por que non contar con dúas persoas á vez? En vez de contar 1, 2, 3, 4, 5, 6, 7, 8, e así por diante, por que non contar, 2, 4, 6, 8, e así por diante? Inda parece máis rápido, e é sen dúbida. Imos expresar esa optimización en pseudocódigo. Deixe-N igual a 0. Para cada par de persoas na sala, definir N igual a N 2. Cambio moi sinxelo, non? Ao contrario de un contador de persoas de cada vez, que, no canto contar eles dous á vez. Este algoritmo é, por tanto, dúas veces tan rápido como o último. Pero será que é correcto? Imos ver. Isto funciona se hai dúas persoas na sala? Na liña un, que arrincar N 0. Para que un par de persoas, Logo incrementar n por dous. E así ata finais deste algoritmo, N é 2, que de feito corresponde ao número de persoas na sala. Supoñamos que hai seguinte 0 persoas na sala. Na liña un, que arrincar N 0. Como antes, a liña de tres non executa en todo, xa que non existen os pares de persoas na sala. E así segue sendo N, 0, o que de feito corresponde ao número de persoas na sala. Pero o que se hai tres persoas na sala? Como é que esta tarifa algoritmo? Imos ver. Na liña un, que arrincar N 0. Para un par desas persoas, Logo incrementar n por 2. Pero e logo? Non hai outro par cheo de persoas na sala, polo que a liña dous non é aplicable máis. E así ata finais deste algoritmo, N aínda é 2, o que non é correcto. De feito, este algoritmo dise ser cesta, porque ten un erro. Permite resolver con algunha nova pseudocódigo. Imos n igual a 0 para cada par de persoas na sala. Conxunto N igual a N 2. Se unha persoa permanece non pareado, definir N igual a n + 1. Para solucionar este problema particular, temos introducidos, en liña de catro, unha condición, tamén coñecido como un sector que executa só se hai unha persoa que non poderiamos par co outro. E agora, se hai un ou tres ou calquera número impar de persoas en o cuarto, este algoritmo agora contalos. Podemos facer aínda mellor? Ben, poderíamos contar en 3s ou 4s ou mesmo 5s e 10s, pero, ademais, é se ve algo difícil a punto. Ao final do día, se realizada por ordenadores ou de seres humanos, algoritmos son só un conxunto de instrucións con que para resolver os problemas. Estes foron só tres. O problema que resolve cun algoritmo? [FIN reprodución de vídeo] DAVID Malan: Ese é o único momento Vou aparecer en forma de debuxos animados. Pero onde esta historia deixa de fóra, agora, é como podemos facer mellor? Tres e catro, reivindicamos, podemos contar persoas moito máis rápido, pero podemos fundamentalmente facer mellor que iso? E eu aposto que podemos. Se introducirmos un pouco da nosa propia pseudocódigo aquí, vou propoñer que podemos alcanzar unha liña como esta. Non imos contar as persoas un, dous, tres, catro. Non estamos indo a dous, catro, seis, oito. Nós imos facer fundamentalmente mellor por repensar o problema, e neste caso, aproveitando outra forma subutilizados recurso. En só un momento, eu espero que perdoe E o humor nos por de pé lugar, en que punto estamos indo pedir a cada un de vós para asumir no seu mente o número 1. Vostede, entón, vai cada vez máis torpes, como o tempo pasa, atopar alguén que está de pé, combinar seus números xuntos engadindo-up. Un de vós é, entón, vai executar para sentar abaixo en primeiro lugar, e a outra persoa vai repetir. Así, noutras palabras, por sementeira de todas vostede co número 1, e, a continuación, combinar aqueles en 1s 2s e os 2s en 4s, con todo cada vez máis sentado, hai, ao final do este algoritmo, ten só un préstamo alma que non se sentou rápido abondo, pero que ten toda a conta de audiencias na súa mente. Entón, se, imos adiante e - Primeiro Paso - erguer-se no lugar. E realizar. [Multitude murmurando] DAVID Malan: Vostede sabe onde Lauren é? 729? [Multitude murmurando] DAVID Malan: Todo ben? [Multitude murmurando] DAVID Malan: Todo ben, temos que estar achegando do fin. Vemos un compañeiro aquí de pé aínda. Quen precisa de máis para vinculación? Se vostedes queren vincular. Alguén alí enriba. Por que non dar unha man aquí. Para as poucas persoas que aínda están de pé, o que as cifras que ten na súa mente? ALUMNO: 78. DAVID Malan: 78 plus - que está de pé aquí abaixo? ALUMNO: 39. DAVID Malan: Máis 39. Por outra banda, quen máis aínda está de pé? 81? OK, quen máis? Outro 81? Guau. E entón o que está arredor? ALUMNO: 49. DAVID Malan: 49, ademais de? ALUMNO: 98. DAVID Malan: 98 plus? Será que alguén máis? 12? Bo traballo. [Risas] DAVID Malan: Oh, 112 - oh. Bo traballo! [Risas] [Aplausos] DAVID Malan: Calquera persoa aínda está de pé? Sentímolo? ALUMNO: 99. DAVID Malan: 99. Calquera outra persoa aínda está de pé? E o número total de alumnos aquí é, en realidade, segundo a - ten un número? Oh, o número real de persoas no cuarto, de acordo co que conta os bolseiros de ensino estaban facendo no camiño de todo, foi 729. Así, a partir dunha sala chea de estudantes de Harvard que se contaron, o resposta é 637. [Risas] DAVID Malan: Tan preto. Pero aínda así. OK, entón iso é un ensino momento, non? Este momento é o que nós describimos como un erro. Nalgún lugar ao longo do camiño, fixemos algúns aritmética mal, ou alguén se sentou, ou á esquerda, ou algo deu errado. Pero iso é bo. Porque aínda así, nos quedou moi preto. E eu diría que temos para o mal responder moito máis rápido do que eu tería usando a miña visión máis lineal. Entón, imos supor que teña de feito obter este corrixir, pero creo que agora sobre o que estaba a ocorrer cada vez, contra a miña propio algoritmo apuntando inxenuo. Un, dous, tres. Se hai de feito 729 ou 637 persoas aquí, que tería me levado Literalmente 637 ou 729 pointings do dedo e incrementando a miña conta total. E eu podería facer un pouco mellor, vai dous, catro, seis, oito, e dobrar esa velocidade, quizais ata triplicar ou quádrupla, dependendo; ben podo facelo contando na miña cabeza. Pero esta visión que vostedes tomaron era fundamentalmente diferente. Debido, en principio, todos vostedes se levantou. Entón, todo 729. E entón, literalmente, a metade de se sentou. E, despois disto, outra metade do que sentou. E, despois disto, outra metade do que sentou. E o número de veces que se vostedes poderían sentado é máis ou menos oito ou nove ou dez veces o total, dependendo do que a nosa conta total é. E podemos clasificar de facer Este é o outro lado. Se tivésemos 1.024 persoas na sala, o número total de veces que podería reducir á metade a 1024 é de 10 persoas. Agora pense sobre iso en noutra dirección. Supoñamos que, ridiculamente, que tivemos, digamos catro millóns de persoas nesta sala, ou unha sala un pouco maior. Cantas veces teríamos ido por este algoritmo, tal que a metade desta clase se sent? El só vai ter 32 como operacións, mesmo nunha clase de tamaño catro millóns. Por que? Debido catro mil millóns vai para dous millóns, vai a un millón, vai a 500 millóns, vai a 250 millóns, punto, punto, punto. Só podo facer esa división preto de 32 veces, ao momento en que, todos, agás unha persoa estaría de pé esquerdo. E que, ademais, é unha especie de poderoso idea de que cada vez máis imos tratar alavancagem neste curso, e en programación e ciencia da computación máis Xeralmente, estes xermes dunha idea con que pode entón resolver problemas moi, moito máis poderosa. Entón comezamos moi sinxelo que pseudocódigo e un cara nunha sala, pero agora con unha sala chea de persoas fixemos fundamentalmente mellor. Ben, imos agora transición pseudocódigo para algún código real. Esta linguaxe que está a piques de ver pasar para ser chamado Javascript, e imos voltar a esta dirección final do semestre. É unha linguaxe de programación que usar para facer sitios web e outros tales programa nos días de hoxe. E nós telo usado, grazas a un amigo dos nosos en Stanford, para codificar información agochada aquí. Esta é a arte de esteganografia, por así dicir, onde pode agocharse información que por outra banda parece ser ruído ou un completamente diferente imaxe completamente. Pero incorporado nesta imaxe en particular é realmente unha mensaxe secreta das sortes. Entón deixe-me ir adiante e puxe para arriba a mesma imaxe aquí, este tempo nun navegador web. E eu vou acenar a man nalgúns dos os detalles para hoxe, particularmente para aqueles de vostedes que isto parece non só JavaScript, pero grego, como un linguaxe totalmente estraña. Pero esta é unha lista de unha linguaxe de programación. E, polo de agora, asumir a fe que esta primeira liña de código - e por código, eu só quero dicir o texto. O texto que eu podería ter literalmente ingresaran en Microsoft Word, se eu tivese a software dereito para, a continuación, facer algo con el. Código de programación, programación código, é realmente só texto, e parece diferente en base a que lingua está a usar, e non ao contrario inglés e Español e ruso todos ollar diferente cando escribe no seu teclado. Polo tanto, esta primeira liña, para agora asumir fe, simplemente abre un gráfico da Internet, ese gráfico barulhento acabamos de ver. Esta seguinte liña aquí é un exemplo dunha loop, e que se viu o mesmo xerga no video TED. Un ciclo é algo que acontece unha vez máis e de novo, e aínda que iso parece absolutamente enigmático, co contrasinal, e algúns parénteses, e algúns puntos e comas. Volveremos a iso en pouco tempo, pero que non hai esencialmente lacete dicindo ao programa, iterado sobre todos destes puntos ruidosos, de esquerda a dereita, de arriba abaixo. Porque, ao final do día, a imaxe como este - e realmente pode tipo de velo no proxector - é realmente só unha reixa de puntos. Así, podemos identificar cada un destes puntos por un sistema de coordenadas, X, Y, e con esta programa, agora podemos comezar a facer algo para estes puntos. Entón o que eu estou indo a ir adiante aquí e non é que eu vou facer algúns cambios. En primeiro lugar, eu estou indo a ir adiante e librarse de todo isto verde e azul ruído, e eu estou indo a ir adiante e escriba o seguinte reconhecidamente sintaxe enigmática. im por imaxe. definir azul no lugar x, coma, Lugar de y, 0. Noutras palabras, quero só apagar toda azul puntos en que a imaxe. Eu estou indo a ir adiante agora e prema este botón run / Garda, e vai observar na parte dereita, a imaxe resultante aparece. Agora o seu super verde, pero iso non é sorprendente, porque literalmente virou fóra, facendo o 1 a 0, todos o azul na imaxe. Ben, agora imos facelo un pouco máis. im para a imaxe, punto setGreen, x, y. E iso significa só iterate da esquerda a dereita e de arriba a abaixo. Desactivar isto cun valor de 0, ben. Gardar. E o proxector, non pode realmente realmente ver nada. Na pantalla do meu portátil, se eu espreitar en só o camiño certo, podo ver un pouco de un imaxe, porque aínda están algún vermello alí dentro. Se vostede xa escoitou a sigla RGB - vermello, verde, azul - está referíndose a esta composición dunha imaxe empregando só estas tres cores. E agora temos xogado fóra todo verde, todo azul, pero non hai moito vermello. Entón deixe-me poñer en marcha por riba o vermello. Como podo facelo? Ben, primeiro, eu vou pedir este programa unha pregunta. Eu estou indo a ir adiante e imos chamalo unha variable, como na álxebra. Pode que x ou y ou z. Eu estou indo a declarar unha variable e dicir: poñer nesta variable, temporalmente, o valor da imaxes getRed valor de x, y. E, de novo, imos voltar a todos deste detalle no futuro. Pero, por agora, só tes que ter fe en que esta liña está pedindo o programa, o que é o valor de vermello en x, y? Nese punto en particular? Entón eu vou facer algo para el. Entón eu vou facer image dot set vermello en x, y, y, pero esta vez eu vou impulsar-lo, facendo veces vermello, digamos, 10. Entón, aumenta-lo por un factor de 10. Déixeme afastar agora e clic podería Run / Gardar. E listo, que estaba alí todo o tempo, aínda que os nosos ollos humanos non podía velo. Entón, de novo, este momento é o código real, unha exemplo dunha lingua que nós viremos de volta para antes de tempo. Pero entenda, particularmente aqueles de vostedes sen esa experiencia, é moi logo que nos será escribir código coma este aí. De feito, unha ferramenta coa que é todo algo familiar, quizais, é CS50 da propia ferramenta claro-centro comercial, que era realmente reiniciar este verán por uns dos propios ex-alumnos do CS50, agora volver TFS. Polo tanto, este pasa a ser un sitio construído nunha linguaxe chamada PHP. Usa unha base de datos chamado MySQL, as cousas coa que nós imos chegar nas nosas mans porco ao final do semestre. Pero, cren ou non, incluso algo como esta última análise, reduce a simple de ciclos e as condicións e ramas, como os que vimos só un hai pouco no video TED. O que eu penso que eu ía facer agora é compartir non só algo que o equipo ten feito ao campus, senón algo un ex-alumno - tres os alumnos, de feito - fixo o ano pasado, Serra, Daniel e Sam, o último dos cales non tiña antes experiencia de programación cando asumiu o CS50. E para o seu proxecto final, que exhibiu, na Feira do CS50, unha wrdly aplicación chamada, que é un programa baseado na web para que fixeron este vídeo que eu penso que eu ía compartir a darlle un sentido de que é posible ata o final do prazo. [Música tocando] DAVID Malan: Isto é da Semana Cero Semana de 12 o ano pasado. [Aplausos] DAVID Malan: Como unha provocación, moi, moi para aguçar o apetito é o que se posible, xa debe ter visto, ou pode ver en breve, market.cs50.net, un nova ferramenta que o equipo do curso está a traballar, esta vez en colaboración con Harvard Estudante Axencias, de tal forma que a partir deste ano e continuando esperanza neste próximo verán vai ter un patrón oportunidade no campus para mercar e vender as cousas do seu interese. E coa colaboración por medio de HSA, vai tamén ser capaz de soltar elementos off nunha das tendas físicas da HSA nalgún momento no futuro, co fin de cousas proxy, especialmente como posgrao e non necesariamente quere descartar as cousas, pero en realidade pagalo encamiñar a xente que pode seguir aquí no campus. Entón, máis sobre iso máis para vir. Pero un pouco máis concretamente, unha ferramenta que veu de CS50 en recente anos, co que algúns de vostedes poden estar familiares e outras persoas de que se pode buscando agora, polo CS50.net/2x, vai atopar unha ligazón a unha extensión de Chrome o que é demostrativo de como pode usar JavaScript, que mesmo idioma que nos usado coa torre Eiffel un momento atrás, para aplicar a velocidade de reprodución 2x para todos os videos de Harvard Genwi. Isto é algo que está construído no propio reprodutor de vídeo do CS50. Pero iso, tamén, se comezar a cavar o código fonte, o que imos sorte facilitar, vai ver como pode incluso resolver problemas como este, acelerando widgets en sitios con que xa está ben familiarizado. Así, unha palabra de momento o curso e expectativas e que está á fronte. En xeral, nós imos de feito se reúne aquí os luns e mércores - aínda este venres, imos reunir por do Centro Comercial Semana - 01:00 - 14:00, aínda que ás veces ata 2:30. Dado que podería, por tanto, quere ou Ten que tomar algunha clase en 02:00 en diante, ou mesmo antes, perciben a curso é de soporte do que se chama inscrición simultánea, en que imos apoiar unha petición ao Consello Anuncio e o residente reitores no seu nome se ten un conflito nalgún lugar deste 01:00 - 02:30 intervalo. Cabeza para que URL en liña para detalles adicionais. Pero, en termos da estrutura de soporte que caracteriza CS50, para estudantes máis e menos cómodo iguais, nos ofrecer pistas distintas de seccións. E este é un par de semanas de descanso, pero en pouco tempo, lle será solicitada a seu nivel de confort. Está entre os menos cómodos, máis cómodo, ou algures no medio? E nós imos ter tres distintas temas que atenden a precisamente aquelas audiencias. Así, en ningún punto o termo que debería ata se sentir como está a competencia contra calquera alumno con máis ou menos fondo do que. De feito, o curso está destinado a ser moito máis colaborativa e moito máis máis aberto do que iso. En termos de conxuntos de problemas, vai atopa-se tamén que ademais da edición estándar do problema de cada semana establecido, a miúdo hai un "hacker edición ", que está destinado a ser albo ó 5% a 10% ou máis do demográfico que está de feito entre os máis cómodo e quere máis un reto que o estándar edición que pset espera. Máis detalles sobre os que se atopar no programa. Pero tamén poden atopar-se detalles sobre os cursos de días de atraso. Normalmente problema define son debido ás xoves. Con todo, pode estender a moitos dos seus prazos esta caída de quinta a Venres simplemente por atoparnos a medio camiño, por así dicir, respondendo a algunhas warm-up preguntas en algúns dos problemas da semana actuacións, que ha automaticamente a continuación, dar-lle un extra de 24 horas. Tamén vai caer seu menor puntuación, segundo o contido programático. Para lle dar unha sensación de que o problema conxuntos son - porque é de feito o problema do curso define que en definitiva, establecer case todos os experiencia do alumno, máis do que conferencias, máis que seccións, máis de xeito que a maioría de calquera outra aspecto do curso. O ano pasado, por exemplo, que comezou, como imos comezar este ano, co scratch. Particularmente este venres, imos utilizar, por só o tempo de un día, unha gráfica linguaxe de programación, co que imos comezar a programación, arrastrando e soltando pezas do puzzle que só montar fisicamente se ten sentido a facelo loxicamente. A próxima semana, imos axiña a transición cara C, un moi antigo, pero moi pequeno e linguaxe sinxela que nos permitirá realmente ir de 0 a 60 no transcurso de só unhas semanas, e despois apostar esas mesmas habilidades e coñecementos de construcións básicas de programación en linguaxes de alto nivel, como PHP, JavaScript, e aínda outros aínda. O ano pasado, o terceiro pset no curso foi a de criptografía, un aplicación específica do dominio polo cal estudantes desafiados a aplicar calquera número de cifras, programas cos que para codificar ou decodificar información, a criptografía-lo. Para a edición hackers, en contraste, demos aos estudantes de hackers un ficheiro dende un ordenador estándar Unix que conteñen nomes de usuario e contrasinais, o último dos cales foi codificado, e desafiou os hackers alumnos para descifrar, o mellor que podían, estas claves, aínda que en mesmo dominio. Scramble, un xogo co que algúns vostedes son quizais familiar. A peza forense, onde pedimos aos alumnos para recuperar datos que foran se non eliminado do meu propio dixitais tarxeta compact flash da cámara, por realmente escribir software para descubrir, onde estaban os ceros e uns en que a cámara dixital que anteriormente compuxo un gráfico JPEG? Un reto de sorte o ano pasado que inclúen a escribir o máis rápido corrector ortográfico posible, competindo contra amigos e compañeiros se eles lles gustaría. Despregar n Huff Puff ', un programa de compresión. E, a continuación, terminando o semestre coa CS50 Finanzas, unha aplicación baseada na web con cal se crea un sitio eTrade-like para mercar e vender accións, co fin de falar, por realmente tirando case presupostos en tempo real Yahoo! Financiamento. O que non fixemos o ano pasado foi un conxunto de problemas, que permanece deixa de ser un favorito. Se nunca foi a shuttle.cs50.net, verás un usuario interactuar algo con iso. Pero hai dous anos, a clase aplicado, usando Google Maps eo Google Earth plugin e algo de habilidade con a condución en torno ao campus, de xeito que o obxectivo deste xogo era, como podes ver algúns dos rostros, é a unidade en torno campus buscando funcionarios, compañeiros de ensino e CAs, e cando, poñendo-os no seu bus. Ningún deles realmente parecen estar aquí, entón imos entrar nun código da fraude. [Risas] DAVID Malan: Alí imos nós. Todo ben. E aquí é o persoal atado en todo campus. E, como se pode ver, na parte dereita lado da pantalla, o autobús ten asentos baleiros. E o obxectivo foi o de escribir o código co que simular este condución e pegando e largando fóra de pasaxeiros. Este, tamén, mediante unha linguaxe chamado Javascript. Entón entendemos que programas como o que vai estar na nosa mesma traxectoria deste ano, tamén. En termos, agora, dun apoio adicional, temos o horario de oficina. Como se pode ver na súa propia casa comedor ou na Annenberg, estar na casa de xantar salóns de catro noites por semana - Leverett, Pfoho, Eliot e Annenberg este ano, 20:00-23:00. E o que pensamos en facer este ano é algo un pouco diferente. Se escoitou rumores o ano pasado que era un pouco estresante, este o horario de expediente do ano, como imos describir a próxima semana, será máis orgánica, en que, á chegada, será despachado para unha mesa especial onde varios membros do equipo esperan, e imos facer as cousas moito máis organismos. Non hai máis cola, non máis do iPad, pero Prefiro ter máis íntima conversas en torno a unha mesa de só oito ou para que os alumnos, de xeito que aproximado a sensación de que en caso contrario Sería unha clase moi pequena. Ofrece, así, esas cousas que chamado orientacións, vídeos filmados en avanzar por unha das ensinanzas do curso compañeiros, Zamyla, no cal ela percorre problema da semana conxuntos, ofrecendo consellos e trucos para o retos que se poñen. E, inversamente, tras conxuntos de problemas son debido, este ano, imos tamén publicar pequenos clips chamar post-mortem que realmente levalo a través solucións representativas, tanto o ben como malo, a través do cal pódese inferir como podería ter ou debería aplicou a súa propia solución. E o que nós imos ofrecer por primeira vez este ano, así como, en particular para os alumnos que fagan uso do curso da outra recursos, pero aínda así están loitando todo moi, o curso si vai vincular os alumnos, como os recursos permitan, cos titores para que tes moito máis íntimo oportunidade de casa comedores permitir one-on-one asistencia. Agora, un reflexo final nalgúns dos xogos fin á vista. Podes estar familiarizado coa o CS50 hackathon. Ben, chegando en decembro, desde 08:00 PM ás 07h00, no inicio Período de lectura, será unha oportunidade para reunirse cos compañeiros - esta sería en torno a 9:00 AM - durante o cal mergulla na súa última implantación do proxecto xunto con compañeiros, amigos, e alimentos. Iso sería en torno a 01h00, cando o primeiro lote de comida chegou. E iso é que preto de 4h00 determinado ano no CS50 hackathon. Pero o certo clímax do curso é destínase a Feira do CS50, un campus-wide exposición de seus propios proxectos finais, para que a familia e os amigos son todo invitado, como os nosos recrutados e os nosos amigos da industria. Este, por exemplo, é un reflexo do 2.000 persoas-ademais de que xa participei últimos anos. Expresións como esta non son pouco comúns, e do mesmo xeito facer o compañeiros Deliciosos-se coas cousas vostede realizou. E de feito, nese sentido, temos un evento de inicio de mandato, tamén. Se as cousas como este chamamento a vostede, ou está, como mínimo, curioso para saber o que tanto, saber que unha nova tradición do curso chámase CS50 enigma día. E iso foi instituído un par de anos para realmente sinalizar a campus que a informática non é sobre programación, e non é certamente preto de abrazar só os estudantes que teñen experiencia previa. É realmente sobre a resolución de problemas máis xeral. E así Enigma Día, ao longo dos últimos anos, evolucionou para un bo colaboración cos nosos amigos da Facebook, a través do cal haberá fabuloso premios e pizza outro lado do río en o i-lab o próximo sábado. Deica a URL con dous ou tres amigos, se desexa participar nesta nova tradición. Entón gustaríame pedir que manteña un cousa en mente, e nós temos só un dous minutos clip no que para pechar hoxe. 73% é o número de lembrar. Cake, tamén, esperan por ti fóra desa transepto como retrasar en só un pouco tempo, o que é unha tradición do curso, así. Pero esta é a cita clave do Syllabus do curso para manter presente. O importante, en definitiva, este curso non é tanto onde acaba con respecto aos seus compañeiros de clase, pero onde ti, a Semana de 12, acaban en relación ao se a semana 0. Pero a visión de que imos deixalo con aquí, hoxe, é esta última aquí polo noso mesmo Daniel, que fixo o video wrdly só un momento atrás. Déixovos con este reflexo do que está por vir. E como facemos iso, se puidésemos ter CS50 persoal desde a fronte da sala para vir ata a fase de pintar todo a máis dunha imaxe visual o que o espera vai de ano - quedando estraño. Imos concluír con este aquí na pantalla. [Música tocando] DAVID Malan: Este é CS50. [Music - Matt & Kim, "Está todo ben"] COLUMNA 1: Eu amo CS50 máis que gatos. COLUMNA 2: Whoaaaa! [Risas] DAVID Malan: Este é, entón, CS50. Imos velo na venres. [Aplausos e aclamacións] Narrador: Na seguinte CS50, un escenario demo non saen como planificado. DAVID Malan: Queremos atopar Mike Smith no libro de teléfono. Así, cales son os seus instintos? Podería ir aproximadamente para o medio o libro de teléfono, ollar para abaixo, ver que Estou en M, e agora sei que Mike Smith non é a esquerda. Debe ser para a dereita. E así, neste momento, nós Pode literalmente rasgar - Neste punto, podemos literalmente rasgar - Neste punto, podemos figurativamente rasgar o libro de teléfono pola metade. [Dedilhando UKELELE]