[МУЗИКА ГРАЄ] [Оплески] David J. Малан: Це CS50, Введення Гарвардського університету до інтелектуальної підприємства інформатиці і мистецтво програмування. Тепер, якщо ви належите до числа тих, які щороку сидять тут з трохи нервів у вашому розумі, наприклад що ви не думаєте, ви належите тут, Ви думаєте, що більшість хто сидить навколо вас знає набагато більше, ніж ви, справді більш комфортно, ніж вам на комп'ютер наука або комп'ютери в більш загальному, розуміють, що 78% студентів, які в даний час прийняти CS50 не мають ніякого досвіду. Справді, є 100 точок є на дисплеї, 78 з яких тверді зелений, що означає вас, якщо ви серед цієї аудиторії, знаходяться в дуже хорошій компанії тут на. І якщо ви замість серед 22% від CS50 студентів, які дійсно мати досвід роботи, будь то в середньої школи або деякі інші програми, розумію, що вам теж буде бути оскаржені в ході. Мало того, що у нас різні треки для студентів менш зручним і більш комфортно, так в розділах, ми Також є так звані хакерські видання з найбільш проблема встановлює, що оскаржуватиме ті студенти з цієї додаткової досвіду вивчити подібний матеріал але від більш складні перспективи. Але що таке інформатика? Ну, зрештою, те, що відбувається в Справа, як ви вивчите це полі не так багато, де ви в кінцевому підсумку в порівнянні з однокласниками, але де ви самі потрапляють в 12-й тиждень проти де ви починаєте тут до нульової тижня. Тепер комп'ютер science-- добре, давайте називають це наука про computation-- де обчислення насправді просто химерний спосіб сказати, приймаючи деякі матеріали, виробляти деякий висновок і робить це, запустивши алгоритмів, набори інструкцій для вирішення деякі проблеми на цих входів для того, щоб створювати якийсь вихід або розчин, в якому ви зацікавлені. Таким чином, ми недавно були привід подорожувати з до Каліфорнії, щоб зустрітися з випускниця. Її звуть Сьюзен Воджіскі. І вона б хотіла поговорити щоб ви тут на відео свідчити про те, наскільки це може бути застосовано навіть тільки смак комп'ютері наука в Вступний рівень може бути. Навіть якщо ви не йдете на переслідувати інформатика як поле, або навіть інженерна, або стовбурових більш загальному сенсі, Ви побачите, насправді, як якийсь Звичайно так вплинуло на її життя. І вона тільки що взяв його, коли вона був старшим тут в Гарвардському коледжі. Якби ми могли приглушити світло для Сьюзен. Сьюзен Воджіскі: Привіт, світ. Я Сьюзен Воджіскі. Я генеральний директор YouTube. І я взяв CS50, коли я був старший в Гарварді в 1990 році. Я був насправді історія і література основним. І мій молодший влітку, Я зрозумів, що, можливо, я хотів дізнатися щось про комп'ютери. І так, я повернувся. Я взяв CS50. Було важко, але це було Найдивовижніше клас я взяв. Це змінилося, як я думаю, про все. І коли я закінчив Гарвард в 1990 році, я пішов в Силіконовій долині. І я отримав роботу. І я працюю в теч з тих пір. David J. Малан: Тепер те, що Сьюзен не кажучи вже цього відео, що це було насправді в ній гараж, який сам Google був заснована Ларрі і Сергій. Тепер ми також звернулися до наших друзів в code.org, організації, яка за минулий рік було змусити людей особливо схвильований інформатиці та програмування, зокрема. Але варто зауважити, що програмування НЕ інформатика по собі. Інформатика НЕ ​​програмування. Швидше програмування це просто tool--, з якою ви все буде занадто добре знайомі з end-- семестру таким чином, що ви можете застосуватине просто майбутніх курсів в CS але якими б то не полів, звідки Ви приїжджаєте, в гуманітарних, суспільні науки, природничі наука, або тому подібне. Дійсно, дозволяють кілька інших Випускники та їхні колеги говорити про застосовність поля, яке чекає. Білл Гейтс: мені було 13 років, коли я вперше отримав доступ до комп'ютера. Джек Дорсі: Мої батьки купив мені Macintosh в 1984 році коли мені було вісім-річний. Марк Цукерберг: Я був в шостому класі. СПІКЕР 1: Я навчився кодувати в коледжі. Струмки Sanghvi: Першокурсник рік, перша семестр, Введення в галузі комп'ютерних наук. Білл Гейтс: Я написав програму що грали в хрестики-нулики. Дрю Х'юстон: Я думаю, що це було досить скромний початок. Я думаю, що першу програму Я написав запитав речі, як, Який ваш улюблений колір? Або скільки вам років? ОЛЕНА силоньок: я вперше дізнався як зробити зелений круг і червоний квадрат на екрані з'являються. Гейб Ньюелл: Перший раз, коли я насправді було то підійти і сказати, привіт, світ. І я зробив це комп'ютер зробити. Це було просто дивовижно. Марк Цукерберг: Навчитися в програмі не починалися як хотіли б дізнатися все інформатиці або намагаються освоїти цей дисципліна, нічого такого. Це тільки почав, бо я хотів зробити цю одну просту річ. Я хотів зробити те, що було цікаво для мене і моїх сестер. І я написав цю невелику програму. І то в основному тільки додали трохи до нього. А потім, коли я потребував дізнатися щось нове, Я подивився його, або в книга або в Інтернеті, а потім додав трохи до нього. Дрю Х'юстон: Це дійсно не на відміну від гра на музичному інструменті або щось або заняття спортом. David J. Малан: Добре. Так давайте тепер фактично пірнати в трохи глибше. Які ці входи і виходи що ми говоримо тут? Так як про щось простий? Ви, напевно, знаєте, навіть якщо у вас є немає знайомство з комп'ютерною науки б то не було, що комп'ютери так чи інакше використовувати і розуміє лише нулі й одиниці. Але як це можливо, дати як Багато чого сьогоднішні настільні комп'ютери і ноутбуки, так можна зробити? ДНК день, єдиним алфавіт, що вони розуміють, є нулем або одиницею. Ну, розглянути це питання. Ми, люди, як правило, використовують десяткову систему. "Грудень", що означає 10. І ось 10 тому що у нас 10 цифр, від 0 до дев'яти. Тепер комп'ютери, навпаки, як правило, використовують двійкову. "Бі", що означає два. Таким чином, вони, як правило, тільки нуль і одиниця у використанні. Але, виявляється, що навіть тільки з нулів та одиниць, що досить велике алфавіту з якою для представлення найбільш будь-які дані ви хочете, це чи число, чи є цей лист, будь то графічний або відео на екрані. Розглянемо, наприклад, як ми людей зазвичай інтерпретують тут цей номер. Це тільки три цифри, один, два, три. Але ми знаємо, це число врожденно зараз як 123. Але чому? Ну, якщо ви думаєте назад щоб, можливо, початковій школі, ви, напевно, вчили думати про ці цифри як в шпальтах, де один в сотні місце, два знаходиться в місці десятки, і три перебуває в місці, з них. Чому це насправді корисно? Ну, думаю, про супер проста арифметика що ми всі були робити протягом декількох років. Ефективно, якщо у вас є один в сотні місці, ви робите швидкий математику 100 раз 1 плюс 10 раз 2-- бо два в десятки place-- плюс 1 раз 3-- бо три перебуває в для одиниць. Так, якщо, звичайно, ми насправді помножити на це, те, що ми дійсно представляють з цією pattern-- одного два three-- 100 плюс 20 плюс 3, які, звичайно, 123. Тепер двійковий, і комп'ютери дійсно, принципово розмовляють однією мовою що ми робимо. Вони просто мають менший алфавіт. Так комп'ютери мають тільки нулі і ті, в їх розпорядженні. Так в той час як ми, люди, по суті Повноваження 10 в кожній з цих places-- 10 до нуля, 10 до одного, десять в два, даючи вам 110 і 100 відповідно. Оскільки комп'ютери є тільки два значення вони можуть зрозуміти, нуль і одиниця, вони повинні використовувати різні значення в цих колонках, один, два, чотири. І якщо ми продовжували, вісім, 16, 32, 64, і так далі. Але картина і менталітет точно так же. Так за цією логікою, ким, як би Я можу йти про що представляє число один в довічним? Якщо ви ніколи навіть не думав про це раніше, як тебе кишка сказати? АУДИТОРІЯ: Один. David J. Малан: Один. Точно. Нам просто потрібно один в поразрядное місце, бо нулів достатньо, щоб дати нам ні чотири, ні два. Так один раз один дорівнює один. Тепер все стає трохи цікаво. Якщо я хочу, щоб представляти в двійкову кількість two-- але, не раз, навіть якщо ви ніколи не розмовляють цією мовою, перш ніж, як ми представляємо в двійковий Значення, яке ми люди знають, як два? Нуль один нуль. Просто помістіть один в колонка, що ви хочете його. Тепер це стає досить просто напевно зараз. Так що, якщо я хочу, щоб представляти three-- є колонка, ніякі три автора. Так, знову ж таки, я тепер можу додати ці значення разом, поставивши один тут. Так 2 рази 1 плюс 1 1 раз, звичайно, 3. Тепер все стає трохи розважитися в що ті тепер стали нулі. І представляти чотири, я отримую це. І якщо ми збільшуємо повільно здесь-- що буде п'ять. Це було б шість. Це було б сім. Але тепер я, здається, зіткнулися з проблемою. Як я міг би йти про що представляють eight-- буде таке значення. Так, так що нам потрібно нові біти. І, дійсно, якщо у Вас є чули цю фразу, перш ніж, біт, це просто скорочення від двійковий розряд, нуль або один. І тому я, трапляється, що становить тільки три такі біти тут. Але якби я мав спосіб зберігання не три різних біт, але чотири, безумовно, могла б гідно представляти вісім, дев'ять, а потім, а потім 10, і навіть вище і вище. Але що потім викликає під питання, як ми можемо йти про що представляють їх речі в першу чергу. Це одна річ, щоб залучити їх тут на слайді, але як ви уявляєте їх якщо ви механічний пристрій? Що таке комп'ютер робить, щоб представляють входи і виходи, що принципово визначити обчислення в кінці дня? Ну, те, що про що супер просто, як це? Це просто лампочка. І я можу викликати цей лампочка піти на повернувши трохи електроенергії на і дозволяє електрони текти через, яка змінює його Держава або його значення, так би мовити. Наприклад, це настільна лампа стара школа тут з одним з таких лампочки всередині нього. І зараз це не дійсно роблять нічого корисного. Але як тільки я підключити його в електричну розетку а потім використовувати цю switch-- або ми можемо навіть назвати це транзистор або думати про нього як such-- Тепер я можу представляти або це значення, де лампочка сайт очевидно, вимкнений або це значення. Це значення або це значення. Це значення і так далі. Таким чином, всередині комп'ютера, мабуть, набагато менші частини обладнання, але, що наприкінці дня просто використовувати electricity-- можливо, захопити it-- а потім або залишити те, або тримати щось геть. Звичайно, це не Особливо цікаво робити за допомогою всього одного лампочку. Насправді, як високо я можу розраховувати в двійковий з цією настільної лампи тут? АУДИТОРІЯ: Один. David J. Малан: Один, правда? Мені потрібно більше Настільні лампи, якщо я насправді хочу, щоб підрахувати вище. Але ми можемо зробити краще, ніж це. Тому що лампочки, що ми ввели в цих речах насправді незвичайні лампочки ніж минулий рік дозволить. І вони насправді мережеві лампочки. І грона компаній зробити ці речі в ці дні. Але виявляється, що цей особливо поставляється з особливість: при Ви можете змінити його кольору. Так, наприклад, якщо ви прикрашали свій кімнати в гуртожитку з кількома з цих легких цибулини, залежно від вашого настрою, в залежності від того, хто приходить, в залежності від погоди, в залежності від часу дня, ви можете насправді змінити кольори цибулини у вашій кімнаті. І це тому, що ці світла лампочки та інші подібні йому є що називається API, додаток інтерфейс програмування, який це тема, з якою вам буде добре знайомі з до кінця семестру. І це всього лише фантазії, загадковий спосіб сказати, Ви можете запрограмувати ці світло лампочки, щоб зробити вашу волю. Ви можете відправити їм повідомлення як і ви, людина, можете відправити повідомлення на веб-сервер кажучи, дати мені сьогоднішні новини або дайте мені мою електронну пошту. Ви можете відправити більш таємницею повідомлення на цих лампочок сказати, включити і вимкнути. Але це ще не все, що цікаво. Ви можете сказати: включити червоне, включити зелене, включите синій, все з тією ж лампочки. І можна навіть, з трохи більш підкованих, кажуть, перетворити себе в синій коли це похмурий день межами, наприклад. Це дійсно може виправити в погода API і з'ясувати, яка погода або час дня, або інших подібних тригерів. Таким чином, насправді, два з Власні співробітники CS50 в, Ден Бредлі і Ансель Дафф тут, люб'язно закуплені нам ціла купа цих лампочок. І вони побудували CS50-х перша або двійкові цибулини, де ми представлені здесь-- з цими жартівливого magnets-- різні наповнювачі ми посилався на тільки трохи назад. Так шлях сюди є поразрядное місце, два, чотири. І ми не бачили більше, ніж. Але, звичайно, вони збільшення в два. Вісім, 16, 32, 64 і 128. Так що, якщо я зараз хочу бути трохи незвичним ніж при використанні цього старого вимикача школи, У мене тут, на цій Ipad супер простий інтерфейс що Ден Бредлі, колишній студент, а тепер викладає людина, запрограмований за допомогою деяких HTML і JavaScript, які є розмітки і програмування мови відповідно. І ви, мабуть, see-- навіть в back-- є великий плюс і великий мінус, плюс одна кнопка для кожного з цих цибулин. І те, що це відбувається, щоб дозволити мені зробити, це, наприклад, клацніть знак і в даний час представляють, з Звичайно, те, що число? Один. І я можу вдарити його знову. Два. Три. Чотири. П'ять. Шість. Сім. І ось тепер ми отримуємо, що перекидання, але у нас є четвертий біт на цей раз, так що тепер у нас є вісім. Таким чином, ми могли б зробити це протягом деякого часу. Насправді, як в сторону, як високо ми можемо розраховувати? Будь? АУДИТОРІЯ: 255. David J. Малан: 255, чи не так? Не турбуйтеся надто багато про математику для зараз, але це досить пристойний номер. Але це насправді пов'язаний тільки як багато фрагментів інформації, як лист, або графіка що ми могли б представляти. Але незалежно від того, на даний момент. Я збираюся йти вперед і вимикайте живлення всіх пристроїв. І якби я міг, я б хотів попросити волонтер, наш перший volunteer-- ой, hello-- на сцені. Заковика в тому, що ви повинні бути комфортно з'являтися, як ви чітко знаходяться в передній частині всіх своїх однокласників, а також в Інтернеті. І дозвольте мені виглядати трохи за the-- як щодо ось у білій сорочці? І руки вгору. Піднімайтеся. Як тебе звуть? АУДИТОРІЯ: Джекі. David J. Малан: Джекі. Джекі, давай до. Так що є і на цьому Ipad кнопка називається режим гри. І це Ігровий режим збирається дозволити мені вхід заздалегідь зокрема десяткової число, число, ми, люди, знайомі. І тоді ви будете бути оскаржені тут, щоб використовувати кнопки на top-- один для кожен з цих bulbs-- насправді з'ясувати картина лампочок , Що являє собою число в питанні. І мені шкода, що знову тебе звуть? АУДИТОРІЯ: Джекі. David J. Малан: Джекі. Добре. Приємно познайомитися. Отже, дозвольте мені йти вперед і програма в для всього світу, щоб побачити номер 15. Ми будемо тримати його маленький спочатку тут. І я збираюся йти в ігровому режимі. І я збираюся вказати, дати нам номер 15. ОК. І тепер з кожним watching-- якщо Ви хочете, може бути, стояти таким чином, бо це буде вибудовуватися up-- йти вперед і перемикати вісім кнопок вздовж верхньої перетворити цибулини на або вимкнути, як ви вважаєте за потрібне. АУДИТОРІЯ: ОК. David J. Малан: І немає обману натиснувши плюс 15 разів. О, ми збираємося зробити це. АУДИТОРІЯ: Ой, зачекайте. Мені дуже шкода. David J. Малан: Ви можете також включити лампочки на індивідуально з кожною з цих кнопок на верхній. АУДИТОРІЯ: О, добре. Тому було б like-- David J. Малан: ОК. Так що тепер у нас є вісім. Так що давайте зупинимося на аудиторія займатися тут. Який це номер Джекі В даний час представляє? 11. Таким чином, ми вже майже там. І відмінно. Так у нас є перший переможець. Поздравляю. І ми думали, що у нас деякі казкові призи. Якщо ви хотіли б бути одним з таких кімната в гуртожитку тут на території кампуса, Ви можете самі мають остаточний проект використовуючи тепер цей API, завдяки Джекі. Так now-- [Оплески] --еслі ми могли, ще один таких навколо цього. О, тепер всі хочуть деякі лампочки. Для так званої хакера видання, ми збираємося наростити його до a-- о, да, ухильно. Я думаю, що ви прийшли зараз якщо ваша рука йде вниз. Як тебе звуть? АУДИТОРІЯ: Алекс. David J. Малан: Алекс, йди сюди. Так для Алекса, ми збираємося Програма в кілька більшій кількості. Може бути в порядку. 50 число. АУДИТОРІЯ: ОК. David J. Малан: Але, як Я said-- і ви, можливо, хочу стояти тут так що кнопки вибудовуються як ви б expect-- але я зробив називають це хакер видання. Так подав що удачі! [Сміх] Ви зможете перетворити їх, якщо ти-- ОК. Відмінно. Чудово. Поздравляю. [Оплески] Я вважаю, я повинен заплатити. Вітаємо Алекса, а також. ОК. Так кінцевої винос тут ми сподіваємося, відверто кажучи, simplicity-- простота, з якою Ви можете отримати деякі цікаві світло цибулини, мабуть, в [нерозбірливо]. Але вони представляють, в кінцевому рахунку, ті ж ідеї , З якою ми, люди, вже занадто добре знайомі. Так що могли б на наступний крок бути в прогресії в спробі зробити щось Цікаво з даними і є складовими, які не тільки цифри, але, може бути, літери чи більше? Ну, виходить, що комп'ютерний світ, протягом багатьох років, просто прийняв довільне, але узгодженого стандарту, який відображає номера до букв алфавіту. Наприклад, ось уривок з цієї відображення. Вона називається ASCII. -S-C-I-I. І це просто таблиця, яка відображає у верхньому регістрі letters-- в цьому case-- в десяткові цифри. Але те, що мається на увазі? Ну, якщо ви насправді хочете, щоб представляти щось ніби електронній пошті або текст на веб-сторінці, ви очевидно, хочуть, щоб показати людські букви алфавіт, не цифри. Тому залежно від контекст програми , Що користувач використовує, якщо це веб-браузер або поштовий клієнт, Номери, звичайно, може бути інтерпретується як листи. Тобто, послідовності бітів може легко можна інтерпретувати як букв. І так, що ми можемо мати це буква істота представлений у вигляді 65, B будучи представлений у вигляді 66. Так що, якщо у нас є супер коротке слово, як привіт, що комп'ютер буде в кінцевому рахунку, магазин в десяткової але насправді в двійковій, використовуючи деяку послідовність бітів, використовуючи трохи електроенергії в деякому роді, б ці два числа 72 та 73. Але зразок бітів, які представляє ці цінності. Таким чином, ці ж тоді, як ми можемо представляють наші входи і виходи. І досить сказати, ми можемо зробити більш складні уявлення в кінцевому рахунку, з речами, як графіка, відео, музику і багато іншого як ми побачимо пізніше цей термін. Так що просто залишає то алгоритми, ці набори інструкцій, з якими ми вирішення актуальних проблем. Ми передаючи входів алгоритмам. І ці алгоритми виробництві виходи, сподіваюся правильні виходи і, сподіваюся, теж, ефективно зібралися виходи. Іншими словами, це одна річ, правильно реалізувати щось. Це ще одна річ, щоб реалізувати то добре чи ефективно. Наприклад, один демонстрація що ми любили в ході це один. Але ці речі стають все важче знайти. Але це дійсно стара школа телефонної книги, всередині якого 1.000 плюс сторінки імен та телефонних номерів. І якби я хотів подивитися хто цього телефонній книзі, Я міг просто зробити дуже наївно алгоритм. Я міг відкрити до першої сторінки, і Я міг би почати шукати, скажімо, кого по імені Майк Сміт. І якщо він не на перший сторінка, я прогресувати до другої, , А потім в третій, а потім на четвертий, і так далі, поки я нарешті годі й шукати Майк Сміт. Тепер те, що алгоритм правильно? АУДИТОРІЯ: Так. David J. Малан: Так. Якщо він там, я буду в кінцевому підсумку знайти його. Але це можливо не дуже ефективним, звичайно, не швидко, тому, мій бог, чому я витрачати свій час переворот через всі ці сторінки, коли я міг звичайно, зробити це фізично швидше? Ну, невелика оптимізація, так кажуть, може бути не одна сторінка, в той час, а два, чотири, шість, вісім, 10. Проте правильно? АУДИТОРІЯ: Ні David J. Малан: Так ні, якщо I для Примірник пропустити Майк Сміт. Але до тих пір, як я назад педаль одна сторінка, якщо я промахнутися його, може бути, ми могли б виправити те, що в іншому випадку можуть бути Гоча. Але це краще? Швидкість? Я маю на увазі, так. Це буквально в два рази швидше якщо я роблю дві сторінки одночасно. Так що, якщо я спочатку мав 1000 сторінок, тепер у мене є тільки перевертати 500 раз, не в повній мірі 1000 сторінок, щоб отримати потенційно в гіршому випадку в кінці телефону Книга, де хто як Майк Сміт або когось з пізніше ім'я може бути насправді. Але, звичайно, ми люди, звичайно, не збираєтеся робити, що, безумовно, не в цей момент в нашому житті. Що таке розумний людина швидше за все будемо робити? АУДИТОРІЯ: Ідіть прямо до The9 S-их. David J. Малан: Ідіть прямо до S-их? Як я можу йти прямо до S-их? АУДИТОРІЯ: Ріп його навпіл. David J. Малан: Ну, немає маркування. Так що, так, якби були дійсно Мітка або закладка липким для S, ми повинні перейти прямо там. Але це досить необразливо. Так що я можу зробити це приблизно в розділі S або, може бути приблизно в середині. Але ключ винос now-- і інтуїція що ви зробили для надається протягом багатьох років probably-- є те, що те, що роблять вам зараз знаю про цю проблему? АУДИТОРІЯ: [нерозбірливо] David J. Малан: Майк Сміт, безумовно, Не в цій половині проблеми тому Сміт приходить після середини що приблизно в розділі M, це, здається ,. Отже, як ви, можливо, бачили в Visitas, ми можемо тепер буквально розірвати цю проблему в два рази. АУДИТОРІЯ: Ву! David J. Малан: Це стає все легше і легше. [Оплески] Там ви йдете. [Сміх] І тепер я в корені мають ті ж проблеми, але це буквально в два рази більша. Я все ще шукаю Майк Сміт. І я вважаю, я можу ще шукати його таким же чином, розділивши задачу на половині знову, розриваючи проблему знову в половині, яка в даний час залишає мене з проблема чверть від розміру, різко кинути, що половина геть, і повторити цей процес знову і знову і знову, дивлячись вниз в кожній точці, щоб побачити якщо Майк Сміт знаходиться на потрібна сторінка. Тепер, якщо я зроблю це право, в кінцевому рахунку, я знайду себе за допомогою всього однієї сторінки, на якій Майк Сміт чи є він дійсно в телефонній книзі. Звичайно, я міг ніколи не дзвоніть Майк знову. Але справа в тому, що якщо ми почали з 1000 сторінок, мій перший алгоритм, перевернути сторінку, може бути, 1000 times-- безумовно, менше, бо це Ім'я S, а не Z назва, але, як скільки 1000 сторінок потенційно. Другий алгоритм, краще. 500 сторінок. Третій алгоритм, тим не менш, скільки кроків буде його прийняти розділити сторінку 1000 Телефонна книга в половині, як це? 10, плюс-мінус. Так тільки, гортаючи, що Телефонна книга, дайвінг і завоювання, так сказати, в 10 раз, то я зроблю мій шлях вниз до однієї єдиної сторінці. І таким чином ми можемо захопити цю інтуїцію Тепер трохи графічно якщо ви просто розглянути це супер простий графік. Ми на осі х, або горизонтальна вісь, це розмір моєї проблеми, Кількість сторінок в телефонній книзі. І вчені-комп'ютерники як правило, люблять називати розмір проблемної п, де п лише деякі змінна, represents-- в цьому case-- кількість сторінок. На вертикальній або Y-осі, тут буде час, щоб вирішити, може бути, кількість сторінок поворотів, може бути, кількість секунд або хвилин, що Ваш одиниця виміру. І таким чином, це червона лінія представляє собою перший алгоритм, бо є 12:59 Відносини між числом сторінок і кількість часу, який потрібен. Якщо Verizon подвоює кількість сторінок в телефонній книзі в наступному році, мій біг time-- потрібен час, щоб виконати що перший algorithm-- подвоюється в гіршому випадку. Але другий алгоритм, де я гортати на два, вимагає менше часу для Дана величина проблема. Так що, якщо у мене є це багато сторіночок здесь-- сповіщення що жовтої лінії припускає менше часу для вирішення. І справді, вона представляє, ми будемо говорити, н більше двох. Але те, що форма третій і остаточне крива буде виглядати? Так, це дійсно збирається look-- I не знаю, що ви збираєтеся сказати. Але давайте подивимося, що Ви збираєтеся сказати. АУДИТОРІЯ: Ось так. David J. Малан: Це буде виглядати це, логарифмічна slope-- exactly-- в результаті чого у вас є цей цікавий схилу. Це вже не пряма лінія. І те, що переконливих про те, що в тому, що навіть при тому, що графік наразі відрізані, Ви можете екстраполювати у вашому неважливо, що, що зелена лінія не збирається збільшити в висота все, що багато чого як ви рухатися далі до цього горизонтальній осі. Дійсно, Verizon, для примірник, може подвоїтися кількість сторінок у телефоні Книга між цим роком і в наступному році від 1000 до 2000 сторінок, але немає нічого особливого. При цьому третій і останній, є інтуїтивне алгоритм ділення і завоювання. Це збирається взяти мене, скільки ще кроки в наступному році, щоб знайти людину, подобається Майк Сміт? АУДИТОРІЯ: Один. David J. Малан: Там тільки одна. І вони можуть в чотири рази його, це збирається взяти мене всього ще два кроки і так далі. І таким чином, це є свідченням того, просто, як деякі обережні дизайн і деякі вдячність за те, що Ваші входи можна зробити ще краще. Тепер ми обман Трохи в тому сенсі, що ми використовуючи припущення. Що таке моє припущення про наш телефонному довіднику що дозволило мені розділяй і володарюй в цій інтуїтивною і ще правильно? АУДИТОРІЯ: [нерозбірливо] David J. Малан: Так. Так було наказано. Було алфавітному порядку за Телефонна книга компанії. Якби це було у випадковому порядку, що буде пекельна телефонній книзі, але це, звичайно, не буде піддається алгоритму Я використав, тому що ви ніколи не буде просто так через Майк Сміт якщо ви тримали ділення в половина таким чином випадково. Отже, давайте формалізувати що явно інтуїтивно. Так те, що називається псевдокод, де ми будемо почати деякі з наших початкових проблем. І це загальний спосіб опису Алгоритм або комп'ютерна програма, не використовуючи C або C ++, або Java, або будь специфічна мова, але тільки за допомогою англійської мови, з якої будь-яка людина міг бути знайомий. І ми могли б написати псевдокод для цієї проблеми в наступному. Крок перший, підняти телефонну книгу. Крок другий, відкритий для середини телефонній книзі. Крок третій, подивіться на імена. Крок четвертий, якщо Сміт є одним names-- І тепер це Цікаво конструкція. Це точка прийняття рішення. Це розвилка, якщо вам буде, філія, так би мовити. Так що я збираюся зробити відступ тільки за угодою step-- НЕ five-- якого є скажімо, я подзвоню Майку. Так що це поглиблення, повністю довільне людське угоду, але це просто хотів передати семантично що якщо Сміт є одним імен, Потім я повинен подзвонити Майку. Між тим на етапі шість, повідомлення що поглиблення пішов. Так решта інший виделкою в дорога, з іншого дорога я міг би подорожувати. Так ще, якщо Сміт раніше в книзі, що мій наступний крок, ймовірно, буде тут? АУДИТОРІЯ: Ви йдете в ліву сторону. David J. Малан: Так, для цього заходимо в ліва половина телефонній книзі. Викиньте праву половину, якщо Сміт раніше в книзі. Таким чином, відкрита в середині ліва половина книги. І потім крок вісім, перейдіть до рядка три. І це цікаво цикл я індукції, рекурсія так сказати. Але про це в майбутньому. Я використовую мою ж алгоритм, моя ж псевдокод, щоб знову вирішити ту ж саму проблему тому що єдине, що змінилося це розмір проблеми, а не моя мета, а не людина Я шукаю. Так що я можу використовувати алгоритм що я вже визначені. Інакше, якщо Сміт пізніше в book-- Ви могли б вгадаю відкритий в середині права половина книги. І знову, перейдіть до рядка три. Else-- що останній рядок в цій програмі буде? Якщо він не входить в число Імена на сторінці я знаходжусь на, якщо він не на початку книга, і він не пізніше, в книзі, що я знаю, Правда про Майк Сміт зараз? АУДИТОРІЯ: Він не в книзі. David J. Малан: Він не в книзі. Так краще, я можу зробити, це просто відмовитися і зупинити цю програму. Добре. Тому на даному етапі, давайте швидкий тур частина того, що чекає. І справді, я приєднався тут рядом співробітників CS50. Якщо ці люди могли все приєднатися до мене тут, на сцені. [Оплески] Майте на увазі, це тільки підмножина персоналу CS50, з кожним роком у нас є близько 100 співробітників Учасники в ролі курсу помічників, вчити хлопців, і багато іншого. Піднімайтеся. Таким чином, вони приєднаються до нас тут ніяково на мить як ми даємо побіжний тур, що ви повинні очікувати тут в ході. Так, перш за все, ми повинні СБ / UNS як варіант класифікації в ході. Це означало, навмисно щоб бути одним з варіантів якої якщо ви трохи ніяково на бути в курсі, і ви бояться failure-- навіть якщо відверто невдача означає шкодить вашій ГПД, отримання B, а не A-- який саме те, що, звичайно, для шлюзу Звичайно, як і CS50 та інші ввідні курси, ця опція сортування припускає можливість. Я щиро заохочувати students-- особливо якщо на fence-- почати Звичайно СБ / UNS, навіть залишаються СБ / UNS. Але можна, звичайно, перейти на листі клас на п'ятому понеділок в перспективі. Чесно кажучи, ще коли я був новачком в 1995 році, Я сам навіть не прийняти CS50 тому що я не встаю нерв насправді крок ногою в класі. Здавалося домен занадто незнайомий мені і дійсно тільки для тих моїх друзів, чесно кажучи, який був програмування так як вони були шести або, може бути, 10-річний. І це було тільки тому, що я був змозі взяти CS50 в мій день в еквівалентній версії СБ / UNS-- пройшов / не пройшов назад в day-- що навіть я взяв 50. І так чи інакше, я тут знову з вами сьогодні. Тепер між тим, що ще ви Слід мати на увазі, про 50 є одночасне зарахування. Всупереч чуткам, що Ви, напевно, чули, можна, справді, одночасно записатися на CS50 та іншого класу, що відповідає в тому ж або деяке дублювання Час як лекцій CS50 прямо тут. Дивіться навчальний план для деталях реалізації їх. Лекції, тим часом, всупереч що офіційно в каталозі, буде взагалі тільки задоволення всього за годину. Іноді ми можемо працювати трохи довго. Але майте на увазі, що Мета лекції CS50 в полягає в наданні Вам з огляд концепцій, Сподіваюся, деякі демонстрації, може бути, навіть деякі призи, про те, що чекає за тижня, що слід. І так на лекціях, ми досліджуємо ці теми і приклади разом, надання учням на сцену, і персоналу на сцену так часто, як ми можемо, всього за пару годин щотижня. Розділи, тим часом, буде запропоновані цими людьми здесь-- багатьох з них викладання товаришів, деякі з них, звичайно assistants-- волі відбуватися щотижня. І те, що ключ до тримати на увазі, що ми у have-- не в відміну Перша Ночі, музика class-- різних треків з секцій для студенти менш зручні, більш зручно, і щось середнє. І, чесно кажучи, ви знаєте, якщо Ви, менш комфортно. І ви, напевно, знаєте, якщо ви більш комфортно. І якщо ви не зовсім впевнені, ви за визначенням щось середнє. Тому, коли приходить час, щоб розділі на тиждень або близько того, в навчальний план, ми задамо вам це питання. І ви можете самостійно вибрати Based на свій страх і рівня комфорту і бути з students-- бути з зеленим dots-- схожі в рівні комфорту для Вас. Між тим, у нас є проблеми встановлює, що в кінцевому підсумку визначити ваш досвід в цьому курсі. Вони запропонували, як правило, в декількох виданнях. Стандартна версія, що ми очікуємо, що більшість кожен студент в ході вирішувати але і так званий хакером видання що не дає форму додатковий кредит безпосередньо, але насправді права хвастощів сказати, що ви намагалися і вирішувати хакерські видання ході, що підійти до подібного матеріалу але з складнішою кутом. Що ми пропонуємо для Стандартна версія, для, знову, супер більшість студентів, не є тільки наскрізні, які відео на чолі з персоналом Курсу що дійсно вас через проблеми звичайно і можна дизайн реалізації. І ми також, після Справа в тому, пропонуємо postmortems, згідно з яким, якщо вам цікаво, як ви могли б або повинен був вирішити деякі Проблема, викладацький склад , Ви пройдете через тих, на відео, а також. Між тим, що чекає теж п'ять пізні дні і той факт, що ми будемо Кидайте низька проблема встановити бал. Ми, звичайно, розуміємо, що в обмін для робочого навантаження, що 50 очікує з вас, життя стає на шляху іноді, якщо не в п'ять разів. І таким чином, це буде пропонувати Ви трохи гнучкості, продовживши строк від, скажімо, В четвер опівдні в п'ятницю опівдні. Дивіться навчальний план для Деталі реалізації їх. Тепер те, що тепер чекає? І це тільки відбувається мені тепер, як довго У мене ви, хлопці, стояти тут на сцені. [Сміх] David J. Малан: Але ми повернемося до кліматичні оздоблення найближчим часом. Так що чекає в плані проблемних наборів? Ну, може бути, тизер, що ми всі в минулому році зі своїми попередниками. У першому наборі проблеми в минулому році ми ввели Подряпини, графічне мова програмування, який дозволяє програмувати буквально перетягування шматочки головоломки, як вони, які є нагадує конструкцій побачите тільки один тиждень отже, при переході до більш традиційних мову, відомий як С Торік ми продовжили до цієї проблеми набору, залучаючи для криптографії, дертися інформації щоб зберегти його від урядових або друзі ' очі, що ви не хочете, щоб побачити його. Encoded тут є повідомлення, що найближчим часом ви зможуть розшифрувати або де-сутичка. Breakout була проблема встановити в минулому році, в якому Ви використовуєте ці нове знайдене програмування навички, щоб насправді реалізувати Гра wherein-- як вам можете пригадати з childhood-- Мета була, щоб бити цеглу, які на вершині екрана тут, накопичуючи забити на цьому шляху, і реалізувати власні алгоритми з якими в кінцевому рахунку, це рішення дозволяє грати в гру. Між тим, пізніше в семестр, ми дамо вам словник 143091 англійських слів. І вам буде оскаржено щоб написати програму, яка заклинання перевіряє, документи, по завантаженні, що багато слів на згадку як можна більш ефективно. Взагалі точкової вас проти своїх однокласників якщо ви виберете в трохи Задача в лідерів щоб побачити, хто може використовувати найменшу секунд ефірного часу, і найменше число мегабайт пам'яті, а насправді тонкої настройки ваших програм щоб бути неймовірно ресурсоефективності НЕ тільки час. Торік ми теж подивився в кінці семестру на веб-програмування. І справді, ми зробимо це знову в цьому рік з декількома наборами проблемних, познайомимо вас з методами і мислення, з яким ви можете звернутися ці навички програмування в веб-сайти, динамічні веб-сайти, сайти, які насправді вирішити проблеми і поводяться по-різному і не просто статичне сайти з статичної інформації. Остаточний проект в кінцевому рахунку, визначить, хоча, Кульмінацією курсу для студентів, в якому Ви натрапите реалізувати Найбільш нічого інтерес Вам, за умови, що це якось спирається на уроках Курсу. І як ви бачили в відео на початку, ми укладемо семестр з CS50 Хакатон, які, якщо, не знайомий, почнеться в 7:00 вечора одну ніч і закінчується в 7:00 ранку на наступний ранок. Навколо 9:00 вечора, ми будемо Порядок, в перший вечерю. Близько 1:00, ми будемо Порядок, в другу вечерю. І якщо ви все ще стоячи в 5:00 ранку, ми курсуватиме автобус вам в IHOP на сніданок. CS50 ярмарок, тим часом, є подією до якого 2000 плюс факультету, студенти, і співробітники по кампусу буде приходять, щоб побачити ваші досягнення в ході і в фінал проекти і творіння що ви створюєте на ноутбуках, настільні або, можливо, навіть лампочки. Між тим, в робочий час і опорна конструкція. І тепер це було б кращого часу, щоб довести вас всіх. Години роботи пройде чотири ночі на тиждень протягом декількох годин щоночі як правило, з 20 по 30 з Співробітники курси для початківців черговий відразу щоб надати вам інтимні один-на-один можливостей для підтримки з проблемними задає курс в. Репетитори теж буде доступні, особливо для студентів менш comfortable-- або насмілюся сказати міру comfortable-- для яких Робочий дня не найбільш живильним середовищем і, звичайно, не найбільш вільною від стресів. Особливо, коли строки наполягають, ми будемо активно створення пари вам себе з членом персоналу для роботи з на деяких регулярній основі як ваших потреб і їх графік дозволяє. І персонал. Дозвольте мені представити Davon, Боб, і Габріель, керівники цього року. Якщо ви кожен хотів say-- [Оплески] --a слово. [Оплески] Davon тут є Менеджер курси для початківців, які означає в його денний ролі він допомагає з виконанням і логістика CS50. Davon: Так, привіт, хлопці. Ви побачите багато для мене в робочий час. Я буду викладати розділи. І якщо ви знімаєте письма вперед, Я, ймовірно, відповідає. Так що я буду бачити багато вас все семестр. І ласкаво просимо в CS50. David J. Малан: А тепер Гавриїл, сам був просто новачком в минулому році, але за останні пару років має працює свій варіант CS50 в Бразилії, в результаті чого він скачуваних все content-- Курсу що явно будучи знятий і поміщений online-- щоб він міг перевести його на Португальська а потім навчити більш 100 з його однокласників більш Курс пару років, викладання рідною мовою Навчальна програма курсу в. GABRIEL: Здравствуйте. [Оплески] GABRIEL: Привіт, я Гавриїл. Я глава TF курсу. І я сподіваюся, що ви будете любити CS50. Це CS50. David J. Малан: Тепер для Роба. Ах, ви хочете введення? ROB: Ні, я не знаю. [Сміх] David J. Малан: А Роб Боден. [Сміх] ROB: Привіт, я Роба. Це мій п'ятий рік пов'язаний з курсу. Щороку, це просто краще і краще клас, так ви, хлопці, явно буде дивним. Я сподіваюся, що ви все весело з ним. Я збираюся весело з ним. Так побачимося. David J. Малан: А Час не дозволить намі-- [Оплески] Час не дозволяє нам ввести всіх на сцені і всі їх колеги які ходять по магазинах класи сьогодні. Але дозвольте мені представити Белінда і CS50 головоломки День, який чекає цього Найближчої суботи, яка є першим з масштабні заходи Звичайно автора. Цей зокрема означало забивати додому точка що інформатика в кінцевому рахунку нема про програмуванні, а про вирішення проблем в цілому. І Puzzle День, як ви будете см, принесе вам і ваші однокласники together-- ми сподіваємося, в цю суботу. BELINDA: ОК. Привіт, хлопці. Так що спасибі. Так як наш прославлений капітан сказав, Белінда мене звуть. Я на другому курсі в Квінсі Дом. Я, як і ви, хлопці, взяли CS50 торік, дійсно дуже сподобалися його. У мене є слабкість до ви, хлопці, в третьому ряду. І я з гордістю можу сказати, що я зараз в постійних стосунках з CS50 [нерозбірливо]. ОК. Це була моя крива версія жарт. У всякому разі, так рухатися далі, просто хотів запросити ви, хлопці, все в я-лабораторії, або HBS вулики. Ми збираємося бути з Логічні день з 12:00 до 3:00. І це чудова можливість для вас хлопці, щоб задовольнити ваші товариші CS друзів, вирішити деякі не-CS головоломки, як капітан згадувалося, а також з'їсти трохи безкоштовної їжі, заробити деякі дивовижні призи, як подарункові карти, $ 75 з людини, і also-- що це було? Wii U, чи що? Wii U? Так. Для нашої лотереї. Приголомшливо. Так що я буду дотримуватися навколо після занять. І якщо ви, хлопці, є які-небудь питання, дайте мені знати. David J. Малан: І ви побачите, за це нічого не робити сьогодні. Перша проблема встановити згасне п'ятницю. Але, щоб привести нас додому сьогодні, я хотів би познайомити вас з спеціально ще один член персоналу, Колтон Огден тут, чиї руки тепер захищений над вами з це MIDI контролер забивати будинок точка далі що інформатика, теж, має застосовність далеко за інженерії і STEM і інформатика сам, зачіпають навіть таких областях, як музика. Колтон люб'язно offered-- я думав один з них збирався зафіксувати фокус. Андрій, якби ми могли викликати увагу тут на мить. Що Колтон зробив заздалегідь програми Це пристрій, цей килимок кнопок що ви бачите на фото тут, як MIDI контролер, причому кожен з цих кнопок підключений до певної музичної ноти або звук, в більш загальному записи, таким чином, що, граючи закономірності цих Кнопки, як і послідовності бітів, може представляти інший більш високі поняття рівня. Чи зможе він в кінцевому рахунку щоб відвести нас додому сьогодні тут? Без подальших церемоній, якщо ми могли приглушити світло, і включити екран позаду Колтон. АУДИТОРІЯ: Ву! David J. Малан: Це CS50. [МУЗИКА ГРАЄ] [Оплески] Ось саме для CS50. Ми будемо бачити Вас в п'ятницю. Деякі торт чекає вас в трансепти. [МУЗИКА ГРАЄ]